ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RT-Thread 在 ES-PDS-ES32F0654(东软载波 ES32F0654LT)开发板上的 BSP 快速上手与外设配置指南

RT-Thread 在 ES-PDS-ES32F0654(东软载波 ES32F0654LT)开发板上的 BSP 快速上手与外设配置指南 操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载本文档围绕 RT-Thread 仓库中 bsp/essemi/es32f0654 的板级支持包BSP系统介绍基于 ARM Cortex-M0 内核的 ES-PDS-ES32F0654 开发板的硬件资源、工程下载与运行流程以及通过 menuconfig/Env 工具裁剪内核与使能 SPI FLASH、UART、I2C、CAN、PWM、TIMER、RTC、PM、ADC 等片上外设驱动的完整方法。读完本文你将能够独立完成该开发板的首次点亮并根据实际项目需求定制驱动配置与内核用例。1. 开发板与 BSP 概览ES-PDS-ES32F0654 是上海东软载波微电子EastSoft官方推出的一款基于 ARM Cortex-M0 内核的开发板芯片型号为 ES32F0654LT最高主频 48MHz可满足基础功能测试及高端功能扩展等开发需求。RT-Thread 仓库中对应的 BSP 由东软载波微电子开发团队维护位于 bsp/essemi/es32f0654 目录下。开发板外观如下图所示1.1 常用板载资源MCUES32F0654LT主频 48MHz32KB SRAM256KB FLASH54 GPIOs外部模块SPI FLASHMX25L648MB、I2C EEPROMM24C04512B常用外设可调电阻1 个PB00LED2 个PC8/PC9按键3 个K1PF00、K2PF01、RESETMRST常用接口GPIO、UART、SPI、I2C调试接口ESLinkⅡEastSoft 官方推出的开发工具有标准版和 mini 版两种版本均自带 CDC 串口功能SWD 下载其中 SRAM 容量与堆区范围在 drivers/board.h 中有直接对应ES32F0_SRAM_SIZE 0x8000即 32KBES32F0_SRAM_END (0x20000000 ES32F0_SRAM_SIZE)堆区从__bss_endGCC/Image$$RW_IRAM1$$ZI$$LimitMDK等链接器符号之后延伸至 SRAM 末尾供 RT-Thread 动态内存管理使用。1.2 外设支持情况本 BSP 对外设的支持情况如下表所示板载外设支持情况备注SPI FLASH支持SPI0片上外设支持情况备注GPIO支持54 GPIOsUART支持UART0/1/2/3SPI支持SPI0/1I2C支持I2C0/1CAN支持CAN0PWM支持PWM0/1/2/3TIMER支持TIMER0/1/2/3RTC支持RTCPM支持Power ManagementADC支持ADC0从 drivers/ES/Kconfig 的配置项看驱动层实际暴露了更细的选项UART0/1/2/3 与 USART0/1、SPI0/1、I2C0/1、CAN0、PWM0PWM3对应 AD16C4T0/GP16C4T0/GP16C2T0/GP16C2T1 定时器单元、硬件定时器 timer0timer7、RTC、PM、ADC0 均可独立开关使用前以 menuconfig 勾选为准。1.3 注意事项本 BSP 中UART2 和 TIMER1 不能同时使用UART3 和 TIMER2 不能同时使用。这一约束在 Kconfig 中有显式体现drivers/ES/Kconfig 中BSP_USING_BS16T1_CLOCK_TIMERtimer5 配置项声明了depends on !BSP_USING_UART2BSP_USING_BS16T2_CLOCK_TIMER声明了depends on !BSP_USING_UART3即引脚/外设资源复用冲突由配置系统直接阻止避免误选。2. BSP 目录结构速览该 BSP 的目录组织体现了 RT-Thread 标准 BSP 分层applications应用入口main.c中的 LED 闪烁示例board链接脚本link.icf/link.lds/link.sct分别对应 IAR / GCC / MDKdriversRT-Thread 设备驱动层包含drv_adc.c、drv_can.c、drv_gpio.c、drv_i2c.c、drv_pm.c、drv_pwm.c、drv_rtc.c、drv_spi.c、drv_spiflash.c、drv_timer.c、drv_uart.c及其头文件drivers/ES东软载波 ES32F0 系列外设配置头文件es_conf_info_*.h集中管理时钟树、引脚映射和各外设参数librariesCMSIS 器件头文件与 ES32F065x 标准外设库ALD 驱动project.uvprojxMDK5 工程文件rtconfig.h当前生效的内核与驱动配置3. 快速上手将系统跑起来本 BSP 为开发者提供 MDK5 工程下面以 MDK5 开发环境为例介绍如何将系统运行起来。3.1 硬件连接使用 ESLinkⅡ自带 CDC 串口或 JLink 等调试工具连接开发板到 PC拨动开关选择使用调试工具供电或使用外部电源供电。若使用 JLink 等调试工具还需要将UART2_TXPC12、UART2_RXPD2、GND接到串口工具上——这是因为本 BSP 默认将控制台console绑定在 uart2 设备上见下文 rtconfig.h 中的RT_CONSOLE_DEVICE_NAME uart2串口打印信息均从该串口输出。使用 ESLinkⅡ(mini) 连接开发板如下图所示3.2 编译下载双击 project.uvprojx 文件打开 MDK5 工程工程默认配置使用JLink下载程序。通过 JLink 连接开发板后点击下载按钮即可将程序烧录到开发板如果使用 ESLinkⅡ则在 MDK 调试器设置中选择CMSIS-DAP Debugger连接正常后即可编译并下载程序到开发板。3.3 运行结果下载程序成功之后系统会自动运行。观察串口输出信息同时开发板上的 LED 闪烁。串口默认波特率为 115200典型输出如下\ | / - RT - Thread Operating System / | \ 4.0.0 build Jan 28 2019 2006 - 2018 Copyright by rt-thread team msh 说明上述打印中的版本号与日期为文档编写时的示例输出当前仓库 rtconfig.h 中定义的版本为RT_VER_NUM 0x50300对应 RT-Thread 5.0.3实际以编译时的源码版本为准。LED 闪烁行为来自默认应用 applications/main.cmain线程将 LED 引脚默认GET_PIN(C, 8)即 PC8与文档所述 LED 引脚一致配置为输出模式然后以 500ms 为周期交替输出高/低电平int main(void) { int count 1; /* set PC08 pin mode to output */ rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); while (count) { rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_PIN, PIN_LOW); rt_thread_mdelay(500); } return RT_EOK; }同时可通过宏ES_RTT_APP_LED_PIN覆盖默认的 LED 引脚定义方便适配自定义板卡。4. 进阶使用用 Env/menuconfig 定制工程此 BSP 默认只开启了GPIO和uart2的功能对应 rtconfig.h 中的BSP_USING_GPIO与BSP_USING_UART2如果需使用 SPI FLASH、I2C、CAN、PWM、RTC 等更多高级功能需要利用 Env 工具对 BSP 进行配置。步骤如下4.1 配置工程在bsp/essemi/es32f0654目录下打开 Env 工具输入menuconfig命令配置工程配置好之后保存退出。a如果需要使用内核用例先配置 RT-Thread 内核再配置内核用例。b如果需要使用驱动用例先使能驱动再配置驱动用例。4.2 更新软件包并重新生成工程输入pkgs --update命令更新软件包输入scons --targetmdk5生成 MDK5 工程或scons --targetiar生成 IAR 工程命令重新生成工程。至此新配置即写入 rtconfig.h 并同步到工程重新编译下载即可生效。5. 外设驱动配置项详解结合 Kconfig 源码drivers/Kconfig 与 drivers/ES/Kconfig 定义了本 BSP 的全部硬件驱动开关下面逐类说明关键配置项及其依赖关系。5.1 GPIO 与板载 SPI FLASHBSP_USING_GPIO使能 GPIO 驱动默认开启且自动select RT_USING_PIN即依赖 RT-Thread PIN 设备框架BSP_USING_SPI_FLASH使能板载 SPI FLASHMX25L64挂在 SPI0 上默认关闭。开启后自动依赖BSP_USING_SPI、RT_USING_SFUDSPI 通用 Flash 驱动与RT_SFUD_USING_SFDPSFDP 自动探测并引出两个参数ES_DEVICE_NAME_SPI_DEV已注册的 SPI 设备名默认spi00ES_DEVICE_NAME_SPI_FALSH_DEVSPI FLASH 块设备名默认W25Q64。5.2 串口UART/USARTdrivers/ES/Kconfig 提供BSP_USING_UART0BSP_USING_UART3与BSP_USING_USART0/USART1六个串口开关均自动select RT_USING_SERIAL。其中BSP_USING_UART2默认开启作为系统控制台。串口参数集中在 drivers/ES/es_conf_info_uart.h 中管理默认配置为波特率115200ES_CONF_UARTx_BAUD_RATE数据位8 位DATA_BITS_8停止位1 位ES_C_UART_STOP_1校验无ES_C_UART_PARITY_NONE位序LSB 先发BIT_ORDER_LSB、NRZ 编码NRZ_NORMAL接收缓冲RT_SERIAL_RB_BUFSZ默认 64 字节每个串口都以ES_UARTx_CONFIG宏的形式将这些参数组织成 RT-Thread 串口配置结构体供drv_uart.c在设备初始化时使用如需修改某个串口的波特率或校验位只需调整对应ES_CONF_*宏后重新编译。5.3 SPI / I2C / CANBSP_USING_SPI0/SPI1注册 SPI 设备自动依赖RT_USING_SPI与RT_USING_PINSPI 片选需要引脚控制BSP_USING_I2C0/I2C1注册 I2C 设备自动依赖RT_USING_I2CBSP_USING_CAN0注册 CAN 控制器自动依赖RT_USING_CAN与RT_CAN_USING_HDRCAN 消息头扩展支持。5.4 PWM 与硬件定时器存在互斥关系PWMBSP_USING_AD16C4T0_PWMpwm0、BSP_USING_GP16C4T0_PWMpwm1、BSP_USING_GP16C2T0_PWMpwm2、BSP_USING_GP16C2T1_PWMpwm3均依赖RT_USING_PWM硬件定时器BSP_USING_AD16C4T0_CLOCK_TIMERtimer0BSP_USING_BS16T3_CLOCK_TIMERtimer7依赖RT_USING_CLOCK_TIME。同一定时器单元在 PWM 与定时器两种角色间互斥Kconfig 通过depends on !BSP_USING_xxx_PWM保证同一单元不能同时注册为 PWM 和定时器此外BS16T1与 UART2、BS16T2与 UART3 之间存在引脚复用冲突见 1.3 节注意事项。5.5 RTC / PM / ADCBSP_USING_RTC使能 RTC 驱动依赖RT_USING_RTC用于日历/时钟功能BSP_USING_PM使能电源管理驱动依赖RT_USING_PM。从 drivers/board.c 可见当定义RT_USING_PM时系统会额外使能低功耗模式所需的 LRC/LOSC/HRC/HOSC 时钟BSP_USING_ADC0使能 ADC 驱动依赖RT_USING_ADC可配合板上 PB00 可调电阻做电压采集实验。5.6 驱动用例开关drivers/Kconfig 还提供了Peripheral Drivers test example菜单内置 ADC 电压、时钟定时器、I2C、I2C EEPROM、LED 闪烁、引脚蜂鸣器、PWM LED、RTC、SPI、UART、CAN、PM 共 12 个示例开关如BSP_USING_EXAMPLE_ADC_VOL、BSP_USING_EXAMPLE_LED_BLINK、BSP_USING_EXAMPLE_RTC等勾选后即可编译对应的驱动测试用例方便快速验证外设功能。6. 源码级启动流程解读该 BSP 的板级初始化在 drivers/board.c 的rt_hw_board_init()中完成顺序为NVIC_Configuration()中断向量表配置SystemClock_Config()按 drivers/ES/es_conf_info_cmu.h 中的时钟树配置初始化时钟。默认以 12MHz HOSC 三分频后作为 PLL1 参考时钟PLL 倍频至48MHzES_PLL1_OUT_CLK ES_C_MUL_12系统时钟源选择 PLL1SYS/HCLK/PCLK1/PCLK2 均不分频ES_CMU_*_DIV ES_C_DIV_1得到 48MHz 主频SysTick_Configuration()以sysclk / RT_TICK_PER_SECOND配置 SysTick产生系统时钟节拍RT_TICK_PER_SECOND默认 100即 10ms 一个 tick并在SysTick_Handler()中调用rt_tick_increase()推进内核时钟若使能RT_USING_HEAP则调用rt_system_heap_init()初始化动态内存堆调用rt_components_board_init()完成组件级板载初始化将控制台设备设置为RT_CONSOLE_DEVICE_NAME即uart2。7. 常见问题与注意事项默认只有 GPIO 与 uart2 可用其余外设需通过menuconfig勾选BSP_USING_*选项并重新执行scons --targetmdk5/iar生成工程后才会被编译外设资源冲突UART2 与 TIMER1、UART3 与 TIMER2 不能同时使用menuconfig 已通过depends on做了约束但手工改rtconfig.h时需自行注意串口连接使用 JLink 时需外接串口工具接线为 UART2_TXPC12、UART2_RXPD2、GND使用 ESLinkⅡ 则可直接用其自带的 CDC 串口堆区与链接脚本MDK、IAR、GCC 三种工具链的堆区起点符号不同分别为Image$$RW_IRAM1$$ZI$$Limit、__segment_end(HEAP)、__bss_enddrivers/board.h 已通过条件编译分别处理切换工具链时无需修改代码。8. 参考资料本 BSP 完整代码bsp/essemi/es32f0654内核与组件源码src、componentsEnv 工具与 menuconfig 的详细使用方式请参考 RT-Thread 文档中心在线文档芯片数据手册与技术支持请联系上海东软载波微电子EastSoft官方渠道赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载相关推荐ES-PDS-ES32F369x 开发板 RT-Thread BSP 使用指南基于东软载波 ES32F3696LT 的快速上手与进阶配置ES PDS ES32F369x 开发板 RT Thread BSP 使用指南基于东软载波 ES32F3696LT 的快速上手与进阶配置 本篇技术指南以 RT操作系统嵌入式物联网嵌入式OSRTOSRT-Thread ES-PDS-ES32F365x BSP 快速上手指南东软载波 Cortex-M3 开发板移植、编译下载与 Env 配置详解RT Thread ES PDS ES32F365x BSP 快速上手指南东软载波 Cortex M3 开发板移植、编译下载与 Env 配置详解 本篇指南以操作系统嵌入式物联网嵌入式OSRTOSES32VF2264 开发板 RT-Thread BSP 快速上手与外设驱动配置指南ES32VF2264 开发板 RT Thread BSP 快速上手与外设驱动配置指南 ES PDS ES32VF2264 是上海东软载波微电子EastSoft操作系统嵌入式物联网嵌入式OSRTOS上一篇RxJS 聚合运算符兼容模块rx-lite-aggregates-compat完全指南下一篇sd-webui-regional-prompter入门指南如何用BREAK关键词实现区域化提示控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表