硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3604|回复: 9
收起左侧

[Flashloader] flashloader烧录固件到hyperflash方法----将网友xufeixueren的帖子重旧论坛转来

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2017-12-22 12:08:57 | 显示全部楼层 |阅读模式
本帖最后由 eric2013 于 2017-12-22 12:10 编辑

    flashloader最终烧录用到的固件是SB格式的镜像文件,下面介绍SB文件生成的方法:
        (1)从NXP官网下载Flashloader_i.MXRT1050_1.0_GA.zip工具,这里可以直接从附件里下载Flashloader_i.MXRT1050_1.0_GA.zip (6966 K) 下载次数:6
        (2)解压文件到当前目录,在doc文件夹下放着关于flashloader的使用手册,这里我们直接看i.MX MCU Manufacturing User's Guide.pdf的7.2.1章节生成SB文件的部分;
        (3)用MDK编译器编译出SREC格式的可执行文件,它是用于生成SB文件的原始固件,这里我们以官方例程helloworld为例,用MDK编译出helloworld.srec固件,步骤如下:
                 1、打开官方例程中的helloworld工程,路径如下SDK_2.3.0_EVK-MIMXRT1050\boards\evkmimxrt1050\demo_apps\hello_world\mdk;
                 2、选择hello_world Flexspi_nor_release目标工程,如下图所示:
                       
                  3、用fromelf.exe方法生成helloworld.srec固件,SREC格式即常用的S19格式的可执行文件,直接在MDK里配置,如下图红框所示:
                       fromelf.exe --m32combined  --output  "$[url=mailto@L.srec]L@L.srec[/url]"  "#L"
                     
        (4)用flashloader里的elftosb.exe工具把helloworld.srec固件生成helloworld.sb烧录文件
                 1、在DOS命令窗口里用\Flashloader_RT1050_1.0\Tools\elftosb\win\elftosb.exe工具把helloworld.srec文件生成helloworld.bin和helloworld_nopadding.bin两个文件,生成过程中需要用到Flashloader_RT1050_1.0\Tools\bd_file\imx10xx\imx-flexspinor-normal-unsigned.bd文件,DOS窗                        口中输入的命令如下:
                      elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned.bd -o helloworld.bin ../../../../SDK_2.3.0_EVK-MIMXRT1050/boards/evkmimxrt1050/demo_apps/hello_world/mdk/flexspi_nor_release/hello_world.srec
                      在elftosb.exe所在的目录下就会生成helloworld.bin和helloworld_nopadding.bin两个文件,DOS命令截图如下所示:
                     
                 2、继续用elftosb.exe工具把helloworld_nopadding.bin文件生成helloworld.sb文件,生成过程需要用到Flashloader_RT1050_1.0\Tools\bd_file\imx10xx\program_flexspinor_image_hyperflash.bd文件,DOS窗口中输入的命令如下:
                       elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o helloworld.sb helloworld_nopadding.bin
                       在elftosb.exe所在的目录下就会生成helloworld.sb文件,DOS命令截图如下所示:
                     
        (5)烧录helloworld.sb镜像到hyperflash
                1、评估板J1跳线帽跳到3/4,USB线接到J9,SW7拨码开关设置为串口下载模式0101,USB线通过USB HUB连接到PC机,打开Flashloader_RT1050_1.0\Tools\mfgtools-rel\MfgTool2.exe,看到如下所示界面:
                     
               2、把Flashloader_RT1050_1.0\Tools\elftosb\win\helloworld.sb拷贝到Flashloader_RT1050_1.0\Tools\mfgtools-rel\Profiles\MXRT105X\OS Firmware\目录下,并把helloworld.sb名字改成boot_image.sb;
               3、点击MfgTool2.exe工具的start,开始烧录,烧录完成后如下图所示:
                  
        (6)评估板J1跳线帽跳到5/6,USB线接到J28,SW7拨码开关设置为串口下载模式0110,从hyperflash启动,PC上打开串口终端工具,会看到hello world字符串,说明烧录成功。
评分管理[url=]举报[/url] 帖子操作




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2017-12-22 12:09:49 | 显示全部楼层
回 xufeixueren 的帖子
xufeixueren:这只是最简单的没有加密的镜像文件,如果要加密,过程更复杂。而且BD文件里的东西也很难理解,现在我用的BD文件还是官方提供的,如果换了flash,可能还要自己修改BD脚本文件。 (2017-12-20 11:17)

这个.sb文件的初衷是方便量产的时候用单个文件把所有需要的操作全包进去,如果没有特别的需求,其实需要更改的地方很少,BD文件里也有了一定的注释,对于其他Flash的支持,可以直接看MCUx Flashloader RM 第8章,典型的FLASH的支持都在里面写了,只需要把load 0xc0233007 > 0x2000 换成其他FLASH的参数就好了。

