首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。
首先很感谢极术社区此次的活动,之前没有接触过GD32的芯片,在工作中一直使用的ST,NXP和TI的芯片,目前由于缺芯问题,加上价格骤增,开始考虑国产MCU进行芯片换型的问题,刚好刚上了这波活动,就借助社区申请了。
关于外设的使用和相关的demo,官方提供的firmware和demo已经很全了,当然还有更多的应用等待项目的开发使用,这次我想和大家分享一下在IAR环境下GD32的flash下载算法的一些理解,有不对之处,欢迎大家在评论区留言讨论。
IAR支持GD32的插件安装
由于原生安装的IAR开发环境并不支持GD32 MCU的信息,主要是设备描述信息,icf内存映射文件信息和flash下载算法信息等,所以首先我们需要在官方网站上下载GD32F3X0系列的IAR插件,链接如下:http://gd32mcu.com/cn/downloa…
我现在下来后对应的后缀是.ex_,不是可识别的文件,我以为有什么特别的安装方式,最后发现需要人为吧后缀名修改.exe,不知道和我电脑解压的问题,还是官方发布的就是这样,改成和执行文件后,双击安装,(此处最好是以管理员方式运行插件exe),双击后如果出现如下界面
路径地址没有自动关联到你安装的IAR文件夹下(前提IAR用的是默认安装路径),是有问题的,一种方式是手动点击Browse指定到你安装的IAR目录下,另一种方式是采用管理员方式打开运行这个插件,可以自动检索IAR路径,如果你电脑上有多个不同版本的IAR的话,也是需要手动指定对应的安装目录的,最终如下所示:
GD32设备描述文件
安装完成后,此时进入到对应IAR版本下设备信息的目录,就可以看到GD的文件夹了,如下图所示:
此文件下主要存放了GD MCU的设备描述信息,即在IAR工程的Options中相应的Device配置一栏中。
GD32设备Flashloader下载算法
还有一个路径就是IAR的flashloader文件夹下,也新增了GD的文件夹,如下图所示
6.png
该文件夹下中要定义GD MUC程序烧写的下载算法,我们都知道任何MCU,不管是内部flash还是外部通过QSPI连接的NOR Flash,当配置映射为内存使用时,都需要借助调试工具(J-link, CMSIS-DAP, St-link等)将我们的编译生产的二进制文件下载到MCU的flash中,IAR提供了基本的flashloader框架,大家可以在其他芯片中找到相关的flashloader的firmware例程,用户需要实现相对于的接口,来操作具体的MCU 的flash下载,IAR会将此部分代码在启动下载后将该程序加载在ram中运行,来实现MCU的flash下载,如下是该文件夹的截图:
可以看出,每款MCU主要有4中文件,分别是.board,.flash,.mac,.out,其中.out文件主要就是实现flash操作的一些函数接口工程生成的二进制文件,如flash的初始化,擦除,读取,写入等操作,这部分由于涉及的内容比较多,大家有兴趣的可以通过搜索引擎了解这方面的内容,此处不做过多的设计,有兴趣的小伙伴,可以大家留言讨论。
其余的三种文件是相关配置文件和描述文件,如我们打开.board文件如下
可以看出,主要用来加载.flash文件的,如果你的MCU有2块flash,一般是指外部的NOR Flash,映射成程序空间使用的话,此处就可以添加加载其他的.flash描述文件.(不知道GD现在是否支持XIP的功能,当内部flash不够的时候,需要外扩外部flash当程序空间使用)。
当我们打开另一个文件.flash,就可以发现,此处主要加载了2个文件,分别是.out执行文件和.mac的描述文件,以及相关的flash信息,如该flash的page, block, flash_base地址等,此处定义的事GD32内部flash的信息,如果使用的外部flash的话,可以按照此格式新建flash文件,然后填写相关flash信息。
当我们打开.mac文件是,如下图所示
此文件主要用来对flash进行初始化的操作,此处使用的寄存器操作方式,类似于DCD文件的方式,主要包含3个函数的实现,分别是UserFlashInit()(flash的初始化),UserFlashExit()(Flash的退出操作),UserReset()(Flash的复位操作)。
此部分内容在IAR的的工程Options中如下配置:
IAR会默认根据General Optins中选定的MCU型号,自动关联对应的.board文件,当然也可以自定义修改。
GD32设备链接ICF文件
另外一个就是MCU链接文件,主要用于定义芯片存储空间的大小,ROM和RAM的大小和起始地址,堆栈大小等。以及程序各个字段的地址分配,如.data, .bss段等,此处内容比较简单,大家开发时也都会涉及到,当有新增SDRAM,和外部flash时,可以修改此文件,以及定义字段等操作。
总结
此次就简单描述下GD32在IAR下关于插件新增的一些内容,GD32对标的STM32的芯片,很多使用方式上都有类型,相信从STM32转过来的小伙伴一定能很快上手,希望GD能在软件固件库上对标到STM32,实现更丰富的生态圈,特别是在GUI和电机控制方向上,能有更对的库支持,当然也很期待GD早日发布Cotrex-M7系列的MCU,一些GUI高端的应用和计算算法,目前Cortex-M4还是无法满足,期待一下。