嵌入式的开发领域非常宽阔,上到飞机大**,下到智能马桶都存在着嵌入式的技术名词,那么将嵌入式工程师软件开发进行细分的话,实际上大多数公司都是做应用层业务需求;比如做人脸识别打卡机的,做GPS导航的,做云终端设备的公司等。这类的公司,除非已经是非常大规模的,正常是几十号研发在运作。人脸打卡,人脸识别模块是核心,但是硬件和软件是买的,公司可能制作c++,QT实现上班打卡业务的工作使用场景,数据传输,导出导入等相关编程。 嵌入式软件工程师一般都在开发什么?
GPS导航的,GPS模块,核心驱动,Linux,WinCE的,都需要此公司的开发者去做开发。 云终端的,核心接入协议可能是买思杰的方案,也有可能买Vmware的方案,再不行的就搞个山寨的spice协议,rdp协议这些免费开源的。 以上几个产品,核心模块,买之,接口使用之,大多国外技术。 硬件方案,要么开发板生搬硬套要么外包给硬件厂商。 那这些公司的开发做什么呢? 如果产品UI是的是QT, 那就写大量的C++代码,各种好的软件框架,各种多线程,多进程配合。 如果UI是GTK,那就写大量的C代码,各种结构体来模拟面向对象的开发思想,当然也可以学习内核开发者写的牛x框架,比如学习输入子系统,设备驱动模型啊,binder驱动模型啊,将内核的编程思想灵活运用到应用层编程,写出稳定,拓展性极强的框架就是很牛的人物啦。 真正涉及到Linux底层开发的偏少,如果一个人真正深入掌握linux内核的进程管理,时间管理,内存管理,文件管理,各种驱动框架等,能在各种硬件平台做一个实时操作系统的,还懂裸机,写点启动代码来引导自己的操作系统,那就是大牛中的大牛。 回归到刚进入嵌入式世界探索的孩子们,其实你们目前的水平去分析uboot,分析linux内核源码,是一件很egg疼的事情。 调用接口来实现多线程,来处理进程通信,来写socket编程都是难事,甚至还在纠结指针传参,纠结指针数组和数组指针,怎么能去看uboot,linux内核源码呢? 做技术得一步一个脚印。而很多童鞋们或许连C和指针,C程序设计都没懂多少。而在那里高谈大论。不管怎么样,只要我们基础扎实了。才能进一步探究Linux内核框架。
|