基于VScode与Embedded IDE搭建MSPM0 (天猛星MSPM0G3507)开发环境
1.引言
最近电赛将至,MSPM0逐渐进入开发阶段,传统的keil界面过于复古,代码量增加后,keil的启动时间也会大幅延长,且代码管理也不方便。由此,VScode搭配Embedded IDE(以下简称EIDE)插件可以有效的改善问题,节约程序仔的头发。同时VScode的补全代码功能也让人眼前一亮,对比keil老态臃肿的代码补全和代码改错,VScode显然更适合于现代嵌入式开发的工作流。
目录
2. 基础环境搭建
2.1 VScode的下载以及安装
VScode推荐从官网获取(VScode官网),Windows用户根据自己的电脑系统下载安装包,一路next就可以,这里不做赘述。
2.2 Embedded IDE的下载
EIDE是VScode的插件,同时按下Ctrl+shift+X进入VScode的插件市场,搜索栏搜索embedded ide 可以直接搜出来,界面如下图:
下载完成后,先放置在一边。进入下一步。
2.3编译链以及烧录器的准备
2.3.1编译链下载以及配置
ARM内核的单片机,例如,STM32、MSPM0、ESP32、AT32等,都需要arm-none-eabi的编译链,这是专门针对于嵌入式内核的编译器,单片机缺乏电脑CPU的性能和部分硬件,所以,只能使用专用的编译工具链,也推荐大家前往官网下载(ARM官网)。下载最新版本的即可。这里要注意下载的安装包是不是符合要求,笔者的电脑系统是AMD64,下载如图所示文件:

注意,不要现在前四个文件,aarch64是树莓派等单片机使用的,不适用于STM32,MSPM0。
下载安装后,查找目录,可以找到如图所示的文件结构:

这里,复制一下图中bin文件夹的路径,来配置环境,打开系统->高级系统设置->环境变量
在系统变量中找到path,点开后新建一个路径,输入之前的bin文件夹路径,注意!不要有双引号!配置界面如图所示,笔者同时有开发树莓派的要求,所以,同时配置了aarch64。


接着,WIN+R,输入cmd,调出命令行终端,输入:
arm-none-eabi-gcc --version
就会输出版本信息等,效果如图:

这里ARM的编译链就完成了,我们进入下一步,配置烧录器。
2.3.2 烧录器(openOCD)的下载与配置
只编译还不够,接下来要有烧录器,openOCD解决了多个芯片之前烧录要一直切换的痛点,他作为开源的烧录器,使用范围很广,使用也很便捷,但是官网下载速度很慢,所以这里留下两个超链接一个是官网,一个是百度网盘,大家可以自己选择。
如果网盘失效,请联系笔者。
下载完成后,会出现如图的文件结构,同样复制bin文件夹的路径,进行环境配置。

同样的步骤,将目录添加到path变量中:

结束后,WIN+R输入cmd打开命令终端,输入:
openocd --version
可以看到输出版本信息就对了,界面如下图:

如果有makefile系统的需求可以下载MINGW64步骤是一样的。配置好后界面如图所示:

代码为:
mingw32-make --version
2.3.3 J-Link的下载
嘉立创附赠的烧录器为国产仿制开源版本的J-LinkOB。固件版本是V7.0.0,然而J-link自V7.6+就开始了仿制品的检测,所以,J-Link的版本不宜过高,笔者使用的是J-Link8.18,使用9.58的过程中发现,J-Link会出现无法烧录的情况,大家可以下载7.7或者7.89之类的版本,会更稳定,注意,不要下载过低的版本,烧录 MSPM0 必须 J-Link 软件包 ≥ V7.68b 才内置 MSPM0 芯片支持列表。这个列表之后会用到。这里建议大家前往官网下载(J-Link)。
截至目前,环境基本就搭载好了,我们进入下面的环境配置。
3. 环境的配置与完善
3.1 VScode的插件
VScode本身并不集成需要的编译器等,它作为一个轻量化的,可拓展的IDE使用,它的功能依靠更多的插件来实现。这也是它强大的原因。
需要的插件有:
CHINESE(汉化界面)
C/C++ Extension Pack(提供四个C/C++所需要插件一键配置好)
Cortex-Debug(提供ARM调试界面)
Embedded IDE(前文已经下载过,不做赘述)
大家根据自己的需要也可以下载git相关插件,便于代码管理。
3.2 EIDE配置
EIDE本身没有集成,其通过与keil的通信实现,所以,接下来配置EIDE。打开侧边栏的EIDE,收起项目就可以看见设置,如下图:

打开设置后,可以看到一堆路径。图中标注的均需要替换:



