嵌入式linux的开发流程:
记得在大学刚开始学习开发的时候,总是觉得嵌入式的开发流程很是模糊,而且硬件、中间件、界面等全部要搞懂才能开始开发。
由于学习的课程偏软,为了训练自己,做le个简单的led灯控制demo。
demo功能如下:
1、使用按键作为输入控制;
2、QT作为界面、应用;
3、实现led灯亮暗;
听起来挺简单的一东东吧。
开发步骤如下:
1、移植uboot、os、Filesystem;
2、学习、使用demo板硬件,按键、led灯等;
3、编写led灯驱动、按键驱动;
4、编写使用QT应用层。
其实这个demo至今也未能完成,卡在QT移植上了。不过中间过程却是收获更多。
大致说一下这个过程中的技术点:
1、uboot、os移植,这是demo中最难的部分。使用“点灯法”做uboot移植,这个过程虽然麻烦,却能让你对整个硬件系统的启动了解,现在的平台大抵是这个启动方式。
而且也能提高你对汇编、C语言的认知。至于OS移植过程,基本上照抄网上大神的。
2、完成了基于命令行这个demo应用层,程序从按键设备中读取按键值,然后对led设备进行操作。
3、那时候觉得QT好麻烦,觉得写界面实在是太无聊了,终止。
在工作之后,刚开始就只想做驱动层、os层,觉得应用实在是太无聊了,还不就是一些数据搬过来搬过去,实在没挑战。然而,嵌入式的产业链却并非如此。
1、最上游的要数芯片&IP核等公司了,芯片公司将IP核整合设计,定制自己的芯片,同时推出基本的配套软件。如华为海思,从ARM等公司购买IP&design,整合成自己的芯片,
然后再对芯片开发出相应的软硬套件,软件上包括uboot、os、中间件、应用sample、文件系统;然而这类软体的开发机会相对来说是比较少的。
2、下面就是方案公司和产品公司了,结合国情,大家都只是简单改改os、fs等,加加driver,专注于应用层。这样的机会更多。
自己第一份工作时做终端产品的,机会还算不错,经过工作的一番蹂躏,从界面、driver、硬件都有些接触。做产品,并不是产品的每个部分都需要自己去完善,等你从头到脚做完,黄花菜都凉了。
小伙伴们,如果想走技术流,可以往芯片公司看看。如果走产品线路,路也更宽广。