因为我第一份工作也是写韧体上的GUI,提供一点我的经验给你参考,
前提是如果你还有要继续走韧体这条路的话XD
我第一份工作是写video phone上的GUI,当时还没有用QT等好物,
一切GUI元件都是前人用C刻出来的土炮,我们的系统是跑Linux,
而我的工作是负责维护修改GUI而已,但是闲暇之余也跟着team里的大师们
学会基本的makefile与shell script,把opensource library从configure、make
,然后把library整合到自己的系统上。
走嵌入式系统,特别是嵌入式Linux,其实也有分上下两层(kernel-space/user-space)。
有些人走user-space,上述的工作应该跑不掉:
把open source整进来系统再呼叫API使用。
比如说openssl,libjpg,libtiff,libesmtp,ffmpeg,gsoap等等,反正就是看案子需要
什么功能,然后找open source porting进来用,porting的难度在于把x86的library
搬到arm/mips上的时候多多少少会遇到一点问题,怎么修改configure或是makefile
让之可以成功make,就是需要一点经验跟优良的google能力XD
走user-space开发性质有点像纯软,你不用管太多硬件平台特性,
单纯的在ARM上面写code,只要懂得怎么build code与烧FW就好了,
如果发觉硬件怪怪的,就把platform team负责的人抓来看XD
之后的第二份工作,一开始丢给我一颗ARM 32bit的MCU,要我用这颗MCU
控制LCD与键盘并且与主SOC/副SOC沟通等等。
坦白说,一开始我根本什么都不会,不要说示波器了,连怎么控制GPIO
与填暂存器都不知道XD
幸好,这颗MCU还算热门,有书可以参考,再搭配板子上的LED等等,让我开始
学会怎么用none OS code控制GPIO,SPI,I2C,SSP等等沟通接口与中断、timer等等。
我建议原PO可以去买一块开发版,上面没有OS,单纯用none OS code去控制,
(比如说TI的MSP,ST的STM32、或是老牌的NXP LPC等系列),学会最底层的控制,
将来Linux driver,如果把他想的简单一点,可以说是把底层控制
套上Linux上的framework。
案子做完后,公司开始想要自己开SOC,并在上面跑Linux,所以接着我又开始看
Linux driver与kernel的部分,一边学怎么写Driver,然后跑FPGA验证,
我们的产品要接PC,所以我也学怎么写MFC,好用来跑测试程式。
我建议可以买这本书来看一下,业者出身的作者写出来的东西,
其实还蛮符合业界状况的
http://www.books.com.tw/products/0010479889
以上,提供给你参考~~