Hi @Felix3
代码就像我和你说过的,要放到RAM里面,所以你准备个RAM代码就好了:
SDK代码把下面黄色块勾上
然后后面烧录的,你就用UM里面说的命令去烧,进入ISP模式去烧,然后再转到从SD卡boot就可以了。
还有,你下次问问题,用公司邮箱,否则第三方邮箱等级太低,我们忙的时候可能会较迟回复你,但是公司邮箱优先级就相对较高。
Best Regards,
Kerry
Hi KerryZhou :
非常感谢回复,
我梳理了一下目前我的理解和实验,我觉得不太完整,请指教下。
1. 首先我将ISP0 ISP1 ISP2 置位成low high high ,按照UM介绍他应该处在ISP模式下,此时我通过设备管理器查看新增了三个设备:JLINK CDC UART PORT(COM14) J-LINK driver USB Composite Device。(ISP的拨码,ON端是LOW,反之是HIGH,目前是按照这样的方式来设置的)
2. 我在SDK代码包中导入了sdcard polling 这部分代码。勾选了LINK TO RAM选项,然后build,build完之后 我感觉只能选择debug。这时debug是会将application 加载进RAM中吗?
3. 接下来我下载了blhost.exe 。在命令行里运行命令blhost -p <COM 14> - fill-memory 0x1c000 0x4 0xd0082100 但是会提示系统找不到指定文件。
我试了下运行blhost.exe -p COM14 -- reset
提示“Successful generic response to command 'reset' ”
以上的流程 我有疑问:
1)我现在编译的是demo,但是我看UM中提供的命令里要用到image.bin。这个bin文件就是demo吗?
2)我通过debug 是否就将 application加载进RAM中了。然后blhost是将目前ram中的版本文件烧录进SDCARD?
3)以上的操作步骤 是否还缺少什么?
Hi @Felix3 ,
你搞错了,用一个很简单的代码,比如helloworld, 或者LED翻转的。
因为你现在跑boot的代码在SD 卡,你再下载SD 卡代码不是冲突嘛?
1)我现在编译的是demo,但是我看UM中提供的命令里要用到image.bin。这个bin文件就是demo吗?
Answer: 你RAM代码,位置偏移下,比如:led_blinky_0x0001c000
2)我通过debug 是否就将 application加载进RAM中了。然后blhost是将目前ram中的版本文件烧录进SDCARD?
Answer: 对,先下载到SD卡,然后启动从SD 卡拷贝到RAM并且运行。
你现在ISP是烧录,烧录成功后,启动还要调成SD卡启动。
3)以上的操作步骤 是否还缺少什么?
Answer: 代码不对,偏移地址不对。
其他的照着UM去做。
Best Regards,
Kerry
Hi KerryZhou:
感谢回复:
我更换了demo ,使用helloworld demo进行试验,在导入了hello word demo后我发现workspace中是有helloworld.bin文件的。但这个文件并不是我编译生成。
1)我现在编译的是demo,但是我看UM中提供的命令里要用到image.bin。这个bin文件就是demo吗?
Answer: 你RAM代码,位置偏移下,比如:led_blinky_0x0001c000
Question: 这个Answer 我不太理解。我其实想问,image.bin如何编译出来。
2)以上的操作步骤 是否还缺少什么?
Answer: 代码不对,偏移地址不对。
Question: 我已经更换了helloword demo。Hlhost命令也做了调整:
blhost -p COM14 fill-memory 0x1c000 0x4 0xd0082100
这条命令执行success。
blhost -p COM14 configure-memory 0x120 0x1c000
Response status = 4(0x4) KStatus_InvalidArgument 这里貌似错了。
Hi @Felix3 ,
你用MCUBootUtility里面的led_blinky的吧。
NXP-MCUBootUtility-3.4.0\apps\NXP_MIMXRT685-EVK_Rev.E
bin 文件我上传到附件了。
你连接之前,先 连接下看看能不能成功:
blhost -t 50000 -p COM49,115200 -j -- get-property 1 0
COM用你板子ISP的串口。
如果能够成功,你在往下做。
代码你就用我的代码。image.bin 换成led_blinky_0x0001c000.bin
Set the boot ROM in ISP mode via ISP pins.
Use the blhost commands below to write the boot image into the SD card.
blhost -p <COM XX> - fill-memory 0x1c000 0x4 0xd0082100
blhost -p <COM XX> - configure-memory 0x120 0x1c000
blhost -p <COM XX> - flash-erase-region 0x0 0x2000 0x120
blhost -p <COM XX> - write-memory 0x1000 image.bin 0x120
如果还有问题,你把hlhost的所有log给我。
由于上海疫情,我在家办公,手里没有板子没法测试,所以还请你多测,多给我结果。
Best Regards
Kerry
Hi @Felix3
我们重来,发现有好东西,信息有点滞后了。
https://www.cnblogs.com/henjay724/p/16001983.html
参考这个,然后你直接下载MCUBootUtility工具,你再接个USB口,用USB去下载。
https://github.com/JayHeng/NXP-MCUBootUtility/releases/tag/v3.5.0
the related user manual is:
https://github.com/JayHeng/NXP-MCUBootUtility
然后你可以参考那个log,UM的好像不是很一样。咱用这个。
你再测试看看。
Best Regards,
Kerry
Hi KerryZhou
感谢回复,我今天实验了两种方法,结果如下:
1) 实验blhost 命令配置,再configure memory阶段出错,提示电压错误 LOG如下:
D:\MCU\NXP-MCUBootUtility-master\tools\blhost2_3\win>blhost -p COM3 -- fill-memory 0x1C000 0x4 0xD0082100
Ping responded in 1 attempt(s)
Inject command 'fill-memory'
Successful generic response to command 'fill-memory'
Response status = 0 (0x0) Success.
D:\MCU\NXP-MCUBootUtility-master\tools\blhost2_3\win>blhost -p COM3 -- configure-memory 0x120 0x1c000
Ping responded in 1 attempt(s)
Inject command 'configure-memory'
Response status = 1829 (0x725) invaild voltage
2)利用你回复的 这个MCUBootUtility 工具,我实验了一下 ,这块链接都报错
请帮忙看下 ,应该怎么操作?
Hi KerryZhou:
感谢回复,我今天重新做了下实验,配置BOOT DEVICE CONFIG 配置完成后,我点击Connect to Rom 是可以连接上SD卡,并且会显示SD卡大小,29GB。LOG如下:
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 5242000 -p COM14,115200 -j -- fill-memory 1097728 4 3490193664 word
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- configure-memory 288 1097728
'Connect to xxx' button is clicked
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- get-property 1 0
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- get-property 1 0
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- get-property 24 0
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- efuse-read-once 96
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- efuse-read-once 97
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- efuse-read-once 98
Executing F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost2_3\win\blhost -t 50000 -p COM14,115200 -j -- efuse-read-once 99
我记录了一下软件配置SD卡时的参数,然后断开连接后 利用blhost命令烧录,我这边看烧录已经成功了 LOG如下:
F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost\win>blhost
-p COM14 -- fill-memory 0x10c000 0x4 0xD0080000
Ping responded in 1 attempt(s)
Inject command 'fill-memory'
Successful generic response to command 'fill-memory'
Response status = 0 (0x0) Success.
F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost\win>blhost
-p COM14 -- configure-memory 0x120 0x10c000
Ping responded in 1 attempt(s)
Inject command 'configure-memory'
Successful generic response to command 'configure-memory'
Response status = 0 (0x0) Success.
F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost\win>blhost
-p COM14 -- flash-erase-region 0x0 0x20000 0x120
Ping responded in 1 attempt(s)
Inject command 'flash-erase-region'
Successful generic response to command 'flash-erase-region'
Response status = 0 (0x0) Success.
F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost\win>
F:\mcu\NXP-MCUBootUtility-3.5.0\NXP-MCUBootUtility-3.5.0\tools\blhost\win>blhost
-p COM14 -- write-memory 0x1000 image.bin 0x120
Ping responded in 1 attempt(s)
Inject command 'write-memory'
Preparing to send 13902 (0x364e) bytes to the target.
Successful generic response to command 'write-memory'
(1/1)100% Completed!
Successful generic response to command 'write-memory'
Response status = 0 (0x0) Success.
Wrote 13902 of 13902 bytes.
这时我将boot mode设置成sd卡启动,然后reset板子,但是我没看出来板子有任何变化,这个Image 我使用的是你发给我的led_blink。
请帮忙看下我是否有遗漏的操作。
Hi @Felix3 ,
你这样,你先试试这个led代码烧录flash,看看启动是否能够闪灯?
我记得是可以直接闪灯的, 你用原本的flash启动验证下。
我看你现在是都成功了。
你用MCUbootUtility, 把内存读出来看看,然后给我看看数据。你可以把数据都拷贝出来放文本里给我看,带地址信息的。
主要我现在没板子,没法给你直接测。
Best Regards,
Kerry
Hi KerryZhou:
感谢回复,我今天重新检查了下下载配置,后来发现我将下载时start地址写错了,在改成0x1000后重新下载,SD卡启动已经好了。启动demo 后可以发现led 闪烁。
同样我也实验了nor flash下载,也是正确的。
最后还有一个问题,我需要制作自己的image.bin文件。请问怎么制作呢?我使用MCUXpresso IDE 目前只是在线debug。并没有编译成bin文件。
Hi KerryZhou:
感谢回复,实验了下,我修改的demo已经可以正常烧录进SD卡启动了。
有个新问题:
我目前在操作PSRAM 我看SDK代码中有flexspi_psram_dam_transfer这个demo。我看了下代码,这块操作是通过dam 一次读写一个pagesize(1024byte) 的方式进行的。
我想了解下,是否有像arm这样不通过dma来操作memory的方式,比如一个地址一个地址的写入,或者读出呢。还是因为psram有pagesize的特性,操作上必须通过dma?