解释:
EIDE.ARM.ARMCC5:对应keil_arm 安装目录中的ARMCC文件夹
EIDE.ARM.ARMCC6:对应keil_arm安装目录下的ARMCLANG文件夹
EIDE.ARM.GCC:对应arm-none-eabi的安装目录
EIDE.ARM.INI:对应keil-arm的UV4.exe的目录
EIDE.C51.INI:对应keil-c51的UV4.exe的目录(可不改)
EIDE.J Link:J-Link的安装目录
EIDE.Open OCD:OpenOCD的路径,注意是Openocd.exe
配置完成后退出,关闭VScode,打开Keil-arm,创建项目。
3.3 Keil项目的创建
使用keil进行项目的搭建更加方便,EIDE支持直接导入,同时,也为后续VScode出现BUG没法使用做一个备案。首先配置下载好MSPM0SDK和SysConfig,这里可以根据TI的官方文档下载。
笔者同样只提供官网链接。
从SDK的example中打开任意一个项目,前提是选择相应的芯片,具体路径参考:
D:\ti\mspm0_sdk_2_10_00_04\examples\nortos\LP_MSPM0G3507\driverlib\gpio_software_poll
这里,要复制出来两个文件,以后经常用到。
分别为:
startup_mspm0g350x_uvision.s
mspm0g3507.sct
3.3.1 创建Keil项目
紧接着打开Keil,新建一个项目,选择芯片型号,紧接着弹出来的弹窗直接点OK,什么都不需要选择:


接着,新建一个main.c文件不用编写,添加到左边的组中即可。同时复制上文两个文件到文件夹中,添加startup文件进入组中。
3.3.2 使用sysconfig配置生成头文件
打开SysConfig图形化配置界面,这里会生成9个文件。


将这9个文件都保存下来,其中.C文件放在SOC文件夹下,.H放在INC文件夹下,方便管理。
将.c.h.syscfg文件都添加到组中,最后的文件结构如图所示:

同时右击.syscfg文件,选择小魔法棒,更改文件解读方式,否则会报错,如图:

3.3.3 配置Keil的选项卡
按照图中设置,C99标准,C++11标准。
include目录比较特殊,需要大概四个目录。这也是区别于其他芯片的地方。

如图,四个目录分别是
./INC:用户的头文件目录
./CMSIS\CORE\Include:芯片支持核心头文件
./source\ti\driverlib:外设支持
./source:头文件目录
标红的三个目录都在MSPM0 SDK的文件夹中。
整体效果如下,注意第一行的Define以及正下方的warning选项也要更改,否则会包100+个warning

接下来配置debug选项卡

这里选择J-link,点击旁边的setting

注意:连接芯片后重新打开扫描,得到IDCODE就对了,否则无法烧录
选择sw模式连接开发板的接口。
紧接着配置OUTPUT,选择Create HEX_File
再配置linker选项卡,取消Use Memory layout from Target Dialog选项,默认是./Object/xxx.sct
改为我们复制过去的.sct

下面一行,需要一个.a的链接文件,它的目录在sdk的source中,界面如下:


完成后,保存退出。
3.4 EIDE 导入工程
打开VScode,点击侧边栏的EIDE,点击项目,导入项目。上面选择MDK->ARM,选择keil工程文件后,右下角选择继续在本工作区,部分打开后,会出现区域受限,选择信任工作区即可。


3.5 EIDE 的项目设置

选择芯片支持包,点击右边的加号,添加,第一个是网络,第二个是本地,MSPM0线上可能出现下载慢,下载不到的情况,可以在keil官网下载支持包,.pack文件,手动加载。
接下来点开J-Link,并点击芯片名称,将这里改为对应的芯片,如果找不到,就是J_LINK路径配置不对,或者不完整,建议重新下载配置。

完成后就可以编写测试了。
4.代码编写以及测试
4.1 代码的编写
在main.c中写入测试程序:
#include "ti_msp_dl_config.h"
void delay_ms(uint32_t ms)
{
volatile uint32_t cnt;
while(ms--)
for(cnt=0;cnt<10000;cnt++);
}
int main(void)
{
SYSCFG_DL_init();
while(1)
{
delay_ms(100);
DL_GPIO_setPins(LED_PIN_PORT, LED_PIN_LED_PIN_0_PIN);
delay_ms(100);
DL_GPIO_clearPins(LED_PIN_PORT, LED_PIN_LED_PIN_0_PIN);
DL_UART_transmitData(UART0,'a');
DL_UART_transmitData(UART0,'b');
}
}

这是一个点灯和串口发送的测试程序,GPIO可以根据自己配置更改,图中对应LED_PIN_PORT等,写完后,按住Ctrl+S保存。
4.2 代码编译以及烧录
点击右上角的构建以及烧录,即可完成代码测试。
构建成功界面

下载成功界面

调试界面

5.结语
篇幅很长,感谢大家阅读完这篇博客。由于篇幅的原因,无法做到面面俱到,如果有出现问题的地方,可以私信我,或者评论留言,后续会为大家解答!
更多推荐

所有评论(0)