转载地址: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 的移植相关推荐

  1. UBI 文件系统移植 sys 设备信息【转】

    转自:http://blog.chinaunix.net/uid-25304914-id-3058647.html cat /sys/class/misc/ubi_ctrl/dev --------- ...

  2. uboot中IDE移植

    1.配置 首先要支持IDE需要在CONFIG_COMMANDS中添加CFG_CMD_IDE命令,然后要添加IDE的相关配置信息.不看代码就不知道需要哪些信息,可以先编译一下试试,如果出错就会提示哪些宏 ...

  3. S5PV210 Uboot开发与移植02:Uboot配置与编译

    目录 1. uboot源码目录简介 2. uboot编译原理引入 2.1 功能模块配置 2.1.1 在.c文件中不编译相应的功能语句 2.1.2 在make时不编译相应的功能模块 2.2 跨平台编译环 ...

  4. 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 ...

  5. 嵌入式linux之Uboot和系统移植--基础

    <uboot和系统移植-第1部分-uboot学习前传> (观看朱友鹏老师视频后整理的笔记)   1.为什么要有uboot 2.为什么是uboot 3.uboot必须解决哪些问题 4.ubo ...

  6. omapl138移植uboot系列之移植板卡(第五篇)

    上节操作完成后,虽然uboot中有了我们自己的板卡,但并未进行移植,所以现在是还不能烧录的,本节将带领大家根据自己的板卡进行uboot移植. 2.4.1 图形界面下配置 命令行执行 make menu ...

  7. 话说linux内核-uboot和系统移植第14部分-朱有鹏-专题视频课程

    话说linux内核-uboot和系统移植第14部分-5304人已学习 课程介绍         本课程为linux kernel移植的第1部分,主要内容是对linux内核有关的知识和概念的补充.认识清 ...

  8. uboot网卡驱动移植

    uboot网卡驱动移植 定义相应的宏,使能uboot的网卡 添加ping和tftp命令 移植网口初始化代码 注册网卡 定义相应的宏,使能uboot的网卡 官方的uboot默认是不使能网卡相关的代码的, ...

  9. [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 ...

最新文章

  1. 如何通过BIPlatform完成多维报表以及图形配置
  2. python-IDE的使用(小白先看)
  3. 【排序算法】计数排序
  4. 【LeetCode】3月25日打卡-Day10
  5. java mockserver搭建_mockjs,json-server一起搭建前端通用的数据模拟框架教程
  6. Java springcloud B2B2C o2o多用户商城 springcloud架构
  7. javax.mail.MessagingException: 501 Syntax: HELO hostname Linux端异常解决
  8. 如何在Android Studio中获取SHA-1指纹证书以获得调试模式?
  9. Confluence 6 为站点启用匿名用户访问
  10. Python编写的强大的、通用的解析器
  11. ARC098E Range Minimum Queries
  12. CSS3如何实现DIV圆角边框
  13. Java聊天室的设计与实现毕业设计
  14. flutter开发的ios应用没法通过爱思等工具浏览文件目录Document
  15. ipcalc命令 – 简单的IP地址计算器
  16. app登录的token设计
  17. 用了这么多年iPhone,你知道包装盒里为何会有两张贴纸?看完涨知识
  18. 博主已开启评论精选什么意思_从0涨粉到150万只用了3个视频!房车旅行博主又破纪录了 | 海外Weekly...
  19. css实现文字大小自适应
  20. 【Android 10 源码】healthd 模块 BatteryService 初始化

热门文章

  1. 如何关闭点击Office Word ,Exce 超链接 警告!
  2. PCA主成分分析方法
  3. 用matlab电磁波双缝干涉实验报告,基于MATLAB的杨氏双缝干涉实验的研究
  4. MC采样(随机投点法)——附代码
  5. 老友记台词学习笔记 SE01EP04(二)
  6. 医疗器械电磁兼容试验及标准要求
  7. 用C#对Illustrator矢量图形软件进行编程之2
  8. 装箱问题--C++实现
  9. HTML5 合并单元格
  10. 一个b2b2c多用户商城系统怎么搭建?