Uboot UBI 的移植
转载地址:http://blog.csdn.net/longfeey/article/details/5887007
作者 :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 的移植相关推荐
- UBI 文件系统移植 sys 设备信息【转】
转自:http://blog.chinaunix.net/uid-25304914-id-3058647.html cat /sys/class/misc/ubi_ctrl/dev --------- ...
- uboot中IDE移植
1.配置 首先要支持IDE需要在CONFIG_COMMANDS中添加CFG_CMD_IDE命令,然后要添加IDE的相关配置信息.不看代码就不知道需要哪些信息,可以先编译一下试试,如果出错就会提示哪些宏 ...
- S5PV210 Uboot开发与移植02:Uboot配置与编译
目录 1. uboot源码目录简介 2. uboot编译原理引入 2.1 功能模块配置 2.1.1 在.c文件中不编译相应的功能语句 2.1.2 在make时不编译相应的功能模块 2.2 跨平台编译环 ...
- S5PV210 Uboot开发与移植03:Uboot启动流程详解
目录 1. start.S解析 1.1 uboot入口分析 1.2 头文件包含 1.2.1 config.h 1.2.2 version.h 1.2.3 asm/proc/domain.h 1.2.4 ...
- 嵌入式linux之Uboot和系统移植--基础
<uboot和系统移植-第1部分-uboot学习前传> (观看朱友鹏老师视频后整理的笔记) 1.为什么要有uboot 2.为什么是uboot 3.uboot必须解决哪些问题 4.ubo ...
- omapl138移植uboot系列之移植板卡(第五篇)
上节操作完成后,虽然uboot中有了我们自己的板卡,但并未进行移植,所以现在是还不能烧录的,本节将带领大家根据自己的板卡进行uboot移植. 2.4.1 图形界面下配置 命令行执行 make menu ...
- 话说linux内核-uboot和系统移植第14部分-朱有鹏-专题视频课程
话说linux内核-uboot和系统移植第14部分-5304人已学习 课程介绍 本课程为linux kernel移植的第1部分,主要内容是对linux内核有关的知识和概念的补充.认识清 ...
- uboot网卡驱动移植
uboot网卡驱动移植 定义相应的宏,使能uboot的网卡 添加ping和tftp命令 移植网口初始化代码 注册网卡 定义相应的宏,使能uboot的网卡 官方的uboot默认是不使能网卡相关的代码的, ...
- [Zybo u-boot Linux系统移植]-ZYBO Zync-7000 Development Board Work Booting Linux on the ZYBO
ZYBO Zync-7000 Development Board Work Booting Linux on the ZYBO 本文翻译自:http://www.dbrss.org/zybo/tuto ...
最新文章
- 如何通过BIPlatform完成多维报表以及图形配置
- python-IDE的使用(小白先看)
- 【排序算法】计数排序
- 【LeetCode】3月25日打卡-Day10
- java mockserver搭建_mockjs,json-server一起搭建前端通用的数据模拟框架教程
- Java springcloud B2B2C o2o多用户商城 springcloud架构
- javax.mail.MessagingException: 501 Syntax: HELO hostname Linux端异常解决
- 如何在Android Studio中获取SHA-1指纹证书以获得调试模式?
- Confluence 6 为站点启用匿名用户访问
- Python编写的强大的、通用的解析器
- ARC098E Range Minimum Queries
- CSS3如何实现DIV圆角边框
- Java聊天室的设计与实现毕业设计
- flutter开发的ios应用没法通过爱思等工具浏览文件目录Document
- ipcalc命令 – 简单的IP地址计算器
- app登录的token设计
- 用了这么多年iPhone,你知道包装盒里为何会有两张贴纸?看完涨知识
- 博主已开启评论精选什么意思_从0涨粉到150万只用了3个视频!房车旅行博主又破纪录了 | 海外Weekly...
- css实现文字大小自适应
- 【Android 10 源码】healthd 模块 BatteryService 初始化