CubeIDE中移植rtt nano,移植好串口后,串口只能输出version信息,没有出现控制台,也就是显示">",同样的代码,在keil中就可以实现控制台输入。两个平台的代码,除了汇编部分外其他都没有变化,请问这可能的原因会是什么?rtt nano通过cubeMX添加和通过rtt studio生成的都移植过去测试了,在cubeIDE中均无法实现输入(控制台的>都没有出现,但串口发送功能正常),但这些代码在rtt studio或者keil中又可以,我也是实在没头绪了……
我倒是还做了一个方案,就是eclipse+arm-gcc搭建的开发环境,也是出现同样的问题,我的arm-gcc是最新2020的(9.3.1),cubeide虽然不太清楚arm-gcc版本,但至少也是2018年以后的,出现了同样的问题。rtt-studio的arm-gcc是5.4.1,是个比较老的版本,所以我猜想是不是rtt-nano(或者包括rtt完整版),用新的arm-gcc编译后有bug或者是不兼容,导致出现的一些莫名其妙的问题?
已经打开了,同样的代码在keil和rtt-studio中是可以用的,但在高版本的arm-gcc编译后就无法正常使用控制台。
@cuphead 问题应该是出自attribute上面,不同编译器和编译器版本对attribute的处理不一样
@武广高铁 感谢,确实发现是初始化的时候finsh_system_init没有初始化造成的,原因就是段的值不对(__rt_init_rti_board_end)没有进入初始化的for循环中,应该是ld文件造成的,但毕竟刚转过去,这块还是懵逼的,现在的简单解决办法就是扣出finsh_system_init这个函数手动初始化,相当于修改了源码,不过目前还没发现什么问题。只是想要彻底解决这个问题……毕竟用新的arm-gcc的人应该有不少。