|
前些天买了一个二手GBA学嵌入式
用的是devkitadv,一个别人配置好的编译工具
然后用codeblock配置好编译器
照网上抄了一段程序:
int main(void)
{
typedef unsigned short u16;
*(u16 *) 0x04000000 = 0x0404;
*(u16 *) 0x05000000 = 0x0A00;
*( (u16 *) 0x05000000+1) = 0xFD00;
int i=0;
for(i=0; i<240*160; i=i+2)
{
*( (u16 *) 0x06000000 + i ) = 0x0001<<8 | 0x0000;
}
return 0;
}
然后make all
生成一个 test.o 和test.bin
最后用gba 运行,发现 test.bin 运行不正确,一直显示白屏(正常应是紫黑相间的条纹)
而把 test.o 改成 test.bin 运行这个test.bin就正常
现在迷茫了:
1,test.o 不是目标文件吗? 为什么改名后能正常运行
2,为什么连结成 test.bin 后却不正常,test.o 和test.bin 到底是什么关系?
没学过编译原理,只知道先 生成目标文件,再连结生成可执行文件,却不知深意 |
|