cazureopi 发表于 2016-5-23 11:42:06

orangepi linux启动流程 分区表

本帖最后由 cazureopi 于 2016-6-2 10:40 编辑

看了一些嵌入式开发的书,感觉千篇一律
总结opi和其它嵌入式的启动流程

启动流程
---> 上电--->
SPL(boot0)-->
u-boot-->
kernel(script.bin uImage)-->
rootfs

分区表(SD TF卡上的)
start             end         
0                     8                        Unused,pratition table
8                   16400            SPL (boot0)
16400       40960            U-boot
40960      124927             pratition1   kernel (vfat filesystem)
124928-                              pratition2   rootfs (ext4 filesystem)



   

cazureopi 发表于 2016-5-25 15:19:50

本帖最后由 cazureopi 于 2016-6-2 10:38 编辑

全志H3有一个特定的引导过程,引导加载程序中描述页面。
BootROM检测板子上的储存设备,检测到sd卡后,从内存卡上16扇区或8kb上的加载boot0.
然后boot0从内存卡32800扇区或者16400kb加载u-boot   
boot0 uboot这些二进制文件有一个特定的头,其中包括一个神奇的字符串和一个校验和。必须正确的二进制通过前一个阶段的接受和执行
下面介绍在内存卡上安装的过程boot0和u-boot的过程
SD卡注意你必须留下足够的未使用空间(安装系统至少需要4GB)
注意 : boot0和uboot安装在内存卡8k-40960k上,所以第一个分区从40960开始,否则u-boot可能被文件系统覆盖使用!!!
烧写这些前建议用fdisk删除sd卡上的所有分区!!!

#清除sd 
dd if=/dev/zero of=/dev/mmcblk0 bs=1k seek=8 count=40960

#写boot0  
dd if=boot0_sdcard.fex of=/dev/mmcblk0 bs=1k seek=8

#写u-boot
dd if=u-boot.bin of=/dev/mmcblk0 bs=1k seek=16400

说明:
/dev/mmcblk0是sd卡的设备名
boot0_sdcard.fex是boot0二进制文件
u-boot.bin是uboot二进制文件


完成上面事情后,你的内存卡就可以引导启动系统了,但没有内核和文件系统
需要有一个vfat文件系统启动分区来存储您的内核和其他引导文件,和一个ext4文件系统的rootfs。
可以使用fdisk命令建立,但一定注意要从40960开始建立第一个分区,否则u-boot可能被文件系统覆盖使用!!!

cazureopi 发表于 2016-6-14 07:48:07

http://soihead.cn/orangepi-linux-partition.jpg

yuzhi22 发表于 2016-10-18 09:40:17

顶贴,我也在学习。话说这全志的性价比挺高的,为啥学的人这么少呢!

abzhang 发表于 2018-9-15 15:23:40

yuzhi22 发表于 2016-10-18 09:40
顶贴,我也在学习。话说这全志的性价比挺高的,为啥学的人这么少呢!

主要是资源太少了.支持很不到位.
页: [1]
查看完整版本: orangepi linux启动流程 分区表