本帖最后由 みずじ 于 2024-3-3 16:24 编辑
雅特力车规级MCU-AT32A403A开发板评测 12 GCC Makefile 工程模板建立与程序下载
1. 软硬件平台
- AT32A403A Board开发
- GCC Makefile
- Artery_ICP_Programmer_V3.0.13
2.编译工具链配置
搭建过程参考 https://gitee.com/End-ING/embedded-gcc-template
进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件
下载链接: Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer
将下载好的压缩包文件解压在gcc-arm-none-eabi”文件夹中,并记住文件内“bin”文件的路径,后续需添加到系统环境变量Path中。
添加完环境变量后,进行测试,检测是否安装好。
2. 安装Mingw-w64 GCC
点击链接进入到SourceForge官网,往下翻可以找到很多版本的下载链接,选择红色框内型号即可,不同前后缀的具体差异请参考:
MinGW gcc下载链接及sjlj、dwarf、seh异同以及gcc安装_AMDDMA的博客-CSDN博客_seh和sjlj
下载链接:
MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net
同样,将下载好的文件解压到“gcc-arm-none-eabi”文件夹下,记住目录下的“bin”文件路径
进入“bin”文件内找到“mingw32-make”应用程序文件,复制一份并重命名为“make”。这么做有利于在命令行执行make指令,而不是输入mingw32-make。
添加完环境变量后,进行测试,检测是否安装好。
3.程序下载软件Artery_ICP_Programmer
(参考上面的教程,应该是使用OpenOCD去下载程序的,但是我下载失败了,目前没有找到解决方法,因此,决定使用其他的方法去下载程序,例如Artery_ICP_Programmer,Artery_ISP_Programmer)
下载地址https://www.arterytek.com/cn/support/index.jsp?index=5
程序下载方法合集
- ICP(In-Circuit Programming)。它让用户不需要将已经安装的 MCU 从目标 PCB 取下就能够通过软 件控制来更新 MCU 的程序存储。
- ISP在线编程(In-System Programming)。具有 ISP 功能的单片机芯片,可以直接在电路板上给芯片写入或者擦除程序。
- UART: 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。是一种全双工异步通信的串 行通讯端口(COM)。
- USB: 通用串行总线(Universal Serial Bus)。是一种用于规范电脑与外部设备连接与通讯的外部总线标准。
- DFU: (Device Firmware Upgrade)。是一种基于 USB 通讯的设备固件更新协议。
综上所述,基本的软件环境已经配置好。
3.Makefile文件编写(重点)
make 测试
执行make命令,生成hex,bin,elf可执行文件。
4.程序下载(hex文件下载)
- 编写程序
#include "at32a403a_board.h"
#include "at32a403a_clock.h"
__IO uint32_t time_cnt = 0;
* @briefmain function.
* @paramnone
* @retval none
*/
int main(void)
{
system_clock_config();
at32_board_init();
uart_print_init(115200);
printf("Hardware_Init [ok] \r\n");
printf("at_start_a403a board testing 2024-03-03 [ok]\r\n");
printf("at_start_a403a board arm-gcc-makefile template [ok] \r\n");
while(1)
{
printf("at32_led_toggle example start [ok] \r\n");
at32_led_toggle(LED2);
delay_ms(200);
at32_led_toggle(LED3);
delay_ms(200);
at32_led_toggle(LED4);
delay_ms(200);
printf("at32_led_toggle example end[ok]\r\n");
printf("usart printf counter: %u\r\n",time_cnt++);
delay_sec(1);
}
}
- gcc下面的串口打印问题,在gcc下面使用_write进行定向printf。
(如果是从KEIL的例程printf打印无法在gcc工程中使用,因此需要修改,雅特力官方提供的工程模板就很好的兼容了两者,不需要我们去进行如何的操作,具体实现在at32a403a_board.c中)
打开Artery_ICP_Programmer,连接AT-Link(J-Link,板载AT-Link)
连接成功后,会显示mcu芯片型号AT32A403AVGT7 存储器东西1024KB,AT-Link固件版本号
- 添加Hex文件,读取信息
- 下载程序
设置下载选项,擦除选项为:主存储器全擦除
如果选择了下载后启用访问保护,如果使用其他软件去下载时,会发现无法下载,需要解除访问保护,因此在这里,我们默认不选择,虽然软件会提示你要进行保护。
- 代码下载成功之后,需要重启开发板
(不知道为什么直接按下复位按键没有用,导致一直认为没有下载成功,最后直接把插在板子上的usb线重新插拔之后,发现程序中的led在闪烁,串口在打印log信息,说明没有问题)