开发环境)
1.引言最近电赛将至MSPM0逐渐进入开发阶段传统的keil界面过于复古代码量增加后keil的启动时间也会大幅延长且代码管理也不方便。由此VScode搭配Embedded IDE以下简称EIDE插件可以有效的改善问题节约程序仔的头发。同时VScode的补全代码功能也让人眼前一亮对比keil老态臃肿的代码补全和代码改错VScode显然更适合于现代嵌入式开发的工作流。目录1.引言2. 基础环境搭建2.1 VScode的下载以及安装2.2 Embedded IDE的下载2.3编译链以及烧录器的准备2.3.1编译链下载以及配置2.3.2 烧录器openOCD的下载与配置2.3.3 J-Link的下载3. 环境的配置与完善3.1 VScode的插件3.2 EIDE配置3.3 Keil项目的创建3.3.1 创建Keil项目3.3.2 使用sysconfig配置生成头文件3.3.3 配置Keil的选项卡3.4 EIDE 导入工程3.5 EIDE 的项目设置4.代码编写以及测试4.1 代码的编写4.2 代码编译以及烧录5.结语2. 基础环境搭建2.1 VScode的下载以及安装VScode推荐从官网获取VScode官网,Windows用户根据自己的电脑系统下载安装包一路next就可以这里不做赘述。2.2 Embedded IDE的下载EIDE是VScode的插件同时按下CtrlshiftX进入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。接着WINR输入cmd调出命令行终端输入arm-none-eabi-gcc --version就会输出版本信息等效果如图这里ARM的编译链就完成了我们进入下一步配置烧录器。2.3.2 烧录器openOCD的下载与配置只编译还不够接下来要有烧录器openOCD解决了多个芯片之前烧录要一直切换的痛点他作为开源的烧录器使用范围很广使用也很便捷但是官网下载速度很慢所以这里留下两个超链接一个是官网一个是百度网盘大家可以自己选择。官网 百度网盘如果网盘失效请联系笔者。下载完成后会出现如图的文件结构同样复制bin文件夹的路径进行环境配置。同样的步骤将目录添加到path变量中结束后WINR输入cmd打开命令终端输入openocd --version可以看到输出版本信息就对了界面如下图如果有makefile系统的需求可以下载MINGW64步骤是一样的。配置好后界面如图所示代码为mingw32-make --version2.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 LinkJ-Link的安装目录EIDE.Open OCDOpenOCD的路径注意是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.smspm0g3507.sct3.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标准C11标准。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(cnt0;cnt10000;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等写完后按住CtrlS保存。4.2 代码编译以及烧录点击右上角的构建以及烧录即可完成代码测试。构建成功界面下载成功界面调试界面5.结语篇幅很长感谢大家阅读完这篇博客。由于篇幅的原因无法做到面面俱到如果有出现问题的地方可以私信我或者评论留言后续会为大家解答