查看: 3040|回复: 0

三分钟理解如何在FRDM-K82F上运行QSPI代码

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3916

    主题

    7534

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39870
    最后登录
    2025-8-15
    发表于 2019-7-8 08:35:25 | 显示全部楼层 |阅读模式
    片外串行FLASH由于连线少、成本低、容量大,获得了越来越多的用户青睐。而Kinetis MCU也正在顺应这一趋势,集成了可以直接从片外串行FLASH运行代码的功能。这在扩大客户选择面的同时,也因为和传统MCU结构之间存在一些差异,在用户入门的时候会引入一些困惑,尤其是K82F这样的平台并不支持从IDE直接下载代码到QSPI flash。


    本文的目的就是为在QSPI flash上如何运行代码,进行针对性讲解,让玩传统MCU的用户,花三分钟的时间,能够快速学会如何从QSPI flash运行代码。
    从何开始?


    ① 首先要有一块FRDM-K82F的板子。

    1.png
    ② FRDM-K82F对应的SDK包。


    下载地址[url=http://mcuxpresso.nxp.com/en/welcome]http://mcuxpresso.nxp.com/en/welcome[/url]
    2.png
    ③ 下载FRDM - K82F对应的bootloader工具包:


    FSL_Kinetis_Bootloader_K80_Tools_1_0_0


    http://www.nxp.com/pip/MCUBOOT?tab=Design_Tools_Tab

    然后解压缩后,在如下的路径有3个对应的工具。
    3.png
    工具
    功能
    blhost.exe
    PC端工具,和在ROM中运行的BootLoader进行通信,这里采用的是dos命令行的交互方式。通过这个工具,可以把sb文件烧录到QSP flash。
    elftosb.exe
    把IDE工具生成的应用image文件(srec格式)转换成blhost.exe能识别的sb文件。
    QCBGenerator.exe
    双击后可以生成FLASH的配置文件
    qspi_config_block.bin。ROM会根据此文件的内容确认外接的QSPI flash的信息,从而能够正确的访问外部QSPI flash。


    操作步骤


    有了前面的准备内容,我们就可以开始演示,如何下载一个示例工程到QSPI flash并且运行。


    ① 编译工程K82F\SDK\FRDM-K82F\boards


    \frdmk82f\demo_apps\hello_world_qspi\iar,并生成srec文件,这需要做如下所示的配置。
    4.png
    ② 在以下目录双击QCBGenerator.exe:



    FSL_Kinetis_Bootloader_K80_Tools_1_0_0\bin\win,生成qspi_config_block.bin。
    5.png
    ③ 创建一个目录,并把所有的相关文件放到一起,如下图所示。
    6.png
    其中,每个文件的来源如下表所示:
    7.png
    ④ 生成.sb文件


    .sb文件是blhost.exe使用的image加载文件,blhost.exe通过和ROM里面的bootloader通信,同时解析.sb文件的内容,把对应的段烧录到QSP flash里面去。


    .sb文件是以.bd文件为输入的,而.bd文件又会引用.srec文件和.bin文件,这里是个相对比较复杂的难点。关于app.srec,qcb.bin, app.bd, app.sb的关系请参见下图:
    8.png
    通过elftosb.exe生成.sb文件的命令是:
    elftosb.exe -V -c hello_world_qspi.bd -o hello_world_qspi.sb

    通过前面的描述可知,这个命令只引用了.bd文件,但是.bd文件会引用.srec和.bin,所以实际上是.srec, .bin, .bd这三个文件作为输入,生成了.sb文件。

    在DOS命令窗口,执行完该命令后,将出现下面的输出。
    9.png
    同时目录下会生成.sb文件:
    10.png
    由于APP和QCB是分别加载的,烧录到QSPI flash后,会分布在各自的region上。在K82F上,region的划分是以0x1000为界的。0x6800_0000 ~ 0x6800_1000是QCB的region,0x6800_1000以上是APP的region,如下图所示:
    11.png
    ⑤ 连接FRDM-K82F,并进入BootLoader模式

    这需要先按住SW1并接入USB cable到J11,如下图所示。
    12.png
    首先我们测试能不能和ROM BootLoader通信,在命令行输入以下命令来获取版本号:

    blhost.exe -u -- get-property 1

    正常情况下可以看到输出如下图所示,表示blhost已经和ROM里面的BootLoader通信成功了。BootLoader支持多种接口,这里使用的是USB通信口。
    13.png
    ⑥ 烧写sb文件

    接下来烧写sb文件,需要使用如下两条命令:

    1,擦除命令

    blhost.exe -u -- flash-erase-all-unsecure


    执行完毕后,输出如下图所示:
    14.png
    2,编程命令

    blhost.exe -u -- receive-sb-file

    hello_world_qspi.sb


    执行完毕后,输出如下图所示:
    15.png
    至此.sb文件已经被烧录到QSPI flash中去了。

    运行代码
    接入USB调试口J5。
    16.png
    打开超级终端,可以看到代码已经运行起来了。(这里程序略作更改,一次打印更改为循环打印)
    17.png

    延伸内容
    如果换了QSPI flash怎么办?
    不同的IDE工具怎么生成SREC输出文件?

    对于这两个问题,小编下次再做介绍。


    作者:郭嘉   文章出处:恩智浦MCU加油站

    qiandao qiandao
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-16 05:38 , Processed in 0.084768 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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