历史上的今天
返回首页

历史上的今天

今天是:2025年01月22日(星期三)

正在发生

2021年01月22日 | 在 linux 上 对 MSP430G2 系列进行 debug

2021-01-22 来源:eefocus

本文介绍如何在 linux 系统上对 MSP430 程序进行 debug。包括程序的编译、下载、运行、调试以及 vim 编辑器自动补全设置。


工具

在本方案中,需要用到的主要工具包括 TI 官方提供的 IDE——CCS,mspdebug,msp430-elf-gdb,vim/neovim。


注意,CCS 的 linux 版本不支持连接 MSP430G2 系列的开发板,否则就没那么多麻烦了。在本方案中,该 IDE 只作为编译工具使用。


TI 官方提供的 msp430-gcc 虽然可以编译程序,但是缺少部分头文件。下面将介绍配置 GCC 的相关内容,但不建议作为编译工具使用。


配置

安装工具

安装 CCS、mspdebug。很简单,过程略。


关于 CCS 的使用,由于只需要用来做编译器,更好的选择是使用命令行操作,避免开启图形界面,具体上网搜即可。


msp430-elf-gdb 可以从 TI 官方提供的 msp430-gcc 编译工具链中获得,也可以自己编译。自己编译的过程如下。


在 GNU 官网下载最版本 gdb。解压,进入目录。


# target是架构,不需要修改

# prefix将决定最终安装gdb的位置,可以自行修改

./configure --prefix="${PREFIX}" --target=msp430-elf

make

sudo make install


如果要拆卸 gdb,需要进入编译好后的目录中所有的子目录,执行sudo make uninstall。


编辑器可以自由选择,本文介绍时使用 neovim。


msp430-gcc

如果想要尝试 gcc,可以参考以下步骤。


首先,在 TI 官网下载 msp430-gcc 及其 support-files。gcc 下载压缩包即可,不需要下载安装工具。


解压两个下载包。将 support-files 中所有的.h 与.ld 文件复制到 gcc 的 msp430-elf/include 目录以及 msp430-elf/lib 目录下。这里如果想少一点麻烦就不要参考官方教程将文件放到 include/device,直接按前述操作完成即可。


至此,gcc 配置完毕,只是仍然缺少部分头文件。如delay_cycles函数未定义。


想要用 gcc 编译,可以进入 msp430gcc 目录,使用./bin/msp430-elf-gcc -I ./msp430-elf/include -mmcu=msp430g2553 -c main.c编译。注意,必须指定微处理器的具体型号,且不要指明 lib 路径(设定处理器型号后 gcc 会自动调用链接器,不需要指明,指明后有冲突,这是前面放置头文件操作引起的)。


这样可以成功得到可执行文件。


需要注意的是,如果不介意官网提供的 gcc 版本较低,尽量使用官网的版本。自己编译的 gcc 缺少头文件等问题的情况只会更严重。如 gentoo crossdev 中编译而成的 msp430-elf-gcc,进行上述操作添加头文件后,虽然可以编译程序,但实际上是错误编译,这些可执行文件不可实际运行。这种情况下还需要做更多的处理。


编辑器自动补全与语法检查

neovim 可以使用 coc.nvim,并安装 coc-clangd 插件。对于其他编辑器而言,也可以使用类似的 lsp。通用的一点是compile_commands.json文件,这决定了 lsp 补全与检查的依据。该文件可以使用工具从 makefile 或 CMakeList.txt 生成。


什么都不会也没有关系,直接写就行,只需要七行即可。


[

  {

    "directory": "工作目录路径",

    "command": "编译指令,可以借用一下ccs内置的gcc,把头文件和微处理器型号写入,可参考上面的gcc编译命令",

    "file": "需要编译的文件,如./main.c"

  }

]


将其置于工程目录下即可。


建议将 ccs 安装目录中所有头文件复制到一个目录下,使用-I指定该目录即可。对于部分缺少的定义,可以自行在该目录下的头文件中添加,这样也不影响 ccs 编译程序。这里关于缺少的定义稍微解释一下。举个常见的例子,如__intertupt。如果你使用它,lsp 会报未定义错误,但是在 ccs 编译器中不会发生,且可以成功编译。查找所有的头文件,确实没有定义。这个时候就可以手动加上,骗过 lsp。如调用了"msp430g2553.h",则在该头文件末尾加上define __intertupt。


程序烧录与运行

得到可执行文件后,使用 mspdebug 工具进行烧录。


sudo mspdebug rf2500

# 进入mspdebug界面

load your_file

# 或者

prog your_file

# 运行程序

run

# 擦除程序

erase


程序调试

sudo mspdebug rf2500

gdb

# 在另一个终端窗口启动gdb,具体命令看自己的gdb名称

msp430-elf-gdb

# 进入gdb界面

# 监听上面mspdebug提供的调试端口

target remote localhost:2000


# moniter后加的命令相当于mspdebug下执行的命令

moniter prog your_file


file your_file


# 使用continue运行程序,不可使用run

c

# 其他调试自我发挥


推荐阅读

史海拾趣

兵字(BingZi)公司的发展小趣事

随着市场的不断变化和客户需求的日益多样化,兵字公司意识到,要想在市场中保持领先地位,就必须不断进行技术创新。于是,公司投入大量研发资源,成功研发出了小型精密互感器。这一创新产品不仅填补了市场空白,还为公司带来了可观的收益。同时,兵字公司也凭借这一技术突破,进一步巩固了在电子元器件领域的领先地位。

