6.1開發(fā)板熟悉與體驗(yàn)
第001節(jié)_開發(fā)板接口介紹與串口連接
在前面的視頻里,我們涉及四個接口,兩個開關(guān)。
四個接口:電源接口、USB串口、USB下載口、JTAG下載口;
兩個開關(guān):電源開關(guān)、啟動選擇開關(guān);
分別對應(yīng)下圖中的1、8、6、7、1、11;

我們買開發(fā)板的目的就是把電腦上編寫編譯好的程序燒寫到板子上驗(yàn)證學(xué)習(xí)。因此開發(fā)板上一定有個燒寫口,例如JTAG燒寫口。但電腦上是不會有這個JTAG口的,因此需要一個USB燒寫器將兩者連接,例如Jlink、OP/EOP。Jlink本來用的人很多,但隨著版權(quán)意識的提高以及Jlink公司對盜版的打擊,Jlink現(xiàn)在用得越來越少了。EesyOpenJtag是OpenJtag的便宜版本,他和我們的開發(fā)板是絕配,他可以直接燒寫Nand Flash和Nor Flash,操作簡單,價格便宜。
對于程序員來說,我們程序都是三分寫,七分調(diào),調(diào)試非常重要。對于我們電腦,我們可以在屏幕上顯示,對于我們開發(fā)板,我們可能連顯示屏都沒有,并且屏幕的操作比較復(fù)雜,不太適合用于調(diào)試。那我們這里就需要一個比較簡單的設(shè)備提供調(diào)試信息——串口。通過串口,可以把PC上的數(shù)據(jù)傳到開發(fā)板,開發(fā)板也可返回?cái)?shù)據(jù)。開發(fā)板的串口,不能直接與電腦的USB相連,中間需要一個串口轉(zhuǎn)USB的芯片,這個芯片集成到了開發(fā)板上,因此可以直接使用USB線將電腦與開發(fā)板連接進(jìn)行通信。
現(xiàn)在再說一下燒寫,我們之前說可以通過Jtag進(jìn)行燒寫,它非常的可靠,當(dāng)我們板子變成了磚頭的時候,可以使用Jtag進(jìn)行燒寫,但他的速度很慢。當(dāng)我們燒寫很大程序的時候,會崩潰的。因此我們可以借助USB口進(jìn)行燒寫,前提是板子上已經(jīng)運(yùn)行有一個程序,這個程序用來支持USB下載
接電源,按下開關(guān);
使用串口(USB串口)觀察信息;
使用JTAG(USB燒寫器)燒寫程序;
如果板上程序支持USB下載,可以使用板子的USB Device連接電腦下載;
啟動選擇開關(guān);
對開發(fā)板上電啟動,出廠的時候默認(rèn)燒寫一個Linux系統(tǒng)。我們上電后可以看到Linux的企鵝圖標(biāo),然后自動啟動Qt。
再將開發(fā)板的串口與電腦相連,自動/手動安裝好串口驅(qū)動后,使用MobaXterm軟件的Serial功能,即可通過串口 輸入Linux命令。
連接示意圖如下:?

