MSP430 GCC工具链使用指南

电子说

1.4w人已加入

描述

MSP430 GCC工具链使用指南

作为电子工程师,在使用MSP430微控制器进行开发时,MSP430 GCC工具链是一个强大且实用的工具。本文将详细介绍MSP430 GCC工具链的安装、使用、特性以及相关注意事项,希望能帮助大家更好地利用这个工具进行项目开发。

文件下载:EM430F6137RF900.pdf

一、简介

MSP430 GCC工具链采用MSP430 ABI,与TI工具链兼容。这是一个免费的GCC工具链,支持所有MSP430设备,且没有代码大小限制。它既可以作为独立包使用,也可以在Code Composer Studio(CCS)IDE v6.0或更高版本中使用,支持Windows、Linux和macOS操作系统。

MSP430 TI和GCC工具链对比

特性 专有TI代码生成工具 MSP430 GCC工具链 MSPGCC工具链
代码大小和性能 ✓✓✓ -
ABI TI TI 社区
集成在CCS ✓(1) -
独立使用 -
支持 TI TI 社区
成本 免费

注:(1) CCS和GCC的组合完全免费,没有代码大小限制。

二、安装MSP430 GCC工具链

MSP430 GCC支持多种操作系统,包括Windows 7/8/10(32位或64位)、Linux(32位或64位)和macOS(64位)。安装方法有以下几种:

2.1 在CCS v7.2之前的版本中安装

  • 安装CCS时选择:在安装CCS的过程中,选择将MSP430 GCC工具链作为“附加组件”安装。MSP430 GCC将在首次运行CCS时安装。
  • 通过CCS应用中心添加:如果CCS已经安装但没有MSP430 GCC,可以通过CCS应用中心添加。具体步骤为:打开菜单“View → CCS App Center”,选择“MSP430 GCC”,点击“Install Software”按钮开始安装。
  • 安装目录:GCC工具链将安装到CCS安装目录下的“ccsv#toolscompiler gcc_msp430_x.x.x”(其中xxx表示版本号)。

2.2 作为独立包安装

可以从TI网站下载适用于所有支持操作系统的MSP430 GCC完整独立包。该包包含工具链、设备支持文件、调试栈和USB驱动。安装步骤如下:

  1. 下载相应的包安装程序并运行。
  2. 选择安装目录并点击“Next”。

注意:对于Linux安装程序,在执行包之前需要执行“sudo chmod +x ”。

三、在CCS中使用MSP430 GCC

3.1 创建新项目

以下是使用MSP430 GCC工具链从头创建汇编或C项目,并在MSP430 MCU上下载和运行应用程序的详细步骤:

  1. 启动CCS(“Start → All Programs → Texas Instruments → Code Composer Studio → Code Composer Studio”)。
  2. 创建新项目(“File → New → CCS Project”)。在“Target”字段中选择合适的MSP430设备变体,并输入项目名称。
  3. 选择编译器版本,如GNU v7.3.0.9(Mitto Systems Limited)或任何更新的版本。
  4. 在“Project template and examples”部分,对于C项目选择“Empty Project (with main.c)”;对于仅汇编项目,选择“Empty Project”。
  5. 如果使用USB闪存仿真工具(如MSP - FET、MSP - FET430UIF、eZ - FET或eZ430开发工具),它们通常会默认配置好。
  6. 对于C项目,至此设置完成。
  7. 点击“Finish”创建新项目,该项目将在“Project Explorer”视图中可见。项目中会包含一个.ld文件,它是链接脚本,包含内存布局和段分配信息,相当于TI MSP430编译器和链接器使用的TI链接命令文件(.cmd)。
  8. 在main.c文件中输入程序代码。若要使用现有源文件,点击“Project → Add Files...”,浏览到感兴趣的文件,单击该文件并点击“Open”或双击文件名将其添加到项目文件夹中。
  9. 构建项目(“Project → Build Project”)。
  10. 调试应用程序(“Run → Debug (F11)”)。这将启动调试器,控制目标设备,擦除目标内存,将应用程序编程到目标内存,并重置目标设备。
  11. 点击“Run → Resume (F8)”启动应用程序。
  12. 点击“Run → Terminate”停止应用程序并退出调试器,CCS将自动返回C/C++视图(代码编辑器)。

3.2 使用MSP - FET、MSP - FET430UIF、eZ - FET、eZ430进行调试

可以使用这些调试器在CCS中对MSP430设备进行调试,更多详细信息请参考《Code Composer Studio™ IDE for MSP430™ MCUs User's Guide》。

3.3 MSP430 GCC的构建选项

