開(kāi)發(fā)板上一般已經(jīng)燒寫(xiě)好了嵌入式系統(tǒng)內(nèi)核鏡像,文件系統(tǒng)和前面講的U-Boot,在掌握了燒寫(xiě)方法后,可以自己下載。
3.4源程序的獲得、編譯和調(diào)試
由于Linux是開(kāi)源軟件,所以運(yùn)行在其下的應(yīng)用軟件也是開(kāi)源軟件,不管是哪一類(lèi)的都免費(fèi)獲得源代碼。可以直接在已有的源代碼上進(jìn)行修改得到符合要求的代碼。論文中使用的就是已有的源代碼,如圖2所示。
Linux操作系統(tǒng)支持匯編,C,C++,Basic,F(xiàn)ortran,Pascal,JAVA,PHP等多種編程語(yǔ)言。其下的文本編輯器是Vi和Emacs,二者均有強(qiáng)大的編輯功能。圖形界面的編程用的是Qt或是MiniGUI。利用以上軟件,跟在Windows和其他操作系統(tǒng)下的軟件編寫(xiě)方法完全相同。
編寫(xiě)軟件的過(guò)程與在其他系統(tǒng)下沒(méi)有什么不同,不同的地方在與編譯和調(diào)試。嵌入式中稱(chēng)之為交叉編譯和交叉調(diào)試。
交叉編譯就是將在PC上編寫(xiě)好的源代碼經(jīng)過(guò)編譯、鏈接生成可以在嵌入式系統(tǒng)上運(yùn)行的代碼,如圖2所示。
在交叉調(diào)試中,調(diào)試器和被調(diào)試程序分別在PC系統(tǒng)和嵌入式系統(tǒng)中,這是與一般調(diào)試不同的地方。交叉調(diào)試一般分為軟件調(diào)試和硬件調(diào)試。
軟件調(diào)試插入調(diào)試樁的方式進(jìn)行。典型的是GDB調(diào)試器,它分為GdbServer和GdbClient,前者作為調(diào)試樁安裝在arm的嵌入式系統(tǒng)中,后者駐于本地PC中,二者可通過(guò)串口、網(wǎng)口、并口通信。
硬件調(diào)試一般都使用的是仿真器,常用的如ROMMonitor、ROMEmulator、In-CircuitEmulator和In-CircuitDebugger。硬件調(diào)試功能更強(qiáng)大,性能更優(yōu)秀,但是有的價(jià)格昂貴,額外的設(shè)備增加了成本。而ARM的JTAG端口實(shí)現(xiàn)在CPU內(nèi)部調(diào)試,通過(guò)端口發(fā)送命令和接收信息。
JTAG采用的主要技術(shù)為邊界掃描技術(shù),它的基本思想就是在靠近芯片的輸入輸出管腳上增加一個(gè)移位寄存器單元。當(dāng)芯片處于調(diào)試狀態(tài)時(shí)候,這些邊界掃描寄存器可以將芯片和外圍的輸入輸出隔離開(kāi)來(lái)。通過(guò)這些邊界掃描寄存器單元,可以實(shí)現(xiàn)對(duì)芯片輸入輸出信號(hào)的觀(guān)察和控制,它提供了一個(gè)便捷的方式用于觀(guān)測(cè)和控制所需要調(diào)試的芯片。通過(guò)JTAG接口可以方便地對(duì)目標(biāo)系統(tǒng)進(jìn)行測(cè)試,同時(shí),還可以實(shí)現(xiàn)Flash的編程,是非常受人歡迎的調(diào)試方式。
4結(jié) 論
主機(jī)從網(wǎng)絡(luò)下載mp3格式歌曲,通過(guò)串口(或tftp)傳送到開(kāi)發(fā)板上,用經(jīng)過(guò)調(diào)試的播放器,結(jié)合教研室開(kāi)發(fā)的功率放大器,很好的實(shí)現(xiàn)了播放音頻的功能。
在此基礎(chǔ)上,還可以進(jìn)一步開(kāi)發(fā)視頻播放功能。除了播放器應(yīng)用軟件,還可以根據(jù)存儲(chǔ)器的大小增加其他應(yīng)用程序。