[ZLG-ARM] 精彩armlinux演义--- 第一回(转)

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

这“小说”什么时候完啊?

  
reeper 发表于 2009-4-9 17:15 | 显示全部楼层

希望尽快出现下回

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

36

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部