RT-Thread国产MCU开发板移植指南—极海APM32F103ZE
本帖最后由 Gfan 于 2022-3-3 15:57 编辑APM32F103ZE简介
厂家介绍:珠海极海半导体有限公司,是艾派克微电子旗下全资子公司,其前身为艾派克物联网芯片事业部,总部为纳思达股份有限公司。极海具有20年的集成电路芯片设计经验,是专业的32位工业级通用微控制器、低功耗蓝牙芯片及工业物联网SoC-eSE安全主控芯片产品和方案提供商。
芯片介绍:APM32F103xE系列MCU,基于32位ARM® Cortex®-M3内核,配置增强型外部储存控制器eMMC,并行LCD兼容8080/6800模式,功耗低,容量大,可移植性好。工作温度范围覆盖-40℃~+150℃,符合工业级高可靠性标准。最高工作主频96MHz,支持FPU浮点运算单元,配置增强型外部存储控制器EMMC,支持USB和CAN接口同时使用;集成片上储存器、定时器以及数据转换器等多种外设接口,具有功耗低、容量大、可移植性好、Flash擦除/编程速度快等特点。目前已经通过中国IEC61508 SIL2认证和USB-IF测试,符合工业级高可靠性标准。适用于航模飞机、手持云台、扫码枪、报警器、密码锁、电子秤等领域。
移植过程
1.环境搭建1.1 硬件准备APM32F103ZE MINI BROARD,USB转TTL模块,JLINK仿真器。1.2 软件准备编程器,使用JLINK进行下载调试。
集成开发环境,安装KEIL5。
串口助手使用的是Tera Term。1.2.1 APM32F103 SDK下载APM32F103ZE SDK包APM32F10x_SDK_V1.5.zip并安装其中的keil支持文件:
1.2.2 RT-thrad下载RT-thread源码。下载RT-Thread env 工具 :RT-Thread物联网操作系统。
2.BSP标准工程生成其实移植RT-THREAD到一些比较通用的内核还是比较方便的,因为可以投机取巧。那接下来告诉你怎么投机取巧移植RT-Thread到国产MCU。本文只适配KEIL5的环境,GCC、KEIL4和IAR环境不做讲解。
基础模板:首先看看RT-Thread代码仓库中已有的BSP存在同是M3内核的芯片STM32F103。而我要移植的是APM32F103,参照STM32F103的工程,我们新建相似的工程目录。然后就开始增删改查,完成最终的BSP。
2.1 制作通用文件结构bsp 文件夹目录下新建文件夹 apm32,再在apm32文件夹中新建libraries和apm32f103xe-minibroard两个文件夹。
2.1.1 libraries 文件夹
libraries 文件夹下新建 APM32F10x_Library 文件夹以存放APM32F10x系列的libraries,新建 Drivers 文件夹以存放APM32F10x系列的RT-thread 外设驱动。创建Kconfig文件(后续编写文件内容)。复制我们下载好的 APM32F10x系列的SDK下的 文件夹Library 内容到这里,再在该文件夹下新建SConscript文件。这样子我们的APM32F10x_Library文件夹内容在Drivers文件夹中 新建若干文件如下(后续编写文件内容):
2.1.2 apm32f103xe-minibroard 文件夹apm32f103xe-minibroard 文件夹下新建applications和board文件夹。
applications 文件夹中新建两个文件,main.c 和 SConscript。文件内容稍后会在后续章节进行编写。board 文件夹新建文件夹 linker_scripts 及两个文件,board.c 和 board.h。文件内容稍后会在后续章节进行编写。linker_scripts 文件夹下新建文件link.sct。文件内容稍后会在后续章节进行编写。
2.1.3 其他文件我们还需要复制以下文件(如:\bsp\stm32\stm32f103-atk-nano\)下至我们的工作目录(bsp\apm32\apm32f103xe-minibroard)。后续我们会对部分文件进行编辑,请留意。
2.2 创建工程(创建工程前请安装好APM32F1系列keil支持pack包。)点击template文件打开工程,将芯片更换为APM32F103ZE。Device选项卡,选择芯片 APM32F103ZE,点击OK,芯片更换完毕。Debug选项卡,选择手上的仿真器型号,这里笔者是J-link,选择后点击“Seting”选择下载后的操作选项及下载算法。至此工程创建完毕。下一步我们将基于该工程,编译我们的RT-thread。
2.3 链接文件编写board\linker_scripts目录下文件link.sct内容更改为:; *******************************************
; *** Scatter-Loading Description File generated by uVision ***
; ********************************************
LR_IROM1 0x08000000 0x00080000{ ; load region size_region
ER_IROM1 0x08000000 0x00080000{; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x00020000{; RW data
.ANY (+RW +ZI)
}
}
2.4 标准工程生成(需提前注册evn工具至右键菜单)在apm32f103xe-minibroard点击鼠标右键,选择“ConEmu Here”,调出命令行窗口输入“scons --target=mdk5”后按回车,生成MDK5工程。
3.BSP驱动文件编写及下载要完成RT-thread适配,各种驱动及系统运行前的初始化必不可少,下面我们开始编写外设驱动及系统时钟初始化。我们点击上一章节生成的工程“project.uvprojx”,查看一下我们需要编写的文件。
3.1 Pin 驱动为了跟其他rt--thread工程一样用统一的方法控制GPIO,移植PIN功能很有必要。关键是要实现好IO port和pin的映射关系,中断的映射关系。这里就不展开文件drv_gpio.c/h文件的编写工作了。大家可直接查看源码。
3.2 串口驱动可参照APM32的官方例程,对照RT-thread底层接口完成,这里drv_usart.c/h也不展开。大家可直接查看源码。
3.3 板载初始化即主函数板载文件主要是初始化串口驱动所需的时钟及IO,主函数是完成对板载一个LED灯的控制,程序较为简单,大家可直接看源码。3.4 编译验证通过前面的章节,我们已经完成了BSP的主要移植工作,现在我们编译下载一下看看吧。连接串口,下载程序后,我们可以看到Tera Term窗口显示: \ | /
- RT - Thread Operating System
/ | \ 4.0.4 build Aug 20 2021
2006 - 2021 Copyright by rt-thread team
msh >
结语至此已完成移植工作,相关代码链接地址为:https://gitee.com/abbbcc/rt-thread感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步!
参考文献链接:APM32官方资料:https://www.geehy.com/apm32?id=17
这个就能组成一个较好的开发生态,不过要是能有一个板子实际动手干一下就好了 看样子移植难度不大 看样子可以试试 这个RT-thread studio不支持apm32吗? 感觉APM32F103ZE完全兼容是st的产品的。 移植过程都大同小异,主要就是修改对应接口。
页:
[1]