嵌入式软件环境构建:uboot、kernel、rootfs、app布局(转载)
2014-02-10 09:20
211 查看
嵌入式开发涉及硬件和软件两部分,个人目前主要是做嵌入式软件部分,使用uboot+linux的整体方案。这里所说的“嵌入式软件环境”,不是指宿主机上的嵌入式开发环境,而是指目标机中的运行软件环境,只是简要介绍一种布局及相应的实现步骤。
其中,Flash的整体地址空间为:0x34000000~0x34FFFFFF,共16MB,使用的是NorFlash芯片。布局需要做的工作是:
确定uboot二进制文件的大小,使用的地址范围
确定linuxkernel镜像文件的大小,使用的地址范围
确定rootfs根文件系统的镜像文件大小,使用的地址范围
估计整体应用方案所需的空间大小,选择可使用的地址范围
完成上述工作后,项目的布局如下:
uboot:0x34000000~0x34080000,512KB
kernel:0x34080000~0x34180000,1MB,文件大小为952.8KB
rootfs:0x34180000~0x34700000,5.5MB,文件大小为3.85MB
app:0x34700000~0x34FFFFFF,9MB,文件大小为3.725MB
到这一步已经完成了地址空间的逻辑布局,接下来就是存储空间的物理布局实现,就是对Flash进行分区,这里可以分成四个区,对应上述四块软件,也可以分成三个区:
在开发过程中有很多的选择,主要的有:
JTAG,或者配套的烧写器,再加上配套的软件套件,如CCS,完成uboot的烧写
专门的串口烧写工具,完成uboot的烧写
在uboot环境下可以使用tftp工具,完成kernel镜像、rootfs文件、app文件的烧写
基本就是上面的一个过程,在我的第一个项目中,主要是使用:JTAG+CCS+tftp的方式,现在项目中则是:烧写器+tftp(uboot一般不修改)。
在我的第一个项目中,使用的是NandFlash芯片,下载过程:
当前项目中,使用的是NorFlash芯片,下载过程:
因为手上现在没有NandFlash芯片的开发板,没法测试第二种方式是否可以使用NandFlash环境。
同样的现在也可以直接从NorFlash中启动内核镜像,而不需要先将其加载到内存再启动:
按照上面的内容和步骤完成整个软件环境的布局和构建
用tftp工具将整个Flash中的内容全部打包上传到服务器,得到一个整体方案镜像
使用烧片器烧写整体镜像完成批量原始设备的软件烧录构建
一、软件环境的布局
开发板的datasheet中都有详细的地址空间的划分,其中比较重要的两块是:DDR地址空间和Flash地址空间。DDR空间是系统和应用的运行空间,一般由linux系统自身进行使用和管理;Flash空间是系统和应用载体的存放空间,一般需要在使用前进行划分,由应用开发者进行管理。在这里以我现在正在做的项目进行简单的示例和说明。其中,Flash的整体地址空间为:0x34000000~0x34FFFFFF,共16MB,使用的是NorFlash芯片。布局需要做的工作是:
确定uboot二进制文件的大小,使用的地址范围
确定linuxkernel镜像文件的大小,使用的地址范围
确定rootfs根文件系统的镜像文件大小,使用的地址范围
估计整体应用方案所需的空间大小,选择可使用的地址范围
完成上述工作后,项目的布局如下:
uboot:0x34000000~0x34080000,512KB
kernel:0x34080000~0x34180000,1MB,文件大小为952.8KB
rootfs:0x34180000~0x34700000,5.5MB,文件大小为3.85MB
app:0x34700000~0x34FFFFFF,9MB,文件大小为3.725MB
到这一步已经完成了地址空间的逻辑布局,接下来就是存储空间的物理布局实现,就是对Flash进行分区,这里可以分成四个区,对应上述四块软件,也可以分成三个区:
二、布局的实现方式
这里主要是指如何将上述相应的镜像文件下载到或者烧写到开发板上,也涉及到大批量生成的烧录方式,我在第一个项目时就在这一块纠结过,现在算是后知后觉。在开发过程中有很多的选择,主要的有:
JTAG,或者配套的烧写器,再加上配套的软件套件,如CCS,完成uboot的烧写
专门的串口烧写工具,完成uboot的烧写
在uboot环境下可以使用tftp工具,完成kernel镜像、rootfs文件、app文件的烧写
基本就是上面的一个过程,在我的第一个项目中,主要是使用:JTAG+CCS+tftp的方式,现在项目中则是:烧写器+tftp(uboot一般不修改)。
uboot环境中tftp工具的使用
不同的uboot版本命令格式和提供的功能会有所差别,最好是使用前查阅帮助或者参考开发指导手册,主要的功能有从服务器下载文件和上传文件到服务器,常见的格式为:同样的现在也可以直接从NorFlash中启动内核镜像,而不需要先将其加载到内存再启动:
批量生产的软件烧录
进行设备的批量生产阶段,肯定不能按照开发阶段的过程来进行软件环境的烧录,对于大批量来说,这样做效率太低,而且容易出错。越简单、单一的操作效率越高,越不容易出错。最佳的方式是:一步解决。在此推荐的方式是:按照上面的内容和步骤完成整个软件环境的布局和构建
用tftp工具将整个Flash中的内容全部打包上传到服务器,得到一个整体方案镜像
使用烧片器烧写整体镜像完成批量原始设备的软件烧录构建
相关文章推荐
- 嵌入式软件环境构建:uboot、kernel、rootfs、app布局
- 嵌入式开发软件环境:uboot、kernel、rootfs、data布局分析
- sd卡烧写嵌入式uboot/kernel及rootfs
- 驱动开发环境搭建-uboot,kernel,rootfs
- 建立嵌入式软件开发的自动构建环境
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS
- Ubuntu下 嵌入式Qt开发环境的搭建--转载
- 构建嵌入式开发环境
- [Android入门]从零构建Android app之天气——3.配置项目环境
- 使用PVCS系列软件构建配置管理环境(一)
- 嵌入式S5PV210 硬件DIY uboot ,kernel ,android移植QQ群(27100460)群委员会2013年年终总结
- s5pv210 uboot 源码分析 笔记版 转载请注明出处---crosskernel@gmail.com
- 使用docker来构建嵌入式开发环境
- Eclipse+Tomcat+Mysql构建J2EE开发环境(转载)
- 用Visual Studio.net 2010构建MASM编程环境(转载jinsonghu专栏)
- 用开源软件构建App的高效服务端
- Android下的U-boot,kernel,rootfs烧录
- 构建跨平台的自由桌面开发环境(C/C++)(二)软件安装和配置
- JAVA->编译环境软件EDITPLUS(转载)