RT-Thread

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支持文件:

“RT-Thread国产MCU开发板移植指南—极海APM32F103ZE"

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两个文件夹。

“RT-Thread国产MCU开发板移植指南—极海APM32F103ZE"

2.1.1 libraries 文件夹

libraries 文件夹下新建 APM32F10x_Library 文件夹以存放APM32F10x系列的libraries,新建 Drivers 文件夹以存放APM32F10x系列的RT-thread 外设驱动。创建Kconfig文件(后续编写文件内容)。

复制我们下载好的 APM32F10x系列的SDK下的 文件夹Library 内容到这里,再在该文件夹下新建SConscript文件。这样子我们的APM32F10x_Library文件夹内容

在Drivers文件夹中 新建若干文件如下(后续编写文件内容):

“RT-Thread国产MCU开发板移植指南—极海APM32F103ZE"

2.1.2 apm32f103xe-minibroard 文件夹

apm32f103xe-minibroard 文件夹下新建applications和board文件夹。

“RT-Thread国产MCU开发板移植指南—极海APM32F103ZE"

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”,查看一下我们需要编写的文件。

“RT-Thread国产MCU开发板移植指南—极海APM32F103ZE"

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

参考文献链接:

[1]APM32官方资料:https://www.geehy.com/apm32?id=17

来源:Geehy极海半导体
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 31
订阅 RSS - RT-Thread