11883|24

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

S3C2440 增加SDRAM至128M后的问题 [复制链接]

公司基于优龙的板子开发的一块2440板增加至128MRAM,nGCS6,nCGS7各接64M,修改OEMAddrtab表和BIB文件如下

MEMORY
    NK      80200000  01E00000  RAMIMAGE
    RAM     82000000  05900000  RAM
    FLASH   92000000  00100000  RESERVED


g_oalAddressTable

        DCD     0x80000000, 0x30000000, 64      ; 64 MB DRAM BANK 6
        DCD        0x84000000, 0x38000000, 64      ; 64 MB DRAM AANK 7
        ;DCD     0x84000000, 0x10000000, 32      ; nGCS2: PCMCIA/PCCARD
        DCD     0x88000000, 0x18000000, 64      ; 32 MB SROM(SRAM/ROM) BANK 3
        ;DCD     0x88000000, 0x20000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 4
        ;DCD     0x8A000000, 0x28000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 5
        DCD     0x8C000000, 0x08000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 1
        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     0x92000000, 0x00000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 0
        DCD     0x00000000, 0x00000000,  0      ; end of table

;------------------------------------------------------------------------------
进入WINCE5.0后到SP=FFFFC7CC就跑不下了,请教下这是什么问题造成的?是不是还有其它文件要改?

Memory Test(30200000h-33800000h):O.K.
Load Kernel...
#########################run 0x3022d5a8...
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb  8 2007 at 23:36:51
ProcessorType=0920  Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8022d47c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
InitDisplay:800*480
Sp=ffffc7cc

最新回复

lz解决问题了没?? 不明白你为什么用两个片选nGCS6,nGCS7?? 既然你两片并联,他们的地址线应该是相同的,不应该一个接nGCS6,一个接nGCS7 你这样接应该相当于两个64M * 16位内存 对于接低16位数据线的片: 你内存只用到16位,没有超过16位的数 (譬如int a=200)是没有问题的 但是如果你用32位数,譬如(int a=2^20),高16位并没有对应的内存的,所以你是无法操作高16位的 而对于接高16位的那片正好相反,没有可以操作的低16位 楼主应该只用一个片选才能并连成32位  详情 回复 发表于 2010-6-20 01:05
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
前不久才有一个内存扩充的帖子,回答的很详细的,你搜索一下吧
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
公司基于优龙的板子开发的一块2440板增加至128MRAM,nGCS6,nCGS7各接64M,修改OEMAddrtab表和BIB文件如下
请问你接成两个bank ,请问你是如何访问的?

因为一个bank 就发出了32bit的地址,你两个bank如何弄?

你bootloader测试访问所有内存地址没有问题吗?

我的是接在同一个bank上的。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
我们是硬件上接法是2片16BIT并联成一组32BIT ,分别接nGCS6,nGCS7片选.这样组成128M的.这样接应该可以吧
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 LUO88988 的回复:
我们是硬件上接法是2片16BIT并联成一组32BIT ,分别接nGCS6,nGCS7片选.这样组成128M的.这样接应该可以吧


表面上这样比较合理,但是2440 的内存控制器却限制死了。毕竟这和系统以及内存控制器仅仅相关的。

我觉得会有问题。如果楼主成功了,通知一声,不要让我继续犯错。

如果你的bootloader起来了——你现在的现象未必是起来了,有可能是只用了一片。硬件上实际只能控制一片

但是你在wince内存映射表又加入了另外的64M。这样在wince 的kernelFindmemory里面就会挂了,
然后就会停在你所说的位置上。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
关注一下,好问题。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
测试过bootloader 是起来了,我可以DOWNLOAD东西到nGCS7的地址里面去,也就是0X38000000~0X40000000 的这个地址里面,并读出
也就是2440支持这样接法没问题,有可能问题还是在寄存器配置或WINCE的配置上
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
     
   DCD    0x80000000, 0x30000000, 64      ; 64 MB DRAM BANK 6
   DCD        0x84000000, 0x38000000, 64      ; 64 MB DRAM AANK 7


这个分配是不对的吧,2440的Datasheep上面这样设置的。在195页。
Address             2MB        4MB         8MB         16MB        32MB        64MB       128MB
Bank 6
Start address   0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000
End address     0x301F_FFFF 0X303F_FFFF 0X307F_FFFF 0X30FF_FFFF 0X31FF_FFFF 0X33FF_FFFF 0X37FF_FFFF
Bank 7
Start address   0x3020_0000 0x3040_0000 0x3080_0000 0x3100_0000 0x3200_0000 0x3400_0000 0x3800_0000
End address     0X303F_FFFF 0X307F_FFFF 0X30FF_FFFF 0X31FF_FFFF 0X33FF_FFFF 0X37FF_FFFF 0X3FFF_FFFF

