各位小伙伴,最近学习STM32F407遇到了很多的问题,有的问题被我解决了,有点还迟迟没有解决。通过遇到的这些问题,我有很多疑问,希望有知道的小伙伴能够解惑,谢谢各位啦。
1、在学习了内存管理一节当中,为什么要管理STM32内部的内存(SRAMIN和SRAMCC)? 难道STM32内部管理机制不好么? STM32内部是怎么管理这些内存的? 在哪里可以看到呢?
2、汇编文件startup_stm32f40_41xxx.s中分配的堆和栈是分配在那一片内存上的呢? SRAMCC还是SRAMIN呢? 全局变量和静态变量又是在哪里?
3、SRAMIN一共有128KB的大小,内存池占用了100KB,内存管理表大概占用了将近7BK,也就是说对于SRAMIN这片内存,用户自己使用了107KB的空间,只能使用mymalloc函数来申请空间。值留下了20KB左右的空间。如果第二个问题中的堆栈是在这里分配的,那么岂不是那个汇编文件就只有20KB的空间可以给堆栈使用。
4、SRMCC主要是用来干什么的? 从原子哥的注释可以看到是给CPU使用的,但是具体作用呢? ·
5、既然SRAMCC(共64KB)主要是给CPU使用的,意思是不是说用户不能使用呢? 还是说用户根本就访问不到这里的存储空间? SRAMCC分配了60KB的内存池,内存管理表使用了3.75KB,将近4KB,也就是说我们把SRAMCC全部都自己管理了。
6、Execution Region指的是哪个地方呢? 是内存么? 如果是,那么指得是SRAMCC还是SRMIN呢?
7、STM32的flash采用总线是的总线接入,那么它的flash的存储空间是可以任意访问的。也就是说我们下载进入flash中的代码是可以直接在flash中执行的,不用加载到ram。从网上博客了解到,其实代码需不需要加载到RAM,其实是可以自己控制的,分散加载脚本就是用来干这个的。那么,MDK是怎么判断用户的代码是否需要加载到RAM中呢? 还是所有的都不加载?
暂时先这些问题吧,希望知道的朋友能够答疑解惑,谢谢各位小伙伴了
一周热门 更多>