数模 编程
Canon等单反相机里面的程序用的是什么编程语言?
本人学过编程,但不了解相机程序的编制语言。但根据相机硬件特性来看,相机程序应该是汇编语言或者是C系列语言编出来的。
既然说到编程语言,就顺便再安利几句为什么我认为是汇编和C编出来,这是依据这两种语言的特性决定的。
汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言。它通常被应用在底层,像硬件操作和高要求的程序优化的场合,以及驱动程序、嵌入式操作系统和实时运行程序都会用到汇编语言。
C语言是一门通用计算机编程语言,应用广泛。可以通过简易的方式进行编译、以及不需要任何运行环境支持便能运行,还提供了许多低级处理的功能。
一台嵌入式设备,这里就以相机为例。核心部分是CPU,也就是运算核心,总控大脑,当然相机还包含CCD、CMOS这类的感光芯片,也是属于相机的核心部分。这些芯片,通常是由芯片生产厂商直接集成到一块PCB线路板上,俗称开发板。然后由芯片厂商根据芯片的指令集提供相应的操作系统,通常都是UNIX系列的改版系统。到这一步,基本都是汇编范畴,也是开发者不用太过关心的部分。这个操作系统会提供给中间层的开发者一套API,这套API绝大多数都是基于C语言。
相机厂商购买芯片厂商的开发板之后(这里分开叙述是为了使步骤明确,很多相机厂商自己同时也是芯片厂商,没有芯片制造能力的相机厂商,则可以***用购买的方式),首先根据芯片厂商提供的API文档为自己生产的硬件编写驱动程序,再在操作系统的基础上编写启动后的逻辑应用,比如加载驱动、显示用户界面等等。这部分开发叫做中间件开发,中间件开发最终会将操作系统、驱动程序、可执行的逻辑应用全部打包并且***用一定的压缩算法(这一步可选,根据相机ROM大小而定),生成一个适应相机ROM大小的firmware,也就是最终使用者可以遇到的固件升级里面的“固件”。这个固件会通过串口或者其他连接方式烧录到相机的ROM当中。
同时中间件厂商会提供给上层应用开发者一套基于自己的逻辑应用而开发的SDK,如NikonCtrl、EosCtrl、SonyWifiCtrl、EDSDK等等。这些SDK对上层提供的也是C接口。上层应用开发者可以使用这些SDK开发运行于PC、PAD、Mobile等设备上的应用程序,这些应用程序可以通过这样的路径【app→SDK→中间件逻辑应用→驱动程序→硬件】来实现控制相机的目的。
相机里的程序分两种,一种是直接与硬件层接触的底层代码,如涉及光电转换数模转换等,这些代码应该就象各位说的用汇编,C,C十十等,另一种是应用层面的程序,就是我们选择相机直出照片jpg或tiff格式时,相机对raw数据处理生成照片文件。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/10549.html