Skip to content

[BSP] 添加raspberry-rp2350适配 #10580

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

hydevcode
Copy link
Contributor

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

[

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

添加raspberry-rp2350适配

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

软件包索引仓库pr:
RT-Thread/packages#1917
软件包仓库pr:
RT-Thread-packages/raspberrypi-pico-rp2350-sdk#1

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

  • BSP:raspberry-rp2350
  • .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
  • 已经使用formatting 等源码格式化工具确保格式符合RT-Thread代码规范 This PR complies with RT-Thread code specification
  • 如果是新增bsp, 已经添加ci检查到.github/workflows/bsp_buildings.yml 详细请参考链接BSP自查

@github-actions github-actions bot added BSP action github action yml imporve labels Aug 4, 2025
Copy link

github-actions bot commented Aug 4, 2025

📌 Code Review Assignment

🏷️ Tag: workflow

Reviewers: Rbb666 kurisaW supperthomas

Changed Files (Click to expand)
  • .github/ALL_BSP_COMPILE.json

📊 Current Review Status (Last Updated: 2025-08-04 21:25 CST)

  • Rbb666 Pending Review
  • kurisaW Pending Review
  • supperthomas Pending Review

📝 Review Instructions

  1. 维护者可以通过单击此处来刷新审查状态: 🔄 刷新状态
    Maintainers can refresh the review status by clicking here: 🔄 Refresh Status

  2. 确认审核通过后评论 LGTM/lgtm
    Comment LGTM/lgtm after confirming approval

  3. PR合并前需至少一位维护者确认
    PR must be confirmed by at least one maintainer before merging

ℹ️ 刷新CI状态操作需要具备仓库写入权限。
ℹ️ Refresh CI status operation requires repository Write permission.

Copy link
Member

Choose a reason for hiding this comment

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

这些外设都有验证过吗?如果没有建议先删掉,保留已验证过的即可

Copy link
Member

Choose a reason for hiding this comment

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

LVGL这部分如果没验证过建议删除

Copy link
Member

Choose a reason for hiding this comment

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

ardunio也是

OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy'

# -mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse -g -O3 -DNDEBUG -Wl,--build-id=none -Wl,-Map=blink.elf.map --specs=nosys.specs -Wl,--wrap=__ctzdi2 -Wl,--wrap=__aeabi_dadd -Wl,--wrap=__aeabi_ddiv -Wl,--wrap=__aeabi_dmul -Wl,--wrap=__aeabi_drsub -Wl,--wrap=__aeabi_dsub -Wl,--wrap=__aeabi_cdcmpeq -Wl,--wrap=__aeabi_cdrcmple -Wl,--wrap=__aeabi_cdcmple -Wl,--wrap=__aeabi_dcmpeq -Wl,--wrap=__aeabi_dcmplt -Wl,--wrap=__aeabi_dcmple -Wl,--wrap=__aeabi_dcmpge -Wl,--wrap=__aeabi_dcmpgt -Wl,--wrap=__aeabi_dcmpun -Wl,--wrap=__aeabi_i2d -Wl,--wrap=__aeabi_l2d -Wl,--wrap=__aeabi_ui2d -Wl,--wrap=__aeabi_ul2d -Wl,--wrap=__aeabi_d2iz -Wl,--wrap=__aeabi_d2lz -Wl,--wrap=__aeabi_d2uiz -Wl,--wrap=__aeabi_d2ulz -Wl,--wrap=__aeabi_d2f -Wl,--wrap=sqrt -Wl,--wrap=cos -Wl,--wrap=sin -Wl,--wrap=tan -Wl,--wrap=atan2 -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=ldexp -Wl,--wrap=copysign -Wl,--wrap=trunc -Wl,--wrap=floor -Wl,--wrap=ceil -Wl,--wrap=round -Wl,--wrap=sincos -Wl,--wrap=asin -Wl,--wrap=acos -Wl,--wrap=atan -Wl,--wrap=sinh -Wl,--wrap=cosh -Wl,--wrap=tanh -Wl,--wrap=asinh -Wl,--wrap=acosh -Wl,--wrap=atanh -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=exp10 -Wl,--wrap=log10 -Wl,--wrap=pow -Wl,--wrap=powint -Wl,--wrap=hypot -Wl,--wrap=cbrt -Wl,--wrap=fmod -Wl,--wrap=drem -Wl,--wrap=remainder -Wl,--wrap=remquo -Wl,--wrap=expm1 -Wl,--wrap=log1p -Wl,--wrap=fma -Wl,--wrap=__aeabi_l2f -Wl,--wrap=__aeabi_ul2f -Wl,--wrap=__aeabi_f2lz -Wl,--wrap=__aeabi_f2ulz -Wl,--wrap=cosf -Wl,--wrap=sinf -Wl,--wrap=tanf -Wl,--wrap=atan2f -Wl,--wrap=expf -Wl,--wrap=logf -Wl,--wrap=sincosf -Wl,--wrap=ldexpf -Wl,--wrap=copysignf -Wl,--wrap=truncf -Wl,--wrap=floorf -Wl,--wrap=ceilf -Wl,--wrap=roundf -Wl,--wrap=asinf -Wl,--wrap=acosf -Wl,--wrap=atanf -Wl,--wrap=sinhf -Wl,--wrap=coshf -Wl,--wrap=tanhf -Wl,--wrap=asinhf -Wl,--wrap=acoshf -Wl,--wrap=atanhf -Wl,--wrap=exp2f -Wl,--wrap=log2f -Wl,--wrap=exp10f -Wl,--wrap=log10f -Wl,--wrap=powf -Wl,--wrap=powintf -Wl,--wrap=hypotf -Wl,--wrap=cbrtf -Wl,--wrap=fmodf -Wl,--wrap=dremf -Wl,--wrap=remainderf -Wl,--wrap=remquof -Wl,--wrap=expm1f -Wl,--wrap=log1pf -Wl,--wrap=fmaf -Wl,--wrap=malloc -Wl,--wrap=calloc -Wl,--wrap=realloc -Wl,--wrap=free -Wl,-L/home/qemu/pico-examples -Wl,--script=/home/qemu/pico-sdk/src/rp2_common/pico_crt0/rp2350/memmap_default.ld -Wl,-z,max-page-size=4096 -Wl,--gc-sections -Wl,--no-warn-rwx-segments -Wl,--wrap=sprintf -Wl,--wrap=snprintf -Wl,--wrap=vsnprintf -Wl,--wrap=printf -Wl,--wrap=vprintf -Wl,--wrap=puts -Wl,--wrap=putchar -Wl,--wrap=getchar CMakeFiles/blink.dir/blink.c.o "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2350/pico_platform/platform.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_platform_panic/panic.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/hardware_claim/claim.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_sync/sync.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_sync_spin_lock/sync_spin_lock.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_irq/irq.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/sem.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/lock_core.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/mutex.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/critical_section.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_time/time.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_time/timeout_helper.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_timer/timer.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_util/datetime.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_util/pheap.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_util/queue.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_uart/uart.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_pll/pll.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_ticks/ticks.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_bootrom/bootrom_lock.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_boot_lock/boot_lock.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_flash/flash.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_divider/divider.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime/runtime.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_clocks.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_stack_guard.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_divider/divider_compiler.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_math.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_aeabi_dcp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_fma_dcp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_sci_m33.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_conv_m33.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_math.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_conv32_vfp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_common_m33.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_sci_m33_vfp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_malloc/malloc.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_atomic/atomic.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_cxx_options/new_delete.cpp.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_standard_binary_info/standard_binary_info.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_printf/printf.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_crt0/crt0.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_clib_interface/newlib_interface.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_stdio/stdio.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.o" -o blink.elf ../pico-sdk/src/rp2350/boot_stage2/CMakeFiles/bs2_default_library.dir/bs2_default_padded_checksummed.S.o
Copy link
Member

Choose a reason for hiding this comment

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

多余注释请删除

else:
CFLAGS += ' -O2'

CXXFLAGS = CFLAGS + ' -Wl,--build-id=none --specs=nosys.specs -Wl,--wrap=__ctzdi2 -Wl,--wrap=__aeabi_dadd -Wl,--wrap=__aeabi_ddiv -Wl,--wrap=__aeabi_dmul -Wl,--wrap=__aeabi_drsub -Wl,--wrap=__aeabi_dsub -Wl,--wrap=__aeabi_cdcmpeq -Wl,--wrap=__aeabi_cdrcmple -Wl,--wrap=__aeabi_cdcmple -Wl,--wrap=__aeabi_dcmpeq -Wl,--wrap=__aeabi_dcmplt -Wl,--wrap=__aeabi_dcmple -Wl,--wrap=__aeabi_dcmpge -Wl,--wrap=__aeabi_dcmpgt -Wl,--wrap=__aeabi_dcmpun -Wl,--wrap=__aeabi_i2d -Wl,--wrap=__aeabi_l2d -Wl,--wrap=__aeabi_ui2d -Wl,--wrap=__aeabi_ul2d -Wl,--wrap=__aeabi_d2iz -Wl,--wrap=__aeabi_d2lz -Wl,--wrap=__aeabi_d2uiz -Wl,--wrap=__aeabi_d2ulz -Wl,--wrap=__aeabi_d2f -Wl,--wrap=sqrt -Wl,--wrap=cos -Wl,--wrap=sin -Wl,--wrap=tan -Wl,--wrap=atan2 -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=ldexp -Wl,--wrap=copysign -Wl,--wrap=trunc -Wl,--wrap=floor -Wl,--wrap=ceil -Wl,--wrap=round -Wl,--wrap=sincos -Wl,--wrap=asin -Wl,--wrap=acos -Wl,--wrap=atan -Wl,--wrap=sinh -Wl,--wrap=cosh -Wl,--wrap=tanh -Wl,--wrap=asinh -Wl,--wrap=acosh -Wl,--wrap=atanh -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=exp10 -Wl,--wrap=log10 -Wl,--wrap=pow -Wl,--wrap=powint -Wl,--wrap=hypot -Wl,--wrap=cbrt -Wl,--wrap=fmod -Wl,--wrap=drem -Wl,--wrap=remainder -Wl,--wrap=remquo -Wl,--wrap=expm1 -Wl,--wrap=log1p -Wl,--wrap=fma -Wl,--wrap=__aeabi_l2f -Wl,--wrap=__aeabi_ul2f -Wl,--wrap=__aeabi_f2lz -Wl,--wrap=__aeabi_f2ulz -Wl,--wrap=cosf -Wl,--wrap=sinf -Wl,--wrap=tanf -Wl,--wrap=atan2f -Wl,--wrap=expf -Wl,--wrap=logf -Wl,--wrap=sincosf -Wl,--wrap=ldexpf -Wl,--wrap=copysignf -Wl,--wrap=truncf -Wl,--wrap=floorf -Wl,--wrap=ceilf -Wl,--wrap=roundf -Wl,--wrap=asinf -Wl,--wrap=acosf -Wl,--wrap=atanf -Wl,--wrap=sinhf -Wl,--wrap=coshf -Wl,--wrap=tanhf -Wl,--wrap=asinhf -Wl,--wrap=acoshf -Wl,--wrap=atanhf -Wl,--wrap=exp2f -Wl,--wrap=log2f -Wl,--wrap=exp10f -Wl,--wrap=log10f -Wl,--wrap=powf -Wl,--wrap=powintf -Wl,--wrap=hypotf -Wl,--wrap=cbrtf -Wl,--wrap=fmodf -Wl,--wrap=dremf -Wl,--wrap=remainderf -Wl,--wrap=remquof -Wl,--wrap=expm1f -Wl,--wrap=log1pf -Wl,--wrap=fmaf -Wl,--wrap=malloc -Wl,--wrap=calloc -Wl,--wrap=realloc -Wl,--wrap=free -Wl,-z,max-page-size=4096 -Wl,--gc-sections -Wl,--no-warn-rwx-segments -Wl,--wrap=sprintf -Wl,--wrap=snprintf -Wl,--wrap=vsnprintf -Wl,--wrap=printf -Wl,--wrap=vprintf -Wl,--wrap=puts -Wl,--wrap=putchar -Wl,--wrap=getchar'
Copy link
Member

Choose a reason for hiding this comment

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

-WL部分参数可以删除的,没必要添加这么多,是自定义的函数实现了吗?

@Rbb666 Rbb666 requested a review from Copilot August 5, 2025 10:52
Copy link
Contributor

@Copilot Copilot AI left a comment

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 adaptation support for the Raspberry Pi RP2350 microcontroller by creating a new BSP (Board Support Package). The RP2350 is a newer dual-core ARM Cortex-M33 microcontroller from Raspberry Pi with enhanced security features.

  • New BSP implementation for raspberry-rp2350 based on existing raspberry-pico BSP
  • Driver support for common peripherals including UART, GPIO, SPI, I2C, PWM, ADC, WDT, and RTC
  • LVGL support for LCD display functionality
  • Arduino compatibility layer for easier migration

Reviewed Changes

Copilot reviewed 56 out of 69 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
bsp/raspberry-rp2350/rtconfig.py Build configuration script for ARM Cortex-M33 target
bsp/raspberry-rp2350/rtconfig.h RT-Thread kernel and component configuration
bsp/raspberry-rp2350/link.ld Linker script defining memory layout for RP2350
bsp/raspberry-rp2350/drivers/* Hardware abstraction layer drivers for peripherals
bsp/raspberry-rp2350/board/* Board initialization and configuration
bsp/raspberry-rp2350/applications/* Sample applications and Arduino pinout definitions
Comments suppressed due to low confidence (1)

bsp/raspberry-rp2350/drivers/drv_soft_spi.h:46

  • The macro name 'BSP_S_SPI_MOSI_PIN' should be 'BSP_S_SPI1_MOSI_PIN' to match the pattern used in other SPI1 pin definitions.
        .mosi = BSP_S_SPI_MOSI_PIN,                        \

OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy'

# -mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse -g -O3 -DNDEBUG -Wl,--build-id=none -Wl,-Map=blink.elf.map --specs=nosys.specs -Wl,--wrap=__ctzdi2 -Wl,--wrap=__aeabi_dadd -Wl,--wrap=__aeabi_ddiv -Wl,--wrap=__aeabi_dmul -Wl,--wrap=__aeabi_drsub -Wl,--wrap=__aeabi_dsub -Wl,--wrap=__aeabi_cdcmpeq -Wl,--wrap=__aeabi_cdrcmple -Wl,--wrap=__aeabi_cdcmple -Wl,--wrap=__aeabi_dcmpeq -Wl,--wrap=__aeabi_dcmplt -Wl,--wrap=__aeabi_dcmple -Wl,--wrap=__aeabi_dcmpge -Wl,--wrap=__aeabi_dcmpgt -Wl,--wrap=__aeabi_dcmpun -Wl,--wrap=__aeabi_i2d -Wl,--wrap=__aeabi_l2d -Wl,--wrap=__aeabi_ui2d -Wl,--wrap=__aeabi_ul2d -Wl,--wrap=__aeabi_d2iz -Wl,--wrap=__aeabi_d2lz -Wl,--wrap=__aeabi_d2uiz -Wl,--wrap=__aeabi_d2ulz -Wl,--wrap=__aeabi_d2f -Wl,--wrap=sqrt -Wl,--wrap=cos -Wl,--wrap=sin -Wl,--wrap=tan -Wl,--wrap=atan2 -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=ldexp -Wl,--wrap=copysign -Wl,--wrap=trunc -Wl,--wrap=floor -Wl,--wrap=ceil -Wl,--wrap=round -Wl,--wrap=sincos -Wl,--wrap=asin -Wl,--wrap=acos -Wl,--wrap=atan -Wl,--wrap=sinh -Wl,--wrap=cosh -Wl,--wrap=tanh -Wl,--wrap=asinh -Wl,--wrap=acosh -Wl,--wrap=atanh -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=exp10 -Wl,--wrap=log10 -Wl,--wrap=pow -Wl,--wrap=powint -Wl,--wrap=hypot -Wl,--wrap=cbrt -Wl,--wrap=fmod -Wl,--wrap=drem -Wl,--wrap=remainder -Wl,--wrap=remquo -Wl,--wrap=expm1 -Wl,--wrap=log1p -Wl,--wrap=fma -Wl,--wrap=__aeabi_l2f -Wl,--wrap=__aeabi_ul2f -Wl,--wrap=__aeabi_f2lz -Wl,--wrap=__aeabi_f2ulz -Wl,--wrap=cosf -Wl,--wrap=sinf -Wl,--wrap=tanf -Wl,--wrap=atan2f -Wl,--wrap=expf -Wl,--wrap=logf -Wl,--wrap=sincosf -Wl,--wrap=ldexpf -Wl,--wrap=copysignf -Wl,--wrap=truncf -Wl,--wrap=floorf -Wl,--wrap=ceilf -Wl,--wrap=roundf -Wl,--wrap=asinf -Wl,--wrap=acosf -Wl,--wrap=atanf -Wl,--wrap=sinhf -Wl,--wrap=coshf -Wl,--wrap=tanhf -Wl,--wrap=asinhf -Wl,--wrap=acoshf -Wl,--wrap=atanhf -Wl,--wrap=exp2f -Wl,--wrap=log2f -Wl,--wrap=exp10f -Wl,--wrap=log10f -Wl,--wrap=powf -Wl,--wrap=powintf -Wl,--wrap=hypotf -Wl,--wrap=cbrtf -Wl,--wrap=fmodf -Wl,--wrap=dremf -Wl,--wrap=remainderf -Wl,--wrap=remquof -Wl,--wrap=expm1f -Wl,--wrap=log1pf -Wl,--wrap=fmaf -Wl,--wrap=malloc -Wl,--wrap=calloc -Wl,--wrap=realloc -Wl,--wrap=free -Wl,-L/home/qemu/pico-examples -Wl,--script=/home/qemu/pico-sdk/src/rp2_common/pico_crt0/rp2350/memmap_default.ld -Wl,-z,max-page-size=4096 -Wl,--gc-sections -Wl,--no-warn-rwx-segments -Wl,--wrap=sprintf -Wl,--wrap=snprintf -Wl,--wrap=vsnprintf -Wl,--wrap=printf -Wl,--wrap=vprintf -Wl,--wrap=puts -Wl,--wrap=putchar -Wl,--wrap=getchar CMakeFiles/blink.dir/blink.c.o "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2350/pico_platform/platform.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_platform_panic/panic.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/hardware_claim/claim.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_sync/sync.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_sync_spin_lock/sync_spin_lock.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_irq/irq.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/sem.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/lock_core.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/mutex.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_sync/critical_section.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_time/time.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_time/timeout_helper.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_timer/timer.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_util/datetime.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_util/pheap.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/common/pico_util/queue.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_uart/uart.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_pll/pll.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_ticks/ticks.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_bootrom/bootrom_lock.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_boot_lock/boot_lock.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_flash/flash.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/hardware_divider/divider.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime/runtime.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_clocks.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_stack_guard.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_divider/divider_compiler.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_math.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_aeabi_dcp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_fma_dcp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_sci_m33.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_double/double_conv_m33.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_math.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_conv32_vfp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_common_m33.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_float/float_sci_m33_vfp.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_malloc/malloc.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_atomic/atomic.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_cxx_options/new_delete.cpp.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_standard_binary_info/standard_binary_info.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_printf/printf.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_crt0/crt0.S.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_clib_interface/newlib_interface.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_stdio/stdio.c.o" "CMakeFiles/blink.dir/home/qemu/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.o" -o blink.elf ../pico-sdk/src/rp2350/boot_stage2/CMakeFiles/bs2_default_library.dir/bs2_default_padded_checksummed.S.o
Copy link
Preview

Copilot AI Aug 5, 2025

Choose a reason for hiding this comment

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

This extremely long line (over 5000 characters) should be refactored or removed. It appears to be commented CMake command output that doesn't belong in a configuration file and makes the code difficult to read and maintain.

Copilot uses AI. Check for mistakes.

Comment on lines +69 to +70
# elf2uf2_path = os.path.join(os.getcwd(), "tools", "elf2uf2")
elf2uf2_path="/home/qemu/picotool/build/picotool"
Copy link
Preview

Copilot AI Aug 5, 2025

Choose a reason for hiding this comment

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

The hardcoded absolute path '/home/qemu/picotool/build/picotool' should be made configurable or use relative paths to avoid environment-specific dependencies.

Suggested change
# elf2uf2_path = os.path.join(os.getcwd(), "tools", "elf2uf2")
elf2uf2_path="/home/qemu/picotool/build/picotool"
elf2uf2_path = os.getenv("ELF2UF2_PATH", os.path.join(os.getcwd(), "tools", "elf2uf2"))

Copilot uses AI. Check for mistakes.

Comment on lines +60 to +78
rt_err_t ret = -RT_ERROR;

struct pico_i2c_bus *pico_i2c = (struct pico_i2c_bus *)bus;

for (i = 0; i < num; i++)
{
msg = &msgs[i];

if (msg->flags & RT_I2C_RD)
{
i2c_read_blocking(pico_i2c->handle, msg->addr, msg->buf, msg->len, false);
}
else
{
i2c_write_blocking(pico_i2c->handle, msg->addr, msg->buf, msg->len, false);
}
}

return ret;
Copy link
Preview

Copilot AI Aug 5, 2025

Choose a reason for hiding this comment

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

The function always returns -RT_ERROR regardless of successful I2C transfers. It should return the number of messages processed on success or a negative error code on failure.

Suggested change
rt_err_t ret = -RT_ERROR;
struct pico_i2c_bus *pico_i2c = (struct pico_i2c_bus *)bus;
for (i = 0; i < num; i++)
{
msg = &msgs[i];
if (msg->flags & RT_I2C_RD)
{
i2c_read_blocking(pico_i2c->handle, msg->addr, msg->buf, msg->len, false);
}
else
{
i2c_write_blocking(pico_i2c->handle, msg->addr, msg->buf, msg->len, false);
}
}
return ret;
struct pico_i2c_bus *pico_i2c = (struct pico_i2c_bus *)bus;
for (i = 0; i < num; i++)
{
msg = &msgs[i];
int res;
if (msg->flags & RT_I2C_RD)
{
res = i2c_read_blocking(pico_i2c->handle, msg->addr, msg->buf, msg->len, false);
if (res != msg->len)
{
return -RT_ERROR;
}
}
else
{
res = i2c_write_blocking(pico_i2c->handle, msg->addr, msg->buf, msg->len, false);
if (res != msg->len)
{
return -RT_ERROR;
}
}
}
return num;

Copilot uses AI. Check for mistakes.

{
if(size % FLASH_SECTOR_SIZE)
{
LOG_E("erase size must be %d-byte alignment", FLASH_SECTOR_SIZE);
Copy link
Preview

Copilot AI Aug 5, 2025

Choose a reason for hiding this comment

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

The erase function checks for size alignment but doesn't return an error value when the condition fails, continuing with the potentially invalid erase operation.

Suggested change
LOG_E("erase size must be %d-byte alignment", FLASH_SECTOR_SIZE);
LOG_E("erase size must be %d-byte alignment", FLASH_SECTOR_SIZE);
return -RT_EINVAL;

Copilot uses AI. Check for mistakes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
action github action yml imporve BSP
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants