在进行C2000开发时,能选择的IDE很少,只有TI自家的Code Composer Studio(CCS),是基于Eclipse魔改的。新人在一开始上手使用CCS的时候可能会一头雾水,而且CCS的代码补全功能非常鸡肋,所以在这里介绍一种在宇宙最强编辑器VSCODE上编辑并编译C2000工程的方法。
在将工程导入VSCODE之前,我们需要先要将工程导入CCS中。
CCS编译工程靠的是makefile加gmake的方式。gmake是TI自己弄的编译器。在makefile文件中包括了编译C2000工程所需要的所有信息,包括编译器路径、编译器参数、编译顺序等等。每个子文件夹还有自己的subdir_rules.mk和subdir_vars.mk文件,用来告诉编译器如何编译子文件夹中的文件。在makefile和各种.mk文件中,编译器所需要知道的文件路径大部分都是以相对路径表示的,但是像项目路径,编译器路径,C2000专用的头文件路径等,都是以绝对路径表示的。在将例程或者别人的工程导入CCS之前,这些绝对路径都是错误的,所以我们需要先使用CCS导入工程,CCS会自动修改这些路径,使得工程可以在CCS中正常编译。
第二个原因则是像C2000ware中的例程中是不包含driverlib驱动库文件的,使用CCS导入后,CCS会将这些文件添加到工程中,并生成对应的makefile文件。
在导入工程后,我们需要在CCS中修改工程,比如重命名工程,新增文件夹,设置代码烧录位置等等。
但是要记住,以上的操作都要在CCS中进行,因为CCS在每次编译时都会会自动修改makefile文件,使得工程可以在CCS中正常编译。如果你在文件资源管理器里面直接修改文件名或文件夹名,makefile文件中的路径是不会自动更新的,编译器找不到文件,就会报错。
在修改完工程后,可以点击菜单栏上面的小锤子编译一下,看看有没有报错。
在导入工程的文件夹的空白处右键,选择在VSCODE中打开。
在VSCODE中的操作分为两步,一个是能让VSCODE正常跳转和补全,另一个是能在VSCODE的终端里面正常编译。
在工程根目录下新建.vscode文件夹,在.vscode文件夹下新建c_cpp_properties.json文件,文件内容如下:
{ "configurations": [ { "name": "TI C2000", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/CPU1_FLASH/syscfg", "${workspaceFolder}/device/", "${workspaceFolder}/device/driverlib", "${workspaceFolder}/device/driverlib/inc", "C:/ti/ccstheia150/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/include" ], "defines": [ "UNICODE", "_UNICODE", "__TMS320C28XX__", "__interrupt=" // 定义为空,消除红色波浪线 ], "cStandard": "c11", "compilerPath": "C:/ti/ccstheia150/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/bin/cl2000.exe", "intelliSenseMode": "clang-x64" } ], "version": 4 }
第6行到第21行是我们要根据工程修改的地方,其余的都是文件框架,直接复制就行。
"includePath"中填写的是编译器搜索头文件的路径。${workspaceFolder}表示工程根目录,然后依次添加你自己新添加的包括.h文件的文件夹路径(我这里没有新建.h文件以及文件夹,所以只有第6行)。
第7行的CPU1_FLASH/syscfg是为了包含syscfg生成的board.h文件。如果你设置的是烧录到RAM,那路径应该改成CPU1_RAM/syscfg。双核CPU同理。
下面的三行是包括的driverlib文件夹的路径。
includePath的最后一行的路径是C2000的C标准函数库头文件路径。这个要到CCS的安装目录里面找。或者你可以在工程文件里面包含一下标准库的头文件的路径,然后跳转进去,CCS的标题就会变成该头文件的路径,就像下面这样:
"defines"中填写的是编译器预定义的宏。这里定义了三个宏,第一个是UNICODE,第二个是_UNICODE,第三个是__TMS320C28XX__。这三个宏在driverlib中会使用到。
"compilerPath"是编译器的路径,添加这个是为了防止VSCODE无法跳转某些标准库的头文件,实际上并没有什么用。这个要根据你的安装路径来修改。
"intelliSenseMode"是智能提示模式,这里选择clang-x64。
将c_cpp_properties.json文件修改好之后,应该就能正常跳转和补全了,而且不会有红色波浪线报错。
要在VSCODE中编译C2000的工程,本质上还是调用CCS的编译器,也就是gmake。所以我们首先要把gmake添加到环境变量中,然后才在VSCODE中调用gmake。
gmake的安装路径也在CCS的安装目录下,路径为:
然后添加到环境变量中:
然后重启电脑,在VSCODE中打开终端,输入gmake -v
,如果出现gmake的版本信息,说明添加成功。
接下来就是创建一个调用gmake的编译脚本,在工程根目录新建一个build.ps1文件,文件内容如下:
cd ./CPU1_FLASH gmake -k -j32 all -O cd ..
这个脚本是在powershell中执行上述三条代码。其中cd ./CPU1_FLASH
是进入CPU1_FLASH文件夹,因为makefile文件在这个目录里面,如果你设置的是烧录到RAM,就改成cd ./CPU1_RAM
,双核的我暂时还没试过。gmake -k -j32 all -O
是调用gmake编译工程。cd ..
是返回上一级目录。
添加完文件后在VSCODE中打开终端,输入.\build.ps1
,如果出现编译信息,说明脚本创建成功。
如果出现报错,查看报错信息,是否存在语法错误;如果报错是找不到变量或函数,而且变量或函数正好在你新添加的文件夹里面,CCS编译设置中也有包含这个文件夹,可以在CCS中先编译一遍,把旧的makefile文件路径更新一下,就可以在VSCODE中编译了。
和上面的编译脚本类似,在工程根目录新建一个clean.ps1文件,文件内容如下:
cd ./CPU1_FLASH gmake clean cd ..
在VSCODE中打开你的工程,然后在菜单栏上点击文件->将工作区另存为,将工作区保存到你的工程根目录。
以后再要打开工程,直接双击打开这个.workspace后缀的工作区文件即可。
原文链接:https://zxcli.github.io/2024/10/03/如何在VSCODE上编辑并编译C2000工程/
本文由原作者本人授权于本站联合发布
本文作者:自行车等等我
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 Polari_S_tation 版权所有 许可协议。转载请注明出处!