全志ARM926 Melis2.0系统的开发指引④

这篇具有很好参考价值的文章主要介绍了全志ARM926 Melis2.0系统的开发指引④。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编写目的

本文档是全志 Melis2.0 系统的开发指引文档,旨在协助开发者了解和掌握 Melis 系统,快速搭建 Melis系统的开发环境,将 Melis2.0 系统应用到产品开发中。
全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器

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 为 24kb,boot1 为 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大小为 24KB,boot1 大小为 120KB,MBR 大小为 1KB,这三部分固定不变,同时 boot 部分都预留空间,保留。
Rootfs 部分为 7919KB,udisk 部分为 128KB。整个文件大小为 8192KB。具体模型如下图:
图40:
全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器

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:
全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器
(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:
全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器
此时打印提示 spinor 不支持,并且给出了 norflash 的 id为 0x17701c。因此我们需要在 sys_config.fex文件中将该型号的 nor 添加上去,具体如何修改,请参考文件中的说明。完成 norflash 型号的添加后如下图:
图43:
全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器

-. 全志相关工具和资源

-.1 全志固件镜像修改工具 ImageModify.exe 下载

全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器
下载地址:
固件镜像修改工具 ImageModify.exe下载 ImageModify_20230906.rar

-.2 全志固件USB刷机工具 PhoenixSuit 下载

全志ARM926 Melis2.0系统的开发指引④,Linux,ARM MCU,MCU C51,linux,c++,c语言,运维,服务器
下载地址:
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文章来源地址https://www.toymoban.com/news/detail-722342.html

到了这里,关于全志ARM926 Melis2.0系统的开发指引④的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全志F1C200S ARM926 Melis2.0系统的开发相关工具文档及SDK源码库

    本文档是全志 Melis2.0 系统的开发指引文档,旨在协助开发者了解和掌握 Melis 系统,快速搭建 Melis系统的开发环境,将 Melis2.0 系统应用到产品开发中。 Melis2.0 系统是基于全志芯片平台自主研发的一套软件系统,其内容涵盖 SDK 代码包、资源制作工具组、编译链接脚本、固件打

    2024年02月07日
    浏览(69)
  • 全志F1C200S ARM926EJ-S内核处理器-开发板及用户使用说明

    F1C200S采用全志F1C200S ARM926EJ-S内核处理器,片内自带64MB SIP-DDR1,DDR频率可稳定运行在156Mhz,CPU主频可达720Mhz运行。板载USB、Flash、TF卡座、40P LCD接口、咪头等。支持720P视频输出,支持H.264、MJPEG等解码。 1,内核:ARM 926EJS @ 900MHz; 2,内存:DDR1 内置64M; 3,支持存储卡:板载自

    2024年02月07日
    浏览(39)
  • [ARM+Linux] 基于全志h616外设开发笔记

    修改用户密码 配置网络 nmcli dev wifi  命令扫描周围WIFI热点   nmcli dev wifi connect  xxx  password xxx 命令 连接WiFi 查看ip地址的指令: ifconfig ip addr show wlan0 SSH登录         这是企业开发调试必用方式,比串口来说不用接线,前提是接入网络并获得板子IP 地址,且系统做了SSH的

    2023年04月21日
    浏览(42)
  • ARM-Linux开发与MCU开发的不同之处分析

    目录 一、ARM-Linux应用开发和单片机开发的不同 二、Arm-Linux基本开发环境 针对ARM-Linux程序的开发,主要分为三类:应用程序开发、驱动程序开发、系统内核开发。针对不同种类的软件开发,有其不同的特点。 今天,我们来看看ARM-Linux开发和MCU开发的不同点,以及ARM-Linux的基本

    2024年02月10日
    浏览(46)
  • 基于全志A33开发板linux系统移植学习记录(Boot0)

    第一章 Boot0基于ARMGCC的编译与修改 入行快两年,希望通过学习系统移植巩固下相关的知识,目标板使用基于全志A33 的astar-parrot开发板,开始本来想着使用Boot0来加载uboot,但后期发现为了代码统一和便捷性,最终还是选择了SPL作为跳板,但Boot0流程相对清晰,所以将对其做的

    2023年04月08日
    浏览(45)
  • HUAWEI 擎云L420 折腾记 (搭建arm gcc、openocd 雅特力 MCU开发环境)

    心血来潮,能不能在纯国产的笔记本、系统上进行开发, 划拉了一下市面上能买到的设备,也就华为擎云L410 、L420 还能买得起,用的上,因此小黄鱼2xxx 买了一部99新的擎云L420 开始尝试是否能搭建起来工作环境。 wq退出保存 之后 java -verison java 环境ok 安装十分顺利,默认版

    2024年02月17日
    浏览(45)
  • 记录移植Python3到arm开发板linux系统中

    开发板情况 arm板是公司采购的工控机。主要用来 使用python3解析excel表格处理数据。 配置如下: 配置 版本 cpu imx6dl(armv7架构) 操作系统 linux3.10 python版本 2.7 项目情况 项目中最好使用 python3 。可行的有以下几种方式: 方式 优缺点 可行度 重做文件系统 订制程度比较高,后期增

    2024年02月04日
    浏览(50)
  • 1802_在Linux系统上开发ARM单机片机嵌入式软件

             全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 1. 在Linux上也有嵌入式的开发环境,或许还有很多。不过,我现在接触到的大部分还是Windows居多。这一份文件介绍的是一个mbed platform这样一个开源的ARM嵌入式开发环境。可以支持C以

    2024年02月07日
    浏览(52)
  • 全志ARM-超声波测距

    超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度, 计算出模块到前方障碍物的距离 1.测距原理: 给Trig端口至少10us的高电平发送声波,Echo信号,由低电平跳转到高电平,开始发送波;Echo,由高电平跳转回低电平,表示波回来了

    2024年04月28日
    浏览(32)
  • linux下进行MCU开发环境搭建

    在linux环境下开发可以利用shell命令实现对文件的批处理 伟大的程序员应该都用类unix系统! 可以实现对底层编译技术的了解,以便于更好的掌握嵌入式技术 通用性,采用开源工具,从底层开发项目,可以不受制于特定厂商的ide工具.可以实现通用架构! 在linux下进行嵌入式技术开发的

    2024年02月19日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包