linux嵌入式開發流程,聽聽牛人怎麼說
很多學習嵌入式的人來說,都會學習嵌入式linux開發,在學習的過程中,總會有很多難題,相對而言,嵌入式linux也算是嵌入式學習中比較難的,那如何可以攻破這個難點,那麼我們就需要從根本入手,學習嵌入式linux最重要的一個點就是嵌入式linux開發的流程,看看在華清遠見學習過的嵌入式開發大牛是如何認識嵌入式linux開發的,這裡有一些總結的具體開發流程,當然除了流程外,肯定也會遇到很多問題,這裡也會為你解答。
對於嵌入式開發的流程其實是很簡單的,但是裡面是有很多小東西需要你注意的,這也是這麼多年的經驗,讓我們先來看具體流程:
一、建立開發環境,首先你必須要會安裝配置嵌入式linux開發環境,這個是基本
作業系統當然是LInux,或者在win系統下安裝虛擬機器,通過網路下載相應的GCC交叉編譯器進行安裝,或者安裝產品廠家提供的交叉編譯器。
這一步,就相當於在win系統下,要安裝一個IDE開發環境,如MDK,IAR等。在這一點上,我時常會因為這出現一些問題,就因為配置沒配好,導致下面的步驟沒法進行,報錯,要切記這裡需要你仔細點。
二、配置開發主機
主要是配置minicom,也就是串列埠助手,minicom軟體是作為除錯嵌入式開發板資訊輸出的監視器和鍵盤輸入工具,是一個非常方便的工具,我們開發其他嵌入式程式時,其實很多時候也採用串列埠除錯,所以最終原理都是相通的。
1、嵌入式linux開發流程
配置網路,主要是配置NFS網路檔案系統,這個主要是用於下載程式,當然不配置也可以,有很多別的辦法。
三、建立引導裝在程式的bootloader
常用的bootloader主要有u-boot、vivi等,貌似主流的就是u-boot,這個根據自己具體的晶片進行移植修改。有些晶片是沒有內建引導載入程式的,這就需要編寫開發板上的Flash的少些程式,當然也可以用windows下的通過JTAG並口和模擬器少些Flash晶片程式,也有linux下的公開原始碼的J-Flash程式,在自己做的時候,可以預留多重方式,這樣是有用的。
簡單的講,其實就是要做好一個屬於自己板子的u-boot,完成初始化,核心引導,下載、燒寫等。其實在這一點上,也會是個難點,這裡需要掌握的東西多,這一流程的燒寫,核心引導,網路上有免費下載的Windows下通過JTAG並口簡易模擬器燒寫ARM外圍Flash晶片的燒寫程式,也有Linux下的公開原始碼的J-Flash程式。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行原始碼修改。這是系統正常執行的第一步。如果購買了廠家的模擬器當然比較容易燒寫Flash,這對於需要迅速開發自己產品的人來說可以極大地提高開發速度,但是其中的核心技術是無法瞭解的。
再來就是嵌入式Linux作業系統移植了
1、嵌入式linux開發流程
如果有專門針對你使用的CPU的Linux再好不過,比如uCLinux、ARM-Linux、PPC-Linux等,如果沒有,就要嘗試移植專屬自己的linux了,然後再新增自己特定硬體的驅動程式,進行除錯修改,對於帶MMU的CPU可以使用模組方式除錯驅動,而對於uCLinux這樣的系統則需要編譯進核心,與核心為一體,再進行除錯。最好的就是下載別人已經移植好的Linux作業系統來弄,這樣會高效
2、接下來就是根檔案系統了
前面的文章講述過,沒有根檔案系統的Linux是無法正常工作的,還需要根檔案系統。所以需要下載使用busybox軟體來實現製作根檔案系統。
再根據自己的應用需要來新增其他程式,預設的啟動指令碼一般都不會符合應用的需求(因為所有的嵌入式開發都是自由定製的),所以就要修改根檔案系統中的啟動指令碼,它的存放位置至於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛載檔案系統的配置檔案/etc/fstab,其實就是定製自己要開機啟動的程式,具體情況會隨著系統的不同而不同,根檔案系統在嵌入式系統中一般設為只讀,需要使用mkcramfs、genromfs等工具產生少些映像檔案。記得這一步要看好,別為了省時間寫錯。
弄好上面那麼接下來就簡單了就是建立應用程式的Flash磁碟分割槽
一般會使用jffs2或者YAFF檔案系統,這需要在核心中提供這些檔案系統的驅動,有的系統使用NOR FLASH,有的系統使用NAND FLASH,也有的系統兩種flash都使用,到時候就看具體情況了。
3、開發應用程式
應用程式可以放到根檔案系統中,也可以放到yaffs、jffs2檔案系統中,有的應用不使用根檔案系統,直接將應用程式和核心設計在一起,就是類似於uCOS-II的方式。
其實,上面的那些步驟也就是為了這一步,在這裡你要注意他有三種呈現方式:
(1)直接講應用程式和核心設計在一起,類似與uCOS-II的方式
(2)基於qt等GUI開發應用程式
(3)沒有螢幕,只有簡單的人機介面,比如串列埠,按鍵,數碼管,這種也能實現複雜功能開發
現在就是對燒寫核心、根檔案系統、應用程式的載入了(其實差不多也就完了)
無論怎麼載入,模組也好,所有的這些開發,過程資料,都是要燒寫到flash中的,然後應用程式需要什麼,就載入對應的功能程式即可。
4、釋出產品
開發一款中高型的控制器裝置,功能比較複雜,甚至需要複雜的螢幕互動,比如手機(安卓是linux的親兒子,OS是linux的親表弟),取款機,伺服器交易系統,那麼linux就非常合適了。
開發一款小型控制器裝置,如果功能不太複雜,可以使用稍微高階的CPU,裸機或者ucos等來開發,也很方便,也能做很多定製版的工業小型控制器。
根據我多年的經驗總結都在這裡,華清遠見的學習還是不錯的而且嵌入式linux的開發流程也就是這些了,跟著上面的這些步驟,掌握嵌入式linux的學習還是很簡單的,這些方法你都get到了嗎,都是實戰經驗。