0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述RT-Thread Studio烧写国产MCU(SWM32S)固件的方法

电子工程师 来源:CSDN技术社区 作者:wenbodong 2021-06-04 11:24 次阅读

笔者最近在试用一款华芯微特的MCU,SWM32SRET6。其片上有FLASH 512KB, RAM 128KB, 内部集成了TFT LCD控制器,并内置8MB SDRAM,面向家电、工业控制消费电子等需求屏驱应用的场景。这款芯片支持RT-Thread,这也是笔者试用它的重要原因。

d6c6a1c0-c4c6-11eb-9e57-12bb97331649.png

d73f8bbc-c4c6-11eb-9e57-12bb97331649.png

d7621722-c4c6-11eb-9e57-12bb97331649.png

d7b0b1ca-c4c6-11eb-9e57-12bb97331649.png

d7de6c5a-c4c6-11eb-9e57-12bb97331649.png

Keil内置了一些mcu的下载算法,比如绿线勾划的。同时,Keil也为mcu厂商提供了添加下载算法的方法,即放在DFP之中

d82acfdc-c4c6-11eb-9e57-12bb97331649.png

再转回RT-Thread Studio,是一样的道理。RT-Thread Studio使用JLinkGDBServerCL.exe进行固件下载和调试,J-Link同样需要下载算法。Supported devices - J-Link列举了其支持的mcu。对于不支持的,需要额外添加下载算法。

Supported devices - J-Link
https://www.segger.com/downloads/supported-devices.php

在讲具体的方法之前,我们先思考一下,为什么需要下载算法?

SWJ-DP

d84b08ec-c4c6-11eb-9e57-12bb97331649.png

同样,swm320也是Cortex-M4内核,也内嵌了与stm32f4xx一样的SWJ-DP。那么J-Link在下载时为何需要针对不同的mcu(即使是相同的cortex内核)选择不同的下载算法呢?

原因很简单,虽然swm320与stm32f4xx拥有相同的Cortex-M4内核和SWJ-DP,但是它们的外设是由厂商自行设计,包括片内Flash。从片内Flash读取数据与从RAM读取数据一样,执行ARM的读取指令即可。而向片内Flash写入数据,即所谓的编程,则要复杂一些。

下载算法

准确的说,对于J-Link来说,其下载固件到mcu中,需要一个加载程序Flashloader。Open_Flashloader详细讲述了如何去为一个新的mcu指定Flashloader。

Open_Flashloader
https://wiki.segger.com/Open_Flashloader

可以指定两种类型的FlashLoader:

按Open_Flashloader文章的方法开发出的FlashLoader,是一个elf格式的可执行程序。

CMSIS flash loader,通常是FLM格式。

这个FLM,有没有感觉很亲切呢?这就是厂家提供的DFP中的那个东西,也正是Keil所使用的下载算法。把其添加到J-Link软件之中即可。

找到RT-Thread Studio所使用的J-Link软件目录,笔者的为:

dc5bba62-c4c6-11eb-9e57-12bb97331649.png

ChipInfo是设备的基本信息,指定内核类型、RAM地址和大小。

Vendor 设备商名称
Name 设备名称,在工程调试配置里面会用到.
WorkRAMAddr 十六进制格式的RAM首地址,与WorkRAMSize一起指定了J-Link下载固件时可用的内存空间。一般可指定为MCU的整个RAM空间。
WorkRAMSize 十六进制格式的RAM大小,单位是字节。
Core MCU内核,比如Cotex-M4对应为JLINK_CORE_CORTEX_M4。
参数 含义

FlashBankInfo指定设备Flash的空间以及下载算法。

Name 给人看的,取个有意义的即可。比如片内Flash可命名为Internal Flash。
BaseAddr 十六进制格式的Flash首地址,与MaxSize一起指定了Flash的空间。
MaxSize 十六进制格式的Flash大小,单位是字节。
Loader FlashLoader的路径,可为相对路径,也可为绝对路径。如果是相对路径,则其为相对于JLinkDevices.xml文件的位置。如前所述,可以是elf也可以是FLM。
LoaderType FlashLoader的类型。目前只能为FLASH_ALGO_TYPE_OPEN。
AlwaysPresent 对于片内Flash,此值为1,表示本块Flash是始终存在的。
参数 含义

dc74207a-c4c6-11eb-9e57-12bb97331649.png

在此之前,笔者还用过一款国产MCU(华大的HC32L110)。这两个厂商的产品有一个共同之处:只支持在Keil和IAR中开发。看过笔者飞控移植系列文章的同学应该有印象,笔者喜欢使用Eclipse家族的IDE,而不喜欢Keil,因为它的代码浏览和编辑功能太简陋。

Eclipse家族IDE不能用于开发这些国产MCU,最大的问题就是在于下载和调试,也就是本文遇到的问题。笔者当初在使用HC32L110的时候,选择了一个折衷的方法。在TRUEStudio(一款Eclipse IDE)中编写代码,也可编译以查看语法错误。而真正的编译固件和下载调试,则在Keil之中进行。这次看到RT-Thread Studio可以创建出swm320的工程,然而最终还是卡在了下载。笔者不想再妥协了,于是有了这篇文章。本文的方法不局限于华芯微特的MCU,是一个通用的解决方案噢。

