📄 bank_init.s
字号:
;************************************
;BANK参数配置
;***********************************
AREA BANK, CODE, READONLY
ENTRY
CODE32
GET 2440addr.inc
EXPORT InitBank
;BWSCON
DW8 EQU (0X0)
DW16 EQU (0X1)
DW32 EQU (0X2)
WAIT EQU (0X1 << 2)
UBLB EQU (0X1 << 3)
B0_BWS EQU (DW16 << 1)
B1_BWS EQU (DW32 << 4)
B2_BWS EQU (DW16 << 8)
B3_BWS EQU (DW16 << 12)
B4_BWS EQU (DW16 << 16)
B5_BWS EQU (DW16 << 20)
B6_BWS EQU (DW32 << 24)
B7_BWS EQU (DW32 << 28)
;BANK0配置参数
B0_Tacs EQU (0X0 << 13)
B0_Tcos EQU (0X0 << 11)
B0_Tacc EQU (0X7 << 8)
B0_tcoh EQU (0X0 << 6)
B0_tah EQU (0X0 << 4)
B0_tacp EQU (0X0 << 2)
B0_tPMC EQU (0X0 << 0)
;BANK1配置参数
B1_Tacs EQU (0X0 << 13)
B1_Tcos EQU (0X0 << 11)
B1_Tacc EQU (0X7 << 8)
B1_tcoh EQU (0X0 << 6)
B1_tah EQU (0X0 << 4)
B1_tacp EQU (0X0 << 2)
B1_tPMC EQU (0X0 << 0)
;BANK2配置参数
B2_Tacs EQU (0X0 << 13)
B2_Tcos EQU (0X0 << 11)
B2_Tacc EQU (0X7 << 8)
B2_tcoh EQU (0X0 << 6)
B2_tah EQU (0X0 << 4)
B2_tacp EQU (0X0 << 2)
B2_tPMC EQU (0X0 << 0)
;BANK3配置参数
B3_Tacs EQU (0X0 << 13)
B3_Tcos EQU (0X0 << 11)
B3_Tacc EQU (0X7 << 8)
B3_tcoh EQU (0X0 << 6)
B3_tah EQU (0X0 << 4)
B3_tacp EQU (0X0 << 2)
B3_tPMC EQU (0X0 << 0)
;BANK4配置参数
B4_Tacs EQU (0X0 << 13)
B4_Tcos EQU (0X0 << 11)
B4_Tacc EQU (0X7 << 8)
B4_tcoh EQU (0X0 << 6)
B4_tah EQU (0X0 << 4)
B4_tacp EQU (0X0 << 2)
B4_tPMC EQU (0X0 << 0)
;BANK5配置参数
B5_Tacs EQU (0X0 << 13)
B5_Tcos EQU (0X0 << 11)
B5_Tacc EQU (0X7 << 8)
B5_tcoh EQU (0X0 << 6)
B5_tah EQU (0X0 << 4)
B5_tacp EQU (0X0 << 2)
B5_tPMC EQU (0X0 << 0)
;BANK6配置参数
B6_MT EQU (0X3 << 15)
B6_Trcd EQU (0X1 << 2)
B6_SCAN EQU (0X1 << 0)
;BANK7配置参数
B7_MT EQU (0X3 << 15)
B7_Trcd EQU (0X1 << 2)
B7_SCAN EQU (0X1 << 0)
;REFRESH参数
REFEN EQU (0X1 << 23)
TREFMD EQU (0X0 << 22)
Trp EQU (0X2 << 20)
Trc EQU (0X2 << 18)
Tchr EQU (0X2 << 16)
REFCET EQU (1653 << 0)
;参数配置组合
BWSCON_VAL EQU (B0_BWS | B1_BWS | B2_BWS | B3_BWS | B4_BWS | B5_BWS | B6_BWS | B7_BWS)
BANKCON0_VAL EQU (B0_Tacs | B0_Tcos | B0_Tacc | B0_tcoh | B0_tah | B0_tacp | B0_tPMC)
BANKCON1_VAL EQU (B1_Tacs | B1_Tcos | B1_Tacc | B1_tcoh | B1_tah | B1_tacp | B1_tPMC)
BANKCON2_VAL EQU (B2_Tacs | B2_Tcos | B2_Tacc | B2_tcoh | B2_tah | B2_tacp | B2_tPMC)
BANKCON3_VAL EQU (B3_Tacs | B3_Tcos | B3_Tacc | B3_tcoh | B3_tah | B3_tacp | B3_tPMC)
BANKCON4_VAL EQU (B4_Tacs | B4_Tcos | B4_Tacc | B4_tcoh | B4_tah | B4_tacp | B4_tPMC)
BANKCON5_VAL EQU (B5_Tacs | B5_Tcos | B5_Tacc | B5_tcoh | B5_tah | B5_tacp | B5_tPMC)
BANKCON6_VAL EQU (B6_MT | B6_Trcd | B6_SCAN)
BANKCON7_VAL EQU (B7_MT | B7_Trcd | B7_SCAN)
REFRESH_VAL EQU (REFEN| TREFMD | Trp | Trc | Tchr | REFCET)
BANKSIZE_VAL EQU (0X32)
MRSRB6_VAL EQU (0X30)
MRSRB7_VAL EQU (0X30)
;配置bank的参数
InitBank
;Set memory control registers
LDR R0,=L_BANK_CONF
LDR R1,=BWSCON ;BWSCON Address
ADD R2, R0, #52 ;End address of SMRDATA
0
LDR R3, [R0], #4
STR R3, [R1], #4
CMP R2, R0
BNE %B0
BX LR
;声明一个文字池的开始,文字池一般放置在一个代码段的最后面,或者一个文件的END前面。文字池的作用是在
;代码中分配一段存储空间来存放变量
LTORG
L_BANK_CONF DATA
;文字池的标号。在文字池用一个数据定义伪操"DCD",DCD用于分配一片连续的存储单元,
;并用指定的表达式对其进行初始化,表达式可以为程序标号或数字表达式。
DCD BWSCON_VAL ;4800 0000
DCD BANKCON0_VAL ;4800 0004
DCD BANKCON1_VAL ;4800 0008
DCD BANKCON2_VAL ;4800 000C
DCD BANKCON3_VAL ;4800 0010
DCD BANKCON4_VAL ;4800 0014
DCD BANKCON5_VAL ;4800 0018
DCD BANKCON6_VAL ;4800 001C
DCD BANKCON7_VAL ;4800 0020
DCD REFRESH_VAL ;4800 0024
DCD BANKSIZE_VAL ;4800 0028
DCD MRSRB6_VAL ;4800 002C
DCD MRSRB7_VAL ;4800 0030
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -