📄 sdram.s
字号:
#include "include\asm.h"#include "include\mipsreg.h"#include "include\cpureg.h"#include "include\soc.h"/* #include "cache.h" */#define SDRAM_START 0xA0000000#define SDRAM_BIT_9 0xA0000200#define SDRAM_BIT_10 0xA0000400#define SDRAM_BIT_11 0xA0000800#define SDRAM_BIT_12 0xA0001000#define SDRAM_BIT_20 0xA0100000#define SDRAM_BIT_21 0xA0200000#define SDRAM_BIT_22 0xA0400000#define SDRAM_BIT_23 0xA0800000#define SDRAM_BIT_24 0xA1000000#define SDRAM_BIT_25 0xA2000000#define SDRAM_16MB 0xA1000000 - 1#define SDRAM_32MB 0xA2000000 - 1#define SDRAM_64MB 0xA4000000 - 1#define SDRAM_128MB 0xA8000000 - 1#define CONFIG_EM_MASK 0x00c00000#define CONFIG_EP_MASK 0x0f000000#define SDTYPE_2_13_11 0xf#define SDTYPE_2_12_11 0xb#define SDTYPE_2_13_10 0xe#define SDTYPE_2_12_10 0xa#define SDTYPE_1_11_10 0x3#define SDTYPE_2_13_9 0xd#define SDTYPE_2_12_9 0x9#define SDTYPE_1_11_9 0x2#define SDTYPE_2_13_8 0xc#define SDTYPE_2_12_8 0x8#define SDTYPE_2_11_8 0x4#define SDTYPE_1_11_8 0x1#define SDTYPE_NOT_SUPPORTED 0x0#define CC_MC_SDTYPE 0xbff807d0#define SCU_SDRTR0 0xBFF807CA#define SCU_SDRTR1 0xBFF807CB#define SCU_SDRTYPE 0xBFF807D0#define SCU_SDRMR0 0xBFF807CC#define SCU_SDRMR1 0xBFF807CE#define SCU_SDRMR2 0xBFF807CD#define SCU_SDRMR3 0xBFF807CF/*e.g. CHECK_BIT_N(SDRAM_BIT_10) if t9 == t8 ,bitn NOT exists else bitn exists*/#define CHECK_BIT_N(bitn) \ nop; \ li t9, 0x00000055; \ sb t9, SDRAM_START; \ li t9, 0x000000aa; \ sb t9, bitn; \ li t7, SDRAM_START; \ lb t9, 0(t7); \ li t3, bitn; \ lb t8, 0(t7) #define SET_SDTYPE(sdtype) \ li t9,sdtype; \ sw t9,( CC_MC_SDTYPE ) LEAF(InitSDRAMType) .set noreorder/**************************Try_2_13_11******************************/ Try_2_13_11: SET_SDTYPE(SDTYPE_2_13_11)Check_bit_12: CHECK_BIT_N(SDRAM_BIT_12) beq t8, t9, Try_2_13_10 nopCheck_bit_25: nop CHECK_BIT_N(SDRAM_BIT_25) beq t8, t9, Try_2_12_11 nop li v0,0x41 b TestDone nop/**************************Try_2_12_11******************************/ Try_2_12_11: SET_SDTYPE(SDTYPE_2_12_11)Check_bit_24_1: CHECK_BIT_N(SDRAM_BIT_24) beq t8, t9, SDRAM_NOT_FOUND nop li v0,0x42 b TestDone nop/**************************Try_2_13_10******************************/ Try_2_13_10: SET_SDTYPE(SDTYPE_2_13_10)Check_bit_11: CHECK_BIT_N(SDRAM_BIT_11) beq t8, t9, Try_2_13_9 nopCheck_bit_24_2: CHECK_BIT_N(SDRAM_BIT_24) beq t8, t9, Try_2_12_10 nop li v0,0x43 b TestDone nop/**************************Try_2_12_10******************************/Try_2_12_10: SET_SDTYPE(SDTYPE_2_12_10)Check_bit_23_1: CHECK_BIT_N(SDRAM_BIT_23) beq t8, t9, Try_1_11_10 nop li v0,0x44 b TestDone nop/**************************Try_1_11_10******************************/Try_1_11_10: SET_SDTYPE(SDTYPE_1_11_10)Check_bit_22_1: CHECK_BIT_N(SDRAM_BIT_22) beq t8, t9, SDRAM_NOT_FOUND nop li v0,0x45 b TestDone nop/**************************Try_2_13_9******************************/Try_2_13_9: SET_SDTYPE(SDTYPE_2_13_9)Check_bit_10: CHECK_BIT_N(SDRAM_BIT_10) beq t8, t9, Try_2_13_8 nopCheck_bit_23_2: CHECK_BIT_N(SDRAM_BIT_23) beq t8, t9, Try_2_12_9 nop li v0,0x46 b TestDone nop/**************************Try_2_12_9******************************/Try_2_12_9: SET_SDTYPE(SDTYPE_2_12_9)Check_bit_22_2: CHECK_BIT_N(SDRAM_BIT_22) beq t8, t9, Try_1_11_9 nop li v0,0x47 b TestDone nop/**************************Try_1_11_9******************************/Try_1_11_9: SET_SDTYPE(SDTYPE_1_11_9)Check_bit_21_1: CHECK_BIT_N(SDRAM_BIT_21) beq t8, t9, SDRAM_NOT_FOUND nop li v0,0x48 b TestDone nop/**************************Try_2_13_8******************************/Try_2_13_8: SET_SDTYPE(SDTYPE_2_13_8)Check_bit_9: CHECK_BIT_N(SDRAM_BIT_9) beq t8, t9, SDRAM_NOT_FOUND nopCheck_bit_22_3: CHECK_BIT_N(SDRAM_BIT_22) beq t8, t9, Try_2_12_8 nop li v0,0x49 b TestDone nop/**************************Try_2_12_8******************************/Try_2_12_8: SET_SDTYPE(SDTYPE_2_12_8)Check_bit_21_2: CHECK_BIT_N(SDRAM_BIT_21) beq t8, t9, Try_2_11_8 nop li v0,0x4a b TestDone nop/**************************Try_2_11_8******************************/Try_2_11_8: SET_SDTYPE(SDTYPE_2_11_8)Check_bit_20: CHECK_BIT_N(SDRAM_BIT_20) beq t8, t9, SDRAM_NOT_FOUND nopCheck_bit_22_4: CHECK_BIT_N(SDRAM_BIT_22) li v0,0x4b beq t8, t9, TestDone nop/**************************Try_1_11_8******************************/Try_1_11_8: SET_SDTYPE(SDTYPE_1_11_8) li v0,0x4c b TestDone nopSDRAM_NOT_FOUND: SET_SDTYPE(SDTYPE_NOT_SUPPORTED)STOP_LOOP: b STOP_LOOP nopTestDone: jr ra nop .end /* * InitSDRAM : void InitSDRAM(char c) */ LEAF(InitSDRAM).set noreorder li a0,SCU_SDRTR0/* li a1,0x1e # 8M crystal */ li a1,0x12 # 5M crystal sb a1,(a0) li a0,SCU_SDRTR1 li a1,0x0 sb a1,(a0) li a0,SCU_SDRTYPE li a1,SDTYPE_2_12_9 sb a1,(a0) li a0,SCU_SDRMR0 li a1,0x3b sb a1,(a0) li a0,SCU_SDRMR1 li a1,0x3 sb a1,(a0) li a0,SCU_SDRMR2 li a1,0x80 sb a1,(a0) j ra nop .end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -