Ubuntu下使用Code::Blocks+OpenOCD+GDB搭建Atmel MCU开发调试环境

本文介绍在Ubuntu下搭建ARM MCU开发调试环境的步骤。先进行准备工作,包括安装Code::Blocks、下载arm-none-eabi-gcc编译器、安装OpenOCD工具;接着配置Code::Blocks,创建Debugger配置并配置Compiler;然后从Atmel官网下载官方例程;最后在Code::Blocks新建工程并导入例程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、准备工作

作为一个重度Linux系统使用者,平时开发相关的工作都是在Ubuntu下进行,最近有个项目需要用到Atmel 32位的Cortex-M7 MCU,所以花时间研究下如何在Ubuntu下搭建起ARM MCU的开发调试环境! 如果你也是想使用 Code::Blocks 进行ARM MCU相关的开发工作,可以参照这篇博客所列出的步骤指引搭建起开发调试环境。

安装Code::Blocks

Code::Blocks 是作者非常喜欢和推荐的一款多平台的软件开发IDE,尤其对C/C++的支持做的特别好,整个软件对电脑资源的消耗很少,轻便快捷,程序员最看中的代码补齐和搜索功能丝毫不弱于Source Insight和vs code。

作者使用的Code::Blocks 版本是17.12,自己去官网下载源码手动编译安装的,动手能力强的可以尝试手动编译下,或者省事的点就在命令终端输入 sudo apt-get install codeblocks. (Ubuntu默认支持的版本是16.x的旧版本)

如果需要更新版本的,可以尝试:
sudo add-apt-repository ppa:damien-moore/codeblocks-stable
sudo apt update
sudo apt install codeblocks codeblocks-contrib
在这里插入图片描述

下载arm-none-eabi-gcc编译器

直接去ARM官网就可以下载,记得下载for Linux的版本。
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

演示时使用的是2018-q4版本:
Version 8-2018-q4-major Linux 64-bit

将下载后的编译器工具包解压到用户目录下,比如作者将工具解压到 /home/kevin/opt 目录

安装OpenOCD工具

OpenOCD(Open On-Chip Debugger) 开源片上调试器,是一款开源软件,最初是由Dominic Rath同学还在大学期间发起的(2005年)项目。OpenOCD 旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

OpenOCD 的功能是在仿真器的辅助下完成的,仿真器是能够提供调试目标的电信号的小型硬件单元。仿真器是必须的,因为调试主机(运行OpenOCD 的主机)通常不具备这种电信号的直接解析功能。在Linux主机环境下,我们可以用GDB + OpenOCD 就可以进行代码的下载和调试。

说道这里得致敬下10几年前国内大牛做的一个非常好用的调试器叫 H-JTAG, 可惜的是后来停止更新。在当时那个ARM调试工具非常稀缺的年代,H-JTAG的出现还是帮助到了很多早期ARM开发人员。

2、配置Code::Blocks

创建一个新的Debugger配置

打开Code::Blocks,选择Settings -> Debugger., 然后选择Create Config, 新创建一个名叫配置OpenOCD的配置,点击OK保存新的配置。
在这里插入图片描述
接着对新创建的Debugger进行配置,需要指定GDB工具路径:
在这里插入图片描述

配置Compiler

打开Code::Blocks,选择Settings -> Compiler., 在Selected Compiler下拉框里面选择GNU GCC Compiler for ARM, 我们需要配置下arm-none-eabi-gcc编译工具路径等内容,Debugger选择新创建的OpenOCD,最后点击OK保存配置。
在这里插入图片描述
另外还可以配置系统编译器头文件查找路径:
在这里插入图片描述

3、start.atmel.com下载官方例程

Atmel官网例程在线配置网站start.atmel.com,可以在线配置所需要的MCU外设,外设驱动参数等信息,用起来还是非常方便,关键配置的工程最后下载支持多种集成开发环境,比如它官方的Atmel Studio 7,通用的IAR/Keil,还有Linux用户可以用的GCC Makefile。
由于Code::Blocks直接支持导入用户Makefile文件进行编译(敲下小黑板划重点-这点很重要),这样很多开源项目可以直接通过此类的方法进行配置导入Code::Blocks中进行编译和调试仿真。源码具体的下载过程就请参考后面提供的视频链接。

4、在Code::Blocks新建工程并导入atmel官方例程

整个操作流程请参考以下优酷网视频链接:
视频教程