第002節(jié)_使用eop燒寫裸板程序
燒寫裸板程序,需要用到的軟件是oflash.exe,使用到的硬件是op/eop(easy open Jtag),以及相應(yīng)的驅(qū)動程序。 操作步驟如下:
eop連接到PC;
安裝驅(qū)動;
安裝APP;
開發(fā)板的排線連接到eop,eop的USB接口連接到電腦;
執(zhí)行:oflash xxx.bin
開發(fā)板斷開eop,eop的USB接口最好也斷開電腦;
設(shè)置從Nor/Nand啟動;
重新上電;
第003節(jié)_eop常見問題
eop常見問題通常有如下7個,我們可以根據(jù)oflash的提示信息,來大致判斷是何種情況導(dǎo)致的問題。
未連接op/eop到電腦;
有其他程序在使用op/eop (同一時間只能有一個程序使用它);
jtag線未接;
開發(fā)板未上電;
oflash xxx.bin 時當(dāng)前目錄下沒有xxx.bin;
燒寫完后沒有正確設(shè)置啟動開關(guān);
燒寫完后,op/eop與開發(fā)板之間的排線未斷開, 導(dǎo)致程序無法運(yùn)行;
當(dāng)oflash顯示unable to open ftdi devive:2
,
則可能是未連接op/eop到電腦和有其他程序在使用op/eop。
當(dāng)oflash顯示Description: USB<=>JTAG&RS232 ANo CPU detectred, ? ?cupID = 0xffffffff
,
則可能是Jtag線未接。
當(dāng)oflash顯示Description: USB<=>JTAG&RS232 ANo CPU detectred, cupID = 0x00000000
,
則可能是開發(fā)板未上電。
當(dāng)oflash顯示ERROR: can't find the file?: xx.bin.
,
則可能是當(dāng)前路徑下沒用xx.bin,應(yīng)該使用絕對路徑或者復(fù)制到指定目錄再切換到該目錄。
當(dāng)燒寫好程序后,開發(fā)板上電后卻沒有運(yùn)行,
則可能是沒有正確設(shè)置啟動開關(guān)或者是op/eop與開發(fā)板之間的排線未斷開, 導(dǎo)致程序無法運(yùn)行。?
第004節(jié)_使用uboot燒寫裸板程序
在前面,使用eop燒寫一個200多k的uboot時,耗費(fèi)了幾分鐘,這速度實(shí)在太慢了,在后續(xù)的開發(fā)過程中,我們的程序可能有許多錯誤,需要反復(fù)修改燒寫,如果繼續(xù)用eop將會浪費(fèi)很多時間。那么有沒有更快的燒寫方式呢?有的,我們用uboot進(jìn)行燒寫。
在2440上面,有兩種flash:Nand Flash和Nor Flash。我們可以首先把uboot燒到Nor Flash,然后Nor啟動運(yùn)行uboot,使用uboot的USB下載功能接收PC傳來的文件,然后uboot將收到的文件燒寫到Nand Flash,最后Nand啟動,啟動我們燒寫的程序。
操作步驟如下:
使用op/eop把u-boot.bin燒到nor flash;
開發(fā)板設(shè)置為nor啟動, ? ? ?上電后馬上在串口輸入空格鍵,使板子進(jìn)入U(xiǎn)BOOT而不是啟動板子上的內(nèi)核;
連接PC與開發(fā)板的usb device口,如果沒有驅(qū)動,安裝驅(qū)動;
在UBOOT的串口菜單中輸入n (表示接收USB文件并燒寫到NAND);
使用dnw_100ask.exe發(fā)送bin文件;
uboot即會自動接收、燒寫bin文件;
斷電、設(shè)為NAND啟動、上電:運(yùn)行nand上燒好的程序;
第005節(jié)_恢復(fù)出廠系統(tǒng)
開發(fā)板買來就是學(xué)習(xí)的,就是用來“破壞的”,不要擔(dān)心上面的東西被破壞,因?yàn)槲覀冇修k法恢復(fù)出廠系統(tǒng)。
我們先對比PC看看出廠系統(tǒng)有哪些東西:

可以看到我們的東西都放在Flash上面,對于我們的JZ2440,有256M的Nand Flash和2M的Nor Flash,所以我們內(nèi)核、根文件系統(tǒng)那么多的文件,應(yīng)該是放在Nand Falsh。Nand Falsh內(nèi)部數(shù)據(jù)分布如下:

其中bootloader既可以在Nand Flash也可以在Nor Flash,params的變量存儲有uboot的參數(shù)信息。
恢復(fù)出廠系統(tǒng)的具體步驟如下:
使用op/eop燒寫u-boot到nor/nand, 設(shè)置為nor/nand啟動;
上電與開發(fā)板的usb device口; 安裝驅(qū)動;
下載內(nèi)核: 在UBOOT的串口菜單中輸入k;
使用dnw_100ask.exe發(fā)送uImage文件;
uboot即會自動接收、燒寫uImage文件;
下載文件系統(tǒng): 在UBOOT的串口菜單中輸入y;
使用dnw_100ask.exe發(fā)送 fs_qtopia.yaffs2 文件;
uboot即會自動接收、燒寫根文件系統(tǒng);
. 輸入q退出UBOOT串口菜單, 執(zhí)行命令刪除參數(shù)分區(qū): nand erase params;
. 重啟(對于QT文件系統(tǒng),第一次重啟時會要求你較準(zhǔn)觸摸屏);
(如果觸摸不準(zhǔn),可以等系統(tǒng)啟動后在串口執(zhí)行:rm /etc/pointercal 然后重啟再次較準(zhǔn));?
視頻教程??
