1. 程式人生 > >《3.ARM裸機第三部分-開發板、原理圖和資料手冊》

《3.ARM裸機第三部分-開發板、原理圖和資料手冊》

《3.ARM裸機第三部分-開發板、原理圖和資料手冊》

第一部分、章節目錄
1.3.1.開發板和光碟資料簡介
1.3.2.開發板硬體手冊帶讀
1.3.3.開發板刷系統1
1.3.4.開發板刷系統2
1.3.5.開發板刷系統3
1.3.6.X210核心板、底板原理圖導讀1
1.3.7.X210核心板、底板原理圖導讀2
1.3.8.S5PV210資料手冊導讀
1.3.9.補充-x210的dnw刷機
1.3.10.補充-linux下使用dd命令刷寫uboot
1.3.11.補充-X210V3S開發板刷機
1.3.12.補充-linux下dnw軟體的使用

第二部分、章節介紹
1.3.1.開發板和光碟資料簡介
介紹課程配套開發板X210大概情況,並且詳細介紹開發板官方提供的光碟資料分佈,哪些有用哪些暫時用不到。
1.3.2.開發板硬體手冊帶讀
帶著大家一起讀開發板官方提供的硬體手冊《X210V3硬體手冊.pdf》,瞭解開發板的一般配置和硬體資訊。
1.3.3.開發板刷系統1
安裝USB轉串列埠線驅動,使用SecureCRT做串列埠連線,進入系統控制檯,並且破壞出廠預燒錄的android系統以從SD啟動
1.3.4.開發板刷系統2
製作啟動SD卡,並且從SD卡啟動使用fastboot燒錄uboot、kernel、根檔案系統等到板載iNand中(dnw工具燒錄)
1.3.5.開發板刷系統3
android系統映象燒錄、linux+QT映象的燒錄
1.3.6.X210核心板、底板原理圖導讀1
帶大家一起看開發板原理圖,對原理圖的一般看法、查法、作用做系統講解,為以後學習外設程式設計時查原理圖打好基礎
1.3.7.X210核心板、底板原理圖導讀2
帶大家一起看開發板原理圖,對原理圖的一般看法、查法、作用做系統講解,為以後學習外設程式設計時查原理圖打好基礎
1.3.8.S5PV210資料手冊導讀
帶大家一起讀S5PV210的資料手冊,以及其他板載硬體的資料手冊的讀法擴充套件。
1.3.9.補充-x210的dnw刷機
很多同學反映uboot擦掉後內部iNand啟動失敗,外部SD啟動也失敗,機器變磚頭了···於是乎給大家增補一個dnw刷機的方式,經同學實踐可以解決問題。
1.3.10.補充-linux下使用dd命令刷寫uboot
有同學電腦執行不了九鼎開發板中提供的SD卡刷卡軟體,於是乎希望在linux下完成刷機。這裡我順便補充下linux下使用dd命令刷寫uboot到SD卡來製做SD啟動卡的教程,以供大家使用。
1.3.11.補充-X210V3S開發板刷機
本節主要介紹新版開發板X210V3S開發板和X210V3的差別、刷機時使用映象的不同
1.3.12.補充-linux下dnw軟體的使用
很多同學因為數字簽名問題windows下dnw不可用,因此補充講linux下dnw工具的使用。

第三部分、隨堂記錄
1.3.1.開發板和光碟資料簡介
詳見課程視訊和光碟資料。

1.3.2.開發板硬體手冊帶讀
詳見開發板光碟中《X210V3硬體手冊.pdf》

1.3.3.開發板刷系統1
1.3.3.1、什麼是刷系統
刷系統就是利用刷機工具,向開發板中燒錄預先編譯好的系統映象,使之在開發板上執行起來。
1.3.3.2、串列埠輸出的意義(做系統控制檯)
串列埠是一種硬體通訊口,很多年前的時候串列埠是CPU之間進行通訊的主要介面。但是現在因為串列埠通訊的速度很低,所以現在串列埠主要是用來做程式輸出監控、除錯。
桌面電腦可以開啟一個虛擬控制檯,嵌入式系統一般是用串列埠來做控制檯的。一般是用一根串列埠線連線開發板的串列埠和我們膝上型電腦的串列埠,然後在電腦上開啟一個串列埠監視,這樣開發板上的串列埠輸出內容就可以在電腦上看到。還可以通過監視終端向開發板輸入一些控制命令由開發板執行。常用的串列埠監視軟體有:超級終端、SecureCRT、minicom
1.3.3.3、安裝USB轉串列埠線的驅動
本來電腦都是有串列埠的(DM9介面),但是現在大家都用筆記本沒有串列埠了,所以這種串列埠連線線用不了。辦法是使用USB轉串列埠線,這種線傳入電腦後需要安裝驅動,安裝驅動後在電腦上會形成一個串列埠(叫usb轉串列埠),這樣就相當於你電腦有了一個串列埠,可以通過這個串列埠來監視開發板的串列埠輸出。
注意1:windows對USB裝置的管理是和USB口有關的,你每次把usb轉串列埠線插到1個口中,這樣得到的COM口號碼是不變的,方便我們後期使用。如果每次胡亂更換插口,可能得到的COM口會變。
注意2:COM口號碼是可以改的,還可以強制佔用顯示“已使用”的COM號,一般改成COM4以內的就可以了。
1.3.3.4、使用SecureCRT
從網盤下載SecureCRT.rar,解壓後直接使用。註冊時參考解壓包中的《說明.txt》。
開啟SecureCRT.exe後,建立一個Serial連線,開始監視串列埠。設定參考視訊中,注意流控一定要去掉。
開發板這邊串列埠一定要接串列埠2(官方出廠預設的燒錄映象都是使用串列埠2的),然後開機,就可以看到串列埠資訊了。
1.3.3.5、破壞iNand中的bootloader以從SD2啟動
留待第四部分,做LED實驗時再說。

1.3.4.開發板刷系統2
1.3.4.0、破壞iNand中的bootloader以從SD2啟動
busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync
解釋:這句話的意思就是說把板載的iNand的第一個扇區用全0來填充,其實就是擦除它,這樣我們板載的iNand的bootloader的開始第1個扇區就被破壞了。將來啟動時iROM還是會先從iNand中讀取前16KB,然後計算校驗和。這時候因為有1個扇區被擦掉了,所以校驗和不通過,所以啟動失敗(會從SD2去執行2nd啟動)。
注意:破壞板載iNand的bootloader後,不插外部SD卡,啟動時串列埠得到:SD checksum Error
1.3.4.1、製作啟動SD卡(其實就是燒錄uboot到SD卡中)
有2種燒寫方法:一種是在windows中用刷卡工具去製作啟動SD卡;另一種是在linux中用dd命令。
本節介紹第一種(比較簡單),刷卡工具在光碟:A盤\tools\x210_Fusing_Tool.rar
製作完SD後將SD卡插入開發板SD2通道(注意不是SD3),然後開機就可以進入uboot介面了。在uboot開機自動啟動倒數3秒之內迅速按下電腦回車鍵,打斷自動啟動。(否則會自動啟動iNand中的android)

1.3.4.2、fastboot介紹
fastboot是uboot中用來快速下載映象的一個命令,fastboot同時還是一個windows上的軟體。
fastboot下載時要注意1:fastboot是使用USB線進行資料傳輸的,所以fastboot執行之前要先連線開發板和主機之間的usb線。
fastboot下載時要注意2:需要安裝驅動。
1.3.4.3、fastboot驅動(X210 Android驅動)的安裝
驅動位置:A盤\tools\USB驅動\x210_android_driver

1.3.4.4、fastboot常用命令:
fastboot devices 命令用來檢視當前連線的裝置。(我們開發板看到的是:SMDKC110-01)
fastboot flash xxx 命令用來燒錄的
fastboot reboot 命令用來重啟系統
1.3.4.5、使用fastboot燒錄android4.0.4映象
在cmd下使用以下三個命令來完成燒錄
fastboot flash bootloader android4.0/uboot.bin 燒uboot
fastboot flash kernel android4.0/zImage-android 燒linux kernel
fastboot flash system android4.0/x210.img 燒android rom

uboot的引數設定:set bootcmd ‘movi read kernel 30008000; bootm 30008000’(預設就是這個,不用設定也行)

1.3.5.開發板刷系統3
1.3.5.1、燒錄linux+QT
fastboot flash bootloader linuxQT/uboot_inand.bin 燒uboot
fastboot flash kernel linuxQT/zImage-qt 燒linux kernel
fastboot flash system linuxQT/rootfs_qt4.ext3 燒rootfs
uboot的引數不用特意設定(因為我們刷了專為linux+QT定製的uboot,這個uboot中估計已經預製好了所有的啟動引數)
1.3.5.2、燒錄android2.3
fastboot flash bootloader android2.3/uboot.bin 燒uboot
fastboot flash kernel android2.3/zImage 燒linux kernel
fastboot flash system android2.3/x210.img 燒android rom
注意:android2.3中使用了串列埠0,所以啟動後要把串列埠插到串列埠0中,不然串列埠沒有任何啟動資訊出來。android2.3中螢幕上的logo是在左上角(也是個刷機成功的標誌)
1.3.5.3、燒錄android4.0.4
fastboot flash bootloader android4.0/uboot.bin 燒uboot
fastboot flash kernel android4.0/zImage-android 燒linux kernel
fastboot flash system android4.0/x210.img 燒android rom

1.3.6.X210核心板、底板原理圖導讀1
核心板、底板原理圖瀏覽
寫程式碼時需要查閱和參考的資料有:核心板原理圖、底板原理圖、相應硬體的資料手冊、S5PV210資料手冊

1.3.7.X210核心板、底板原理圖導讀2
1.3.7.1、原理圖、PCB圖、絲印圖各自是什麼
原理圖是電路原理設計圖,各個電路中的部件的邏輯連線圖。原理圖可能會影響軟體編寫
PCB圖是我們用來製作電路板,並且用電路板進行原件焊接,做成最終產品的生產性圖紙。先有原理圖設計,然後根據原理圖來設計PCB圖。PCB4圖是對原理圖的一種實現。原理圖和PCB圖一般都由硬體工程師來負責,但是原理圖設計時軟體工程師會一定程度參與。PCB圖的設計就完全是硬體工程師的事情了,與軟體工程師無任何關係。
絲印圖是PCB圖設計中,所有原件的外框的框圖。絲印圖其實就是整個電路板的實體的位置圖紙,與軟體和功能無關,與生產製造有關。對軟體工程師來說,絲印圖可以不理會。

1.3.7.2、原理圖對嵌入式軟體工程師的意義
原理圖是電路的邏輯連線。對於可程式設計器件來說,不同的電路連線可能意味著不同的程式設計引數,因此底層軟體工程師會需要查閱原理圖的接法,從而決定自己的軟體怎麼寫才能正確和硬體通訊。

1.3.7.3、嵌入式軟體開發人員對硬體掌握程度的要求
對軟體工程師來說,硬體究竟有沒有必要會?會到什麼程度?影響有多大?
軟體工程師分應用開發和底層開發兩大塊。對於應用開發工程師(直接基於作業系統來開發程式,呼叫作業系統的APi和庫函式等寫程式碼)來說,硬體完全被作業系統遮蔽了,可以完全不關心硬體;但是對於底層軟體工程師(驅動開發的、微控制器的、移植作業系統的)來說,看懂原理圖和資料手冊是非常有必要的,PCB圖就沒必要會了。
注意:一般來說,總工程師都是軟硬都會的,這個人一般軟體硬體都做過。所以對大家來說,如果時間很充裕,或者完全有條件,不妨都學習一點(學習是有輕重的);如果時間比較緊,著急工作,或者完全不感興趣,那就不要看了。

1.3.8.S5PV210資料手冊導讀
1.3.8.1、datasheet(資料手冊)的作用
資料手冊就是產品(一般是晶片)廠家編寫的,對這個產品的所有功能和用法的描述統一說明的文件。
1.3.8.2、資料手冊的正確讀法:先通讀概覽,然後根據需要去查閱。
1.3.8.3、學會利用文件目錄。
1.3.8.4、利用好pdf閱讀器的搜尋功能。

1.3.9.補充-x210的dnw刷機
1.3.9.1、背景
1 之前講第三部分的時候只講了SD卡刷機,並沒有講usb啟動刷機(dnw刷機)。因為sd卡刷機較簡單,dnw刷機較麻煩。
2 有同學刷錯了uboot,錯刷成了nand版本的uboot(還有些確實沒刷錯uboot),這時候在uboot中執行了movi write u-boot 0x30000000後,再次開機碰到詭異現象:串列埠輸出亂碼、SD卡不啟動。以為開發板變磚頭了。這時候的解決思路就是dnw刷機。
3 第四部分(1.4.ARM裸機第四部分-GPIO和LED)的第一節課已經講過了dnw下載裸機程式(dnw的介紹,dnw驅動的安裝,配置下載地址的方法),大家可以先看這節課,然後再來看本節。
1.3.9.2、刷機準備
1 看x210 dnw刷機.txt,按照其中進行操作
2 事先把開發板啟動方式撥到usb啟動。OM5打到VCC就能從usb啟動
3 兩個刷機檔案x210_usb.bin 和 uboot.bin 準備好。
1.3.9.3、刷機
刷機分2步:第一步刷x210_usb.bin,地址是0xd0020010;第二步刷uboot.bin,刷機地址是0x23e00000
uboot啟動起來後,先fdisk -c 0去重新分割槽,然後再fastboot·······

1.3.10.補充-linux下使用dd命令刷寫uboot
1.3.10.1、SD卡連線入linux中
首先得搞清楚:一個USB裝置插到電腦後,要麼可以在Windows中識別,此時不能在虛擬機器linux中識別;要麼能在linux中識別,但是在windows中又不見了。預設的一般都是連在Windows中的,所以linux是找不到的。
如果你需要將該裝置連線到linux中,需要在VMware軟體的選單“虛擬機器 -> 可移動裝置”中點選該裝置,選擇連線

連線進linux中,在命令列中:ls /dev/sd*檢視,和之前對比,就知道我們的SD卡在linux中的裝置編號了。一般是/dev/sdb
也有可能是sdc或者其他。我們後面的實驗是基於這個裝置號是/dev/sdb的,如果不是,後面的實驗要相應做修改。

1.3.10.2、製作SD啟動卡
執行 ./nand_fusing.sh /dev/sdb
1.3.10.3、使用SD卡啟動
先確定開發板是從SD卡啟動的
然後確定板子內的iNand中的uboot是被破壞的,不能啟動的。
SD卡插入SD2通道,啟動即可。啟動後(看有沒必要fdisk -c 0來分割槽)使用fastboot繼續刷機。

1.3.11.補充-X210V3S開發板刷機
1.3.11.1、背景介紹
(1)很多人刷機失敗,苦惱甚至放棄學習
(2)刷機的目的和意義搞清楚
(3)開發板的各個版本,以及版本差異。
1.3.11.2、刷機常見問題及分析處理
(1)螢幕顯示異常,原因是刷成了舊版本開發板的映象。解決方案就是用新版本映象。
(2)dnw驅動裝不上,多試幾次,禁用數字簽名
(3)fastboot驅動裝不上,多試幾次,windows聯網自動安裝,用360手機助手之類的工具安裝
(4)找不到撥碼開關,不知道如何設定USB啟動
(5)dnw下載uboot.bin時進度條不動,卡住,禁用數字簽名+右鍵管理員許可權執行dnw軟體,換電腦,使用linux下dnw軟體。
(6)dnw下載uboot.bin後串列埠沒有任何資訊輸出。可能性1:串列埠插錯了;可能性2:uboot.bin用錯了。解決方案:換串列埠插試試(正確的是用串列埠2),用正確的uboot.bin。
(7)執行了movi write u-boot 0x30000000後變磚了,解決方案就是dnw刷機。
(8)Windows不提示安裝驅動。如果開發板中就在執行uboot或者linux+QT,這時候插上USB線主機Windows也不會發現開發板;當我們uboot下執行了fastboot命令後主機就會提示裝fastboot驅動。當開發板運行了android系統後主機就會提示裝fastboot驅動;當開發板設定了USB啟動並且重啟時就會提示裝dnw驅動。
(9)android系統刷機成功啟動不成功。最大可能性還是映象用的不對。

1.3.11.3、正確的映象位置
(1)網盤\朱老師物聯網大講堂-全部視訊\朱有鵬老師嵌入式linux核心課程\不同版本開發板刷機看這裡
(2)老開發板X210V3
(3)新開發板X210V3S
(4)更新一批

1.3.12.補充-linux下dnw軟體的使用
1.3.12.1、linux下dnw獲取
(1)原始碼包獲取
(2)編譯和安裝
1.3.12.2、開發板連線到linux下
(1)開發板設定USB啟動,開機,windows裝置管理器中提示發現新硬體
(2)VMware選單:虛擬機器->可移動裝置->Samsung S5PC110 SEC Test B/D,點選連線
(3)成功連線後現象:1、Windows下裝置管理器沒了;2、ls /dev/secbulk0 裝置節點自動出現
1.3.12.3、使用dnw進行下載uboot.bin
(1)dnw -a 0xd0020010 x210_usb.bin
(2)dnw -a 0x23e00000 uboot.bin
成功標誌:SecureCRT中成功看到了uboot的啟動資訊,並且進入了uboot命令列。

1.3.12.4、uboot啟動後的刷機注意事項
(1)正確的uboot啟動後一定要先fdisk -c 0進行分割槽,然後再fastboot
(2)uboot的引數中bootcmd和bootargs一定要正確。
set bootcmd ‘movi read kernel 30008000; bootm 30008000’
set bootargs console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3