armlinux演艺---第一回
话说。。。(嘘声,“入正题把!“)
%A
%A 好好:
%A
%A 首先,porting linux的时候要规划内存影像,如小弟的系统有64m SDRAM,
%A 地址从0x 0800 0000 -0x0bff ffff,32m flash,地址从0x0c00 0000-0x0dff ffff.
%A 规划如下:bootloader, linux kernel, rootdisk放在flash里。
%A 具体从 0x0c00 0000开始的第一个1M放bootloader,
%A 0x0c10 0000开始的2m放linux kernel,从 0x0c30 0000开始都给rootdisk。
%A
%A 启动:
%A 首先,启动后arm920T将地址0x0c00 0000映射到0(可通过跳线设置),
%A 实际上从0x0c00 0000启动,进入我们的bootloader,但由于flash速度慢,
%A 所以bootloader前面有一小段程序把bootloader拷贝到SDRAM 中的0x0AFE0100,
%A 再从0x 0800 0000 运行bootloader,我们叫这段小程序为flashloader,
%A flashloader必须要首先初始化SDRAM,不然往那放那些东东:
%A
%A .equ SOURCE, 0x0C000100 bootloader的存放地址
%A .equ TARGET, 0x0AFE0100 目标地址
%A .equ SDCTL0, 0x221000 SDRAM控制器寄存器
%A // size is stored in location 0x0C0000FC
%A
%A .global _start
%A _start: //入口点
%A
%A //;***************************************
%A //;* Init SDRAM
%A //;***************************************
%A
%A // ;***************
%A // ;* SDRAM
%A // ;***************
%A
%A LDR r1, =SDCTL0 //
%A
%A // ; Set Precharge Command
%A LDR r3, =0x92120200
%A //ldr r3,=0x92120251
%A STR r3, [r1]
%A
%A // ; Issue Precharge All Commad
%A LDR r3, =0x8200000
%A LDR r2, [r3]
%A
%A // ; Set AutoRefresh Command
%A LDR r3, =0xA2120200
%A STR r3, [r1]
%A
%A // ; Issue AutoRefresh Command
%A LDR r3, =0x8000000
%A LDR r2, [r3]
%A LDR r2, [r3]
%A LDR r2, [r3]
%A LDR r2, [r3]
%A LDR r2, [r3]
%A LDR r2, [r3]
%A LDR r2, [r3]
%A LDR r2, [r3]
%A
%A // ; Set Mode Register
%A LDR r3, =0xB2120200
%A STR r3, [r1]
%A
%A // ; Issue Mode Register Command
%A LDR r3, =0x08111800 //; Mode Register Value
%A LDR r2, [r3]
%A
%A // ; Set Normal Mode
%A LDR r3, =0x82124200
%A STR r3, [r1]
%A
%A //;***************************************
%A //;* End of SDRAM and SyncFlash Init *
%A //;***************************************
%A
%A // copy code from FLASH to SRAM
%A
%A _CopyCodes:
%A ldr r0,=SOURCE
%A ldr r1,=TARGET
%A sub r3,r0,#4
%A ldr r2,[r3]
%A
%A _CopyLoop:
%A ldr r3,[r0]
%A str r3,[r1]
%A add r0,r0,#4
%A add r1,r1,#4
%A sub r2,r2,#4
%A teq r2,#0
%A beq _EndCopy
%A b _CopyLoop
%A
%A _EndCopy:
%A ldr r0,=TARGET
%A mov pc,r0
%A
%A 欲知后事如何,下回分解:
%A
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。