电子说
作为电子工程师,在使用MSP430微控制器进行开发时,MSP430 GCC工具链是一个强大且实用的工具。本文将详细介绍MSP430 GCC工具链的安装、使用、特性以及相关注意事项,希望能帮助大家更好地利用这个工具进行项目开发。
文件下载:EM430F6137RF900.pdf
MSP430 GCC工具链采用MSP430 ABI,与TI工具链兼容。这是一个免费的GCC工具链,支持所有MSP430设备,且没有代码大小限制。它既可以作为独立包使用,也可以在Code Composer Studio(CCS)IDE v6.0或更高版本中使用,支持Windows、Linux和macOS操作系统。
| 特性 | 专有TI代码生成工具 | MSP430 GCC工具链 | MSPGCC工具链 |
|---|---|---|---|
| 代码大小和性能 | ✓✓✓ | ✓ | - |
| ABI | TI | TI | 社区 |
| 集成在CCS | ✓ | ✓(1) | - |
| 独立使用 | ✗ | ✓ | - |
| 支持 | TI | TI | 社区 |
| 成本 | 免费 | ✓ | ✓ |
注:(1) CCS和GCC的组合完全免费,没有代码大小限制。
MSP430 GCC支持多种操作系统,包括Windows 7/8/10(32位或64位)、Linux(32位或64位)和macOS(64位)。安装方法有以下几种:
可以从TI网站下载适用于所有支持操作系统的MSP430 GCC完整独立包。该包包含工具链、设备支持文件、调试栈和USB驱动。安装步骤如下:
注意:对于Linux安装程序,在执行包之前需要执行“sudo chmod +x
以下是使用MSP430 GCC工具链从头创建汇编或C项目,并在MSP430 MCU上下载和运行应用程序的详细步骤:
可以使用这些调试器在CCS中对MSP430设备进行调试,更多详细信息请参考《Code Composer Studio™ IDE for MSP430™ MCUs User's Guide》。
大多数项目可以使用默认出厂设置进行编译和调试。要访问活动项目的设置,点击“Project → Properties”。常见的项目设置如下:
| MSP430 GCC设置窗口包含以下选项: | 选项 | 描述 |
|---|---|---|
| Command | 编译器位置 | |
| Command - line pattern | 命令行参数 | |
| Summary of flags set | 调用编译器的命令行,显示传递给编译器的所有标志 |
| 选项 | 描述 |
|---|---|
| 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)。 |
| 选项 | 描述 |
|---|---|
| Define symbols (-D) | -D name:将name预定义为宏;-D name = definition:将name预定义为宏,并赋予定义1。 |
| Undefine symbols (-U) | -U name:取消name的任何先前定义,无论是内置的还是使用 -D选项提供的。 |
| 选项 | 描述 |
|---|---|
| Include paths (-I) | 将目录添加到要搜索头文件的目录列表中。 |
| 选项 | 描述 |
|---|---|
| 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链接器选项结合使用,可以通过允许链接器删除未使用的部分来减少代码大小。
| 选项 | 描述 |
|---|---|
| Preprocess only; do not compile, assemble, or link (-E) | 启用此选项仅进行预处理,不进行编译、汇编或链接。 |
| Other preprocessor flags (-Xpreprocessor) | 用于提供GCC不识别的特定于系统的预处理器选项。要传递带参数的选项,需要使用两次 -Xpreprocessor,一次用于选项,一次用于参数。 |
| 选项 | 描述 |
|---|---|
| Other assembler flags (-Xassembler) | 根据用户要求指定单个标志。 |
| 选项 | 描述 |
|---|---|
| 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) | 生成额外的代码以写入适合分析程序的配置文件信息。编译需要数据的源文件时需要此选项,链接时也需要。 |
| 选项 | 描述 |
|---|---|
| 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仅显示编译器发出的错误消息,抑制警告和信息消息。 |
| 选项 | 描述 |
|---|---|
| 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。 |
| 选项 | 描述 |
|---|---|
| Command | 链接器位置 |
| Command - line pattern | 命令行参数 |
| Summary of flags set | 调用链接器的命令行,显示传递给链接器的所有标志 |
| 选项 | 描述 |
|---|---|
| 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) | 启用未使用输入部分的垃圾回收,在不支持此选项的目标上忽略。 |
| 选项 | 描述 |
|---|
全部0条评论
快来发表一下你的评论吧 !