生成客制化的 Boot ROM 启动程序
3 Mar 2025
                    Read time: 1 minute(s)
                
    芯片在上电启动时,首先运行芯片内部的 Boot ROM 程序,Boot ROM 程序加载并运行下一级程序。
Boot ROM 加载的程序需要按照一定的格式打包才会被运行。具体的打包格式可参考用户手册的启动章节。制作客制化 BROM
                启动程序时,需要做好相关的连接地址、内存空间分配等规划:
        注: 关于启动镜像格式,可查看用户相关章节。
- 
                    配置启动镜像格式中的以下关键字段: - 
                            Loader binary data: 客制化程序存放的区域。 
- 
                            Load address: 启动镜像的加载地址。 
- 
                            Entry point: 客制化程序的程序入口地址,对应程序的链接地址。 
 
- 
                            
- 做好内存空间使用规划:- 
                            D13x SRAM 的开始地址为 0x30040000 
- 
                            SRAM 的最开始 16K Byte,Boot ROM 运行时在使用,因此启动镜像不能被加载到该区间。 
- 
                            启动镜像头信息占用 256 字节,因此 Load address 和 Entry point之间至少预留 256 字节。 启动镜像加载的内存地址,应该是 0x30044000 之后: 
 
- 
                            
使用 Luban-Lite 中的 mk_image.exe 或 mk_image.py 工具,可以单独生成启动镜像。相关工具可从 Luban-Lite 的最新 SDK 获取。
        - 
                    tools/scripts/mk_image.exe 
- 
                    tools/scripts/mk_image.py 
以下以 app.bin 应用为例,演示生成、烧录和启动镜像的详细流程。
    - 
                    参考下面的 image_cfg.json 文件配置,进行打包并生成 app.aic 镜像: { "pre-process": { // Pre-proccess to generate image components from raw data "aicimage": { // Create aic boot image "app.aic": { "loader": { "file": "app.bin", "load address": "0x30044000", "entry point": "0x30044100", // 256 byte aic header }, }, }, }, }此处 image_cfg.json 描述了将 app.bin 打包生成 app.aic ,放到 loader 区域,并且设置了加载地址和入口地址。 
- 
                    执行下列命令在当前目录生成 app.aic 文件,此文件为芯片 Boot ROM 可加载的镜像文件:mk_image.py -p -c <path_to_image_cfg_dir>/image_cfg.json -d <path_to_app_dir> 如果将 mk_image.py image_cfg.json app.bin 都放在一个目录,则命令为:mk_image.py -p -c image_cfg.json -d . 
