搜索
新闻详情

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

435
发表时间:2022-10-21 08:58作者:全球芯 | glochip.com网址:http://glochip.com/news/
文章附图

笔者最近在试用一款华芯微特的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地址和大小。

FlashBankInfo指定设备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。这应该会是一次有趣的体验,有空时搞一把,到时会分享给大家。


首页                                    产品展示                                        行业资讯                                   关于我们                                        联系我们
联系电话:
0755-84828852  
0755-84866816

联系方式: 手机号码:13924642346  13872769588
                13924649321  13928483205 联系邮箱:kevin@glochip.com
公司地址:
广东省深圳市龙岗区大运软件小镇1栋401室
(3号线,14号线,16号线,33号线)
网址:www.glochip.com   www.chip.com.cn
全球芯微信公众号
加密芯片 华芯微特   艾迪科泰    博雅科技    恒烁半导体    补丁科技    晶存科技   华大电子    康盈半导体     三星半导体   海力士  镁光科技     南亚科技  铠侠  金士顿   Skyhigh  Netsol
MCU  SRAM MRAM SDRAM DDR1 DDR2 DDR3 DDR4 DDR5 LPDDR3 LPDDR4 LPDDR4X LPDDR5 LPDDR5X NAND NOR eMMC UFS eMCP uMCP