<think>好的,我现在需要帮助用户解决在Code::Blocks中设置STM32的C语言开发环境及新建项目的问题。首先,我需要整理用户提供的引用资料,看看有没有相关的信息可以利用。 引用[1]提到在Ubuntu使用Code::BlocksOpenOCDGDB搭建Atmel MCU开发环境,包括安装编译器、配置调试器等步骤。虽然这是针对Atmel的,但可能步骤类似,可以借鉴其中的环境配置方法。 引用[2]指出在编译STM32时使用-mcpu=stm32f103c8出现错误,提示无效的值。这说明用户可能在编译器选项设置上有误,需要正确指定MCU型号或者调整编译参数,可能涉及到交叉编译工具链的选择。 引用[3]展示了链接脚本中的闪存起始地址定义,这提示在STM32项目中可能需要配置链接脚本,设置正确的内存布局,比如ROM和RAM的起始地址和大小。 引用[4]提供了STM32应用开发中的结构体定义,涉及外设配置如SDIO,这说明在项目中需要包含正确的STM32库文件,比如标准外设库或HAL库,并正确初始化外设。 接下来,我需要综合这些信息,分步骤指导用户配置环境并创建项目。首先,安装必要的工具链,比如arm-none-eabi-gcc,这是ARM架构的交叉编译器。然后配置Code::Blocks的编译器和调试器设置,确保指向正确的工具路径。可能还需要处理编译选项,避免出现如引用[2]中的错误,可能需要使用-mcpu=cortex-m3这样的参数而不是具体型号,或者检查工具链是否支持该MCU。 接着,创建新项目时,需要导入STM32的启动文件和库文件,配置编译器和链接器选项,包括指定处理器架构、优化级别、调试信息等。链接脚本方面,根据引用[3],需要确保链接脚本正确指定内存区域,这可能涉及修改或创建.ld文件。 调试配置部分,参考引用[1]中的OpenOCDGDB配置,可能需要设置OpenOCD的配置文件指向STM32的板子,比如使用stm32f1x.cfg,并配置Code::Blocks调试使用GDBOpenOCD进行连接。 最后,验证项目设置,编译并下载程序到设备,可能需要使用ST-Link或其他调试工具,并确保代码正确运行。此外,用户可能需要参考官方例程,如引用[4]中的结构体,正确初始化外设,并处理应用逻辑。 需要注意的潜在问题包括编译器版本兼容性、链接脚本的正确性、调试器配置是否正确,以及是否正确包含所有必要的头文件和库路径。用户可能在编译时遇到未定义的引用错误,这时候需要检查库文件的添加情况。此外,如果出现内存分配错误,需要检查链接脚本中的内存地址和大小是否与目标MCU一致。 总结步骤应该是:安装工具链→配置Code::Blocks→创建项目并导入库→配置编译和链接选项→设置调试器→编写测试代码→编译下载调试。过程中需要参考官方文档和例程,确保各步骤正确。</think>以下是在 Code::Blocks搭建 STM32 开发环境的详细步骤: ### 1. 安装工具链 1. 安装 ARM 交叉编译器: ```bash sudo apt-get install gcc-arm-none-eabi ``` 2. 安装 OpenOCD 调试工具: ```bash sudo apt-get install openocd ``` 3. 下载 STM32 标准外设库(如 STM32F10x_StdPeriph_Lib)并解压到本地目录[^4] ### 2. 配置 Code::Blocks 1. 打开 *Settings > Compiler > Toolchain executables* 2. 设置编译器路径: - 编译器安装目录:`/usr/bin/` - 程序文件选择 `arm-none-eabi-gcc`[^1] 3. 添加编译选项: ```makefile -mcpu=cortex-m3 -mthumb -Wall -O0 -g3 ``` ### 3. 创建新项目 1. 选择 *File > New > Project > Empty project* 2. 添加必须的文件: ```c /* main.c */ #include "stm32f10x.h" int main(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 使能GPIOC时钟 GPIOC->CRH = 0x44344444; // 配置PC13为推挽输出 while(1) { GPIOC->ODR ^= 1<<13; // 翻转LED状态 for(int i=0;i<500000;i++); // 简单延时 } } ``` 3. 添加链接脚本(*.ld 文件)定义存储器布局: ```ld MEMORY { ROM (rx) : ORIGIN = 0x08000000, LENGTH = 64K RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K } [^3] ``` ### 4. 配置调试器 1. 创建 OpenOCD 配置文件 `stm32.cfg`: ```tcl source [find interface/stlink-v2.cfg] source [find target/stm32f1x.cfg] ``` 2. 在 *Settings > Debugger > GDB/CDB debugger* 中添加: ```bash Executable path: arm-none-eabi-gdb Debugger type: GDB (Remote) ``` ### 5. 编译与调试 1. 使用 *Build > Build and Run* 生成 HEX 文件 2. 通过 OpenOCD 下载程序: ```bash openocd -f stm32.cfg -c "program build/main.hex verify reset exit" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值