弱问:STM32F4把栈放在CCM RAM时printf不正常

2019-12-10 18:22发布

gcc,重写了_write函数,输出字符到USART1。
在lds里如果设置_estack = 0x10000000 + 64K,则printf会直接蹦到HardFault;
设为_estack = 0x20000000 + 128K, 则printf一切正常。

查了一下map文件,是在调用_write之前,在_puts_r就进了HardFault了。
usart没有用到dma发送,就是普通方式,不至于受限吧。。

难道CCM只能手动建堆来用么?不用printf肯定不行啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
pt2go
1楼-- · 2019-12-10 20:38
本帖最后由 pt2go 于 2019-8-2 10:37 编辑

ccm是紧耦合,只能和cpu通信,不能直接和外设通信,如果uart直接用到ccm的地址就会出错,
不过你没有dma,这个理论上是可以访问的
huangqi412
2楼-- · 2019-12-10 22:48
单步一下,看看栈指针

一周热门 更多>