极海APM32F411V Tiny开发板评测 GCC Makefile Pyocd 工程模板建立一、移植前的准备1. 准备目标硬件(开发板/芯片/模组) 本教程将使用极海APM32F411V Tiny开发板进行示例移植。调试ARM Cortex M核还需要仿真器,如果您的开发板或者芯片模组没有板载仿真器,就需要连接外置的仿真器,如DAPLink之类的。 2.准备编译器环境1)Windows or Linux (Windows,linux基本环境流程差不多,可能需要修改部分Makefile代码) 2)Jlink、Daplink、Wch-Link烧录器 3)GNU Arm Embedded Toolchain交叉编译器 4)Mingw-w64 GCC for Windows 64 3.Windows环境搭建GNU Arm Embedded Toolchain交叉编译器安装进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件 下载链接: Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 将下载好的压缩包文件解压在gcc-arm-none-eabi”文件夹中,并记住文件内“bin”文件的路径,后续需添加到系统环境变量Path中。 添加完环境变量后,进行测试,检测是否安装好。 安装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.创建工程,编写Makefile
编译 执行make命令 4.Linux环境搭建安装GNU Arm Embedded Toolchain交叉编译器 进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件 ,选择linux版本 也可以直接在linux系统中下载,这里使用的Ubuntu 22.04 sudo apt-get install gcc-arm-none-eabi下载完成查看 arm-none-eabi-gcc -v修改Makefile 注释GCC_PATH 修改 clean命令 make
5.下载程序
- /*!
- * [url=home.php?mod=space&uid=247401]@brief[/url] Redirect C Library function printf to serial port.
- * After Redirection, you can use printf function.
- *
- * @param ch: The characters that need to be send.
- *
- * @retval The characters that need to be send.
- *
- * @note
- */
- int __io_putchar(int ch)
- {
- /* send a byte of data to the serial port */
- USART_TxData(DEBUG_USART, ch);
-
- /* wait for the data to be send */
- while (USART_ReadStatusFlag(DEBUG_USART, USART_FLAG_TXBE) == RESET);
-
- return ch;
- }
-
- /*!
- * @brief Redirect C Library function printf to serial port.
- * After Redirection, you can use printf function.
- *
- * @param file: Meaningless in this function.
- *
- * @param *ptr: Buffer pointer for data to be sent.
- *
- * @param len: Length of data to be sent.
- *
- * @retval The characters that need to be send.
- *
- * @note
- */
- int _write(int file, char* ptr, int len)
- {
- int i;
- for (i = 0; i < len; i++)
- {
- __io_putchar(*ptr++);
- }
-
- return len;
- }
|