打印

[技术交流] P535 加装128M RAM后,ROM的相应修改方法

本主题由 Oldcat 于 2008-5-4 01:06 设置高亮

P535 加装128M RAM后,ROM的相应修改方法

为P535加装128M SDRAM后ROM的相应修改方法(其他机型类似)

本论坛去年就曾有高人在P535换上128MB的SD颗粒,但是系统还是只能认出64M。这是因为CE系统BSP的MEMORY MAP只分配了64M的地址空间而无

法寻址其余的64M。
早就在寻找方法,但是一直没空去仔细研究,断断续续查了一些资料,前段时间抽空整理了一下,就把研究所得和大家分享一下,算是为改内
存者提供一个借鉴。
本人时间不多,有空会和大家讨论,但是有些非关键问题不能一一回复请见谅。
首先简要说明一下CE系统的内存映射(MEMORY MAP),CE系统下采用32位CPU可以寻址4GB(0x00000000~0xFFFFFFFF)的内存地址,其中
0x80000000~0xBFFFFFFF为虚拟地址,其余为物理地址(视乎各个硬件平台的总线地址分配所不同),在BSP(板级支持包)中有一张表叫做
OEMAddressTable定义了这些地址的分配以及虚拟地址的映射。此表其实是一个结构体,每个成员由三个DWORD组成,依次序分别表示虚拟地址
、物理地址、分配长度,其中分配长度值的单位是MBYTE。在P535采用的PXA27x平台上参考了公板的配置可以分析出OEMAddressTable被Build在
ROM的Boot区,即GalaxyII.NB0(os-rom)的part0,其type==0x20,其实就是part0的NK中。我们就是要改变其中分配SDRAM的长度来启用那消
失的RAM空间。下图蓝色部分就是OEMAddressTable:


这个表每三个DWORD为一组,可以得到如下定义:
Virtual_addresses phyisical_addresses lengh(*1M) 描述
0x80000000  0x00000000  0x40(64) Boot Flash
0x84000000  0x04000000  0x40(64) Secondary flash
0x88000000  0xa0000000  0x40(64) SDRAM
0x8f000000  0x40000000  0x20(32) Memory-mapped registers
0x91000000  0x2c000000  0x40(64) PCMCIA S0 common memory space
0x95000000  0x28000000  0x40(64) PCMCIA S0 attribute memory space
0x99000000  0x20000000  0x20(32) PCMCIA S0 I/O space
0x9b000000  0x4c000000  0x01(1)  USB host controller
0x9b100000  0x48000000  0x01(1)  Memory controller
0x9b200000  0x44000000  0x01(1)  LCD controller
0x9b300000  0xe0000000  0x01(1)  Zero-bank
0x9b400000  0x14000000  0x01(1)  eXpansion board header
0x9b500000  0x10000000  0x01(1)  USB2.0/IDE controller
0x9b600000  0x0a000000  0x01(1)  nCS2 (upper half)[??SRAM]
0x9b700000  0x08000000  0x01(1)  nCS2 (lower half)[??Board registers]
0x9b800000  0x50000000  0x01(1)  Camera peripheral interface
0x9b900000  0x58000000  0x01(1)  Internal memory PM registers
0x9ba00000  0x5c000000  0x01(1)  Internal SRAM (64KB bank 0).
0x00000000  0x00000000  0  结束标志

很明显,我们只要把图中红色的0x40改为0x80就是128M了,但是在这里却不能这样改,为什么呢?!
请看SDRAM这一行的虚拟地址值0x88000000和紧接着的Memory-mapped registers虚拟地址值0x8f000000,他们的相差空间只有0x7000000=112MB
,如果把第三行的0x40改为0x80的话就会有0x1000000的地址和第四行重叠。
怎么办呢?
有2条路:
1、把0x40改为0x70只使用112M。但这样有些可惜,改好如下图。


2、改掉第四行的虚拟地址!可是第四行的0x8f000000到第五行的0x91000000正好用掉了分配给它的长度0x20M。不要紧,我们把第四行的虚拟
地址移到最后空余的地方去即可。我们看到最后的虚拟地址是0x9ba00000加上长度0x00100000等于0x9BB00000,所以我们可以把他映射到
0x9c000000上去。改好的如下图:


改完以后重新crc、刷机看看。
其他机型的OEMAddressTable不尽相同,但是在差不多的区域寻找这样一串数据,一般查找HEX值00 00 00 80 xx xx xx xx再看看最后三个
DWORD都为00 00 00 00(OEMAddressTable结束标志)就是了。

以上是对于修改ROM中内存映射的研究心得,但是本人声明并没有焊上128M颗粒去测试,但是刷机绝没有危险,算是给要实践者作抛砖引玉吧。
写得匆忙,不正之处请指出,谢谢!



***************************
2008-5-3更新
经过本坛技术群测试,P535单单修改OEMAddressTable无效。华硕还搞得这么复杂。。
好在俄国论坛高手GreateVK为750写了2段子程序嵌入到nk去完成128M的修改,535的修改就遵从拿来主义吧。


把这2段代码嵌入nk后还要修改其父过程CALL这2段子过程的跳转指令操作数(相对地址),另外还要修改这2段子程序对一些数据的引用。
同时,经过试验发现只要修改XIP中的NK就可以实现,Boot区不用修改,可能XIP最后载入内存运行生效的吧。并且今后Build新的XIP后也必须作相应调整。


