本文共 1529 字,大约阅读时间需要 5 分钟。
uboot+linux的整体方案
开发板的datasheet中都有详细的地址空间的划分,其中比较重要的两块是:DDR地址空间和Flash地址空间。DDR空间是系统和应用的运行空间,一般由linux系统自身进行使用和管理;Flash空间是系统和应用载体的存放空间,一般需要在使用前进行划分,由应用开发者进行管理。
简单的示例和说明。
其中,Flash的整体地址空间为:0x34000000~0x34FFFFFF,共16MB,使用的是Nor Flash芯片。布局需要做的工作是:
完成上述工作后,项目的布局如下:
到这一步已经完成了地址空间的逻辑布局,接下来就是存储空间的物理布局实现,就是对Flash进行分区,这里可以分成四个区,对应上述四块软件,也可以分成三个区:mtdparts=phys_mapped_flash:0x180000(boot),0x580000(roofs70),0x900000(data)烧写镜像文件如何将上述相应的镜像文件下载到或者烧写到开发板上,也涉及到大批量生成的烧录方式
项目中主要是:烧写器+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"批量生产的软件烧录进行设备的批量生产阶段,肯定不能按照开发阶段的过程来进行软件环境的烧录,对于大批量来说,这样做效率太低,而且容易出错。越简单、单一的操作效率越高,越不容易出错。最佳的方式是:一步解决。在此推荐的方式是:
转载地址:http://gstpx.baihongyu.com/