购买优龙公司的YL2440开发版,该板在BANK6片区外接两片SDRAM,容量为32x2MB,我想要在bank7片区再接两片SDRAM,欲将SDRAM容量扩展到64*2=128M。
按照网上介绍的方法,修改map.a里面的OEMAddressTable
在DCD 0x8C000000, 0x30000000, 64 ;BANK6
后面增加: DCD 0x90000000, 0x38000000,64 ;BANK7
修改
DCD 0x90800000, 0x48000000, 1 ; Memory control register
DCD 0x90900000, 0x49000000, 1 ; USB Host register
DCD 0x90A00000, 0x4A000000, 1 ; Interrupt Control register
DCD 0x90B00000, 0x4B000000, 1 ; DMA control register
DCD 0x90C00000, 0x4C000000, 1 ; Clock & Power register
DCD 0x90D00000, 0x4D000000, 1 ; LCD control register
DCD 0x90E00000, 0x4E000000, 1 ; NAND flash control register
DCD 0x90F00000, 0x4F000000, 1 ; Camera control register
DCD 0x91000000, 0x50000000, 1 ; UART control register
DCD 0x91100000, 0x51000000, 1 ; PWM timer register
DCD 0x91200000, 0x52000000, 1 ; USB device register
DCD 0x91300000, 0x53000000, 1 ; Watchdog Timer register
DCD 0x91400000, 0x54000000, 1 ; IIC control register
DCD 0x91500000, 0x55000000, 1 ; IIS control register
DCD 0x91600000, 0x56000000, 1 ; I/O Port register
DCD 0x91700000, 0x57000000, 1 ; RTC control register
DCD 0x91800000, 0x58000000, 1 ; A/D convert register
DCD 0x91900000, 0x59000000, 1 ; SPI register
DCD 0x91A00000, 0x5A000000, 1 ; SD Interface register
DCD 0x91B00000, 0x5B000000, 1 ; AC97 Interface register
DCD 0x91C00000, 0x5C000000, 1 ; ATAPI register cs0 add by fly
DCD 0x91D00000, 0x5D000000, 1 ; ATAPI register cs1 add by fly
使虚拟地址都偏移0x04000000,如0x90800000改为0x94800000
这时系统可以正常启动,说明虚拟地址物理地址映射成功,但这是原来64兆的系统啊……
我又修改Config.bib的RAM 8DE00000 02200000 RAM为:
RAM 8DE00000 06200000 RAM ;增加64M
但改动过后启动时候停在OEMInit Done...,进不了wince桌面,到底哪儿还有问题,我快崩溃了……
虚拟地址干吗都偏移0x40000000(64MB)呢?
对BANK7的初始化做了吗?管脚使能,时钟使能。
用Debug模式,然后把信息贴出来好分析。
我也是按照网上介绍的方法做的,是因为新加的bank7(64M)占用了虚拟地址空间,所以下面的虚拟地址都要偏移一下。
我是新手,问一下bank7的初始化(管脚使能,时钟使能)在哪儿设置啊?
我看了一下s3c2440的手册,把bank6和bank7的banksize都设为64M,似乎bank7的首地址就会自动改为0x34000000,这样它们的物理地址就连续了,从0x30000000到0x38000000
另外,问个更菜的问题:“用Debug模式,然后把信息贴出来”是什么意思?
我现在的做法是:pb中修改参数后在“release”模式下sysgen,然后把生成的nk.bin用厂家提供的bootloader下载到开发板上。“OEMInit Done...”等信息是在一个叫DNW的串口工具里看到的,什么时候进行debug?
就你一个人回答问题,虽然未能解决问题,分还是都给你吧。