作者holymars ()
看板b95902HW
标题[组语] GBA memory map
时间Mon Dec 10 16:05:09 2007
在HAM的安装目录/docs/korth_gbatek.html
这份文件中,有一节是关於GBA架构的memory map
其中一段
General Internal Memory
0000:0000-0000:3FFF BIOS - System ROM (16 KBytes)
0000:4000-01FF:FFFF Not used
0200:0000-0203:FFFF WRAM - On-board Work RAM (256 KBytes) 2 Wait
0204:0000-02FF:FFFF Not used
0300:0000-0300:7FFF WRAM - In-chip Work RAM (32 KBytes)
0300:8000-03FF:FFFF Not used
0400:0000-0400:03FE I/O Registers
0400:0400-04FF:FFFF Not used
在作业三中,真正能自由使用的记忆体
只有0x2012C08 ~ 0x203FFFF
0x300000 ~ 0x3007FFF
这两块而已
刚刚发现有同学因为改动了0x0000000~0x00003FFFF这块保留给BIOS使用的记忆体
造成debug mode会跑出正确结果,而模拟器却会错误的情形
这是由於该debugger(GDB+Insight)并不会去检查你的记忆体运用是否符合GBA的规则
但是模拟器是照着真实的硬体去模拟的
因为GBA并没有一个作业系统来作memory management
使用到不该用的记忆体位址可能造成不可预期的结果
如上例中.改动到BIOS memory会造成最後图片无法显示之类
因此请到目前仍没有Accept的同学,注意看看是不是用到了非法记忆体的关系
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.91.5
1F:推 bluenowhere:那请问助教如果想在 myfilter.s 中开一个比较大的阵列 12/12 01:15
2F:→ bluenowhere:来存东西,是不是就要对应map上可以自由使用的记忆体区 12/12 01:17
3F:→ bluenowhere:块,然後自行设定阵列起始位置到空的地方? 还是要用什 12/12 01:18
4F:→ bluenowhere:麽其他的作法? 12/12 01:19
5F:→ bluenowhere:谢谢助教(...呃,应该是助教吧 "^^a) 12/12 01:19
6F:→ holymars:在myfilter.s里面用derective宣告的话,不用担心这个问题 12/13 00:29
7F:→ holymars:除非你开太大了.. 12/13 00:30