Skip to content

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

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

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

Conversation

@WChengLei

@WChengLei WChengLei commented Aug 21, 2026

Copy link
Copy Markdown

拉取/合并请求描述:(PR description)

[

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

为什么提交这份PR (why to submit this PR)

新增 FM33LG0xx BSP

你的解决方案是什么 (what is your solution)

请提供验证的bsp和config (provide the config and bsp)

bsp/fm33lg026

  • BSP:
  • .config:
  • action:

]

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 代码是高质量的 Code in this PR is of high quality
  • 已经使用clang-format 源码格式化工具确保格式符合RT-Thread代码规范 This PR has been formatted with clang-format and complies with RT-Thread code specification
  • 如果是新增bsp, 已经添加ci检查到.github/ALL_BSP_COMPILE.json 详细请参考链接BSP自查

- 底层驱动替换为官方 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

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 sign our Contributor License Agreement before we can accept your contribution.


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 on lines +172 to +175
if (FL_UART_DeInit(uart->config->InitTypeDef) != FL_PASS)
{
RT_ASSERT(0)
}
Comment on lines +166 to +168
case RT_DEVICE_CTRL_CONFIG:
stm32_dma_config(serial, ctrl_arg);
break;
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

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