RT-Thread

概要

当谈到微控制器(MCU)和人工智能(AI)的结合,我们进入了一个激动人心的领域。传统上,AI应用程序需要大型计算机或云服务器的处理能力,但随着技术的发展,现在可以将AI嵌入到微控制器中。这为嵌入式系统、物联网设备、机器人和各种其他应用开启了新的可能性。

MCU AI的崛起

MCU AI代表着微控制器上的人工智能。它是将机器学习和深度学习模型部署到资源有限但功能强大的微控制器中,以实现智能决策和感知。以下是MCU AI的一些关键方面:

  • 低功耗: 微控制器通常以电池供电,因此低功耗是至关重要的。AI模型需要经过优化,以在微控制器上运行,同时尽量减小能耗。

  • 实时性: 微控制器常常用于实时控制系统,因此AI模型需要在极短的时间内执行,以应对即时需求。

  • 感知和决策: MCU AI可以使设备具备感知环境、分析数据并作出决策的能力。这对于自主机器人、智能传感器和自动控制系统尤为有用。

MCU AI的应用

MCU AI可以应用于各种领域,下面是一些示例:

  • 智能物联网设备: 微控制器上的AI可以使物联网设备更加智能,例如智能家居设备、智能灯具和智能门锁。它们可以学习用户的偏好,并自动适应不同环境。

  • 自主机器人: 微控制器上的AI使自主机器人能够避障、规划路径和执行任务,例如清扫机器人和无人机。

  • 医疗设备: 在医疗设备中,MCU AI可以用于监测患者的生命体征,提供早期警报和更好的病人护理。

  • 工业自动化: 微控制器上的AI可用于工业机器人、自动化生产线和质量控制系统,提高效率和质量。

作者开始深入进嵌入式AI这个领域,不过学习之前先了解如何用起来,跑起来。本篇文章聊一下如何移植TinyMaix推理框架到RT-THREAD并运行起来。

TinyMaix

TinyMaix:是矽速科技(Sipeed)利用两个周末的业余时间完成的项目,它是一款专为微控制器设计的轻量级开源机器学习库,面向单片机的超轻量级的神经网络推理库,即TinyML推理库,可以让你在任意单片机上运行轻量级深度学习模型。TinyMaix开源代码链接:https://github.com/sipeed/tinymaix

TinyMaix关键特性

  • 核心代码少于 400行(tm_layers.c+tm_model.c+arch_cpu.h), 代码段(.text)少于3KB

  • 低内存消耗,甚至 Arduino ATmega328 (32KB Flash, 2KB Ram) 都能基于 TinyMaix 跑 mnist(手写数字识别)

  • 支持 INT8/FP32/FP16 模型,实验性地支持 FP8 模型,支持 keras h5 或 tflite 模型转换

  • 支持多种芯片架构的专用指令优化: ARM SIMD/NEON/MVEI,RV32P, RV64V

  • 友好的用户接口,只需要 load/run 模型~

  • 支持全静态的内存配置(无需 malloc )

  • 即将支持 MaixHub 在线模型训练

TinyMaix底层依赖

TinyMaix可以简单理解为一个矩阵和向量计算库,目前已支持如下几种计算硬件:

#define TM_ARCH_CPU                 (0) //default, pure cpu compute
#define TM_ARCH_ARM_SIMD            (1) //ARM Cortex M4/M7, etc.
#define TM_ARCH_ARM_NEON            (2) //ARM Cortex A7, etc.
#define TM_ARCH_ARM_MVEI            (3) //ARMv8.1: M55, etc.
#define TM_ARCH_RV32P               (4) //T-head E907, etc.
#define TM_ARCH_RV64V               (5) //T-head C906,C910, etc.
#define TM_ARCH_CSKYV2              (6) //cskyv2 with dsp core
#define TM_ARCH_X86_SSE2            (7) //x86 sse2

对于ARM-Cortex系列MCU,可以支持纯CPU计算和SIMD计算。其中CPU计算部分无特殊依赖(计算代码均使用标准C实现)。SIMD部分,部分计算代码使用了C语言内嵌汇编实现,需要CPU支持相应的汇编指令,才可以正常编译、运行。

TinyMaix等级选择

TinyMaix目前支持两种等级:1. 选择最少代码和buf 2. 选择速度,需要更多代码和buf

#define TM_OPT0                     (0) //default, least code and buf
#define TM_OPT1                     (1) //opt for speed, need more code and buf
#define TM_OPT2                     (2) //TODO

TinyMaix量化

TinyMaix支持不同位宽的量化:

#define  TM_MDL_INT8    0
#define  TM_MDL_INT16   1
#define  TM_MDL_FP32    2
#define  TM_MDL_FP16    3
#define  TM_MDL_FP8_143 4 //experimental
#define  TM_MDL_FP8_152 5 //experimental

TinyMaix核心API

TinyMaix框架对上层应用程序提供的核心API主要位于代码仓的tinymaix.h文件中,其中:

1、模型API包含四个:模型加载,模型卸载,预处理,推理。

/******************************* MODEL FUNCTION ************************************/
tm_err_t tm_load  (tm_mdl_t* mdl, const uint8_t* bin, uint8_t*buf, tm_cb_t cb, tm_mat_t* in);   //load model
void     tm_unload(tm_mdl_t* mdl);                                      //remove model
tm_err_t tm_preprocess(tm_mdl_t* mdl, tm_pp_t pp_type, tm_mat_t* in, tm_mat_t* out);            //preprocess input data
tm_err_t tm_run   (tm_mdl_t* mdl, tm_mat_t* in, tm_mat_t* out);         //run model

2、统计函数:用于输出模型中间层信息

/******************************* STAT FUNCTION ************************************/
#if TM_ENABLE_STAT
tm_err_t tm_stat(tm_mdlbin_t* mdl);                    //stat model
#endif

3、工具函数,包含FP32和uint8的互转

/******************************* UTILS FUNCTION ************************************/
uint8_t TM_WEAK tm_fp32to8(float fp32);
float TM_WEAK tm_fp8to32(uint8_t fp8);

这里的模型,通常是预训练模型经过脚本转换生成的TinyMaix格式的模型;

TinyMaix移植到RT-Thread

1、TinyMaix移植到RT-Thread工作量其实不到,主要适配tm_port.h文件即可。

2、RT-Thread的配置是通过Kconfig设置一些参数的,所以我把硬件类型,选择等级,量化类型都修改为Kconfig进行配置。

#define  TM_ARCH                                   R_TINYMAIX_USING_ARCK_TYPE
#define TM_OPT_LEVEL               R_TINYMAIX_USING_OPTION_LEVEL
#define TM_MDL_TYPE                R_TINYMAIX_USING_MODULE_TYPE

3、TinyMaix需要对接平台内联,内存,打印等接口,所以我们修改对应宏定义,将其适配到RT-Thread平台的接口上。

#define TM_INLINE                   rt_inline
#define TM_WEAK                     rt_weak

#define tm_malloc(x)                rt_malloc(x)
#define tm_free(x)                  rt_free(x)

#define TM_PRINTF(...)              rt_kprintf(__VA_ARGS__)

4、TinyMaix调试依赖于精准的计时,我们需要适配其对应的几个宏定义,因为RT-Thread系统没有提供微秒级的接口,只有毫秒级的接口,所以我做了简单的适配。

#define TM_GET_US()                rt_tick_get_millisecond() / 1000;

#define TM_DBGT_INIT()              uint32_t _start,_finish;\
                                    float _time;\
                                    _start = TM_GET_US();

#define TM_DBGT_START()             _start = TM_GET_US();

#define TM_DBGT(x)                  {\
                                        _finish=TM_GET_US();\
                                        _time = (float)(_finish-_start) / 1.0;\
                                        TM_PRINTF("===%s use %.3f ms\n", (x), _time);\
                                        _start=TM_GET_US();\
                                    }

