Skip to content

bsp/fm33lg026: 新增 FM33LG0xx BSP(基于官方 fm33lc026 移植) - #11729

Open
WChengLei wants to merge 6 commits into
RT-Thread:masterfrom
WChengLei:fm33lg0-pr
Open

bsp/fm33lg026: 新增 FM33LG0xx BSP(基于官方 fm33lc026 移植)#11729
WChengLei wants to merge 6 commits into
RT-Thread:masterfrom
WChengLei:fm33lg0-pr

Conversation

@WChengLei

@WChengLei WChengLei commented Aug 21, 2026

Copy link
Copy Markdown

概述

新增 FM33LG0xx BSPbsp/fm33lg026),并将厂商库改为通过 RT-Thread 软件包引入,不再内嵌于 BSP 仓库。

配套软件包:fm33lg0xx_fl_library(复旦微官方 FL_Library v2.3.5 原样封装,Mulan PSL v2)

变更内容

BSP 本体(基于官方 fm33lc026 移植)

  • 底层驱动替换为官方 FM33LG0XX_FL_Library v2.3.5(CMU 时钟、rtca/rtcb 拆分)
  • 板级适配:64MHz PLL、32K RAM、uart0 console、LED PC1
  • 修复官方 BSP 存量 bug:drv_gpio.cINIT_BOARD_EXPORT;GET_PIN 宏步长 0x400→0x40
  • MDK5 工程(scons 生成),已验证 msh + GPIO 全链路跑通

软件包化(本次新增)

  • 删除 BSP 内嵌厂商库(libraries/FM/ + libraries/FM33LG0xx_FL_Driver/),改由 fm33lg0xx_fl_library 软件包提供
  • SConstruct/board/SConscript 路径指向包内 CMSIS 布局;rtconfig.h 启用 PKG_USING_FM33LG0XX_FL_LIBRARY
  • 启动文件、驱动库与包同源,避免 BSP 与厂商库版本不一致

review 反馈修复

  • drv_usart.c:移除 STM32 遗留的 stm32_dma_config 调用(FM33 未实现 DMA),RT_DEVICE_CTRL_CONFIG 返回 -RT_ENOSYSRT_ASSERT(0) 补分号
  • board/Kconfig:UART0 默认开启、UART1/UART5 默认关闭(匹配板载调试串口)
  • uart_config.h:修正 UART5 配置字段(.InitTypeDef + .clockSrc

为什么提交这份 PR

新增 FM33LG0xx BSP,并遵循维护者建议将厂商库独立为软件包,减小主仓库体积、便于厂商库独立升级。

请提供验证的 bsp 和 config

后续维护

  • 包主体仓库(WChengLei/fm33lg0xx_fl_library)为独立仓库
  • 如需将软件包仓库迁移至 RT-Thread-packages 组织统一维护,愿意配合完成迁移
  • 同步规划:FM33LC0xx 系列对应软件包(fm33lc0xx_fl_library)后续提交

- 底层驱动替换为官方 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 全链路跑通"
@github-actions

Copy link
Copy Markdown

👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread!

为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。
To ensure your code complies with RT-Thread's coding style, please run the code formatting workflow by following the steps below (If the formatting of CI fails to run).


🛠 操作步骤 | Steps

  1. 前往 Actions 页面 | Go to the Actions page
    点击进入工作流 → | Click to open workflow →

  2. 点击 Run workflow | Click Run workflow

  • Use workflow from 保持默认分支(通常为 master
    Keep the default branch (usually master) in Use workflow from
  • branch 输入框填写 PR 分支 fm33lg0-pr
    Enter PR branch fm33lg0-pr in the branch field
  • 设置需排除的文件/目录(目录请以"/"结尾)
    Set files/directories to exclude (directories should end with "/")
  1. 等待工作流完成 | Wait for the workflow to complete
    格式化后的代码将作为独立提交推送至你的分支。
    The formatting changes will be pushed to your branch as a separate commit.

完成后,提交将自动更新至 fm33lg0-pr 分支,关联的 Pull Request 也会同步更新。
Once completed, commits will be pushed to the fm33lg0-pr branch automatically, and the related Pull Request will be updated.

如有问题欢迎联系我们,再次感谢您的贡献!💐
If you have any questions, feel free to reach out. Thanks again for your contribution!

@CLAassistant

CLAassistant commented Aug 21, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ WChengLei
❌ WangChenglei


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.

@github-actions github-actions Bot added the BSP label Aug 21, 2026
@CYFS3

CYFS3 commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

请把产家库以软件包的形式提交
#9960

@CYFS3

CYFS3 commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

如果需要在https://github.com/RT-Thread-packages/
帮你新开一个仓库你可以留言,谢谢!

@WChengLei

WChengLei commented Aug 24, 2026

Copy link
Copy Markdown
Author

如果需要在https://github.com/RT-Thread-packages/ 帮你新开一个仓库你可以留言,谢谢!

可以的,我看现在bsp里面fm33系列的mcu只有一个lc0和lg0,其他的还需要我做什么吗?

@CYFS3

CYFS3 commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

如果需要在https://github.com/RT-Thread-packages/ 帮你新开一个仓库你可以留言,谢谢!

可以的,我看现在bsp里面fm33系列的mcu只有一个lc0和lg0,其他的还需要我做什么吗?

如果可以的话,请你把这个系列的bsp的厂家包都转为软件包的形式,然后看需要开什么仓库请你留言,我们这边帮你开方便你提交pr

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.h uses non-existent struct fields (.Instance) and has preprocessor block mismatches → build break when enabling related UARTs.
    uart_config.h 使用不存在的结构体字段(.Instance)且预处理块收尾不匹配 → 相关 UART 使能会直接编译失败。
  • drv_usart.c has a missing semicolon and references an undefined stm32_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.json has no fm33lg026 entry, 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.

Comment on lines +55 to +64
#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 */
Comment thread bsp/fm33lg026/libraries/HAL_Drivers/drv_usart.c
Comment on lines +166 to +168
case RT_DEVICE_CTRL_CONFIG:
stm32_dma_config(serial, ctrl_arg);
break;
Comment thread bsp/fm33lg026/board/Kconfig Outdated
Comment on lines +22 to +37
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

WChengLei and others added 4 commits August 28, 2026 15:34
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Replace embedded vendor library (FM/ + FM33LG0xx_FL_Driver) with the
fm33lg0xx_fl_library software package (requires pkgs --update):
- SConstruct: SDK_LIB points to packages/fm33lg0xx_fl_library
- board/SConscript: startup file from package CMSIS layout
- rtconfig.h: enable PKG_USING_FM33LG0XX_FL_LIBRARY
- project.uvprojx: update MDK paths
- board/Kconfig: default UART0 on, UART1/UART5 off (match board debug port)
- uart_config.h: fix UART5 config fields (.InitTypeDef + clockSrc)
- drv_usart.c: remove STM32 legacy stm32_dma_config call, return -RT_ENOSYS
@WChengLei

Copy link
Copy Markdown
Author

如果需要在https://github.com/RT-Thread-packages/ 帮你新开一个仓库你可以留言,谢谢!

可以的,我看现在bsp里面fm33系列的mcu只有一个lc0和lg0,其他的还需要我做什么吗?

如果可以的话,请你把这个系列的bsp的厂家包都转为软件包的形式,然后看需要开什么仓库请你留言,我们这边帮你开方便你提交pr

已经按照软件包的要求修改了,包索引也在packages仓库做了提交,后续可以配合将软件包迁移到RT-Thread-packages对应仓库

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants