开发板怎么烧android系统
答案:1 悬赏:40 手机版
解决时间 2021-03-17 00:30
- 提问者网友:凉末
- 2021-03-16 18:11
开发板怎么烧android系统
最佳答案
- 五星知识达人网友:动情书生
- 2021-03-16 19:08
首先是友善之臂的Mini6410,它提供了两种Boot,一种是移植的三星提供U-Boot1.1.6,这个版本不支持UBI文件系统的烧写,他们自己做了个superboot,支持UBI,但是不开源,没用过。
然后就是飞凌的OK6410,他们使用的也是三星提供的U-Boot,不支持UBI。所以想出另外的方式来烧写。他们的烧写使用了自己的 SD卡烧写工具:SD_Writer,首先烧写了一个mmc.bin和一个zImage-sd的文件到SD卡中,前者mmc.bin其实就是用于SD卡启动的,后者zImage-sd是一个内核文件。我们首先来看看mmc.bin做了哪些事情,从SD卡启动,进入U-Boot的下载模式,使用printenv打印环境变量,可得:
SMDK6410 # printenv
bootargs=rootdelay=0 console=ttySAC0,115200
bootcmd=nand erase;
fatload mmc 0:1 0x50008000 u-boot.bin;nand write.uboot 0x50008000 0 0x100000;
fatload mmc 0:1 0x50008000 zImage;nand write.e 0x50008000 0x100000 0x500000;
movi read kernel 0x50008000;bootm 0x50008000
从上面得bootcmd可以知道做的事情分四步:
1、擦除整个NAND Flash;
2、从SD卡中将u-boot.bin文件下载到内存中,然后烧写到NAND Flash上;
3、从SD卡中将zImage下载到内存中,然后烧写到NAND Flash上;
4、从SD卡读取内核(不是上一步烧写的zImage,而是之前使用SD卡烧写工具烧写的zImage-sd)到内存,然后启动这个内核。而启动参数就是上面的bootargs所显示。
进入这个内核之后,就会进入下面这个命令行,
可能有人会觉得之前烧写了U-Boot和zImage-sd到SD卡上,并没有烧写文件系统,那这个内核怎么启动呢?这里我们看一下命令提示符前面“initramfs”这几个字符就明白了。
所有的2.6版本linux内核都有一个特殊的文件系统rootfs,是内核启动的初始始根文件系统,initramfs的文件会复制到rootfs。如 果把initramfs比作种子,那么rootfs就是它生长的土壤。大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs。
这下大家就知道了吧,但是由于飞凌没提供的源文件,所以不知道yjsx这个程序具体是啥,只能通过看烧写的过程知道了,这里我就不贴了。主要做的工作就是把拷贝到SD卡中的文件系统烧写到NAND Flash上,注意,这里他们烧写的是yaffs格式,而不是ubi,我猜想他们仅仅是为了方便用户使用SD卡烧写(毕竟友善之臂的烧写方式确实非常好),而不是使用ubi文件系统。
这里再来说一些Real6410和TQ6410,他们做法类似,Real6410是在NAND分区的时候分了两个文件系统区,一个是cramfs,一个是真正用到的文件系统区。先启动内核进入cramfs文件系统,将NAND格式化为UBI格式的,再进行烧写。同样,TQ6410也是先挂载NFS文件系统,将NAND格式化UBI,然后进行烧写。
不过貌似TQ6410V2已经支持了UBI烧写,这个还没看。
然后就是飞凌的OK6410,他们使用的也是三星提供的U-Boot,不支持UBI。所以想出另外的方式来烧写。他们的烧写使用了自己的 SD卡烧写工具:SD_Writer,首先烧写了一个mmc.bin和一个zImage-sd的文件到SD卡中,前者mmc.bin其实就是用于SD卡启动的,后者zImage-sd是一个内核文件。我们首先来看看mmc.bin做了哪些事情,从SD卡启动,进入U-Boot的下载模式,使用printenv打印环境变量,可得:
SMDK6410 # printenv
bootargs=rootdelay=0 console=ttySAC0,115200
bootcmd=nand erase;
fatload mmc 0:1 0x50008000 u-boot.bin;nand write.uboot 0x50008000 0 0x100000;
fatload mmc 0:1 0x50008000 zImage;nand write.e 0x50008000 0x100000 0x500000;
movi read kernel 0x50008000;bootm 0x50008000
从上面得bootcmd可以知道做的事情分四步:
1、擦除整个NAND Flash;
2、从SD卡中将u-boot.bin文件下载到内存中,然后烧写到NAND Flash上;
3、从SD卡中将zImage下载到内存中,然后烧写到NAND Flash上;
4、从SD卡读取内核(不是上一步烧写的zImage,而是之前使用SD卡烧写工具烧写的zImage-sd)到内存,然后启动这个内核。而启动参数就是上面的bootargs所显示。
进入这个内核之后,就会进入下面这个命令行,
可能有人会觉得之前烧写了U-Boot和zImage-sd到SD卡上,并没有烧写文件系统,那这个内核怎么启动呢?这里我们看一下命令提示符前面“initramfs”这几个字符就明白了。
所有的2.6版本linux内核都有一个特殊的文件系统rootfs,是内核启动的初始始根文件系统,initramfs的文件会复制到rootfs。如 果把initramfs比作种子,那么rootfs就是它生长的土壤。大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs。
这下大家就知道了吧,但是由于飞凌没提供的源文件,所以不知道yjsx这个程序具体是啥,只能通过看烧写的过程知道了,这里我就不贴了。主要做的工作就是把拷贝到SD卡中的文件系统烧写到NAND Flash上,注意,这里他们烧写的是yaffs格式,而不是ubi,我猜想他们仅仅是为了方便用户使用SD卡烧写(毕竟友善之臂的烧写方式确实非常好),而不是使用ubi文件系统。
这里再来说一些Real6410和TQ6410,他们做法类似,Real6410是在NAND分区的时候分了两个文件系统区,一个是cramfs,一个是真正用到的文件系统区。先启动内核进入cramfs文件系统,将NAND格式化为UBI格式的,再进行烧写。同样,TQ6410也是先挂载NFS文件系统,将NAND格式化UBI,然后进行烧写。
不过貌似TQ6410V2已经支持了UBI烧写,这个还没看。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