bsp/fm33lg026: 新增 FM33LG0xx BSP(基于官方 fm33lc026 移植) - #11729
Conversation
- 底层驱动替换为官方 FM33LG0XX_FL_Library v2.3.5(CMU 时钟、rtca/rtcb 拆分) - 板级适配:64MHz PLL、32K RAM、uart0 console、LED PC1 - 修复官方 BSP 存量 bug:drv_gpio.c 补 INIT_BOARD_EXPORT;GET_PIN 宏步长 0x400→0x40 - MDK5 工程(scons 生成),已验证 msh + GPIO 全链路跑通"
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
|
WangChenglei seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
|
请把产家库以软件包的形式提交 |
|
如果需要在https://github.com/RT-Thread-packages/ |
可以的,我看现在bsp里面fm33系列的mcu只有一个lc0和lg0,其他的还需要我做什么吗? |
如果可以的话,请你把这个系列的bsp的厂家包都转为软件包的形式,然后看需要开什么仓库请你留言,我们这边帮你开方便你提交pr |
There was a problem hiding this comment.
Pull request overview
This PR adds a new bsp/fm33lg026 BSP for the Fudan Microelectronics FM33LG0xx series, ported from the existing FM33LC0xx BSP and switching the low-level driver library to the official FM33LG0XX_FL_Library v2.3.5.
本 PR 新增 bsp/fm33lg026 BSP,用于复旦微 FM33LG0xx 系列 MCU,基于现有 FM33LC0xx BSP 移植,并替换底层驱动为官方 FM33LG0XX_FL_Library v2.3.5。
Changes / 变更点:
- Add FM33LG026 BSP build scaffolding (SCons/Kconfig/linker scripts) and basic board init (clock/heap/console).
新增 FM33LG026 BSP 的构建骨架(SCons/Kconfig/链接脚本)与基础板级初始化(时钟/堆/console)。 - Add HAL driver layer stubs for RT-Thread devices (GPIO/UART/etc.) and configuration headers.
新增 RT-Thread 设备驱动适配层(GPIO/UART 等)及配置头文件。 - Vendor in FM33LG0xx FL driver sources/headers and templates needed by the BSP.
引入 FM33LG0xx FL 驱动源码/头文件与 BSP 相关模板文件。
Review blockers found / 发现的阻塞问题:
uart_config.huses non-existent struct fields (.Instance) and has preprocessor block mismatches → build break when enabling related UARTs.
uart_config.h使用不存在的结构体字段(.Instance)且预处理块收尾不匹配 → 相关 UART 使能会直接编译失败。drv_usart.chas a missing semicolon and references an undefinedstm32_dma_config()under DMA → build break in current form.
drv_usart.c存在缺少分号以及 DMA 分支引用未定义的stm32_dma_config()→ 当前形态会编译失败。- Kconfig UART defaults conflict with the BSP README’s documented default console (uart0).
Kconfig 的 UART 默认选项与 README 描述的默认 console(uart0)不一致。 - PR process items:
.github/ALL_BSP_COMPILE.jsonhas nofm33lg026entry, and the PR description template fields (config/action link) are not filled.
PR 流程项:.github/ALL_BSP_COMPILE.json未加入fm33lg026,且 PR 描述模板中的 config/action 链接未补全。
Reviewed changes
Copilot reviewed 41 out of 129 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| bsp/fm33lg026/tools/sdk_dist.py | BSP dist hook stub (currently pass). |
| bsp/fm33lg026/SConstruct | SCons entry to build BSP and include libraries/drivers. |
| bsp/fm33lg026/SConscript | Recursively includes subdirectory SConscript files. |
| bsp/fm33lg026/rtconfig.py | Toolchain and link flags for gcc/armcc/iar; dist hook wiring. |
| bsp/fm33lg026/README.md | BSP documentation and porting notes. |
| bsp/fm33lg026/libraries/Kconfig | SoC family/series Kconfig symbols. |
| bsp/fm33lg026/libraries/HAL_Drivers/SConscript | Selects HAL driver sources based on RT-Thread depends. |
| bsp/fm33lg026/libraries/HAL_Drivers/Kconfig | Placeholder (currently empty). |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_usart.h | UART driver interface/types for this BSP. |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_usart.c | UART serial driver implementation (contains build issues per comments). |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_log.h | Logging tag/level macros for drivers. |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_gpio.h | GPIO pin mapping macro and pin IRQ map declarations. |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_config.h | Driver config include wrapper (includes uart_config.h). |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_common.h | Common driver utilities and Error_Handler. |
| bsp/fm33lg026/libraries/HAL_Drivers/drv_common.c | SysTick, delay, heap init, and board init glue. |
| bsp/fm33lg026/libraries/HAL_Drivers/config/uart_config.h | UART instance configuration macros (contains build issues per comments). |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/SConscript | Builds selected FM33LG0xx FL driver sources by feature depends. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Inc/fm33lg0xx_fl.h | FL driver umbrella header and core APIs. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Inc/fm33lg0xx_fl_def.h | Common FL types/macros (assert, flags, error status). |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Inc/fm33lg0xx_fl_conf.h | FL module enable list + per-module includes. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Inc/fm33lg0xx_fl_exti.h | EXTI FL header for GPIO interrupt routing. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Inc/fm33lg0xx_fl_cdif.h | CDIF FL header (inline register helpers). |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Inc/fm33_assert.h | Vendor assert macro definition. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/CMSIS/Include/system_fm33lg0xx.h | CMSIS system header for FM33LG0xx (include-guard issue noted). |
| bsp/fm33lg026/libraries/FM/FM33xx/Include/system_fm33lg0xx.h | Duplicated system header copy used by templates. |
| bsp/fm33lg026/libraries/FM/FM33xx/Source/Templates/ARM/startup_fm33lg0xx.s | ARM/Keil startup assembly template. |
| bsp/fm33lg026/libraries/FM/FM33xx/Source/Templates/gcc/linker/fm33lg04x_flash.ld | GCC linker template for LG04x (32K RAM/256K flash). |
| bsp/fm33lg026/libraries/FM/FM33xx/Source/Templates/gcc/linker/fm33lg02x_flash.ld | GCC linker template for LG02x (32K RAM/128K flash). |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl.c | FL init + delay support + NVIC helper. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_wwdt.c | Vendor WWDT driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_vrefp.c | Vendor VREFP driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_svd.c | Vendor SVD driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_spi.c | Vendor SPI driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_rtcb.c | Vendor RTCB driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_rtca.c | Vendor RTCA driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_rng.c | Vendor RNG + CRC helper routines. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_pmu.c | Vendor PMU sleep driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_pgl.c | Vendor PGL/LUT driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_opa.c | Vendor OPA driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_iwdt.c | Vendor IWDT driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_divas.c | Vendor DIVAS driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_dac.c | Vendor DAC driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_crc.c | Vendor CRC driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_bstim32.c | Vendor BSTIM32 driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_bstim16.c | Vendor BSTIM16 driver implementation. |
| bsp/fm33lg026/libraries/FM33LG0xx_FL_Driver/Src/fm33lg0xx_fl_aes.c | Vendor AES driver implementation. |
| bsp/fm33lg026/Kconfig | BSP-level Kconfig entry wiring to RT-Thread + libraries + board. |
| bsp/fm33lg026/board/SConscript | Board build sources and startup selection by toolchain. |
| bsp/fm33lg026/board/Kconfig | On-chip peripheral driver options (UART/GPIO). |
| bsp/fm33lg026/board/board.h | Board header wiring FL + GPIO includes. |
| bsp/fm33lg026/board/board.c | GPIO mux + PLL/clock setup helpers. |
| bsp/fm33lg026/board/linker_scripts/link.sct | Keil scatter file (RAM set to 0x8000). |
| bsp/fm33lg026/board/linker_scripts/link.lds | GNU ld script (appears copied from STM32; needs verification if gcc is supported). |
| bsp/fm33lg026/board/linker_scripts/link.icf | IAR linker config (RAM end currently 0x20005FFF). |
| bsp/fm33lg026/applications/SConscript | Application group build file. |
| bsp/fm33lg026/applications/main.c | Sample main toggling LED via pin driver. |
| bsp/fm33lg026/.gitignore | Ignores Keil user files and build output. |
| bsp/fm33lg026/.clang-format-ignore | Excludes vendor libraries/ from formatting. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| #if defined(BSP_USING_UART5) | ||
| #ifndef UART5_CONFIG | ||
| #define UART5_CONFIG \ | ||
| { \ | ||
| .name = "uart5", \ | ||
| .Instance = UART5, \ | ||
| .irq_type = UART5_IRQn, \ | ||
| } | ||
| #endif /* UART5_CONFIG */ | ||
| #endif /* BSP_USING_UART5 */ |
| if (FL_UART_DeInit(uart->config->InitTypeDef) != FL_PASS) | ||
| { | ||
| RT_ASSERT(0) | ||
| } |
| case RT_DEVICE_CTRL_CONFIG: | ||
| stm32_dma_config(serial, ctrl_arg); | ||
| break; |
| config BSP_USING_UART0 | ||
| bool "Enable UART0" | ||
| default n | ||
|
|
||
| config BSP_USING_UART1 | ||
| bool "Enable UART1" | ||
| default y | ||
|
|
||
| config BSP_USING_UART4 | ||
| bool "Enable UART4" | ||
| default n | ||
|
|
||
| config BSP_USING_UART5 | ||
| bool "Enable UART5" | ||
| default y | ||
|
|
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
新增 FM33LG0xx BSP
你的解决方案是什么 (what is your solution)
请提供验证的bsp和config (provide the config and bsp)
bsp/fm33lg026
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up