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

更多相关文章

  1. android 屏蔽指定activity启动(程序锁)
  2. 如何查看Android设备中的启动服务
  3. Android(安卓)Native 程序逆向入门(一)—— Native 程序的启动流程
  4. Android开发:APP引导页启动页小Demo(实例)
  5. 众多Android(安卓)开源项目推荐,给力工作给力学习(转载)
  6. Android(安卓)Okhttp3 (二) 二次封装请求管理类
  7. activity的几种启动模式
  8. My Github Start
  9. android启动Activity的两种方法

随机推荐

  1. android 4中文件操作
  2. Android漏洞
  3. Android调用系统camera
  4. Android(安卓)Studio Unknown host ‘dow
  5. 横、竖分割线
  6. 监测Android(安卓)2G CMCC Signal Streng
  7. ADROID2.2系统多国语言定制
  8. Android(安卓)Studio2.1.3之后在小米手机
  9. Android: ViewDragHelper tutorial
  10. android notification 示例