Bliley Technologies Inc公司的发展小趣事

随着全球化趋势的加速,Bliley也开始积极实施全球化战略。公司不仅在美国本土建立了先进的制造工厂和研发中心,还积极拓展海外市场,与全球客户建立紧密的合作关系。通过全球化战略的实施,Bliley不仅扩大了其市场份额,也提升了其品牌影响力和国际竞争力。如今,Bliley的产品已经广泛应用于各个领域,包括航空航天、军事国防、移动通信、5G蜂窝和电信等。

这五个故事共同展现了Bliley Technologies Inc.在电子行业中的发展历程。从一家小型压电公司起步,通过不断创新和拓展,Bliley逐渐成长为晶振行业的领军企业,并在全球化市场中取得了显著成就。这些故事不仅反映了Bliley的辉煌历史,也预示着其未来更加广阔的发展前景。

Amphenol Thermometrics公司的发展小趣事

在Bliley的发展历程中,技术创新始终是推动其不断前进的重要动力。从最初的石英晶体生产,到后来的恒温控制晶体振荡器(OCXO)、温度补偿晶振(TCXO)和压控晶体振荡器(VCXO)等先进产品的开发,Bliley始终站在行业技术的最前沿。公司拥有一支专业的研发团队,致力于开发更高效、更稳定、更精确的频率控制产品。这些技术创新不仅提升了Bliley的产品竞争力,也推动了整个电子行业的发展。

Custom Components Inc公司的发展小趣事

随着全球环保意识的不断提高,电子行业对绿色环保和可持续发展的要求也日益严格。CCI积极响应这一趋势,将绿色环保理念融入公司的战略规划和日常运营中。

公司不仅采用了环保材料和绿色生产工艺来降低产品对环境的影响,还通过优化生产流程和资源利用等方式降低能耗和排放。此外,CCI还积极参与行业环保组织和公益活动,推动整个行业向更加绿色、环保的方向发展。

德力西(DELIXI)公司的发展小趣事

面对激烈的市场竞争和不断变化的市场需求,德力西始终坚持创新驱动的发展战略。公司投入大量资源进行技术研发和产品创新,推出了多款具有竞争力的新产品。同时,德力西还积极响应绿色发展的号召,致力于打造低碳环保的电子产品。例如,在芜湖基地获得了中国低压电气行业国产品牌首家五星级零碳工厂及碳中和物流园区认证,这标志着德力西在绿色发展方面取得了显著成果。

Abracon公司的发展小趣事

进入新世纪后,德力西开始全国化布局和多元化发展。1998年,在上海注册成立了上海德力西集团有限公司,与西安高压电器研究所联合生产高压电器和成套设备。此外,德力西还积极参与国企改革,整体并购了杭州西子(集团)公司,并进入环保领域,建设垃圾处理及水处理项目。这些举措使德力西在电子行业的地位更加稳固。

问答坊 | AI 解惑

生命树教你如何获得优质低价的数码照片

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 …

查看全部问答>

C语言降龙十八掌——第二掌 printf藏玄机

这是一个真实的案例。在某型号的核心网络交换机设备中,为调试方便,实现了一个把内存内容从终端打印的功能,也就是dump memory,屏幕的左边显示十六进制,右边以ASCII形式显示, 用过UltraEdit的十六进制编辑功能朋友应该都很了解。显示ASCII码部 ...…

查看全部问答>

GPS/GPRS远程定位监控、的模块又朋友搞定没有呀,又的话来一块好吧

GPS/GPRS远程定位监控、的模块又朋友搞定没有呀,又的话来一块好吧 有搞定利用GPRS的UDP协议传送GPS信号到指定IP的模块的朋友吗?有的话跟帖,或者电话短消息,13838539322…

查看全部问答>

指纹模块 活体真皮指纹模块 生物射频指纹模块 指纹采集模块

指纹模块 活体真皮指纹模块 生物射频指纹模块 指纹锁模块、指纹采集模块、指纹采集头、指纹识别模块、指纹识别 C500 、C501  产品介绍: C500、C501是通用的指纹识别模块,采用了最先进的射频式指纹敏感器、高速信号处理器DSP、高性能 ...…

查看全部问答>

IAREWSTM8还是有些粗糙呀,CASE语句处理太严格

在一个 switch() 语句里,新添加一个分支 case 20: //正在编辑 A_ON_Time 参数,LED1长亮       break; 这种情况下编译器跳出严重错误,如下图所示,然后找了半天错误,最后发现在case 20里添加一句话如下面所示代码: ...…

查看全部问答>

2011年 预测控制类 雷达资料

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑 2011年 预测控制类 雷达资料 我想下其他的东西需要下载币,无奈只得收费了 [ 本帖最后由 lightstar1989 于 2011-8-27 18:34 编辑 ]  …

查看全部问答>

电平相反

max7221片选端低电平有效,clk上升沿din接收数据,可我仿真时,片选端一直高电平啊,clk也不见脉冲,只看见低电平,就算脉冲太快,看不到,片选端也不应该高电平啊,所驱动的数码管还显示呢。哎。。。。。。…

查看全部问答>

flashmagic怎么下呀

没有账号,也没有注册的地方。高手指点。…

查看全部问答>

【晒样片】+TI芯片申请小体会

     TI是非常大方的一个公司,对于学生党来说,芯片性能很高,足以应付各种比赛和日常的一些小的项目。      首先,个人认为TI样片申请主要是两个目的,第一个是对芯片性能进行测试,看用户体验,虽然对 ...…

查看全部问答>