所以应该是这样才对:
     
   DCD    0x80000000, 0x30000000, 64      ; 64 MB DRAM BANK 6
   DCD          0x84000000, 0x34000000, 64      ; 64 MB DRAM AANK 7

 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 4 楼 gooogleman 的回复:
引用 3 楼 LUO88988 的回复:

我们是硬件上接法是2片16BIT并联成一组32BIT ,分别接nGCS6,nGCS7片选.这样组成128M的.这样接应该可以吧


表面上这样比较合理,但是2440 的内存控制器却限制死了。毕竟这和系统以及内存控制器仅仅相关的。

我觉得会有问题。如果楼主成功了,通知一声,不要让我继续犯错。

如果你的bootloader起来了——你现在的现象未必是起来了,有可能是只用了一片。硬件上实际只能控制一片

但是你在wince内…



是可以用两片的,用BANK6 BANK7的,LZ的方法是可行的。
“我们是硬件上接法是2片16BIT并联成一组32BIT ,分别接nGCS6,nGCS7片选.这样组成128M的.这样接应该可以吧”这种说法是可行而且是对的
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

10
 
没有用过2440,不过你可以先确定一个东西,就是扩充后的128MB的物理地址是不是连续的
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 xuweiyue 的回复:
   
  DCD    0x80000000, 0x30000000, 64      ; 64 MB DRAM BANK 6
  DCD 0x84000000, 0x38000000, 64      ; 64 MB DRAM AANK 7


这个分配是不对的吧,2440的Datasheep上面这样设置的。在195页。
Address            2MB        4MB        8MB        16MB        32MB        64MB      128MB
Bank 6
Start address  0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 …

是38000000没错  
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
如果地址是连续的,好弄:修改bib、g_oalAddressTable
如果不是连续的,就不能使用上面的方法了,得使用此函数:OEMGetExtensionDRAM()。此函数在platform\common下,你也可以写到你的KERNEL\OAL\INIT.c里面,我采用后面的方法。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

13
 
谢谢
bootloader中没有配置BANK6,BANK7的大小,原来是BANK6/BANK7配置成128M,现在配置成64M,可以正常引导系统了,但进入WINCE后还有些问题
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 10 楼 chary_wang 的回复:
引用 7 楼 xuweiyue 的回复:

? ?
? DCD? ? 0x80000000, 0x30000000, 64? ? ? ; 64 MB DRAM BANK 6
? DCD 0x84000000, 0x38000000, 64? ? ? ; 64 MB DRAM AANK 7


这个分配是不对的吧,2440的Datasheep上面这样设置的。在195页。
Address? ? ? ? ? ? 2MB? ? ? ? 4MB? ? ? ? 8MB? ? ? ? 16MB? ? ? ? 32MB? ? ? ? 64MB? ? ? 128MB
Bank 6
Start address? 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x30…


人家总共是128M,分两个bank,那么一个bank是64M38000000是不对的,我前面已经说过了要配64M的
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
关注,在弄2440,
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 12 楼 LUO88988 的回复:
谢谢
bootloader中没有配置BANK6,BANK7的大小,原来是BANK6/BANK7配置成128M,现在配置成64M,可以正常引导系统了,但进入WINCE后还有些问题


what is the problem?
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

17
 
UPING
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

18
 
楼主进入wince之后的问题是什么
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

19
 
配置成2个BANK之后要根据配置修改BANKSIZE 中的BK76MAP这里面的参数,为001 = 64M/64M,之后修改g_oalAddressTable   中
        DCD     0x80000000, 0x30000000, 64      ; 64 MB DRAM BANK 6
       DCD     0X84000000, 0X34000000, 64      ; 64 MB DRAM BANK 7
配置0X34000000是对的,
但是启动还是过不去
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb  8 2007 at 23:36:51
ProcessorType=0920  Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8022c674
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
video_hw_init
SM502Reg=0xafe00000
SM502Mem=0xac000000
Silicom Motion SM501 detected
sm501 frame address start = 0x81ed210
Enabling CRT controller
CRT_DISPLAY_CTRL = 0x80200
panel_ctrl = 0x10004
reg = 0x80200 value = 0x10004!
reg = 0x80200 value = 0x10004!
reg = 0x80200 value = 0x10004!
ok+InitDisplay OK!
Sp=ffffc7cc
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

20
 
你是跑到这里停了吗?跑到这说明OEMinit()跑完了,建议你OEMinit跑完那开始跟踪一下
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表