需求:
话说想用GCC开发嵌入式遇到的麻烦还真不少。之前用了几天的vscode + 插件 + cmake + gcc + pyocd,搞定了编辑、编译、烧录、调试。vscode的使用体验还是挺不错的,比较难受的就是插件的管理问题,一打开就加载所有插件,试了很多个方法例如手动开关、切换配置文件,都不太好用。这几天把RT-Thread Studio下了回来。想着能不能在这个平台上搞一个比较舒服的开发环境。
然而, RT-Thread Studio支持的芯片虽然多,但还是不全,远少于keil segger jlink之类的。或者有的人想用这个环境开发自己公司的片子,那就更不可能有支持了。
本期我们就来看看怎么给RT-Thread Studio添加一个私有的芯片支持。
探索:
首先我们知道的是RT-Thread Studio是基于Eclipse开发的,一眼就能看出来,类似的还有沁恒家的MounRiver Studio(MRS),德姨家的Code Composer Studio(CCS)等等。MRS的文件夹结构我看过,也添加过支持包,不过芯片烧录环节的openocd问题没解决,公司用的是RV和魔改的编译器,魔改比较复杂,就搁置了。
第一步,观察实际功能
RTT里的芯片支持具体表现为可以在包管理器里安装删除指定版本的支持包;新建工程的时候可以选取厂商和芯片系列型号。新建的工程是一个模板。
支持包是可以上网同步的,一般这种表理想的都是在ini、xml之类的数据里保存,从网上拉取。
新建工程时可以选择芯片型号、子型号等,这些应该也是存在一张表里。
支持包附带工程模板,这些模板必然是有源文件的切根据芯片型号分门别类。
第二步,翻文件夹
我的软件版本是2.2.7,安装文件夹如下:
稍作分析,configuration可能是一些配置文件,我们要的表可能在这里;jre就是java相关的了;p2看不懂,根据内部文件应该是equinox.p2这个功能;platform可能是platform IO相关的环境;plugins就是一堆Eclipse插件,例如代码补全高亮等;repo最可疑的一个文件夹,里面有支持包的本体;workspace就是软件默认的工作区路径。
第三步,翻configuration文件夹
文件夹里是这样的,有很多可疑的json和xml文件,一一翻看。
- bsp_cache.json,csp_cache.json可能是缓存,b和c分别对应board板级支持包和chip芯片支持包
- moduleInformation.json看不懂
- sdk_status.json好像是rtt的版本
- tpsp_cache.json空
- vendor_debugger.json调试器的列表,根据我看MRS的经验,可能是代表那个厂商的芯片可以选取哪些调试器
- index_all.json软件包列表,我们要找的东西就是他
翻看index_all:
是一些软件包列表和链接,这应该就是软件包管理器的源。
找到熟悉的APM支持包:
第四步,翻repo文件夹
子文件夹只有一个Extract。
再往里:
软件包都找到了,
随便打开一个ArteryTek->AT32F4->0.1.8,这就是AT32F4支持包的全部内容。
查看ArteryTek_AT32F4.yaml:
显然里面记录着所有芯片型号和对应的模板工程。
我们查看一个芯片的项目:
chipname,芯片型号
memory,内存地址和大小
compiler,编译器支持;支持gcc,一个宏,程序入口,链接文件,工程启动文件;竟然还有armcc选项
继续往下翻:
ui这一项应该就是对应新建工程里的这一项:
实践:
接下来就是尝试改这些文件,先试试index_all.json。
ATSAMD21的支持包比较短小,复制他,把厂商名改成HDSC:
失败了,联网的时候程序会自动同步,覆盖掉这个文件。
断网状态下成功:
接下来改repo里的支持包本体,我复制了AMP家的支持包,改成HC32L1系列的。
目录内容是HDSC->HC32L1->1.0.0。
yaml相应的修改成HDSC_HC32L1.yaml。
内部小修小补一下:
成功的出来了,新建工程界面可以找到HDSC:
之后就可以详细修改模板工程了。
结论:
包管理器列表可以修改但是会被联网覆盖。
新建工程可选的包可以修改,不会被联网删掉。
接下来根据包文件夹的内容和yaml内容删改出相应的模板工程就行了。yaml里的条目很好懂。