uboot+linux的整体方案

开发板的datasheet中都有详细的地址空间的划分,其中比较重要的两块是:DDR地址空间和Flash地址空间。DDR空间是系统和应用的运行空间,一般由linux系统自身进行使用和管理;Flash空间是系统和应用载体的存放空间,一般需要在使用前进行划分,由应用开发者进行管理。

简单的示例和说明。

其中,Flash的整体地址空间为:0x34000000~0x34FFFFFF,共16MB,使用的是Nor Flash芯片。布局需要做的工作是:

  • 确定uboot二进制文件的大小,使用的地址范围
  • 确定linux kernel镜像文件的大小,使用的地址范围
  • 确定rootfs 根文件系统的镜像文件大小,使用的地址范围
  • 估计整体应用方案所需的空间大小,选择可使用的地址范围

完成上述工作后,项目的布局如下:

  • uboot:0x34000000~0x34080000, 512KB
  • kernel : 0x34080000~0x34180000, 1MB, 文件大小为952.8KB
  • rootfs : 0x34180000~0x34700000, 5.5MB, 文件大小为3.85MB
  • data : 0x34700000~0x34FFFFFF, 9MB, 文件大小为3.725MB

到这一步已经完成了地址空间的逻辑布局,接下来就是存储空间的物理布局实现,就是对Flash进行分区,这里可以分成四个区,对应上述四块软件,也可以分成三个区:
mtdparts=phys_mapped_flash:0x180000(boot),0x580000(roofs70),0x900000(data)

烧写镜像文件
如何将上述相应的镜像文件下载到或者烧写到开发板上,也涉及到大批量生成的烧录方式

  • JTAG,或者配套的烧写器,再加上配套的软件套件,如CCS,完成uboot的烧写
  • 专门的串口烧写工具,完成uboot的烧写
  • 在uboot环境下可以使用tftp工具,完成kernel镜像、rootfs文件、app文件的烧写

项目中主要是:烧写器+tftp(uboot一般不修改)

uboot环境中tftp工具的使用
不同的uboot版本命令格式和提供的功能会有所差别,最好是使用前查阅帮助或者参考开发指导手册,主要的功能有从服务器下载文件和上传文件到服务器,常见的格式为:

- 下载文件:tftp <addr> <file>
- 上传文件:tftp <addr> <size> <file>
如果使用的是Nand Flash芯片,下载过程:

- 下载文件到内存地址
- erase Flash上对应的文件存放地址空间
- write 内存地址中的文件内容到Flash上对应的地址空间
如果使用的是Nor Flash芯片,下载过程:

- erase Flash上对应文件的存放地址空间
- 直接下载文件到Flash中对应文件的地址空间中:tftp 0x34180000 rootfs.jffs2
同样的现在也可以直接从Nor Flash中启动内核镜像,而不需要先将其加载到内存再启动:
setenv bootcmd "bootm 0x34080000"

批量生产的软件烧录

进行设备的批量生产阶段,肯定不能按照开发阶段的过程来进行软件环境的烧录,对于大批量来说,这样做效率太低,而且容易出错。越简单、单一的操作效率越高,越不容易出错。最佳的方式是:一步解决。在此推荐的方式是:

    • 按照上面的内容和步骤完成整个软件环境的布局和构建
    • 用tftp工具将整个Flash中的内容全部打包上传到服务器,得到一个整体方案镜像
    • 使用烧片器烧写整体镜像完成批量原始设备的软件烧录构建

嵌入式开发软件环境:uboot、kernel、rootfs、data布局分析的更多相关文章

  1. 在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)

    版本:v1.2   Crifan Li 摘要 本文主要介绍了如何在嵌入式Linux系统运行的时候,进行升级整个Linux系统,包括uboot,kernel和rootfs.以及简介Linux中的已有的通 ...

  2. buildroot管理uboot+kernel+rootfs

    鉴于自己制作根文件系统太麻烦了,所以想用buildroot管理uboot,kernel,另外还可以自动生产rootfs,于是花了两天研究了下buildroot的框架和使用,在自己的2440开发板上也跑 ...

  3. 嵌入式Linux开发之uboot启动Linux整体流程分析

    嵌入式Linux开发之uboot启动Linux整体流程分析 Uboot全称Universal Boot Loader,一个遵循GPL协议的的开源项目,其作用是引导操作系统,支持引导linux.VxWo ...

  4. Linux学习 :Uboot, Kernel, 根文件系统初步分析

    1.U-Boot启动内核的过程可以分为两个阶段: 1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2)第二阶段的功能 初始化本阶段使用的 ...

  5. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  6. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  7. 【4412嵌入式开发板学习笔记】认识uboot

    转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令, ...

  8. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

  9. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】

    转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...

随机推荐

  1. mysql大数据高并发处理

    一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...

  2. jQuery.hhNewSilder 滚动图片插件

    /**  * jQuery.hhNewSilder 滚动图片插件  * User: huanhuan  * QQ: 651471385  * Email: th.wanghuan@gmail.com ...

  3. 关于APP,原生和H5开发技术的争论

    App的开发技术,目前流行的两种方式,原生和Html5.原生分了安卓平台和ios平台(还有小众的黑莓.死去的塞班就不说了),H5就是Html5. 目前争论不休的问题,在早先前争论CS,BS架构的软件系 ...

  4. 一些SVN 地址

    lockbox3 地址: https://svn.code.sf.net/p/tplockbox/code/trunc indy10 地址:https://svn.atozed.com:444/svn ...

  5. RHEL 6.4 64bit kettle5.01导入xlsx格式的excel时报错

    环境:RHEL 6.4 64bit : kettle5.01:xlsx格式的excel 创建的job,在spoon里面运行都没有问题(Linux和windows) 在windows的命令行运行也没有问 ...

  6. hdu 5626 Clarke and points 数学推理

    Clarke and points Problem Description   The Manhattan Distance between point A(XA,YA) and B(XB,YB) i ...

  7. sscanf用法简析

    1. 常见用法. char buf[512] = ; sscanf("123456 ", "%s", buf); printf("%s\n" ...

  8. 使用Memcached、Spring AOP构建数据库前端缓存框架

    数据库访问可能是很多网站的瓶颈.动不动就连接池耗尽.内存溢出等.前面已经讲到如果我们的网站是一个分布式的大型站点,那么使用 memcached实现数据库的前端缓存是个很不错的选择:但如果网站本身足够小 ...

  9. 自动寻路NavMesh

    步骤 1.创建地形 2.添加角色 3.创建多个障碍物,尽量摆放的复杂些,用来检测NavMesh的可用性和效率 4.选中地形,在Navigation窗口中,设置Navigation Static 5.依 ...

  10. [HDOJ - 5282] Senior's String 【DP】

    题目链接:BZOJ - 5282 题目分析 LCS 就是用经典的 O(n^2) DP 解决,f[i][j] 表示 x 串前 i 个字符与 y 串前 j 个字符的 LCS 长度. f[i][j] = m ...