[活动] 极海半导体-G32A1465开发板测评 01-RT-Thread工程模板创建与测试

[复制链接]
1045|3
 楼主| lemonhub 发表于 2025-1-4 14:30 | 显示全部楼层 |阅读模式
极海半导体-G32A1465开发板测评 01-RT-Thread工程模板创建与测试G32A1465开发板简介
极海 G32A1465 评估板 支持 KEIL、IAR 等 IDE 集成开发环境,板上资源丰富可适配广泛的应用场景,包括串口接口、JTAG/SWD 接口、DC 12V 供电接口、CAN/LIN 收发器、RGB LED、电位计、复位按键等,符合 ISO 26262 功能安全 ASIL-B 设计规范。

G32A1465 评估板是 G32A1465 MCU 的完整演示和开发平台,搭载了一颗 G32A1465 MCU 芯片,该芯片基于 Arm® Cortex® M4 内核、工作主频 112MHz、 Flash 1024KB。
芯片系统框图


MCU主控板原理图


CAN 总线和 LIN 总线


其他部分的硬件原理图查看,参考《G32A1465 EVAL Board原理图 V1.0.SchDoc》.pdf

实物测试
拿到开发板默认是下载了RGB LED 循环闪烁。


SDK 介绍

SDK 包括
  • 板载驱动包 Boards 文件夹,如基本的 LED、 Button 及 COM 口的驱动等;
  • 多个必要的库 Libraries 文件夹,如 G32A1465 标准库、外设驱动库等;
  • 多个例程 Examples 文件夹,如 ADC采样、 CAN/CANFD 收发、 CRC校验等;
  • 中间件文件在 Middlewares 文件夹内,是 G32A1465 评估板提供的 demo 所使用到的第三方工具或源码;
  • 数据手册 Documents 文件夹,点击链接进入官网下载数据手册、原理图及用户手册等资料;
  • 设备包 Package 文件夹,用于安装 Keil 等 IDE 的设备包;
  • 此外还包含 G32A1xxx_SDK_um.chm 用户手册,便于查找 SDK 对应的部件说明和相关解决方案。
开发环境搭建
极海 Geehy 为开发者提供了十分友好的开发平台和编译环境,便于初学者上手测试,一般提供了KEIL和IAR两种常见的嵌入式开发环境。
以 Keil MDK IDE 作为编译软件,创建工程。默认已经安装 Keil MDK IDE 软件,
  • 下载 G32A1465_SDK 压缩包,双击安装 Package 文件夹中的 Geehy.G32A1xxx_DFP.1.0.1.pack Keil 设备支持包。

2. 创建工程模板,我们选择 G32A1465_SDK里面的Examples的工程模板作为基础。(一般拿到新开发板寻找GPIO案例作为测试基础,但是这个SDK里面,GPIO被命名成了PINS;本次测试我们以RTOS工程作为基础案例,然后一步步添加代码,完成测评)。

3. RTOS例程提供了FreeRTOS和RT-Thread-nano两个比较常见的嵌入式实时操作系统,本次实验以RT-Thread-Nano版本作为基础。
(后续尝试给移植RT-Thread标准版本,创建BSP)
RT-Thread诞生于2006年,是一款以开源、中立、社区化发展起来的物联网操作系统。RT-Thread主要采用 C 语言编写,浅显易懂,且具有方便移植的特性(可快速移植到多种主流 MCU 及模组芯片上)。RT-Thread把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。RT-Thread完整版,通过在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,并且可以无缝地导入丰富的软件功能包,从而实现复杂功能。
RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于大量使用的 32 位 ARM 入门级 MCU 的场合。
下图是 RT-Thread Nano 的软件框图,包含支持的 CPU 架构与内核源码,还有可拆卸的 FinSH 组件:

4. 复制RT-Thread的Project工程文件到新创建的文件夹中,同时复制Boards、Libraries、Middlewares等文件夹。

复制RT-Thread文件夹到新文件夹中,同时修改文件夹命名。


5. 重构工程架构
Application 应用层控制代码
Boards 板级驱动代码
Libraries 芯片底层驱动代码
Middlewares 中间件代码
Project 工程文件
UserConfig 用户模块外设配置代码
ModuleDrivers 模块驱动代码

6. 重新配置工程文件与头文件
如果直接打开工程会发现缺少大量的文件,因为我修改了文件的路径,因此需要重新配置。

添加相关文件,修改之后效果


