📄 chenhao.asm
字号:
*.title "Flash bootup utility for 6211 dsk"
.option D,T
.length 102
.width 140
BOOT_SIZE .equ 0x3000 ;bootup code size in byte
FLASH_START .equ 0x90000000 ;flash start address
BOOT_START .equ 0x00000000 ;L2 sram start address
EMIF_GCR .equ 0x01800000 ;EMIF global control
EMIF_CE1 .equ 0x01800004 ;address of EMIF CE1 control reg.
EMIF_CE0 .equ 0x01800008 ;EMIF CE0control
EMIF_SDCTRL .equ 0x01800018 ;EMIF SDRAM control
EMIF_SDRP .equ 0x0180001c ;EMIF SDRM refresh period
EMIF_CE1_8 .equ 0xffffff03 ;
EMIF_CE1_32 .equ 0xffffff23 ;
EMIF_CE0_V .equ 0xffffff33 ;EMIF CE0control ;0x30
EMIF_SDCTRL_V .equ 0x57115000 ;EMIF SDRAM control ;0x73380000
.sect ".boot_load" ;用户自定义加载代码段
.global _boot ;定义全局标号_boot
.ref _c_int00 ;引用rts6700.lib中定义的全局标号_c_int00
_boot:
mvkl EMIF_GCR ,A4
|| mvkl 0x3300 ,B4
mvkh EMIF_GCR ,A4
|| mvkh 0x3300 ,B4
stw B4 , * A4 ;配置 EMIF全局控制寄存器
mvkl EMIF_CE1 ,A4
|| mvkl EMIF_CE1_8 ,B4
mvkh EMIF_CE1 ,A4
|| mvkh EMIF_CE1_8 ,B4
stw B4 , * A4 ;配置 CE1空间控制寄存器
mvkl EMIF_CE0,A4 ;EMIF_CE0 address ->A4
|| mvkl EMIF_CE0_V,B4
mvkh EMIF_CE0,A4
|| mvkh EMIF_CE0_V,B4
stw B4,*A4
|| mvkl EMIF_SDCTRL,A4 ;EMIF_SDCTRL address ->A4
|| mvkl EMIF_SDCTRL_V,B4
mvkh EMIF_SDCTRL,A4
|| mvkh EMIF_SDCTRL_V,B4
stw B4,*A4
|| mvkl EMIF_SDRP,A4 ;EMIF_SDRP address ->A4
|| mvkl 0x61a,B4 ;
mvkh EMIF_SDRP,A4
|| mvkh 0x61a,B4
stw B4,*A4
|| mvkl BOOT_START+1024 ,A4 ;待搬移数据的目标地址开始地址0x400
|| mvkl FLASH_START+1024 ,B4 ;待搬移数据的源地址开始地址0x90000400
mvkh BOOT_START+1024 ,A4
|| mvkh FLASH_START+1024 ,B4
zero A1
_boot_loop1: ;数据搬移
ldb *B4++ ,B5
mvkl BOOT_SIZE , B6
add 1 ,A1,A1
mvkh BOOT_SIZE ,B6 ;B6为待搬移数据块大小 ,可根据实际情况来修改
cmplt A1, B6, B0
nop
stb B5 , *A4++
[B0] b _boot_loop1
nop 5
mvkl .S2 _c_int00 , B0
mvkh .S2 _c_int00 , B0
B .S2 B0 ;转向 C程序的入口
nop 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -