startup_CH32Vxxx.S 中的中断声明 .weak 全部失效了。
那意味着,我自己写的、模板内的NMI_Handler等,全部没有了,全部转跳到 startup 内 XXX_Handler: 1: j 1b 这边了。
startup_CH32Vxxx.S 中的中断声明 .weak 全部失效了。
那意味着,我自己写的、模板内的NMI_Handler等,全部没有了,全部转跳到 startup 内 XXX_Handler: 1: j 1b 这边了。
用的是最新版的套件Linux下1.3.0版 MRS Studio Community
目前的gcc 8.2.0使能-flto以后代码即使编译通过运行也有问题,等gcc更新吧。
我现在试下来,就是 weak 的问题,要不就是 _sbrk 被优化掉了导致链接报错。
后者可以通过添加 __attribute__((used)) 解决。
前者还没找到合适的方法,只有在startup.S内手动注释掉我需要的中断声明。
你们还有没有遇到其他问题?
-flto看上去能省不少空间,可是跑不起来啊。
使用xpack的risc-v gcc,10.2版。嗯 ,-flto 可以了。就是 __attribute__((interrupt("WCH-Interrupt-fast"))) 认不出来,然后某些扩展指令集优化没得了。
各有千秋吧。
我试过公版的gcc,10和12都试过,即使使能-flto以后也比WCH的8.2版本代码大很多
gcc还把CSR相关指令放到扩展中了,和现在的MRS不兼容。