福州哪里做网站,人工智能建筑设计软件,企业网站的基本内容以及营销功能,wordpress 内网访问全志ARM926 Melis2.0系统的开发指引④ 编写目的7. 固件打包脚本7.1.概要描述7.2.术语定义7.2.1. makefile7.2.2. image.bat 7.3.工具介绍7.4.打包步骤7.4.1. makefile 部分7.4.2. image.bat 部分 7.5.问题与解决方案7.5.1. 固件由那些文件构成7.5.2. melis100.fex 文件包含什么… 全志ARM926 Melis2.0系统的开发指引④ 编写目的7. 固件打包脚本7.1.概要描述7.2.术语定义7.2.1. makefile7.2.2. image.bat 7.3.工具介绍7.4.打包步骤7.4.1. makefile 部分7.4.2. image.bat 部分 7.5.问题与解决方案7.5.1. 固件由那些文件构成7.5.2. melis100.fex 文件包含什么内容7.5.3. ramdisk.iso7.5.4. udisk.iso7.5.5. 如何对 sysdata 分区进行添加7.5.6. 分区对齐设置7.5.7. 固件烧录后打印提示 spinor 不支持 -. 全志相关工具和资源-.1 全志固件镜像修改工具 ImageModify.exe 下载-.2 全志固件USB刷机工具 PhoenixSuit 下载-.3 全志Melis2.0 用户手册.pdf下载-.4 全志melis2.0 sdk源码库下载 编写目的
本文档是全志 Melis2.0 系统的开发指引文档旨在协助开发者了解和掌握 Melis 系统快速搭建 Melis系统的开发环境将 Melis2.0 系统应用到产品开发中。
7. 固件打包脚本
7.1.概要描述
打包固件是下载前的最后一步。系统应用程序、驱动编写完成经过编译得到输出文件加上各种中 间件、资源文件、配置文件、系统内核等统一打包生成固件固件下载到开发板上就可以运行了。在 melis2.0中是利用批处理 image.bat 进行打包操作。打包主要工作有三方面。一方面在生成的各种源文件中拷贝需要的文件到打包路径下第二方面利用更新工具对源文件进行更新第三方面根据配置文件将源文件按照一定规则进行打包操作最终生成可以烧录的固件。
7.2.术语定义
7.2.1. makefile
makefile 是自动化编译脚本。makefile 文件描述了工程的编译和连接规则。包括工程中那些源文件需 要编译以及如何编译、需要调用那些库文件设置最后生成文件的路径等等。每个应用程序、模块等工作目录都有几个特定文件包括 makefile magic.c make.cfg。Magic.c 是模块、驱动的入口具有统一形式。 Make.cfg 是配置文件目前主要关注的是 target它指明源文件生成路径以及生成文件的名字。
7.2.2. image.bat
bat 批处理文件是一系列 dos 命令的集合。文件的每一行都是一条 dos 命令。将特定命令编写完成运行就可以简化日常或重复性的任务。Image.bat 文件是打包批处理文件运行它就可以生成最新的固件。
7.3.工具介绍
1、update_boot 工具update_boot 会根据配置文件修正 boot 中的参数。 2、BurnMBR 工具BurnMBR 工具主要是用来生成 MBR 数据其输出文件为 mbr.bin。 3、minfs 工具制作 minfs 分区。 4、fsbuild 工具fsbuild 工具用于制作 fat16 文件系统。 5、fix_file 工具fix_file 工具较为简单只是将输入文件延长为指定长度的输出文件其中的延 长部分是 0。 6、dragon 工具打包。
7.4.打包步骤
7.4.1. makefile 部分
首先对整个工程进行编译生成源文件。在 cygwin 环境下在工程根目录使用 make clean;make 命令对整个工程进行编译如果只修改其中一些部分可以只编译修改部分。Makefile 会将各部分生成文件分类存放到指定路径。本工程生成路径是 ROOT\c500_net_theater\workspace\suniv。
7.4.2. image.bat 部分
固件打包的工作路径是 ROOT\c500_net_theater\workspace\suniv\beetles。打包固件以前要确认配 置文件正确并且 makefile 生成的源文件是最新的。 Image.cfg 是配置文件它指定了那些文件需要打包到固件中设置固件名字、版本等信息。在生成的image.txt 文件中可以看到各个被打包文件的信息包括大小、路径、主键、子键等信息。 Image.bat 的工作流程如下 1、首先进行一些初始化操作。将原有的镜像删除设置打包工具路径等。 2、运行 update.bat 批处理文件。查看生成的 update.txt 文件update.bat 主要是完成文件复制操作将需要使用的文件按照分类存放到打包路径待用。 3、使用打包工具解析脚本文件.fex 文件、更新 boot0 和 boot1 文件头、生成 MBR 文件、更新 fes1、uboot 文件头。如 Boot 阶段使用的__boot0_file_header_t 结构体在本阶段使用脚本文件更新部分参数包括 dram、uart、jtag_para、spi 参数等。 4、根据配置文件生成 MBR 文件大小为 1kb。 5、更新 usb 烧录文件根据系统配置文件 sys_config.fex 来修正 fes1 和 uboot 的各项参数。 6、生成文件系统镜像运行 fsbuild.bat。根据 rootfs.ini、ramfs.ini、udisk.ini 文件将需要的文 件进行打包分别生成 rootfs.iso、ramfs.iso、udisk.iso。根据不同的命令制作 rootfs.iso、ramfs.iso 两个 minfs 文件系统镜像和 udisk.iso 的 fat 文件系统镜像。 7、对 boot0 和 boot1 的文件大小进行填充 boot0 为 24kbboot1 为 120kb。 8、将 boot0.bin boot1.bin mbr.bin rootfs.iso udisk.iso 连接打包成为 melis100.fex 文件并且 生成校验文件 verify.fex。 9、运行 deagon 工具根据配置信息 image.cfg 生成镜像包文件 ePDKv100.img。 10、删除清理临时文件可以在脚本中用#注释掉一些删除观察临时文件的大小是否符合预期。
7.5.问题与解决方案
7.5.1. 固件由那些文件构成
固件由资源文件、配置文件、系统内核、应用程序、驱动、中间件构成。
7.5.2. melis100.fex 文件包含什么内容
以 8M 固件系统未加载 sysdata 分区为例melis100.fex 是在 do_checksum()中生成的。melis100.fex 是固件里面的重要内容包含了 boot0.bin boot1.bin mbr.bin rootfs.iso udisk.iso 共计 5 个部分。其中 boot0大小为 24KBboot1 大小为 120KBMBR 大小为 1KB这三部分固定不变同时 boot 部分都预留空间保留。 Rootfs 部分为 7919KBudisk 部分为 128KB。整个文件大小为 8192KB。具体模型如下图 图40
7.5.3. ramdisk.iso
Ramdisk 在系统启动阶段提供帮助。系统启动时需要挂载根文件系统根文件系统包含了各种驱动和模块和各种源文件内核是精简的不可能把所有的驱动和模块编译进内核这会让内核很大。问题就在于挂载根文件系统却需要根文件系统上面的驱动和模块这是相互矛盾的问题。Ramdisk 包含了系统启动必要的驱动和模块在启动阶段 ramdisk 和内核都被预先加载到内存中再通过 ramdisk 里边的驱动和模块帮助启动系统最终挂载根文件系统。
7.5.4. udisk.iso
Udisk 保存系统运行过程中需要保存的用户数据包括音量、语言设置等信息。
7.5.5. 如何对 sysdata 分区进行添加
(1)更新打包工具 更新\tools\build_tools 目录下的 BurnMBR.exe 和 script.exe 工具 (2) 配置 sysdatafs 盘符修改分区大小 在 sys_config.fex 文件中按需求添加 sysdatafs 盘符字符串需带引号””表示才能解析打包路径下的 sysdata.ini,rootfs.ini,udisk.ini 里 面 的 size 大 小 需 与 配 置 文 件 中 对 应 。 并 且 要 注 意 如 果 sys_config.fex 中不存在 UDISK这个分区则在工具中会自动加上所以当 part_num 为 2 时总共有 三个分区。 图41 (3) 创建 sysdatafs.iso 镜像 fsbuild.bat 文件添加如下语句以创建 sysdatafs.iso大小在 beetles 文件夹下的 sysdatafs.ini 文件中 配置注在第2步中定义的分区大小需要和 ini 后缀文件中定义的大小需一致) …\tools\build_tools\fsbuild200\fsbuild.exe .\sysdatafs.ini (4) 添加 sysdatafs.iso 镜像到固件 在打包文件 image.bat 中将 sysdatafs.iso 添加到固件中 type boot0.bin boot1.bin mbr.bin rootfs.iso sysdatafs.iso udisk.iso melis100.fex (5) 更新 spinor.drv 驱动
7.5.6. 分区对齐设置
由问题一可知分区分布情况其中 sysdata 和 udisk 分区是可读写分区norfalsh 是必须先将需要写 的区域进行擦除才能正常进行写操作而擦除 nor 的操作暂时是以 64K 为单位因此要求 sysdata 和 udisk分区的起始地址和大小都需要 64K 对齐。sysdata 和 udisk 分区数据保存请参考文档《用户数据保存》 当分区未按 64K 对齐时可能引发用户数据保存失败等未知错误。
7.5.7. 固件烧录后打印提示 spinor 不支持
在首次使用机器烧录固件或者更换新 NORFLASH 后烧录固件有可能出现下图打印 图42 此时打印提示 spinor 不支持并且给出了 norflash 的 id为 0x17701c。因此我们需要在 sys_config.fex文件中将该型号的 nor 添加上去具体如何修改请参考文件中的说明。完成 norflash 型号的添加后如下图 图43
-. 全志相关工具和资源
-.1 全志固件镜像修改工具 ImageModify.exe 下载 下载地址 固件镜像修改工具 ImageModify.exe下载 ImageModify_20230906.rar
-.2 全志固件USB刷机工具 PhoenixSuit 下载 下载地址 USB刷机工具 PhoenixSuit下载 PhoenixSuit_CN_V1.1.1_20230906.rar
-.3 全志Melis2.0 用户手册.pdf下载
下载地址 全志Melis2.0 用户手册.pdf下载 documents_20230906_melis_v2.0.rar
-.4 全志melis2.0 sdk源码库下载
下载地址 全志melis2.0 sdk源码库下载 melis2.0-sdk-release_20230906V2.0.rar