添加下载算法一节提到两种方法,这次选择了第2种,一个快速而简单的方案。其实笔者在看Open Flashloader那篇wiki时,正襟危坐,仔细阅读,准备大干一翻,自己来开发这个Flashloader。这应该会是一次有趣的体验,有空时搞一把,到时会分享给大家。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17473

    浏览量

    354606
  • 控制器
    +关注

    关注

    113

    文章

    16580

    浏览量

    180462
  • IAR
    IAR
    +关注

    关注

    5

    文章

    361

    浏览量

    36910
  • 代码
    +关注

    关注

    30

    文章

    4858

    浏览量

    69551
  • DP
    DP
    +关注

    关注

    1

    文章

    215

    浏览量

    40188

原文标题:RT-Thread Studio烧写国产MCU(SWM32S)固件的方法

文章出处:【微信号:gh_ed4f95bde4df,微信公众号:华芯微特32位MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Thread Studio建工程,为什么找不到这个STM32U系列的片子?

    我用STM32U575VGT6片子做物联网项目,听闻国内开源的RTT很厉害,功能强大,资源齐全,社区资料多。 但是我用RT-Thread Studio建工程,不管是基于开发板还是基于MCU,都找不到
    发表于 03-10 07:22

    请问使用RT-Thread Studio在程序进Hardfault时怎么方便查看调用栈?

    求助各位大神 使用RT-Thread Studio在程序进Hardfault时怎么方便的查看调用栈 使用MDK的时候可以方便的看调用堆栈,从而很快速的找到问题,使用RT-Thread Stud
    发表于 03-03 08:10

    S32K146 RT-Thread】之 使用SFUD组件驱动spi flash

    S32K146 RT-Thread】之 使用SFUD组件驱动spi flash
    的头像 发表于 11-21 01:05 648次阅读
    【<b class='flag-5'>S</b>32K146 <b class='flag-5'>RT-Thread</b>】之 使用SFUD组件驱动spi flash

    RT-Thread上CAN实践

    开箱测试RT-Thread官方已完成了对英飞凌XMC7200EVK的移植,通过shell可以看到做好了uart3的console。本文将介绍如何进行RT-ThreadCan移植。接下来我们要完成CAN_FD的驱动移植,并正常启动RT-T
    的头像 发表于 11-13 01:03 1571次阅读
    <b class='flag-5'>RT-Thread</b>上CAN实践

    rt-thread studio导入bsp失败的原因?

    rt-thread studio导入bsp失败,bsp:gd32470z-lckfb
    发表于 09-27 09:54

    rt-thread studio导入bsp失败的原因?

    rt-thread studio导入bsp失败,bsp:gd32470z-lckfb
    发表于 09-13 07:49

    rt-thread studio手动导入bsp失败的原因?怎么处理?

    rt-thread studio 手动导入bsp 失败。 版本: 2.2.8 构建ID: 202405200930 导入的bsp 是直接从rt-thread 代码仓库下载的
    发表于 09-13 06:45

    如何在RT-thread studio的裸机例程上移植freertos?

    如何在RT-thread studio的裸机例程上移植freertos
    发表于 09-13 06:32

    RT-Thread Studio导入keil MDK工程失败的原因?怎么解决?

    RT-Thread Studio导入keil MDK工程失败
    发表于 07-15 06:56

    6月6日杭州站RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我们将在杭州举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 05-28 08:35 526次阅读
    6月6日杭州站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    【本周六-上海】RT-Thread+NXP线下培训,快速上手新系列MCU

    5月25号,RT-Thread将携手恩智浦共同举办基于恩智浦MCXN系列MCU结合RT-Thread的应用与实践线下培训。我们将为大家带来恩智浦MCXN系列MCU的详细介绍、精彩Dem
    的头像 发表于 05-22 08:35 637次阅读
    【本周六-上海】<b class='flag-5'>RT-Thread</b>+NXP线下培训,快速上手新系列<b class='flag-5'>MCU</b>

    【上海】5月25日-基于恩智浦MCX N系列MCU结合RT-Thread的应用与实践 线下培训

    5月25号,RT-Thread将携手恩智浦共同举办基于恩智浦MCXN系列MCU结合RT-Thread的应用与实践线下培训。我们将为大家带来恩智浦MCXN系列MCU的详细介绍、精彩Dem
    的头像 发表于 05-13 18:19 1176次阅读
    【上海】5月25日-基于恩智浦MCX N系列<b class='flag-5'>MCU</b>结合<b class='flag-5'>RT-Thread</b>的应用与实践 线下培训

    4月25日北京站RT-Thread线下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我们将在北京举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 04-16 08:35 507次阅读
    4月25日北京站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深嵌入式软件工程师农晓明老师为您讲
    的头像 发表于 03-27 11:36 955次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 03-27 08:34 628次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!