5、TinyMaix提供了多个实例,如:cifar10,mnist,vww等,RT-Thread支持命令行输入,为了实例可以在通过命令函运行,我们需要修改一下文件名和接口名字。

  • 我们将examples下的cifar10,mnist,vww三个实例下的main.c修改为对应实例的名字:cifar10.c,mnist.c,vww.c。

  • 将cifar10.c,mnist.c,vww.c中的main函数修改为对应实例名字。

int cifar10(int argc, char** argv)

int mnist(int argc, char** argv)

int vww(int argc, char** argv)
  • 将实例接口导出到命令行中。

MSH_CMD_EXPORT(cifar10, TinyMaix cifar10 example);

MSH_CMD_EXPORT(mnist, TinyMaix mnist example);

MSH_CMD_EXPORT(vww, TinyMaix vww example);

TinyMaix运行效果

实例的运行环境:STM32F401RE,M4内核,时钟频率:84MHz,RAM:96 KB,Flash:512 KB

1、cifar10实例,分类检测,识别图片是一只鸟:

1.jpg

2.jpg

2、mnist实例,数字识别,图片是一个数字2:

3.png

4.jpg

vww实例,检测有没有人,图片有人:

5.jpg

6.png

总结

1、TinyMaix作者已经做了一个RT-Thread的软件包:r-tinymaix。可以在RT-Thread中工程中加入软件包即可以验证。

2、r-tinymaix的开源链接:https://github.com/RiceChen0/r-tinymaix

3、TinyMaix非常赞,可以让一个普普通通的单片机拥有AI能力,让嵌入式AI成本减低。

来源:RTThread物联网操作系统

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

围观 23

近日瑞萨电子宣布推出业界首款基于Arm® Cortex®-M85处理器的 RA8系列MCU,提供卓越的6.39 CoreMark/MHz性能,可满足工业自动化、家电、智能家居、消费电子、楼宇/家庭自动化、医疗和AI领域的各种计算密集型应用。RT-Thread做为瑞萨重要合作伙伴,已率先支持RA8M1系列MCU BSP,结合瑞萨萨灵活配置软件包(FSP)和RT-Thread丰富的软件包,可大大加快应用开发速度。 

1.png

Arm 最强MCU内核Arm®Cortex®-M85

Cortex®-M85基于Armv8.1-M架构,提供了Cortex®-M系列中最高的标量和信号处理性能,其标量性能超过6 CoreMark/MHz和3 DMIPS/MHz。Cortex®-M85是嵌入式领域、不带MMU、实时控制的CPU——地表最强MCU。由于实施了Arm Helium技术,Cortex-M85表现出比Cortex-M7高得多的机器学习(ML)和数字信号处理(DSP)能力,对比Cortex®-M7,其机器学习能力增长了4倍,DSP能力增长了3倍。简单来说Cortex®-M85 ≈ Cortex®-M7+ TrustZone + Helium。

2.png

RA8M1芯片特性

3.png

● 内核:480 MHz Arm Cortex-M85,包含Helium和TrustZone技术

● 存储:集成2MB/1MB闪存和1MB SRAM(包括TCM,512KB ECC保护)

● 外设:兼容xSPI的八线OSPI(带XIP和即时解密/DOTF)、CAN-FD、以太网、USBFS/HS、16位摄像头接口和I3C等

● 高阶安全性:卓越的加密算法、TrustZone、不可变存储、带DPA/SPA攻击保护的防篡改功能、安全调试、安全工厂编程和生命周期管理支持

● 封装:100/144/176 LQFP、224 BGA

EK-RA8M1开发板介绍

EK-RA8M1是瑞萨电子出品的用于帮助用户轻松评估 RA8M1 MCU 产品组特性的开发板。 用户可利用丰富的板载功能以及自选的热门生态系统插件来将丰富创意变为现实。

4.png

RT-Thread & RENESAS RA8M1

目前RT-Thread已经支持Cortex®-M85架构,包括对中断、线程调度等管理。同时软硬件上适配了瑞萨最新发布的FSP5.0.0,以及EK-RA8M1开发板的BSP。

已经合并到RT-Thread主线master版本,欢迎各位感兴趣的小伙伴体验!

EK-RA8M1开发板仓库地址:

https://github.com/RT-Thread/rt-thread/tree/master/bsp/renesas/ra8m1-ek 

开发IDE支持:

● RT-Thread Studio

● MDK V5.38

编译平台支持:

● armclang(AC6 V6.19)

● LLVM(V16/17)ARM-software/LLVM-embedded-toolchain-for-Arm (github.com)

● GCC

运行结果演示

下载程序成功之后,系统会自动运行并打印系统信息。

5.png

视频演示

来源:RTThread物联网操作系统

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

围观 43

近日,英飞凌联合 RT-Thread 共同发布了PSoC™ 62 with CAPSENSE™ evaluation kit开发板(以下简称PSoC 6 RTT开发板),其默认内置物联网操作系统 RT-Thread。PSoC 6 RTT开发板具有丰富的软硬件资源和低成本优势,兼容 Arduino 接口,助力开发者进行评估以及实现创意开发。

1.jpg

开发板资源介绍

2.png

丰富资源,PSoC™ 62 专为物联网设计

PSoC™ 62 专为物联网应用而设计,适用于可穿戴设备、智能家居、工业物联网、便携式医疗设备等。PSoC™ 62 还支持高达 2MB 的闪存、1MB 的片上 SRAM 和高达 104 个GPIO。

3.png

PSoC™ 62 系列是 Arm-Cortex-M4 和 Arm-Cortex-M0 的组合,具有单周期乘法的150-MHz Arm Cortex-M4F CPU(浮点和存储器保护单元),100-MHz Cortex M0+ CPU,带单周期乘法和 MPU,可编程数字和模拟资源以及一流的用于触摸的 CAPSENSE™ 技术。

4.png

兼容 Arduino 接口,拓展性强

PSoC 6 RTT开发板兼容标准 Arduino 接口,兼容市面上大多数的 Arduino 接口拓展板,极大地提高了开发板拓展性与可玩性。

CAPSENSE™ 触摸技术,助力多种应用场景

CAPSENSE电容和电感式触摸感应人机界面(HMI)技术,可为家电、工业、消费级和物联网产品等要求严苛的用户界面提供更强的性能和更低的功耗。增强型HMI改进了检测范围、手势检测和指向性功能,并加入针对未来先进触摸屏的悬停检测功能,可实现近距离传感等先进解决方案。

板载 KitProg3-DAP-Link 调试器

PSoC 6 RTT开发板默认集成 KitProg3-DAP-Link 调试器。KitProg3 是用于编程和调试的通信固件。适用于 ModusToolbox™、PSoC™ 和其他软件生态系统的编程解决方案。

5.png

PSoC 6 RTT开发板在 RT-Thread 上外设支持情况

开源项目


Infineon + RT-Thread 物联网 Demo

这是一个基于 PSoC 6 + RT-Thread 实现的物联网 Demo。使用 RW007 用于网络通信,使用 MQTT协议连接 One-Net 物联网平台。在主控芯片中添加所需要的软件包、组件等中间件来快速搭建起一个设备上云 Demo。

6.png

点击此处查看开源参考



Infineon + RT-Thread HMI Demo

这是一个基于 PSoC 6 + RT-Thread + LVGL 实现的 HMI Demo。使用 SPI 接口驱动 Arduino 屏幕拓展板 ,运行 LVGL-Music Demo。

7.png

点击此处查看开源参考

还可以基于 RT-Thread Studio 创建开发板工程

8.png
9.png

点击此处获取开发板资料


来源:英飞凌官微

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

围观 48

近日,国内领先的车规芯片企业芯驰科技与国内领先的车载RTOS(实时操作系统)企业睿赛德科技(RT-Thread)共同宣布:RT-Thread操作系统全面支持芯驰科技E3系列 MCU芯片。

