📄 romloader.s
字号:
;/************************************************************************************************
;代码加载部分,包括 初始化堆栈,初始化 CPU,加载代码.
;07-09-17,huangsl,每个阶段的代码加载由模块本身来完成,以减少代码交叉情况。
; 增加 KERNEL 各个段的起始和大小,以便 C 代码引用.
;071025,huangsl,增加初始状态和寄存器的初始化.
;/************************************************************************************************
;/************************************************************************************************
IMPORT ||Load$$CACHE_SRAM$$Base||
IMPORT ||Image$$CACHE_SRAM$$Base||
IMPORT ||Image$$CACHE_SRAM$$Limit||
IMPORT ||Image$$CACHE_SRAM$$ZI$$Base||
IMPORT ||Image$$CACHE_SRAM$$ZI$$Limit||
IMPORT ||Image$$CODE_SDRAM$$ZI$$Base|| ;for ZI init
IMPORT ||Image$$CODE_SDRAM$$ZI$$Limit||
IMPORT InitStacks
; IMPORT Cpu_Init
IMPORT LoadCodeSection
IMPORT memset
IMPORT LowLevelInit
;/************************************************************************************************
EXPORT RomLoader
; EXPORT baseSetupEntry
;/************************************************************************************************
INCLUDE CONDEFINE.s
CODE32
AREA LOADER, CODE, READONLY
RomLoader
MSR CPSR_c,#SVCMODE|NOINT ; No interrupts,SVC MODE.
BL InitStacks ;首先设置堆栈.
LDR R0, =||Load$$CACHE_SRAM$$Base|| ;源
LDR R1, =||Image$$CACHE_SRAM$$Base|| ;目标
LDR R2, =||Image$$CACHE_SRAM$$Limit|| ;长度
BL LoadCodeSection
LDR R0,=||Image$$CACHE_SRAM$$ZI$$Base||
LDR R1,=||Image$$CACHE_SRAM$$ZI$$Limit||
SUB R2,R1,R0
MOV R1,#0
;BL ZeroZISection
BL memset
;为了支持外部扩展存储器或者 与 CPU 紧密相关设备,调用外部接口初始化.
BL LowLevelInit ; CPU 的一些初始化代码,包含 C 代码.
LDR R0,=||Image$$CODE_SDRAM$$ZI$$Base||
LDR R1,=||Image$$CODE_SDRAM$$ZI$$Limit||
SUB R2,R1,R0
MOV R1,#0
;BL ZeroZISection
BL memset
MOV R4,#0
MOV R5,R4
MOV R6,R4
STMFD SP, {R4-R6}
LDMDB SP, {R7-R9}
LDMDB SP, {R10-R12}
;REMAP ,然后跳到 CACHE_SRAM 的入口(0地址)
ldr pc, =||Image$$CACHE_SRAM$$Base|| ; Jump to SRAM CODE
END
;/*********************************************************************************************************
;** End Of File
;********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -