- 1、本文档共104页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 嵌入式Linux的构建;4.1 嵌入式BootLoader技术; 每种不同的 CPU 体系结构都有不同的 Boot Loader。有些 Boot Loader 也支持多种体系结构的 CPU,比如 U-Boot 就同时支持 ARM 体系结构和MIPS 体系结构。除了依赖于 CPU 的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 而构建的,要想让运行在一块板子上的 Boot Loader 程序也能运行在另一块板子上,通常也都需要修改 Boot Loader 的源程序。 ;2. Boot Loader 的安装媒介(Installation Medium);图4.1 固态存储设备的典型空间分配结构;3. 用来控制 Boot Loader 的设备或机制;5. Boot Loader 的操作模式 (Operation Mode);6. BootLoader 与主机之间进行文件传输所用的通信设备及协议;4.1.2 Bootloader引导程序;● Bootloader的stage1;● Bootloader的stage2;2.BootLoader代码分析; str r1,[r0]
ldr r0,=INTMSK
ldr r1,=0xffffffff
str r1,[r0]
ldr r0,=INTSUBMSK
ldr r1,=0x7ff
str r1,[r0]
……
ldr r0,=LOCKTIME
ldr r1,=0xffffff
str r1,[r0]
……
ldr r0,=SMRDATA
ldr r1,=BWSCON
add r2, r0, #52; ldr r3, [r0], #4
str r3, [r1], #4
cmp r2, r0
bne %B0
……
;第二阶段通常用C语言实现,包括内存管理单元初始化、时钟设置、端口设置和串口初始化等。; Uart_Init(0,115200);
Uart_Select(0);
while(1)
{
……
Uart_Printf(\n\nSMDK2410 Board (MCU S3C2410) Example Program Ver 1.0 FCLK = %d Hz\n\n, FCLK);
……
}
}
; 与一般的C语言程序一样,第二阶段程序从Main()函数开始。因为所采用的S3C2410X处理器内含存储器管理单元MMU,所以首先需要进行存储器管理单元的初始化。紧接着设置系统工作主时钟,若使用USB设备则USB时钟也需要做相应初始化。其次对端口工作状态进行设定。然后设定处理器工作模式,以及中断控制。最后初始化串口,与宿主机建立联系,以利于显示调试信息。启动成功后,可以执行主程序。
;4.1.3 VIVI简介;Press Return to start the LINUX now, any other key for vivi.
VIVI也有前面说过的两种工作模式,启动模式可以在一段时间后自行启动Linux内核,这是VIVI的默认方式。出现上述信息后,如果按除回车键外的任意键,即可进入下载模式,出现“vivi”提示符。有如下作用:
● 把内核(kernel)从flash复制到RAM,然后启动;
● 初始化硬件;
● 下载程序并写入flash(通常由串口或者网口先把内核下载到RAM中,然后写入flash);
● 检测目标板(bootloader会有一些简单的代码用以测试目标板硬件的好坏)。
在下载模式下,VIVI为用户提供了一个命令行接口,通过该接口可以使用VIVI提供的一些命令。 ;1. VIVI的命令;(2)part命令
操作MTD分区信息,比如,显示、增加、删除、复位、保存MTD分区等。
● part show:显示mtd分区信息。
● part add name offset size flag:增加新的mtd分区,其中name为新mtd分区名称,offset是mtd器件的偏移,size表示mtd分区的大小,flag表示分区类型,可选项有JFFS2、LOCKED和BONFS。
● part del partname:删除一个mtd分区。
● part reset:恢复mtd 分区为默认值。
● part save:在flash中永久保存参数值和分区信息。
; (4)boot命令
用来引导存储在flash存储器或ram中的linux内核。命令格式:
boot media_type [ par
文档评论(0)