因為我第一份工作也是寫韌體上的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
以上,提供給你參考~~