我在头文件里面include了stdio.h并在main里面使用了pfrintf。后来系统编译的时候说我.text的段内存不够大。我看了一下初始时的cmd里面,text是放在page0里面的,长度只有0x1000。加上stdio.h之后,编译器说.text需要占用长度2200。因为cmd里有所有的段地址都安排好的,而且几乎是相邻的。那我就重新定义了一个段RAML9,选取了一个空间,定义了长度,将.text指定到这个段去。结果编译的时候就出现C28xx: Loader: One or more sections of your program falls into a memory region that is not writable.
我觉得了修改段长度或是自己定义一个新的段这是允许的,但我不知道是不是有些段不能给用户操作使用。请问出现这个错误是什么原因呢?但我不修改的话,加了新的头文件进来,对.text的长度要求增大了啊,那必须是要做修改的啊。
此帖出自
小平头技术问答
说得太好了。我刚刚又仔细看了一下datasheet。除开被reserve的区域,能用的真的不多。除了你说的那几个部分剩下的不是提供给我们自由分配的。但我发现,就算是随意分配了(比方说乱分配到reserved区域),如果程序没错,编译的时候是不会报错的,只有在你烧写的时候。会报错。但编译过后点开map看看,会发现你所分配到reserved里的段里面已经被占用了,也就是你编译的时候把资料写进去了,尽管那个段不能给我们这样用。但编译器在烧写程序的时候才报错。你觉得呢?
一周热门 更多>