前天开始学ARM,照着《ARM嵌入式Linux系统开发技术详解》书上写了第一个程序,编译却有错误,于是就去baidu,google找,发现网上遇到这一问题的初学者确实比较多,不过找了好久,很多提问,很少解答。
问题是这样的:
在ADS1.2中的Code Warrior中编译一个简单的程序,结果报错如下:
Error : A1186E: Code generated in data area;
源代码是:(开头还要用tab或四个空格)
IMPORT Main
AREA Init,CODE,READONLY
ENTRY
LDR R0,=0x3FF0000
LDR R1,=0xE7FFFF80 ;配置SYSCFG,片内4K Cache,4K SRAM
STR R1,[R0]
LDR SP,=0x3FE1000 ;SP 指向4K SRAM 的尾地址,堆栈向下生成
BL Main
B .
END
这个编译错误就出在:AREA Init,CODE,READONLY 这一句代码,我们细心点可能就可以发现这一错误,这一语句中的逗号用的是中文符号,编译器不识别,所以出现了编译错误。把中文都好改为英文逗号就OK了。
之所以会出现这个问题,我想很多人都和我一样,这段代码都是COPY过来的,这书的电子版本这个符号就错了。所以,以后参看别人程序还是自己写一下比较好。
COPY之后也就知道有这种错误了。
用户377235 2012-5-19 17:36
谢谢