芯驰科技于今年4月发布了高性能高可靠车规MCU E3“控之芯”系列产品,可全面应用于线控底盘、制动控制、BMS、ADAS/自动驾驶运动控制、液晶仪表、HUD、流媒体视觉系统CMS等对安全性和可靠性要求极高的场景。

“RT-Thread操作系统全面支持芯驰科技E3

经过双方的共同推动与努力,RT-Thread操作系统已经成功部署至芯驰E3,并基于芯驰的BSP完成系统中断初始化及串口驱动。目前基于RT-Thread操作系统已经可以支持正常的线程调度、SHELL命令行等功能,如下图所示,可以看到通过命令行打印当前系统正在运行的线程及所占的负荷。

“RT-Thread操作系统全面支持芯驰科技E3

如图左侧为RT-Thread适配芯驰E3芯片的启动代码,右侧为芯驰E3烧入RT-Thread操作系统后,上电打印的信息。

芯驰科技专注于提供高性能、高可靠的车规芯片,也是全球首家“全场景、平台化”的芯片产品与技术解决方案提供者。芯驰科技产品覆盖智能座舱、智能驾驶、网关和MCU,涵盖了未来汽车电子电气架构最核心的芯片类别,从而实现 “四芯合一 赋车以魂”。在车规认证方面,芯驰先后获得了ISO 26262功能安全流程认证、AEC-Q100可靠性认证、ISO26262功能安全产品认证以及国密认证,成为国内首个“四证合一”的车规芯片企业。

目前芯驰的车规芯片已实现大规模量产,拿到100多个量产定点,服务客户超过260家,覆盖中国90%以上的车厂,包括传统车厂、造车新势力及众多国际大厂。

睿赛德科技作为RT-Thread开源物联网操作系统的贡献者和维护者,主要负责RT-Thread操作系统的核心技术开发、社区运营和市场推广等工作。在其努力下,目前RT-Thread的装机量已经超过了15亿台,应用范围涵盖了车载、工业、航天、消费电子等众多行业领域,成为了市面上装机量最大的嵌入式操作系统之一。

此外,作为业内为数不多的全栈式车载OS解决方案的核心技术提供商,睿赛德科技在今年3月份发布了“程翧”车载软件平台,其中的RT-Thread Smart 已经通过了SGS的 ISO 26262 ASIL D、IEC 61508 SIL 3、EN 50128 SIL 4最高等级功能安全认证,接下来将着力推进面向MCU的实时操作系统的相关认证。“程翧”平台结合公司更灵活开放的合作模式以及迅捷专业的本地化支持服务,将可以更好地帮助车企进行差异化创新。

“RT-Thread操作系统全面支持芯驰科技E3

未来,双方将进一步加强战略协同,深化扩展合作领域,依托芯驰科技高性能、高可靠的车规芯片,以及睿赛德科技的符合功能安全要求的实时操作系统、微内核操作系统(RT-Thread Smart)、虚拟化软件等技术,共同开发构建智能汽车基础平台解决方案,面向车厂和Tier1供应商联合展示,共同开拓市场。

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

围观 47

近日,RT-Thread 和其高级会员合作伙伴极海半导体宣布:正式完成APM32F4系列MCU的RT-Thread 物联网操作系统适配及RT-Thread Studio IDE的支持。

极海最新推出的基于Arm® Cortex®-M4内核的高性能、高安全APM32F405/F407系列MCU,具有大容量、宽温幅、高稳定性、高可靠性与高集成性等特点。两款新产品外设资源丰富,可广泛应用于工业控制、仪器仪表、医疗设备、电力电子等领域。

APM32F4全系列MCU支持RT-Thread,提供丰富的外设原厂驱动支持,降低开发者的底层驱动开发工作,充分的发挥芯片性能,能以高水平代码质量,提高应用开发效率。

APM32F4全系列 MCU RT-Thread BSP :