7. 工程结构
(工程结构根据个人习惯即可,下面的部分我已经做了一些修改,比如支持 log_printf 标准打印组件 支持彩色 、SEGGER_Printf 标准打印组件)
Application ——》main.c(主函数) g32a1xx_int.c(中断服务函数)
UserConfig 用户模块外设配置代码 (主要有芯片外设配置文件、rt-thread接口配置文件、finsh-port等
CmsisDrivers CMSIS底层驱动代码
BoardDrivers 板级驱动代码 board.c
PeriphDrivers 芯片底层标准库代码
Middlewares 中间件代码 (RT-Thread OSIF FINSH SEGGER-RTT)
ModuleDrivers 模块驱动代码



8. 编写程序
  1. /*
  2. *  极海半导体-Geehy-G32A146X开发板软硬件资料
  3.     * Change Logs:
  4.     * Date           Author       Notes
  5.     * 2024-12-30      Coderend     mdk-template (log_printf)
  6.     * 2024-12-31      Coderend     rt-thread +finsh         
  7. */
  8. /* 包含头文件-----------------------------------------------------------------*/
  9. #include "main.h"

  10. /* 私有宏定义-----------------------------------------------------------------*/

  11. /* 私有变量-------------------------------------------------------------------*/
  12. static const char* tag = "main";

  13. /** @addtogroup G32A1465_Examples
  14.   @{
  15.   */

  16. /** @addtogroup RTOS_RT-Thread
  17.   @{
  18.   */

  19. /** @defgroup RTOS_RT-Thread_Variables Variables
  20.   @{
  21. */

  22. static rt_thread_t led_thread = RT_NULL;

  23. /**@} end of group RTOS_RT-Thread_Variables*/

  24. /** @defgroup RTOS_RT-Thread_Functions Functions
  25.   @{
  26.   */

  27. void led_thread_entry(void* parameter);

  28. static void board_information_log(void)
  29. {
  30.         LOGI(tag,"Geehy-G32A1465 rt-thread finsh testing[ok]! \r\n");
  31.         LOGI(tag,"Geehy-G32A1465 SEGGER-RTT testing[ok]! \r\n");
  32.         LOGE(tag,"Geehy-G32A1465 by coderend 2024.12.30 testing[ok]! \r\n");
  33. }
  34. /*!
  35. * [url=home.php?mod=space&uid=247401]@brief[/url]   Main function
  36. *
  37. * @param   None
  38. *
  39. * @retval  None
  40. */
  41. int main(void)
  42. {   
  43.       /* 调用这句进行初始化以及打印开机信息【Demo start!】*/
  44.       segger_rtt_init("Geehy-G32A1465-SEGGER-RTT-Tempalte [ok] \r\n");  
  45.       board_information_log();
  46.     /* Initialize LEDs */
  47.     LED_Init();
  48.     /* Create thread */
  49.     led_thread = rt_thread_create("led1",
  50.                                led_thread_entry,
  51.                                RT_NULL,
  52.                                256,
  53.                                3,
  54.                                20);

  55.     /* Startup thread */
  56.     rt_thread_startup(led_thread);
  57. }

  58. /*!
  59. * [url=home.php?mod=space&uid=247401]@brief[/url]   LED thread entry function
  60. *
  61. * @param   parameter: the parameter of thread enter function
  62. *
  63. * @retval  None
  64. */
  65. void led_thread_entry(void* parameter)
  66. {
  67.     while (1)
  68.     {
  69.         LED_Toggle(LED_GREEN);
  70.                 LOGI(tag,"LED_GREEN LED_Toggle \r\n");
  71.         rt_thread_delay(1000);
  72.               LED_Toggle(LED_RED);
  73.               LOGI(tag,"LED_RED LED_Toggle \r\n");
  74.               rt_thread_delay(1000);
  75.               LED_Toggle(LED_BLUE);
  76.                 LOGI(tag,"LED_BLUE LED_Toggle \r\n");
  77.               rt_thread_delay(1000);
  78.     }
  79. }

  80. /**@} end of group RTOS_RT-Thread_Functions */
  81. /**@} end of group RTOS_RT-Thread */
  82. /**@} end of group Examples */

​具体完整代码见仓库代码。  https://gitee.com/End-ING/geehy-g32mcu-evaluation-board-note
9. 编译代码

10. 下载代码
板子支持JLINK下载,并提供了接口,因此本次实验使用JLINK下载,当然使用DAPlink同样可以,只要接上对应的接口。


注意问题:如果刚开始点击JLINK选项时,可能会弹出需要选择芯片的情况,但是jlink目前不支持这个芯片,出现这个情况的原因是选择了JATG模块,因此我们需要改成SW模式,才能出现ARM CoreSight SW-DP才能能够正常下载。


11. 下载程序完成之后,观察串口打印信息
msh组件显示RT-Thread版本

使用J-Link RTT Viewer 查看打印效果,一般用于板子没有多余串口的情况,SEGGER-RTT是一个强大的嵌入式调试组件

移植log_printf组件,标准打印组件,同时支持彩色,文件来源之前在APM32F407工程里面的,感觉十分好用就一直在用。








我只会加减乘除 发表于 2025-1-8 17:04 | 显示全部楼层
那个编译输出窗口的内存占用打印是操作系统自带的吗
钓鱼大师 发表于 2025-5-26 17:08 | 显示全部楼层
不是有个PACK吗?双击PACK自动安装不好吗?
分形梦想家 发表于 2025-5-30 18:34 | 显示全部楼层
看起来自己动手处理的工作量并不大啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部