大多数项目可以使用默认出厂设置进行编译和调试。要访问活动项目的设置,点击“Project → Properties”。常见的项目设置如下:

  • 指定调试会话的目标设备:“Project → Properties → General → Device → Variant”,相应的链接命令文件和运行时支持库将自动选择。
  • 调试C项目时:为了更轻松地调试,禁用优化(-O0)或使用 -Og,-Og只启用那些不干扰调试的优化,与 -O0相比,它可以减少代码大小并提高性能。
  • 指定C预处理器的搜索路径:“Project → Properties → Build → GNU Compiler → Directories → Include Paths (-I)”。
  • 指定使用的任何库的搜索路径:“Project → Properties → Build → GNU Linker → Libraries → Library search path (-L, --library - path)”。
  • 指定调试器接口:“Project → Properties → General → Device → Connection”,选择TI MSP430 USBx用于USB接口。
  • 启用在对象代码下载之前擦除主内存和信息内存:“Project → Properties → Debug → MSP430 Properties → Download Options → Erase Main and Information Memory”。
  • 确保独立运行正常:选择“Hardware Breakpoints”(“Project → Properties → Debug → MSP430 Properties”)。如果启用了“Software Breakpoints”(“Project → Properties → Debug → Misc/Other Options → Allow software breakpoints to be used”),在目标设备连接时,确保每个调试会话正确终止,否则目标设备可能无法按预期独立运行,因为设备上的应用程序仍然包含软件断点指令。

3.3.1 GNU编译器设置

MSP430 GCC设置窗口包含以下选项: 选项 描述
Command 编译器位置
Command - line pattern 命令行参数
Summary of flags set 调用编译器的命令行,显示传递给编译器的所有标志

3.3.2 GNU编译器:运行时设置

选项 描述
Target CPU (-mcpu) 指定要使用的指令集架构(ISA),接受的值为msp430、msp430x和msp430xv2。此选项已弃用,应使用 '-mmcu=' 选项选择ISA。
Target MCU (-mmcu) 选择目标MCU,用于创建基于MCU名称的C预处理器符号,并将其转换为大写,前后加上 ''。这反过来又被msp430.h头文件用于选择特定于MCU的补充头文件。该选项还设置要使用的ISA。如果MCU名称仅支持430 ISA,则选择该ISA,否则选择430X ISA。也可以使用通用MCU名称msp430选择430 ISA,类似地,通用msp430x MCU名称选择430X ISA。此外,特定于MCU的链接脚本将添加到链接器命令行,脚本名称是MCU名称加上“.ld”。因此,在gcc命令行上指定 '-mmcu=xxx' 定义了C预处理器符号 'XXX__',并使链接器搜索名为 'xxx.ld' 的脚本。此选项也会传递给汇编器。
Generate run time type descriptor information 启用或禁用为具有虚函数的每个类生成信息,以供C++运行时类型识别功能使用。选项为On (-frtti) 和Off (-fno - rtti)。
Enable exception handling 启用或禁用异常处理,生成传播异常所需的额外代码。选项为On (-fexceptions) 和Off (-fno - exceptions)。

3.3.3 GNU编译器:符号设置

选项 描述
Define symbols (-D) -D name:将name预定义为宏;-D name = definition:将name预定义为宏,并赋予定义1。
Undefine symbols (-U) -U name:取消name的任何先前定义,无论是内置的还是使用 -D选项提供的。

3.3.4 GNU编译器:目录设置

选项 描述
Include paths (-I) 将目录添加到要搜索头文件的目录列表中。

3.3.5 GNU编译器:优化设置

选项 描述
Optimization Level 指定编译器对生成的目标代码应用的优化级别。选项包括:None (O0):禁用优化,此设置相当于指定 -O0命令行选项,编译器生成未优化的线性汇编语言代码;Optimize (O1):编译器执行所有与目标无关(即非并行化)的优化,如函数内联,此设置相当于指定 -O1命令行选项,编译器省略所有特定于目标的优化并生成线性汇编语言代码;Optimize more (O2):编译器执行所有优化(包括与目标无关和特定于目标的优化),此设置相当于指定 -O2命令行选项,编译器输出优化的非线性并行化汇编语言代码;Optimize most (O3):编译器执行所有2级优化,然后低级优化器执行全局算法寄存器分配,此设置相当于指定 -O3命令行选项,在此优化级别下,编译器生成的代码通常比2级优化生成的代码更快;Optimize for space rather than speed (-Os):启用所有通常不会增加代码大小的 -O2优化,-Os选项还执行进一步的优化以减少代码大小;Optimize for speed disregarding exact standards compliance (-Ofast):启用所有 -O3优化,-Ofast选项还启用对所有符合标准的程序无效的优化,如 -ffast - math。
Make 'char' unsigned by default (-funsigned - char) 启用此选项以确保char是有符号的。
Place each function into its own section (-ffunction - sections) 启用此选项将每个函数放在输出文件的单独部分中。
Place data items into their own section (-fdata - sections) 启用此选项将每个数据项放在输出文件的单独部分中。
Convert floating point constants to single precision constants (-fsingle - precision - constant) 将浮点常量视为单精度,而不是隐式转换为双精度常量。

