博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式开发软件环境:uboot、kernel、rootfs、data布局分析
阅读量:5910 次
发布时间:2019-06-19

本文共 1529 字,大约阅读时间需要 5 分钟。

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中的内容全部打包上传到服务器,得到一个整体方案镜像
    • 使用烧片器烧写整体镜像完成批量原始设备的软件烧录构建

转载地址:http://gstpx.baihongyu.com/

你可能感兴趣的文章
半天打造小型万能OA办公系统, 靠的就是万能表单提交 + 轻量级工作流审批组件...
查看>>
我的友情链接
查看>>
CSS技巧笔记
查看>>
WP移动设备压缩与解压控件Xceed Zip for .NET Compact Framework控件下载及详细介绍使用方法...
查看>>
在右下角弹出通知窗口
查看>>
proc文件系统探索 之 根目录下的文件[六]
查看>>
搭建ICINGA监控
查看>>
LInux远程文件传输效率工具:lrzsz
查看>>
Java_String的操作
查看>>
如何成为一名“***”?
查看>>
初次使用VS2010基于C++开发项目碰到的问题及解决方法
查看>>
占用CPU时间,调用函数,点亮LED的C语言程序 【原创】
查看>>
redmine和testlink的迁移和集成
查看>>
Roman to Integer leetcode
查看>>
python中使用xlrd、xlwt操作excel表格详解
查看>>
重做日志与归档日志有什么区别
查看>>
Linux的经典shell命令整理
查看>>
克隆的CentOS6.6系统,网卡显示不存在的解决方法
查看>>
Python基础:编码规范(4)
查看>>
Git分支介绍
查看>>