- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
armlinux演义
ARM Linux 演义
滚滚长江东四水,浪花淘净英雄。
大家好,许多人和我一样,正在苦读 linux 源代码,希望有照一日,宝典在手,天下我有。
小弟不才,也读了两年,写的几首歪诗。从本级开始,把我所理解的 linux 如何启动贴出来,
不懂之处大家讨论一番。也希望把 linux 从头到尾讨论一遍,计划写它 240 回,三年写完
(笑。。。),欢迎大家动员一些牛人来参与讨论,提高人气,增加流量。
小弟用的是 arm920T,跑 LINUX 2。4。18,下面是第一回。。。。。
第一回
-
话说。。。(嘘声,“入正题把!“)
好好:
首先,porting linux 的时候要规划内存影像,如小弟的系统有 64m SDRAM,
地址从 0x 0800 0000 -0x0bff ffff,32m flash,地址从 0x0c00 0000-0x0dff ffff.
规划如下:bootloader, linux kernel, rootdisk放在 flash里。
具体从 0x0c00 0000 开始的第一个 1M放 bootloader,
0x0c10 0000开始的 2m 放linux kernel,从 0x0c30 0000 开始都给 rootdisk。
启动:
首先,启动后 arm920T将地址 0x0c00 0000 映射到 0(可通过跳线设置),
实际上从 0x0c00 0000 启动,进入我们的 bootloader,但由于flash 速度慢,
所以 bootloader 前面有一小段程序把 bootloader 拷贝到 SDRAM 中的 0x0AFE0100,
再从 0x 0800 0000 运行bootloader,我们叫这段小程序为 flashloader,
flashloader必须要首先初始化 SDRAM,不然往那放那些东东:
.equ SOURCE, 0x0C000100 bootloader 的存放地址
.equ TARGET, 0x0AFE0100 目标地址
.equ SDCTL0, 0x221000 SDRAM 控制器寄存器
// size is stored in location 0x0C0000FC
.global _start
_start: //入口点
//;***************************************
//;* Init SDRAM
//;***************************************
// ;***************
// ;* SDRAM
// ;***************
LDR r1, =SDCTL0 //
// ; Set Precharge Command
LDR r3, =0
//ldr r3,=0
STR r3, [r1]
// ; Issue Precharge All Commad
LDR r3, =0x8200000
LDR r2, [r3]
// ; Set AutoRefresh Command
LDR r3, =0xA2120200
STR r3, [r1]
// ; Issue AutoRefresh Command
LDR r3, =0x8000000
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
// ; Set Mode Register
LDR r3, =0xB2120200
STR r3, [r1]
// ; Issue Mode Register Command
LDR r3, =0//; Mode Register Value
LDR r2, [r3]
// ; Set Normal Mode
LDR r3, =0
STR r3, [r1]
//;***************************************
//;* End of SDRAM and SyncFlash Init *
//;*****
文档评论(0)