基于RT-Thread Studio IDE创建APM32F4系列MCU工程,可以为开发者提供一站式的开发环境,可视化使用RT-Thread丰富的组件和软件包。

“RT-Thread

基于芯片创建APM32F4系列工程:

“RT-Thread

基于开发板创建工程:

“RT-Thread

至此,RT-Thread已经全面支持极海APM32F1(Cortex-M3)以及APM32F4(Cortex-M4)系列MCU,今后极海半导体和RT-Thread将持续协作,为开发者带来更便捷的使用体验,为客户带来更高性价比的产品选择,敬请期待!

关于极海半导体:

珠海极海半导体有限公司是一家致力于开发工业级/车规级微处理器、高性能模拟芯片及系统级芯片的集成电路设计型企业,总部为纳思达股份有限公司(“纳思达”,002180.SZ)。

极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品,实现准确感应、安全传输和实时控制,助力客户在智慧家居、汽车电子、工业控制、智慧能源、以及高端消费电子等领域的创新拓展。

“RT-Thread

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

围观 93

日前,国民技术股份有限公司与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,正式成为RT-Thread高级会员。国民技术将基于通用MCU和RT-Thread物联网操作系统构建完善的生态,满足不同行业、不同领域客户的开发需求,为产业持续带来具有差异化竞争力的软硬一体平台。

“国民技术MCU携手RT-Thread共筑国产“芯”技术生态"

国民技术通用MCU采用32位ARM Cortex-M处理器内核,内置嵌入式高速闪存、低功耗电源管理,具有安全、高性能、高集成度、低功耗、低成本、简单易用等特点,目前通用MCU已经量产80多款,覆盖ARM Cortex M0与M4内核,形成了12个量产产品系列。广泛应用在物联网、工业联网及工业控制、智能家电及智能家庭物联网终端、消费电子、电机驱动、电池及能源管理、智能表计、医疗电子、汽车电子、安防、生物识别、通讯、传感器、机器自动化等应用方向。

“国民技术MCU携手RT-Thread共筑国产“芯”技术生态"

RT-Thread是一款小而美的物联网操作系统,集实时操作系统(RTOS)内核、中间件组件于一体的技术平台,具备组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全特性,支持所有主流MCU架构和编译工具,并支持各类标准接口如POSIX、CMSIS、C++应用环境、Javascript执行环境等。经过15年的累积发展,RT-Thread被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过10亿台。

“国民技术MCU携手RT-Thread共筑国产“芯”技术生态"

经过努力,RT-Thread对国民技术N32系列通用MCU硬件平台的支持已经取得很大进展。此次双方将在产业生态建设、RT-Thread Studio IDE等多方面通力合作,充分发挥各自优势,共同推进国民技术通用MCU与RT-Thread操作系统的广泛适配,为RT-Thread 社区提供更丰富的芯片开发平台,为国民技术N32系列通用MCU硬件平台的应用开发者提供更完善的软件环境,进一步提升产品开发效率,助力开发者高效创新,推动行业快速发展。

关于国民技术

国民技术股份有限公司于2000年源于国家“909”集成电路专项工程成立,2010年创业板上市(股票代码:300077),是中国安全芯片、通用MCU领军企业,国家级高新技术企业,拥有国内首个企业独立安全芯片攻防技术实验室,博士后科研工作站。总部位于深圳,在北京、上海、武汉、西安、香港、新加坡等地设有分支机构。主营产品包括:安全芯片、通用MCU、可信计算芯片、智能卡芯片、非接读写芯片、蓝牙芯片、RCC创新产品等,广泛应用于网络安全认证、电子银行、电子证照、移动支付与移动安全、物联网、工业联网及工业控制、智能家电及智能家庭物联网终端、消费电子、电机驱动、电池及能源管理、智能表计、医疗电子、汽车电子、安防、生物识别、通讯、传感器、机器自动化等应用方向。

官网:www.nationstech.com

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

围观 51

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)。

围观 696
订阅 RSS - RT-Thread