memcfg.inc

;************************************************
; NAME    : MEMCFG.A
; DESC   : Memory bank configuration file
; 这里主要配置的就是内存
;  S3C2410的存储控制器有以下特性:
; 1. — Little/Big endian (selectable by a software) 大小端设置;
; 2. — Address space: 128Mbytes per bank (total 1GB/8 banks) 地址空间:每个bank为128MB (总共1GB);
; 3. — Programmable access size (8/16/32-bit) for all banks except bank0 (16/32-bit) 除了bank0其余所有banks的数据位宽是可编程的(8/16/32-bit);
; 4. — Total 8 memory banks 总共8个memory banks
;   Six memory banks for ROM, SRAM, etc. 其中6个bank是接ROM,SRAM等
;        Remaining two memory banks for ROM, SRAM, SDRAM, etc. 其余2个bank是接ROM,SRAM,SDRAM等
; 5. — Seven fixed memory bank start address 7个memory bank的起始地址是固定的;(发现size也是固定的,128MB)
; 6. — One flexible memory bank start address and programmable bank size 1个memory bank的起始地址和大小是可灵活可变的;
; 7. — Programmable access cycles for all memory banks 所有banks的访问周期数是可编程的;
; 8. — External wait to extend the bus cycles 支持片外等待信号以扩充总线周期;
; 9. — Supporting self-refresh and power down mode in SDRAM SDRAM在Power down模式下支持自动刷新.
; bank6和bank7的大小必须一样,并且bank7的起始地址根据bank6的大小不同而不同
;************************************************

 

BWSCON 是一个32位的register, 对应了BANK0-BANK7, 每个BANK使用4位。这4 位分别表示:

STx: 启动/禁止SDRAM的数据掩码引脚,对于SDRAM, 此位为0;对于SRAM, 此位为1。

WSx: 是否使用存储器的WAIT信号,通常设为0

DWx: 设置存储器的BUSWIDTH, 00=8-bit, 01=16-bit, 10=32-bit, 11=reserved

BANK0 对应的4位,是由硬件跳线决定,read-only

 

BANKCON0~BANKCON5 寄存器设置

Tacs: Address set-up time before nGCSn

Tcos: Chip selection set-up time before nOE

Tacc: Access cycle

Tcoh: Chip selection hold time after nOE

Tcah: Chip selection hold time after nOE

Tacp: Page mode access cycle @Page mode

PMC: Page mode configuration

注释:Tacs, Tcos, Tacc, Tcoh, Tcah, Tacp, PMC值是由存储器的datasheet决定的,里面有各时钟的极限值;顺便说说nWAIT引脚,WSn 是设定该管教是否起作用的,如果起作用必须将储存器(或者其他设备)相应的信号输入给nWAIT,如果年WAIT引脚没有用到时,必须接上,否则会将处理器琐死。

BANKCON6~BANKCON7 寄存器设置则不同,首先需要确定memory的type

MT: Determine the memory type

如果设置ROM或者 SRAM, 则设置Tacs, Tcos, Tacc, Tcoh, Tcah, Tacp, PMC

如果设置SDRAM, 则设置

Trcd: RAS to CAS delay

SCAN: Column address number

REFRESH寄存器,用于SDRAM refresh control register

 

 

另外,还有一段代码的用法学习一下:

ASSERT :DEF:BUSWIDTH
    [ BUSWIDTH=16
B1_BWSCON EQU (DW16)
B2_BWSCON EQU (DW16)
B3_BWSCON EQU (DW16)
B4_BWSCON EQU (DW16+WAIT)
B5_BWSCON EQU (DW16)
B6_BWSCON EQU (DW16)
B7_BWSCON EQU (DW16)
;BUSWIDTH=32   ; 2440 EV board.
B1_BWSCON EQU (DW16) ; AMD flash(AM29LV160DB), 16-bit, for nCS1
B2_BWSCON EQU (DW16) ; PCMCIA(PD6710), 16-bit
B3_BWSCON EQU (DW16) ; Ethernet(CS8900), 16-bit
B4_BWSCON EQU (DW32) ; Intel Strata(28F128), 32-bit, for nCS4
B5_BWSCON EQU (DW16) ; A400/A410 Ext, 16-bit
B6_BWSCON EQU (DW32) ; SDRAM(K4S561632C) 32MBx2, 32-bit
B7_BWSCON EQU (DW32) ; N.C.
    ]

其中[ 条件 语句组 ] 当条件满足的时候执行下面语句组,否则不执行。差不多和#if条件编译差不多

[ FCLK=20000

M_MDIV   EQU   0X20

M_PDIV    EQU   0X4

M_SDIV    EQU   0X2

]        FCLK=20000时候执行[]语句

ASSERT 是断言伪指令,语法是:ASSERT +逻辑表达式

def 是逻辑伪操作符,格式为: :DEF:label,作用是:判断label是否定义过

ASSERT   logical expression

对汇编程序的第二遍扫描中,如果其中ASSERT中条件不成立,ASSERT伪操作将报告该错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值