📄 cpu_init.s
字号:
#include <config.h>#include <s3c6400.h> .globl mem_ctrl_asm_initmem_ctrl_asm_init: ldr r0, =ELFIN_MEM_SYS_CFG @Memory sussystem address 0x7e00f120 mov r1, #0xd @ Xm0CSn2 = NFCON CS0, Xm0CSn3 = NFCON CS1 str r1, [r0] ldr r0, =ELFIN_DMC1_BASE @DMC1 base address 0x7e001000 ldr r1, =0x4 str r1, [r0, #INDEX_DMC_MEMC_CMD] ldr r1, =DMC_DDR_REFRESH_PRD str r1, [r0, #INDEX_DMC_REFRESH_PRD] ldr r1, =DMC_DDR_CAS_LATENCY str r1, [r0, #INDEX_DMC_CAS_LATENCY] ldr r1, =DMC_DDR_t_DQSS str r1, [r0, #INDEX_DMC_T_DQSS] ldr r1, =DMC_DDR_t_MRD str r1, [r0, #INDEX_DMC_T_MRD] ldr r1, =DMC_DDR_t_RAS str r1, [r0, #INDEX_DMC_T_RAS] ldr r1, =DMC_DDR_t_RC str r1, [r0, #INDEX_DMC_T_RC] ldr r1, =DMC_DDR_t_RCD ldr r2, =DMC_DDR_schedule_RCD orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RCD] ldr r1, =DMC_DDR_t_RFC ldr r2, =DMC_DDR_schedule_RFC orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RFC] ldr r1, =DMC_DDR_t_RP ldr r2, =DMC_DDR_schedule_RP orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RP] ldr r1, =DMC_DDR_t_RRD str r1, [r0, #INDEX_DMC_T_RRD] ldr r1, =DMC_DDR_t_WR str r1, [r0, #INDEX_DMC_T_WR] ldr r1, =DMC_DDR_t_WTR str r1, [r0, #INDEX_DMC_T_WTR] ldr r1, =DMC_DDR_t_XP str r1, [r0, #INDEX_DMC_T_XP] ldr r1, =DMC_DDR_t_XSR str r1, [r0, #INDEX_DMC_T_XSR] ldr r1, =DMC_DDR_t_ESR str r1, [r0, #INDEX_DMC_T_ESR] ldr r1, =DMC1_MEM_CFG str r1, [r0, #INDEX_DMC_MEMORY_CFG] ldr r1, =DMC1_MEM_CFG2 str r1, [r0, #INDEX_DMC_MEMORY_CFG2] ldr r1, =DMC1_CHIP0_CFG str r1, [r0, #INDEX_DMC_CHIP_0_CFG] ldr r1, =DMC_DDR_32_CFG str r1, [r0, #INDEX_DMC_USER_CONFIG] @DMC0 DDR Chip 0 configuration direct command reg ldr r1, =DMC_NOP0 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Precharge All ldr r1, =DMC_PA0 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Auto Refresh 2 time ldr r1, =DMC_AR0 str r1, [r0, #INDEX_DMC_DIRECT_CMD] str r1, [r0, #INDEX_DMC_DIRECT_CMD] @MRS ldr r1, =DMC_mDDR_EMR0 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Mode Reg ldr r1, =DMC_mDDR_MR0 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Enable DMC1 mov r1, #0x0 str r1, [r0, #INDEX_DMC_MEMC_CMD]check_dmc1_ready: ldr r1, [r0, #INDEX_DMC_MEMC_STATUS] mov r2, #0x3 and r1, r1, r2 cmp r1, #0x1 bne check_dmc1_ready nop mov pc, lr /* Below code is for ARM926EJS and ARM1026EJS */ .globl cleanDCachecleanDCache: mrc p15, 0, pc, c7, c10, 3 /* test/clean D-Cache */ bne cleanDCache mov pc, lr .globl cleanFlushDCachecleanFlushDCache: mrc p15, 0, pc, c7, c14, 3 /* test/cleanflush D-Cache */ bne cleanFlushDCache mov pc, lr .globl cleanFlushCachecleanFlushCache: mrc p15, 0, pc, c7, c14, 3 /* test/cleanflush D-Cache */ bne cleanFlushCache mcr p15, 0, r0, c7, c5, 0 /* flush I-Cache */ mov pc, lr .ltorg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -