长聚微嵌 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)可以咨询一下长聚微嵌的技术支持。还没联系过,希望售后服务可以解决问题。

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