- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一位大师级的人物写的LINUX启动过程
一位大师级的人物写的,不看要后悔的哟!!LINUX启动过程
首先,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,=0STR 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, =0STR r3, [r1]
//;*************************************** //;* End of SDRAM and SyncFlash Init * //;***************************************
// copy code from FLASH to SRAM
_CopyCodes: ldr r0,=SOURCE ldr r1,=TARGET sub r3,r0,#4 ldr r2,[r3]
_CopyLoop: ldr r3,[r0] str r3,[r1] add r0,r0,#4 add r1,r1,#4 sub r2,r2,#4 teq r2,#0 beq _EndCopy b _CopyLoop
_EndCopy: ldr r0,=TARGET mov pc,r0
上回书说到flashloader把bootloader load到0x0AFE0100, 然回跳了过去, 其实0x0AFE0100 就是烧在flash 0x0C000100中的真正的bootloader:
bootloader 有几个文件组成,先是STA
文档评论(0)