总之嵌入式软件开发和硬件关系比较紧密,一般需要编写硬件驱动。
嵌入式软件开发与软件开发有什么区别
1.嵌入式软件开发是指单片机、ARM、FPGA的编程。如果没有或操作系统,即使有,也是功能相对简单的操作系统,比如ucos。总之,嵌入式软件开发与硬件密切相关,所以一般需要编写硬件驱动程序。2.软件开发一般是指在已经安装了image或linux的电路板上编写应用程序。软件开发不直接写硬件驱动,因为驱动已经被操作系统实现了。软件开发侧重于逻辑功能的实现。比如拍照,调用相机驱动就可以了。
嵌入式系统与普通计算机在硬件、软件、程序开发方面有何不同?
1.将嵌入式技术定义为“特殊的”计算机技术。这种特殊应用是指一种特定的应用,如网络、通信、音频、视频、工业控制等。从学术角度来说,嵌入式系统是以应用为中心,以计算机技术为基础,其硬件和软件都是可以裁剪的。适用于对功能、可靠性、成本、体积、功耗有严格要求的应用系统。2.分层嵌入式系统分为四层:硬件层、驱动层、操作系统层和应用层。1.硬件层是整个嵌入式系统的基础。如果现在对单片机和接口比较熟悉,可以用C和汇编语言编程的话,从嵌入式系统的硬件层走起来相对容易,这也是驱动层的基础。一个优秀的驱动工程师应该能够自己理解硬件电路图并完成CPLD的逻辑设计,同时对操作系统内核及其调度也相当熟悉。但硬件平台是基础,增值要靠软件。硬件层适合电子、通信、自动化、机电一体化、信息工程专业的人。他们需要掌握基本的专业知识,如单片机原理与接口技术、微型计算机原理与接口技术、C语言等。2.驱动层,这部分比较难。驱动工程师不仅要能看懂电路图,还要对操作系统内核非常精通,这样在系统调用的时候,他写的驱动就不会独占操作系统时间片,导致其他任务无法移动。他不懂操作系统内核架构和实时调度,也没有好的驱动编写风格。很多人可以像大多数书里提到的那样,通过添加驱动程序来实现。但是即使是初级的驱动工程师也达不到水平,所以这样写出来的驱动就像我们打开一个程序运行,然后再打开另一个程序,要么中断前面的程序,要么等一段时间再运行后面打开的程序。做一个好的司机没有三四年的经验,不学习操作系统内核的前几个部分也不容易成功,但是它的工资是嵌入式系统四层里面最高的。驱动层适合于专攻电子、通信、自动化、机电一体化、信息工程,特别是计算机偏架构的人。除了硬件层的基础学科,他们还应该非常精通数据结构和算法、操作系统原理和编译原理。3.目前操作系统层只能说是简单的移植,但是很少有人是从编写的操作系统来的,或者是编写缺胳膊少腿的操作系统。这项工作大部分是由驾驶工程师完成的。操作系统负责调试系统任务,管理磁盘和文件,嵌入式系统的实时性非常重要。据说,XP操作系统花了微软300个人两年时间才完成,总工作时间为600人工年。中科院软件所的女娲操作系统,估计要几百人年才能搞定。所以这部分工作相对来说意义不大。4.应用层相对容易。如果能调用操作系统下的编程接口函数,编译开发环境只会相应改变。涉及Jave的编程也是如此。嵌入式系统中涉及算法的东西都是由专门研究算法的人来处理的,不一定非要归入嵌入式系统的范畴。但是,如果涉及到嵌入式系统下的嵌入式数据库,基于嵌入式系统和协议的网络编程