如果是支持JESD216A 及以上标准的QuadSPI NOR Flash,如果不支持DTR读,这个值为0xc0000006 (假定支持100MHz)

如果要支持DTR 读,这个值是0xc0100003 (假定支持到60MHz DTR 读)。


熟悉了的话,其实还是很简单的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2017-12-22 12:10:08 | 显示全部楼层
回 unknownuser 的帖子
unknownuser:这个.sb文件的初衷是方便量产的时候用单个文件把所有需要的操作全包进去,如果没有特别的需求,其实需要更改的地方很少,BD文件里也有了一定的注释,对于其他Flash的支持,可以直接看MCUx Flashloader RM 第8章,典型的FLASH的支持都在里面写了,只需要把load 0xc0233007 > 0x .. (2017-12-20 12:31)

这个0x2000是RAM的地址吗?也就是把参数加载到内部RAM中?还有eFUSE默认配置是XIP执行程序的吗?怎样才能配置成把hyperflash中的代码加载到内部RAM运行呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2017-12-22 12:10:23 | 显示全部楼层
回 xufeixueren 的帖子
xufeixueren:这个0x2000是RAM的地址吗?也就是把参数加载到内部RAM中?还有eFUSE默认配置是XIP执行程序的吗?怎样才能配置成把hyperflash中的代码加载到内部RAM运行呢? (2017-12-20 14:20)

load 0x20330007 > 0x2000, 就是把0x20330007这个配置选项写到地址0x2000,

enable flexspinor 0x2000, 就是用存在0x2000的配置选项来使能 FlexSPI NOR

如此类推。

如果要load到RAM,以DTCM为例 可以参考 imx-dtcm-unsigned.bd,
把 ivtOffset 改成0x1000,

startAddress = 0x20000000 (这个地址可以是合法的DTCM的任意地址);
ivtOffset = 0x1000;
    initialLoadSize = 0x1400 (这个值不能小于ivtOffset+0x40, 推荐按0x100对齐,因为SCB->VTOR 有对齐的要求);
然后 link file 里把vector table的地址改成 startAddress  + initialLoadSize

如果是OCRAM,

startAddress = 0x20208000 (这个地址可以是大于0x20208000合法的OCRAM的任意地址)
ivtOffset=0x1000
initialLoadSize = 0x1400 (这个值不能小于 ivtOffset+0x40)

如果是ITCM
startAddress = 0x100 (这个地址可以是大于0合法的ITCM的任意地址)
ivtOffset=0x1000
initialLoadSize = 0x1300 (这个值不能小于 ivtOffset+0x40)
回复

使用道具 举报

18

主题

43

回帖

97

积分

初级会员

积分
97
发表于 2018-3-19 17:39:58 | 显示全部楼层
C:\Users\userpc\Desktop怎么出现这样的情况呢?
回复

使用道具 举报

18

主题

43

回帖

97

积分

初级会员

积分
97
发表于 2018-3-19 17:44:36 | 显示全部楼层
我的怎么只能生成helloworld.bin,不能生成helloworld_nopadding.bin,而且在生成这两个bin文件时会出错,这是什么情况呢?
回复

使用道具 举报

3

主题

23

回帖

101

积分

初级会员

积分
101
发表于 2018-3-20 14:13:55 | 显示全部楼层
评估板J1跳线帽跳到3/4,USB线接到J9,SW7拨码开关设置为串口下载模式0101,USB线通过USB HUB连接到PC机,打开Flashloader_RT1050_1.0\Tools\mfgtools-rel\MfgTool2.exe,
照着这个做法,显示unassigned ,没有连接到设备一般会是什么的问题?硬件吗
回复

使用道具 举报

1

主题

2

回帖

25

积分

新手上路

积分
25
发表于 2018-6-11 09:34:38 | 显示全部楼层
      SDK-2.3.0执行以上的步骤没问题,SDK-2.3.1的hello_world.srec执行 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned.bd -o helloworld.bin ../../../../SDK_2.3.0_EVK-MIMXRT1050/boards/evkmimxrt1050/demo_apps/hello_world/mdk/flexspi_nor_release/hello_world.srec 时会出错。
回复

使用道具 举报

1

主题

2

回帖

25

积分

新手上路

积分
25
发表于 2018-6-11 11:00:08 | 显示全部楼层
Rocky 发表于 2018-6-11 09:34
SDK-2.3.0执行以上的步骤没问题,SDK-2.3.1的hello_world.srec执行 elftosb.exe -f imx -V -c ../../ ...

已解决,把XIP相关的3个宏设为0,重新编译就可以了。
回复

使用道具 举报

8

主题

17

回帖

41

积分

新手上路

积分
41
发表于 2018-12-1 09:16:58 | 显示全部楼层
可以试试这个:https://github.com/JayHeng/nxp-sec-boot-ui,希望你们喜欢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-12 13:56 , Processed in 0.443973 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表