Uboot UBI 的移植
来源:互联网 发布:p2p网络摄像机管理软件 编辑:程序博客网 时间:2024/05/18 20:45
作者 :longfeey
1.1 Uboot UBI的移植
关于uboot的UBI的移植几乎没有说明介绍,移植首先要保证你的flash驱动能够跑起来,我是在nand flash 上跑的UBI。刚开始的时候我也没有什么头绪,只能够从uboot的readme开始查找一些蛛丝马迹。
- MTD Support (mtdparts command, UBI support)
CONFIG_MTD_DEVICE
Adds the MTD device infrastructure from the Linux kernel.
Needed for mtdparts command support.
CONFIG_MTD_PARTITIONS
Adds the MTD partitioning infrastructure from the Linux
kernel. Needed for UBI support.
因此,要UBI支持首先得要MTD支持,因此在配置文件中要添加以上两项的定义。
要移植UBI还要添加:
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_UBI
总的关于UBI的部分是以下几个宏:
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define CONFIG_MTD_PARTITIONS
#define CONFIG_RBTREE
#define CONFIG_LZO
同时要给NAND建立个默认的分区,方便以后操作。分区如下:
#define MTDIDS_DEFAULT "nand0=nand0"
#define MTDPARTS_DEFAULT "mtdparts=nand0:0x100000@0x0(u-boot),0x300000@0x120000(kernel),0x7b00000@0x420000(rootfs),-(reserved)"
#define MTD_ACTIVE_PART "nand0,2"
以上的配置都在uboot_imx/include/configs/mx51_vdphone.h文件中进行配置。
需要注意的是增加UBI的支持之后uboot会增大到300多KB,在NAND中启动,需要修改以下文件uboot-imx/cpu/arm_cortexa8/mx51/mxc_nand_load.S
add r6, r0, #0x1E00
ldr r5, =_end /* Try get right image size */
add r5, r2, #0x00060000 /* Fixme to get actual image size */
这里使用0x60000(384K)大小,已经足够,如果实际有变化,可以进行相应调节。如果uboot传给Copy_Good_Blk 拷贝的uboot的大小小于uboot的长度的话,uboot跑不起来,移植的时候被这个问题必须注意。
这个时候就可以make 了,执行以下命令:
make clean
make mx51_vdphone_config
make all
如果正常的话会编译出u-boot.bin在根目录下。
1.2 u-boot 下ubi的使用
1.2.1 配置u-boot nand 分区
通过mtdpart命令配置u-boot下的nand 分区,本项目已经在配置头文件里面设置了默认nand 分区,
#define MTDPARTS_DEFAULT "mtdparts=nand0:0x100000@0x0(u-boot),0x300000@0x120000(kernel),0x7b00000@0x420000(rootfs),-(reserved)"
如果需要修改,可以通过修改默认分区列表,也可以通过命令mtdpart进行重新分区。这里使用默认分区,通过以下命令使默认分区生效:
mtdpart default //设置默认分区
saveevn //保存分区信息
1.2.2 nand u-boot 烧写
通过以上的配置编译,如果成功生成u-boot.bin,那就可以通过SD卡启动,直接烧写u-boot.bin到nand flash了。操作步骤如下:
1) 下载u-boot.bin 到内存
tftp 0x90800000 /tftpboot/mx51/u-boot.bin
2) 擦除u-boot分区
nand erase u-boot
3) 烧写u-boot到nand flash分区
nand write 0x90800000 u-boot 0x60000
1.2.3 内核的烧写
内核的烧写和平常烧写方式一样,只需用nand 命令写入nand 即可,操作步骤如下:
1) 擦除kernel分区
nand erase kernel
2) 下载kernel到内存
tftp 0x90800000 /tftpboot/mx51/uImage 将内核通过tftp下载到内存中
3) 烧写kernel 到nand kernel分区
nand write 0x90800000 kernel 0x300000
1.2.4 UBI文件系统的烧写
本项目使用的文件系统将根文件系统和system文件系统整合在一起。所以,只需要烧写整合后的文件系统即可。如果要使用ubifs文件系统作为根文件系统,在烧写之前必须通过mkfs.ubifs工具将做好的文件系统制作镜像文件。mkfs.ubifs 工具是通过编译mtd-utils工具下的mkfs.ubifs目录即可生成的PC端UBIFS文件系统镜像制作工具。操作步骤如下:
1) 制作根文件系统
mkfs.ubifs -r root/ -m 2048 -e 129024 -c 2364 -o root-fs.img
root目录为整合android root和system文件系统后的目录,应当能够通过NFS系统的
2) 擦除root分区
nand erase root
3) 对root分区进行ubi格式化
ubi part root
4) 将文件系统下载到内存
tftp 0x90800000 ubifs.img
5) 将文件系统烧写到rootfs 中
ubi write 0x90800000 rootfs 0x339600
1.2.5 设置启动参数
设置bootargs:
setenv bootargs ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs console=ttymxc0,115200 wvga calibration init=/init rw
启动拨码开关5,8位置设置为ON,上电重新启动,即可从Nand flash 启动。
- Uboot UBI 的移植
- Uboot UBI 的移植
- [UBI]为AM335x uboot 移植UBI UBIFS功能
- ubi移植
- uboot支持ubi和ubifs遇到的问题
- Uboot的移植
- uboot的移植
- uboot 的初步移植
- tiny6410 uboot的移植
- uboot移植的分析
- 移植u-boot支持ubi遇到的问题总结
- 移植u-boot支持ubi遇到的问题总结
- 移植u-boot支持ubi遇到的问题总结
- 移植u-boot支持ubi遇到的问题总结
- 移植u-boot支持ubi遇到的问题总结
- 基于AT91SAM9X35EK的嵌入式Linux+UBI根文件系统移植成功
- 基于AT91SAM9261EK的嵌入式Linux+UBI根文件系统移植成功
- uboot移植:uboot下的mkconfig解析
- ORACLE相关语法——子程序和程序包(package,function,procedure
- read 系统调用剖析
- linux下手动删除数据库实例
- Android开发之旅:环境搭建及HelloWorld
- 如何从一个初学者成一个DBA
- Uboot UBI 的移植
- 海量数据库的查询优化及分页算法方案
- Java泛型实例
- 如何利用图片来提高设计效率?
- 数据查询优化的原则与方法
- Android基础知识总结
- 菜鸟学堂:TP-Link TL-WR340G+无线路由器设置指南
- Android中Log机制详解
- VC 调试错误 专题