使用 -ffunction - sections和 -fdata - sections选项与 --gc - sections链接器选项结合使用,可以通过允许链接器删除未使用的部分来减少代码大小。

3.3.6 GNU编译器:预处理器设置

选项 描述
Preprocess only; do not compile, assemble, or link (-E) 启用此选项仅进行预处理,不进行编译、汇编或链接。
Other preprocessor flags (-Xpreprocessor) 用于提供GCC不识别的特定于系统的预处理器选项。要传递带参数的选项,需要使用两次 -Xpreprocessor,一次用于选项,一次用于参数。

3.3.7 GNU编译器:汇编器设置

选项 描述
Other assembler flags (-Xassembler) 根据用户要求指定单个标志。

3.3.8 GNU编译器:调试设置

选项 描述
Generate debug information (-g) 生成调试信息,此信息是GDB调试器所需的。
Generate debug information in DWARF version (-gdwarf - ) 以DWARF格式生成调试信息(如果支持),版本值可以是2、3或4,大多数目标的默认版本是4。
Do not emit DWARF additions beyond selected version (-gstrict - dwarf) 不允许使用比 -gdwarf - version选择的更高版本的DWARF标准扩展。在大多数目标上,允许使用来自更高标准版本的非冲突DWARF扩展。
Enable function profiling (-p) 生成额外的代码以写入适合分析程序的配置文件信息。编译需要数据的源文件时需要此选项,链接时也需要。

3.3.9 GNU编译器:诊断选项设置

选项 描述
Check for syntax errors, then stop (-fsyntax - only) 启用此选项检查代码的语法并报告任何错误。
Suppress warnings (-w) 抑制所有警告消息。
Enable most warning messages (-Wall) 启用此选项以启用所有关于一些用户认为有问题且易于避免(或修改以防止警告)的构造的警告,即使与宏结合使用。
Treat all warnings as errors (-Werror) 启用此选项将所有警告视为硬错误,触发警告的源代码将被拒绝。
Enable verbose output (-v) 启用此选项使IDE显示它传递给shell的每个命令行,以及工具发出的所有进度、错误、警告和信息消息。此设置相当于指定 –v命令行选项,默认情况下,此复选框未选中,IDE仅显示编译器发出的错误消息,抑制警告和信息消息。

3.3.10 GNU编译器:杂项设置

选项 描述
Override built - in specs with the contents of the specified file (-specs) 可以使用 -specs=命令行开关指定一个规范文件来覆盖GCC内置的规范字符串。
-mlarge 使用大模型寻址(20位指针,20位size_t)。
-mcode - region = none
-mdata - region = none
MSP430编译器能够自动在低内存(地址低于64K)和高内存之间分配代码和数据,这仅适用于实际具有两个内存区域的部件,并且仅当该部件的链接脚本专门设置为支持此功能时才适用。更多信息请参见表4 - 2。

3.3.11 GNU链接器设置

选项 描述
Command 链接器位置
Command - line pattern 命令行参数
Summary of flags set 调用链接器的命令行,显示传递给链接器的所有标志

3.3.12 GNU链接器:基本设置

选项 描述
Output file (-o) 使用output作为ld生成的文件的名称;如果未指定此选项,默认使用 'a.out' 作为名称。脚本命令OUTPUT也可以指定输出文件名。
Write a map file (-Map) 将链接映射打印到文件mapfile中,该映射包含有关符号如何由ld映射的诊断信息以及全局公共存储分配信息。
Set start address (-e, --entry) 使用entry作为程序执行开始的显式符号,而不是默认的入口点。
Do not use the standard system startup files when linking (-nostartfiles) 链接时不使用标准系统启动文件,除非使用 -nostdlib或 -nodefaultlibs,否则使用标准系统库。
Do not use the standard system libraries when linking (-nodefaultlibs) 链接时不使用标准系统库,仅将指定的库传递给链接器,忽略指定系统库链接的选项,如 ‑ static ‑ libgcc或 ‑ shared ‑ libgcc。除非使用 -nostartfiles,否则使用标准启动文件。编译器可能会生成对memcmp、memset、memcpy和memmove的调用,这些入口通常由libc中的条目解析,指定此选项时,应通过其他机制提供这些入口点。
Do not use the standard system startup files or libraries when linking (-nostdlib) 链接时不使用标准系统启动文件或库。
Do not link with the shared libraries (-static) 在支持动态链接的系统上,此选项可防止与共享库链接,在其他系统上,此选项无效。
Remove unused sections (--gc - sections) 启用未使用输入部分的垃圾回收,在不支持此选项的目标上忽略。

3.3.13 GNU链接器:库设置

选项 描述
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分