第006課 開發板熟悉與體驗
第001節_開發板介面介紹與串列埠連線
在前面的視訊裡,我們涉及四個介面,兩個開關。
四個介面:電源介面、USB串列埠、USB下載口、JTAG下載口;
兩個開關:電源開關、啟動選擇開關;
分別對應下圖中的1、8、6、7、1、11;
我們買開發板的目的就是把電腦上編寫編譯好的程式燒寫到板子上驗證學習。因此開發板上一定有個燒寫口,例如JTAG燒寫口。但電腦上是不會有這個JTAG口的,因此需要一個USB燒寫器將兩者連線,例如Jlink、OP/EOP。Jlink本來用的人很多,但隨著版權意識的提高以及Jlink公司對盜版的打擊,Jlink現在用得越來越少了。EesyOpenJtag是OpenJtag的便宜版本,他和我們的開發板是絕配,他可以直接燒寫Nand Flash和Nor Flash,操作簡單,價格便宜。
對於程式設計師來說,我們程式都是三分寫,七分調,除錯非常重要。對於我們電腦,我們可以在螢幕上顯示,對於我們開發板,我們可能連顯示屏都沒有,並且螢幕的操作比較複雜,不太適合用於除錯。那我們這裡就需要一個比較簡單的裝置提供除錯資訊——串列埠。通過串列埠,可以把PC上的資料傳到開發板,開發板也可返回資料。開發板的串列埠,不能直接與電腦的USB相連,中間需要一個串列埠轉USB的晶片,這個晶片整合到了開發板上,因此可以直接使用USB線將電腦與開發板連線進行通訊。
現在再說一下燒寫,我們之前說可以通過Jtag進行燒寫,它非常的可靠,當我們板子變成了磚頭的時候,可以使用Jtag進行燒寫,但他的速度很慢。當我們燒寫很大程式的時候,會崩潰的。因此我們可以藉助USB口進行燒寫,前提是板子上已經執行有一個程式,這個程式用來支援USB下載
- 接電源,按下開關;
- 使用串列埠(USB串列埠)觀察資訊;
- 使用JTAG(USB燒寫器)燒寫程式;
- 如果板上程式支援USB下載,可以使用板子的USB Device連線電腦下載;
- 啟動選擇開關;
對開發板上電啟動,出廠的時候預設燒寫一個Linux系統。我們上電後可以看到Linux的企鵝圖示,然後自動啟動Qt。
再將開發板的串列埠與電腦相連,自動/手動安裝好串列埠驅動後,使用MobaXterm軟體的Serial功能,即可通過串列埠
輸入Linux命令。
連線示意圖如下:
第002節_使用eop燒寫裸板程式
燒寫裸板程式,需要用到的軟體是oflash.exe,使用到的硬體是op/eop(easy open Jtag),以及相應的驅動程式。
操作步驟如下:
- eop連線到PC;
- 安裝驅動;
- 安裝APP;
- 開發板的排線連線到eop,eop的USB介面連線到電腦;
- 執行:oflash xxx.bin
- 開發板斷開eop,eop的USB介面最好也斷開電腦;
- 設定從Nor/Nand啟動;
- 重新上電;
第003節_eop常見問題
eop常見問題通常有如下7個,我們可以根據oflash的提示資訊,來大致判斷是何種情況導致的問題。
- 未連線op/eop到電腦;
- 有其他程式在使用op/eop (同一時間只能有一個程式使用它);
- jtag線未接;
- 開發板未上電;
- oflash xxx.bin 時當前目錄下沒有xxx.bin;
- 燒寫完後沒有正確設定啟動開關;
燒寫完後,op/eop與開發板之間的排線未斷開, 導致程式無法執行;
當oflash顯示
unable to open ftdi devive:2
,
則可能是未連線op/eop到電腦和有其他程式在使用op/eop。當oflash顯示
Description: USB<=>JTAG&RS232 ANo CPU detectred, cupID = 0xffffffff
,
則可能是Jtag線未接。當oflash顯示
Description: USB<=>JTAG&RS232 ANo CPU detectred, cupID = 0x00000000
,
則可能是開發板未上電。當oflash顯示
ERROR: can't find the file : xx.bin.
,
則可能是當前路徑下沒用xx.bin,應該使用絕對路徑或者複製到指定目錄再切換到該目錄。當燒寫好程式後,開發板上電後卻沒有執行,
則可能是沒有正確設定啟動開關或者是op/eop與開發板之間的排線未斷開, 導致程式無法執行。
第004節_使用uboot燒寫裸板程式
在前面,使用eop燒寫一個200多k的uboot時,耗費了幾分鐘,這速度實在太慢了,在後續的開發過程中,我們的程式可能有許多錯誤,需要反覆修改燒寫,如果繼續用eop將會浪費很多時間。那麼有沒有更快的燒寫方式呢?有的,我們用uboot進行燒寫。
在2440上面,有兩種flash:Nand Flash和Nor Flash。我們可以首先把uboot燒到Nor Flash,然後Nor啟動執行uboot,使用uboot的USB下載功能接收PC傳來的檔案,然後uboot將收到的檔案燒寫到Nand Flash,最後Nand啟動,啟動我們燒寫的程式。
操作步驟如下:
- 使用op/eop把u-boot.bin燒到nor flash;
- 開發板設定為nor啟動, 上電後馬上在串列埠輸入空格鍵,使板子進入UBOOT而不是啟動板子上的核心;
- 連線PC與開發板的usb device口,如果沒有驅動,安裝驅動;
- 在UBOOT的串列埠選單中輸入n (表示接收USB檔案並燒寫到NAND);
- 使用dnw_100ask.exe傳送bin檔案;
- uboot即會自動接收、燒寫bin檔案;
- 斷電、設為NAND啟動、上電:執行nand上燒好的程式;
第005節_恢復出廠系統
開發板買來就是學習的,就是用來“破壞的”,不要擔心上面的東西被破壞,因為我們有辦法恢復出廠系統。
我們先對比PC看看出廠系統有哪些東西:
可以看到我們的東西都放在Flash上面,對於我們的JZ2440,有256M的Nand Flash和2M的Nor Flash,所以我們核心、根檔案系統那麼多的檔案,應該是放在Nand Falsh。Nand Falsh內部資料分佈如下:
其中bootloader既可以在Nand Flash也可以在Nor Flash,params的變數儲存有uboot的引數資訊。
恢復出廠系統的具體步驟如下:
- 使用op/eop燒寫u-boot到nor/nand, 設定為nor/nand啟動;
- 上電與開發板的usb device口; 安裝驅動;
- 下載核心: 在UBOOT的串列埠選單中輸入k;
- 使用dnw_100ask.exe傳送uImage檔案;
- uboot即會自動接收、燒寫uImage檔案;
- 下載檔案系統: 在UBOOT的串列埠選單中輸入y;
- 使用dnw_100ask.exe傳送 fs_qtopia.yaffs2 檔案;
- uboot即會自動接收、燒寫根檔案系統;
- . 輸入q退出UBOOT串列埠選單, 執行命令刪除引數分割槽: nand erase params;
- . 重啟(對於QT檔案系統,第一次重啟時會要求你較準觸控式螢幕);
(如果觸摸不準,可以等系統啟動後在串列埠執行:rm /etc/pointercal 然後重啟再次較準);