You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3B裸机Rust代码实现板载SD卡指示灯闪烁故障求助

树莓派3B裸机Rust代码无法让SD卡活动指示灯闪烁

我尝试用裸机Rust代码让树莓派3B上的SD卡活动绿色指示灯闪烁,但通电后指示灯仅亮1秒(SD卡活动状态)就熄灭,没有闪烁效果。

已完成操作

  • 确认板载SD卡活动指示灯硬连接至GPIO 16
  • 在代码中设置GPIO 16为输出模式:
    // Set pin 16 to output mode
    let mut reg = GPIO_GPFSEL1.read_volatile();
    reg &= !(0b111 << 18); // Clear bits 18-20
    reg |= 0b001 << 18; // Set bits 18-20 to output mode
    GPIO_GPFSEL1.write_volatile(reg);
    
  • 编写循环代码设置/清除引脚输出值:
    GPIO_GPSET0.write_volatile(1 << LED_PIN);
    // ...
    GPIO_GPCLR0.write_volatile(1 << LED_PIN);
    
  • 根据BCM2837手册定义寄存器常量:
    const GPIO_GPFSEL1: *mut u32 = (0x3F20_0004) as *mut u32;
    const GPIO_GPSET0: *mut u32 = (0x3F20_001C) as *mut u32;
    const GPIO_GPCLR0: *mut u32 = (0x3F20_0028) as *mut u32;
    // GPIO pin number for the onboard LED
    const LED_PIN: u32 = 16;
    
  • 编译为ARM架构,通过链接器将代码起始地址对齐至0x8000,objdump -D的顶部输出如下:
    Disassembly of section .text:
    
    00008000 <_start>:
        8000:       e24dd058        sub     sp, sp, #88     @ 0x58
        8004:       e3001004        movw    r1, #4
        8008:       e3431f20        movt    r1, #16160      @ 0x3f20
        800c:       e58d1034        str     r1, [sp, #52]   @ 0x34
        8010:       e58d1038        str     r1, [sp, #56]   @ 0x38
        8014:       e5910000        ldr     r0, [r1]
        8018:       e58d003c        str     r0, [sp, #60]   @ 0x3c
        801c:       e59d003c        ldr     r0, [sp, #60]   @ 0x3c
        8020:       e58d0000        str     r0, [sp]
        ....
    
  • 使用以下命令将ELF文件转换为扁平二进制文件:
    arm-none-eabi-objcopy -O binary target/armv7a-none-eabi/debug/blinking_led target/binary/kernel7.img
    
  • 将SD卡格式化为FAT32,复制树莓派固件仓库中的bootcode.bin、fixup.dat、start.elf文件,以及生成的kernel7.img到SD卡

故障现象

通电后绿色指示灯仅亮1秒(显示SD卡活动)后熄灭,并未出现闪烁效果。由于裸机代码调试难度大,无法定位问题,希望有相关经验的人帮忙排查错误,若需要更多信息我会尽力提供。


内容的提问来源于stack exchange,提问作者LucioleMaléfique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:52:04