長聚微嵌 DMA-210U Android 入門第一天------燒寫uboot、kernel和文件系統

前幾天買了個板子:長聚微嵌的DMA-210U。今天算是正式使用的第一天。

        首先,看了看文檔,決定重新燒錄一遍Android。

1.  燒錄uboot:

       板子從USB啓動(給的文檔有點差,跳線方式不是很清楚),這裏先要把uboot下載到內存中,這樣uboot跑起來後就可以進行燒寫了。然後用內存中運行的uboot再把uboot的程序下載到flash中。這樣uboot下次就可以從flash啓動了。

2. 燒錄kernel:

       板子從nand flash啓動(經過第一步,uboot已經在nand flash裏了),開始燒寫Linux內核zImage。每次燒錄實際上包括兩步,erase和write。首先erase將要write的分區,然後通過write寫入數據。還要說明的一點事:光盤中提供的下載軟件dnw1.01,每次使用該軟件USB download的時候,通常只是把數據下載到內存(雖然下載地址可以指定)。綜上所述,每次燒錄的正確順序應該是:erase--> dnw download---->write。

3. 燒錄文件系統:

        Android編譯後回生成ramdisk,img, systerm.img和userdata.img。這一步就是要把這三個文件分別燒錄到nand flash中。ramdish.img包含了初始化和配置信息,燒錄過程沒什麼特殊之處,還是三部曲erase--> dnw download---->write。

        其實現在給板子上電,從dnw上的打印信息和屏幕的企鵝畫面,基本可以判斷Linux kernel已經跑起來了。貌似曙光就在眼前了,go ahead,繼續燒寫system.img和userdata.img。這兩個文件的燒寫要用 nand write.yaffs命令,並且注意起始地址和數據長度。起始地址要和

linux的區分一致,也就是說要和dnw上打印出來的分區地址一致。比如我這裏打印的信息是:

0x000c0000-0x00100000 : "misc"
0x00100000-0x00600000 : "recovery"
0x00600000-0x00b00000 : "kernel"
0x00b00000-0x00e00000 : "ramdisk"
0x00e00000-0x08600000 : "system"
0x08600000-0x0d600000 : "cache"
0x0d600000-0x20000000 : "userdata"

所以system.img和userdata.img也必須在相應的位置。

4 悲劇發生了

        按照文檔的提示做到這裏,總算鬆了一口氣,燒錄系統的二萬五千里長徵總算走到了盡頭。板子重新上電,kernel開始啓動,linux的企鵝logo出現在屏幕上,屏幕顯示android2.2 runnning,。就在這時,悲劇發生了,dwn提示:

init: cannot find '/system/bin/sh', disabling 'console'
init: cannot find '/system/bin/pvrsrvinit', disabling 'pvrsrvinit'
init: cannot find '/system/bin/servicemanager', disabling 'servicemanager'
init: cannot find '/system/bin/vold', disabling 'vold'
init: cannot find '/system/bin/netd', disabling 'netd'
init: cannot find '/system/bin/debuggerd', disabling 'debuggerd'
init: cannot find '/system/bin/app_process', disabling 'zygote'
init: cannot find '/system/bin/mediaserver', disabling 'media'
init: cannot find '/system/bin/dbus-daemon', disabling 'dbus'
init: cannot find '/system/bin/installd', disabling 'installd'
init: cannot find '/system/bin/keystore', disabling 'keystore'
init: cannot find '/system/bin/rild', disabling 'ril-daemon'
enabling adb
adb_open
android_usb gadget: high speed config #1: UMS + ADB (Debugging mode)

然後,板子就進入了無盡的等待,一直是android2.2 runnning。

 

5. 下一步的打算

        哎,學藝不精、能力有限,各種問題總是源源不斷。木有辦法,只能在重重困難中殺出一條血路。只要硬件不出問題,uboot可以正常工作,剩下的應該問題不大。

        首先,基本可以肯定linux kernel應該是燒錄成功了,當然也就是說uboot肯定可以正常工作。現在感覺是文件系統出問題了。

         A) 或許是光盤sample image裏的system.img 和 userdata.img有問題。可以試一下自己編譯出來的兩個文件。

         B)燒寫system.img 和 userdata.img時,地址和長度出了問題。對這裏的Linux如何分區的不是很清楚,還有硬件上的地址空間的映射(哪塊分給ram, 哪塊分給flash)也不是很清楚

         C)對Android的啓動過程不是很清楚,不確定打印出的信息到達說明了什麼。可以看一下相關Android移植的一些文檔

        D)可以諮詢一下長聚微嵌的技術支持。還沒聯繫過,希望售後服務可以解決問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章