durian

Results 17 comments of durian

我用rust-readobj 命令去看两个rust版本生成的02power文件发现 1.51 ``` ... SectionHeaderOffset: 0xBA48 Flags [ (0x1) EF_RISCV_RVC (0x1) ] ... ``` 1.55 ``` ... SectionHeaderOffset: 0xA988 Flags [ (0x5) EF_RISCV_FLOAT_ABI_DOUBLE (0x4) EF_RISCV_RVC (0x1) ] ... ```...

@wyfcyx cargo build --release 1.55生成的文件是可以运行的😂, 而且rust-readobj也是 ``` SectionHeaderOffset: 0x5C48 Flags [ (0x5) EF_RISCV_FLOAT_ABI_DOUBLE (0x4) EF_RISCV_RVC (0x1) ] ``` 我是不知道是啥原因了,求帮助啊

@wyfcyx 我最后测试到的原因是 代码优化等级,如果在 1.55版本的.cargo/config文件中加入 ```toml [profile.dev] opt-level = 1 # 就是opt-level > 0, 默认dev profile的 opt-level = 0 就是不优化 ``` 那么直接运行cargo build出来的elf文件是可以运行的,不会出现段错误,只不过gdb debug的时候会丢失一些信息,导致你在clion里面debug下一步的时候有时候会直接下两步下三步(其实原因就是代码经过了编译器优化)(强迫症抓狂) 1.51版本则没有这个问题 我猜测 rust 1.51版本到1.55版本的迭代中,代码编译优化这方面肯定改了什么东西导致了这个问题,但是我对rust内部的编译细节也是两眼一抹黑😂,我会去rust的github仓库里提issue,看看能不能碰到大神给解决一下,目前我就用opt-level = 1继续往下学习了(强迫症只能强行忍耐了)

好家伙,我直接好家伙,rust github仓库那里5k+的 open issue. 😀

@wyfcyx qemu 升级到5.2.0 问题解决了。(不能升级到最新的6.0.0, rustsbi 会报错,就是qemu-riscv64能正确工作,但qemu-system-riscv64不行) 目前来看,应该是qemu5.0.0有bug, 在5.2.0修复了。但是呢,rust 1.55也肯定改变了一些东西才触发了qemu5.0.0的bug,所以这波啊,这波是他们俩配合搞我😂

The led-roulette elf file is not in 05-led-roulette folder, it's in microbit floder ``` \discovery\microbit> arm-none-eabi-gdb target/thumbv7em-none-eabihf/debug/led-roulette ```

@rashack It may be that you forgot uncomment below code in Embed.toml ` [default.general] chip = "nrf52833_xxAA" # uncomment this line for micro:bit V2 # chip = "nrf51822_xxAA" # uncomment...