
【5】AT32F437 OpenHarmony轻量系统移植教程(2) 原创
开源地址:https://gitee.com/AT32437_OpenHarmony
学习本文档的意义
1.学习移植OpenHarmony轻量系统到AT32全系列mcu上,本文档移植的具体型号为AT32F437ZMT7
2.学习OpenHarmony轻量系统开发
3.适配vprintf, vfprintf, printf, snprintf 和sprintf
1.首先获取AT32F437的底层驱动源代码(Firmware Library),我们需要从官方托管的gitee仓库AT32F435_437_Firmware_Library获取
2.找到at32f435_437_board.c文件,注释掉__io_putchar函数,使用fputc函数
再注释掉setvbuf
函数,这个函数影响适配适配printf
3.在/device/board/artery_board/atstartf437/liteos_m/config.gni新增_malloc_r, _realloc_r, _reallocf_r, _free_r, _memalign_r, 和 _malloc_usable_size_r函数的wrap链接选项。
4.然后重写printf和sprintf函数,具体实现查看dprintf.c
5.在main.c的main.c里面初始化串口打印函数uart_print_init
3.适配vprintf, vfprintf, printf, snprintf 和sprintf
1.首先获取AT32F437的底层驱动源代码(Firmware Library),我们需要从官方托管的gitee仓库AT32F435_437_Firmware_Library获取
2.找到at32f435_437_board.c文件,注释掉__io_putchar函数,使用fputc函数
再注释掉setvbuf
函数,这个函数影响适配适配printf
3.在/device/board/artery_board/atstartf437/liteos_m/config.gni新增_malloc_r, _realloc_r, _reallocf_r, _free_r, _memalign_r, 和 _malloc_usable_size_r函数的wrap链接选项。
4.然后重写printf和sprintf函数,具体实现查看dprintf.c
5.在main.c的main.c里面初始化串口打印函数uart_print_init
4.添加at32f437驱动库
前面提到首先获取AT32F437的底层驱动源代码(Firmware Library),我们需要从官方托管的gitee仓库AT32F435_437_Firmware_Library获取。
把原厂的驱动文件放置在device\soc\artery\at32f4xx\libraries和device\soc\artery\at32f4xx\liteos_m目录下面,为了消除编译报错需要进行一些修改
1.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437.h中typedef int32_t INT32;
、typedef uint32_t UINT32;
注释掉
2.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437.h中,FALSE修改为AT_FALSE,TRUE修改为AT_TRUE,避开宏的重定义
3.device/soc/artery/at32f4xx/libraries/drivers/inc/at32f435_437_def.h中注释掉
4.device/soc/artery/at32f4xx/libraries/drivers/src/at32f435_437_crm.c中注释DUMMY_NOP();
这个函数
5.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437_board.h中 添加 #define AT_START_F437_V1
6.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437.h中相关宏为修改AT32F437ZMT7,相关代码如下
7.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437_conf.h中添加
8.所有的at32437驱动文件都要包含头文件#include "los_compiler.h"
,为了解决UNUSED
没有定义的问题
5.内核子系统适配
在vendor\artery\AT-START-F437\config.json添加内核子系统及相关配置,如下所示:
4.添加at32f437驱动库
前面提到首先获取AT32F437的底层驱动源代码(Firmware Library),我们需要从官方托管的gitee仓库AT32F435_437_Firmware_Library获取。
把原厂的驱动文件放置在device\soc\artery\at32f4xx\libraries和device\soc\artery\at32f4xx\liteos_m目录下面,为了消除编译报错需要进行一些修改
1.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437.h中typedef int32_t INT32;
、typedef uint32_t UINT32;
注释掉
2.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437.h中,FALSE修改为AT_FALSE,TRUE修改为AT_TRUE,避开宏的重定义
3.device/soc/artery/at32f4xx/libraries/drivers/inc/at32f435_437_def.h中注释掉
4.device/soc/artery/at32f4xx/libraries/drivers/src/at32f435_437_crm.c中注释DUMMY_NOP();
这个函数
5.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437_board.h中 添加 #define AT_START_F437_V1
6.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437.h中相关宏为修改AT32F437ZMT7,相关代码如下
7.device/soc/artery/at32f4xx/liteos_m/include/at32f435_437_conf.h中添加
8.所有的at32437驱动文件都要包含头文件#include "los_compiler.h"
,为了解决UNUSED
没有定义的问题
5.内核子系统适配
在vendor\artery\AT-START-F437\config.json添加内核子系统及相关配置,如下所示:
