开发一般PC机软件与嵌入式应用的区别

时间:2021-12-21 17:36:23

刚刚参加工作的时候我从事的是嵌入式应用系统的开发,后来又经历了长达10年的PC机应用软件的开发,直到最近,才又返回来进行嵌入式系统的开发,对于这两种软件开发的区别颇有一点心得。

总的来说,嵌入式开发与一般计算机软件开发的区别如下:

1、终端软件把大量的功能集中在一个程序中,代码规模非常大,源代码动辄几M、几十M、甚至上百M;而嵌入式系统一般把功能分散在不同的硬件模块中,使用分散的程序是先系统功能,虽然整个系统功能点很多,但是具体到某个硬件模块,则代码一般都比较少,基本上是几十到几百K;

2、终端软件运行在PC机上,一般来说编写代码的时候是不用考虑内存和效率的问题(特殊情况除外);而嵌入式系统所使用的CPU从8位机到32位机都有,很多时候都会考虑到系统内存和代码运行效率的问题;

3、终端软件大多数是访问数据库,使用网络来互相通信;而嵌入式系统一般是访问硬件,使用串口、HDLC、USB、网络等多种通信方式;

4、终端软件的操作界面主要是图形界面,使用键盘、鼠标或者其它外设进行操作;而嵌入式系统一般是提供一些接口供终端软件访问,不直接提供操作界面;

5、终端软件编写使用的语言多种多样,不下几十种;而嵌入式系统最常用的语言就是C和汇编;

6、终端软件开发、调试的工具都很强大,不需要额外的硬件支持;而嵌入式系统调试,一般都需要有硬件的仿真器来帮助调试,使用起来比较复杂,有时候出问题还需要确定是代码的问题还是仿真器的问题;

7、终端软件开发在网上可以查到大量的资料,有很多的源代码可以参考或者直接使用;而嵌入式系统一般只能查到厂商提供的芯片资料,具体的应用系统因为硬件不同,查找到的资料和源代码基本上只能参考,而不能直接使用;

8、终端软件调试遇到问题一般不用考虑硬件故障,基本上是软件问题;而嵌入式系统遇到问题首先要确定是硬件问题还是软件问题,这个问题从系统的开发一直到最后的维护阶段都是一直存在的;

9、终端软件有时可以通过升级硬件来提升系统的性能,不需要另外修改软件;而嵌入式系统要提升性能,首先考虑的方法就是修改软件算法或者削减不必要的功能,因为嵌入式系统如果要修改硬件,必然要导致软件的修改,跟重新开发一个软件的工作量差不多(因为这个问题的存在,现在才有了嵌入式操作系统,可以减轻一些软件移植的工作量);