具体修改方法比较复杂,不容易表达清楚,以后有机会再讨论。目前还是由本坛高手提供修改好的ROM吧。

最后再次感谢俄国论坛高手GreateVK为老机器带来新活力,向他表示致敬的同时也对反汇编他的程序聊表歉意!

成功后的P535截图!


附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • tsinghe +96 IMG都裸体了,汉.... 2008-5-12 20:20
  • tsinghe 部落币 +50 IMG都裸体了,汉.... 2008-5-12 20:20
  • tsinghe 智慧 +20 IMG都裸体了,汉.... 2008-5-12 20:20
  • acwan +96 什么时候i350也能加就好了 2008-5-5 19:33
  • acwan 部落币 +50 什么时候i350也能加就好了 2008-5-5 19:33
  • acwan 智慧 +20 什么时候i350也能加就好了 2008-5-5 19:33
  • star3000 +96 我怎么忘了加分呢 2008-5-5 06:24
  • star3000 部落币 +60 我怎么忘了加分呢 2008-5-5 06:24
  • star3000 智慧 +30 我怎么忘了加分呢 2008-5-5 06:24
  • 高飞 +96 weisun老大不是一般的强 2008-5-4 04:25

TOP

裸体顶这个帖子!

TOP

引用:
原帖由 IMG 于 2008-4-25 00:41 发表
裸体顶这个帖子!
没看见你的JJ

TOP

修改成功了!

这里上多2张修了新XIP核心的图片!

这个XIP和SYS是19701,这个ROM的PAGEPOOL设置为12M。

请看截图:

附件: 您所在的用户组无法下载或查看附件
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

64M的内存MAP:

v80000000-88000000 -> p00000000-08000000   8000000
v88000000-8c000000 -> pa0000000-a4000000   4000000
v8f000000-91000000 -> p40000000-42000000   2000000
v91000000-95000000 -> p2c000000-30000000   4000000
v95000000-99000000 -> p28000000-2c000000   4000000
v99000000-9b000000 -> p20000000-22000000   2000000
v9b000000-9b100000 -> p4c000000-4c100000    100000
v9b100000-9b200000 -> p48000000-48100000    100000
v9b200000-9b300000 -> p44000000-44100000    100000
v9b300000-9b400000 -> pe0000000-e0100000    100000
v9b400000-9b500000 -> p14000000-14100000    100000
v9b500000-9b600000 -> p10000000-10100000    100000
v9b600000-9b700000 -> p0a000000-0a100000    100000
v9b700000-9b800000 -> p08000000-08100000    100000
v9b800000-9b900000 -> p50000000-50100000    100000
v9b900000-9ba00000 -> p58000000-58100000    100000
v9ba00000-9bb00000 -> p5c000000-5c100000    100000
vf0000000-f0100000 -> p00000000-00100000    100000
vfffd0000-fffd4000 -> pa07d0000-a07d4000      4000
vffff0000-ffff1000 -> pa07d4000-a07d5000      1000
vffffc000-ffffd000 -> pa07d5000-a07d6000      1000

有点担心移动那个0x8f000000 0x40000000 0x20(32) Memory-mapped registers
到9C000000是否会有问题。

修改后内存的128M MAP应该是这样:
v88000000-8c000000 -> pa0000000-a8000000   8000000
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

我下载了下面这个帖子的ROM回来对比一下。
这个ROM是俄国人发的P750支持128M RAM的ROM

http://translate.google.cn/trans ... en&hl=zh-CN&ie=UTF8

他这个ROM就是XIP的地址。。。。。。。
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

老猫加油

TOP

老猫所言即是,改虚拟地址分配的话可能会在以后的引用时出错。
xip修改偶就不研究了,由老猫亲自操刀比较稳妥,嘿嘿。

不过看了G900的OEMTableAddress,它128的SDRAM分为2个BANK,每个64m,具体硬件上如何接偶没有研究过,坛中若有熟悉此门道的大虾可否讨论一下。

900的图:
附件: 您所在的用户组无法下载或查看附件

TOP

俄国人的P525 128M ROM也出来了!
http://209.85.171.104/translate_ ... rev=/language_tools

有BOOT段、XIP段和IMGFS段,BOOT部分的NK没有修改,XIP部分NK.EXE S000部分修改也是同样的地方。
附件: 您所在的用户组无法下载或查看附件
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

最后更新了,赶紧测试!

快~~~~~~~~~
附件: 您所在的用户组无法下载或查看附件
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

猫,看群里的留言

TOP

测试这个!!!!

本ROM仅限技术小组内部下载测试,不提供其他下载,请谅!
附件: 您所在的用户组无法下载或查看附件
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

这个帖子开放了!

有研究精神的兄弟自己去研究吧!!!

上面的2个测试ROM,都不提供下载,请见谅!
岂能尽如人意,但求无愧于心!
人们在追求理想的同时,很多时候会忘了自己的原意和初衷。

TOP

虽然我看起来是天书,但是看的还是很开心,哈哈!

TOP

weisun这段说的很简洁又清楚,weisun适合当老师!

TOP

有点太高深,收藏备用

TOP

还是老大厉害            

TOP

强帖要顶上~~~

TOP