使用studio基于STM32L4R5的芯片创建了一个裸工程,编译运行后发现无法正常打印,debug后发现rt_thread_self()返回为空,然后卡死在了断言中。再往下找问题,发现压根没有进入rtthread_startup(),再往下追踪,发现并没有进入entry()函数。
解决方案:打开libraries->CMSIS->Device->ST->STM32L4xx->Source->Templates->gcc->startup_stm32l4r5xx.S,然后找到Reset_Handler函数,他最后应该会跳转到LoopFillZerobss中去,然后将这个函数的最后一行的bl main改成bl entry,问题解决。
按理来说这是芯片包的问题,于是我删除了L4下的所有芯片包,并安装了最新的2.3.0,编译烧录,也能正常运行了。