cpu_init.s
来自「s3c6410的 Uboot 代码, 感兴趣的可以看看呀」· S 代码 · 共 161 行
S
161 行
#include <config.h>#include <s3c6430.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, =0x04 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]#ifdef CONFIG_SMDK6430_X5A ldr r1, =DMC1_CHIP1_CFG str r1, [r0, #INDEX_DMC_CHIP_1_CFG] @DMC0 DDR Chip 0 configuration direct command reg ldr r1, =DMC_NOP1 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Precharge All ldr r1, =DMC_PA1 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Auto Refresh 2 time ldr r1, =DMC_AR1 str r1, [r0, #INDEX_DMC_DIRECT_CMD] str r1, [r0, #INDEX_DMC_DIRECT_CMD] @MRS ldr r1, =DMC_mDDR_EMR1 str r1, [r0, #INDEX_DMC_DIRECT_CMD] @Mode Reg ldr r1, =DMC_mDDR_MR1 str r1, [r0, #INDEX_DMC_DIRECT_CMD]#endif @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 + =
减小字号Ctrl + -
显示快捷键?