嵌入式linux系统的启动过程.docx

上传人:b****3 文档编号:10174070 上传时间:2023-05-24 格式:DOCX 页数:11 大小:27.31KB
下载 相关 举报
嵌入式linux系统的启动过程.docx_第1页
第1页 / 共11页
嵌入式linux系统的启动过程.docx_第2页
第2页 / 共11页
嵌入式linux系统的启动过程.docx_第3页
第3页 / 共11页
嵌入式linux系统的启动过程.docx_第4页
第4页 / 共11页
嵌入式linux系统的启动过程.docx_第5页
第5页 / 共11页
嵌入式linux系统的启动过程.docx_第6页
第6页 / 共11页
嵌入式linux系统的启动过程.docx_第7页
第7页 / 共11页
嵌入式linux系统的启动过程.docx_第8页
第8页 / 共11页
嵌入式linux系统的启动过程.docx_第9页
第9页 / 共11页
嵌入式linux系统的启动过程.docx_第10页
第10页 / 共11页
嵌入式linux系统的启动过程.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式linux系统的启动过程.docx

《嵌入式linux系统的启动过程.docx》由会员分享,可在线阅读,更多相关《嵌入式linux系统的启动过程.docx(11页珍藏版)》请在冰点文库上搜索。

嵌入式linux系统的启动过程.docx

嵌入式linux系统的启动过程

1、分析嵌入式系统的启动过程

嵌入式系统的启动过程:

上电------->u-boot------->加载Linux内核------->挂载rootfs---->执行应用程序

 

2、分析u-boot

1.什么是u-boot(是一个通用的bootloader)

U-Boot,全称UniversalBootLoader,是遵循GPL条款的开放源码项目。

Universal----------->通用的

Boot----------------->启动,引导

Loader----------------->加载

通用------->支持多种架构的CPU,除了支持ARM系列的处理器外,还能支持MIPS、x86、PowerPC、NIOS等诸多常用系列的处理器

------->支持多种厂家的开发板,如cortex-A8,cortex-A9,cortex-A53等不同厂家的开发板

------->支持多种嵌入式操作系统,U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS,android嵌入式操作系统。

Boot-------->完成硬件的初始化,启动硬件平台。

Loader------->当初始化硬件结束后,加载操作系统。

2.u-boot的作用

大多数BootLoader都分为stage1和stage2两大部分,U-boot也不例外。

依赖于cpu体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。

(1)Stage1:

CPU(S5P6818-->Cortex-A53)的初始化,使用汇编语言编写。

如:

初始化Cache、MMU、clock、中断、看门狗、DDR3、eMMC、...

(2)Stage2:

板级初始化,使用C语言编写。

如:

uart、网卡、usb、LCD、....

(3)提供了一些工具,如进入uboot的命令行模式,使用u-boot命令

(4)加载操作系统

3.U-boot的工作模式

U-Boot的工作模式有启动加载模式和下载模式。

(1)启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从FLASH中加载到SDRAM中运行,整个过程是自动的。

(2)下载模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载到目标板的FLASH中。

用户可以利用Bootloader提供的一些命令接口来完成自己想要的操作。

 

4.U-boot的输出

U-Boot(Apr272017-15:

45:

25)-------->u-boot的版本号

PLL:

[0]=0,[1]=0,[2]=0,[3]=0

(0)PLL1:

CPUFCLK=0,HCLK=0(G0)

(7)PLL1:

CPUFCLK=0,HCLK=0(G1)

(2)PLL3:

MEMFCLK=0,DCLK=0,BCLK=0,PCLK=0

(1)PLL0:

BUSBCLK=0,PCLK=0

(8)PLL0:

CCI4BCLK=0,PCLK=0

(3)PLL0:

G3DBCLK=0

(4)PLL0:

CODABCLK=0,PCLK=0

(5)PLL0:

DISPBCLK=0,PCLK=0

(6)PLL0:

HDMIPCLK=3

I2C:

ready

DRAM:

1GiB--------->内存1GB

Heap=0x~0x

Code=0x43c00000~0x43c83e48

GLD=0x43bffeb8

GLBD=0x43bffe68

SP=0x43bffe68,0x43bffe48(CURR)

PC=0x43c06640

TAGS=0x

PAGE=0x43c90000~0x43c9c000

MACH=[4330]

VER=0

BOARD=[x6818]

MMC:

NXPDWMMC:

0,NXPDWMMC:

1,NXPDWMMC:

2

In:

serial

Out:

serial

Err:

serial

##DCDC_MODE(0x80):

DCDC1[PFM],DCDC2[PFM],DCDC3[PFM],DCDC4[PWM],DCDC5[PWM]

##STATUS(0x00):

0xe40x10

##IRQ(0x48):

0x000x000x000x000x00

##CHG_TYPE:

ADP

##BAT_VOL:

0mV

##BAT_CAP:

100%

DONE:

Logobmp300by300(3bpp),len=270056

DRAW:

0x->0x

DONE:

Logobmp300by300(3bpp),len=270056

DRAW:

0x->0x

RGB:

MIPI:

DSIM_ESCMODE1:

0xc0

DSIM_STATUS:

0x10010f

MIPIclk:

420MHz

DSIM_ESCMODE2:

0x0

DSIM_STATUS:

0x10010f

##SkipBATAnimation.

##IRQ(0x48):

0x000x000x000x000x00

##chg_type:

ADP

##battery_vol:

0mV

##battery_cap:

100%

##Booting

Carddidnotrespondtovoltageselect!

Net:

x6818ethinit...

x6818macinit...

Hitanykeytostopautoboot:

0

X6818#

 

5.u-boot的信息

X6818#bdinfo----------->查看硬件平台的信息

arch_number=0x000010EA--------->u-boot针对具体硬件平台的ID

boot_params=0x---------->u-boot传递给内存的启动参数

DRAMbank=0x00000000

->start=0x--------->内存的开始地址

->size=0x-------->内存的大小

eth0name=

ethaddr=00:

e2:

1c:

ba:

e8:

60

currenteth=

ip_addr=

baudrate=115200bps

TLBaddr=0x7FFF0000

relocaddr=0x

relocoff=0x00000000

irq_sp=0x7DF6BF00

spstart=0x43BFFE68

DDR3的内存地址范围:

0x~0x7FFFFFFF

 

X6818#printenv----------->查看u-boot的环境变量

androidcrc=-0

baudrate=115200

bootargs=lcd=at070tn92tp=gslx680-linuxroot=/dev/mmcblk0p2rwrootfstype=ext4

bootcmd=ext4loadmmc2:

10xuImage;bootm0x

bootdelay=5

bootfile=uImage

ethact=

ethaddr=00:

e2:

1c:

ba:

e8:

60-------->网卡的mac地址

ethprime=RTL8211-------->网卡芯片的型号

fastboot=flash=mmc,2:

ubootpak:

2nd:

0x200,0x78000;flash=mmc,2:

2ndboot:

2nd:

0x200,0x4000;flash=mmc,2:

bootloader:

boot:

0x8000,0x70000;flash=mmc,2:

boot:

ext4:

0x00100000,0x04000000;flash=mmc,2:

system:

ext4:

0x04100000,0x2F200000;flash=mmc,2:

cache:

ext4:

0x,0x1AC00000;flash=mmc,2:

misc:

emmc:

0x4E000000,0x00800000;flash=mmc,2:

recovery:

emmc:

0x4E900000,0x01600000;flash=mmc,2:

userdata:

ext4:

0x,0x0;

filesize=41ee8

gatewayip=---------->网关

ipaddr=--------->板子的IP

netmask=--------->子网掩码

serverip=--------->tftp服务器的IP

stderr=serial

stdin=serial

stdout=serial

Environmentsize:

846/32764bytes

 

关键的内容:

(1)bootargs------->启动参数

bootargs=lcd=at070tn92tp=gslx680-linuxroot=/dev/mmcblk0p2rwrootfstype=ext4

lcd=at070tn92------->液晶屏的型号,800*480

tp=gslx680-linux-------->触摸屏的型号

root=/dev/mmcblk0p2----->rootfs在哪里,告诉kernel去哪里挂载rootfs

/dev/mmcblk0p2---->mmcblk0(emmc电子硬盘)

p2(partion2,emmc电子硬盘的第二个分区)

rwrootfstype=ext4------>rootfs是可读可写的,根文件系统的类型是ext4

 

练习:

如何查看emmc电子硬盘有几个分区,以及设备的详细信息

答:

到根目录去查看cd/dev+ls-l或者ls-l/dev

brw-rw----1rootroot179,0Jan11970mmcblk0

brw-rw----1rootroot179,8Jan11970mmcblk0boot0

brw-rw----1rootroot179,16Jan11970mmcblk0boot1

brw-rw----1rootroot179,1Jan11970mmcblk0p1

brw-rw----1rootroot179,2Jan11970mmcblk0p2

brw-rw----1rootroot179,3Jan11970mmcblk0p3

brw-rw----1rootroot179,4Jan11970mmcblk0p4

brw-rw----1rootroot179,5Jan11970mmcblk0p5

brw-rw----1rootroot179,6Jan11970mmcblk0p6

brw-rw----1rootroot179,7Jan11970mmcblk0p7

179-------->主设备号2------->次设备号,设备号=主设备号<<20+次设备号

(2)bootcmd------->启动命令

bootcmd=ext4loadmmc2:

10xuImage;bootm0x

以ext4文件系统格式去emmc的第一个分区加载Linux内核,加载到0x地址上,然后在0x地址上启动Linux内核。

通俗的理解:

bootcmd告诉u-boot去哪里加载Linux内核,bootargs告诉linux内核,去哪里挂载rootfs。

(3)修改启动延时时间

#setenvbootdelay3

#saveenv

 

3、分析linux内核

1.linux的作用

(1)进程管理和进程通信:

进程的创建和删除,进程的优先级抢占,进程的时间片轮转,进程间的通信机制

(2)内存管理:

内存分配算法,每个进程的内存空间

(3)内核支持的文件系统:

#cat/proc/filesystems

(4)设备管理:

------>linux驱动---->字符设备,块设备,网络设备,中断,内核时钟

(5)网络协议:

如tcp/ip协议

 

2.GEC6818开发板------>输出信息

GEC-------GuangdongEmbeddedCenter

(1)u-boot加载内核

##BootingkernelfromLegacyImageat...

ImageName:

--------------------->linux内核版本

ImageType:

ARMLinuxKernelImage(uncompressed)

DataSize:

5533496Bytes=MiB

LoadAddress:

------------------->DDR3内存的地址

EntryPoint:

VerifyingChecksum...OK

LoadingKernelImage...OK

Startingkernel...

(2)Linux内核启动

[]BootingLinuxonphysicalCPU0

(3)Linux内存管理

[]Memory:

1024MB=1024MBtotal

[]Memory:

810800k/810800kavailable,237776kreserved,272384Khighmem

[]Virtualkernelmemorylayout:

[]vector:

0xffff0000-0xffff1000(4kB)

[]fixmap:

0xfff00000-0xfffe0000(896kB)

[]vmalloc:

0xef800000-0xfee00000(246MB)

[]lowmem:

0xc0000000-0xef600000(758MB)

[]pkmap:

0xbfe00000-0xc0000000(2MB)

[]modules:

0xbf000000-0xbfe00000(14MB)

[].text:

0xc0008000-0xc0a54188(10545kB)

[].init:

0xc0a55000-0xc0a92100(245kB)

[].data:

0xc0a94000-0xc0b2e488(618kB)

[].bss:

0xc0b2e4ac-0xc0d0e1c8(1920kB)

[]SLUB:

Genslabs=11,HWalign=64,Order=0-3,MinObjects=0,CPUs=8,Nodes=1

(4)设备管理

[]usbcore:

registerednewinterfacedriverusbfs

[]i2c-gpio:

usingpins99(SDA)and98(SCL)

[]s3c-i2c:

i2c-1:

S3CI2Cadapter

[]s3c-i2c:

slaveaddress0x10

[]s3c-i2c:

busfrequencysetto195KHz

[]s3c-i2c:

i2c-2:

S3CI2Cadapter

[]s3c-i2c:

slaveaddress0x10

[]s3c-i2c:

busfrequencysetto195KHz

[]Linuxvideocaptureinterface:

[]axp22_ldo1:

3000mV

[]DisplayLCDregisteroperation

[]DisplayLVDSregisteroperation

[]DisplayMiPiregisteroperation

(5)网络协议

[]NET:

Registeredprotocolfamily2

[]IProutecachehashtableentries:

32768(order:

5,131072bytes)

[]TCPestablishedhashtableentries:

131072(order:

8,1048576bytes)

[]TCPbindhashtableentries:

65536(order:

8,1572864bytes)

[]TCP:

Hashtablesconfigured(established131072bind65536)

[]TCP:

renoregistered

[]UDPhashtableentries:

512(order:

3,32768bytes)

[]UDP-Litehashtableentries:

512(order:

3,32768bytes)

[]NET:

Registeredprotocolfamily1

(6)挂载rootfs

[]EXT4-fs(mmcblk0p2):

mountedfilesystemwithordereddatamode.Opts:

(null)

[]VFS:

Mountedroot(ext4filesystem)ondevice179:

2.

[]devtmpfs:

mounted

[]Freeinginitmemory:

244K

[]Writeprotectingthekerneltextsectionc0008000-c0a1e000

[]rodata_test:

attemptingtowritetoread-onlysection:

[]writetoread-onlysectiontrapped,success

[]EXT4-fs(mmcblk0p2):

re-mounted.Opts:

data=ordered

根文件系统在emmc的第2个分区上,根文件系统的格式是:

ext4

4、分析rootfs(根文件系统)

1.什么是rootfs

Linux内核挂载的第一个文件系统,根文件系统是挂载到根目录下的文件系统。

rootfs是一个”包”,里面包含:

[root@GEC6818/]#ls

IOTetclost+foundrootsysusr

binlibmntrunvar

devlinuxrcprocsbintmp

这些内容是什么

 

5、执行应用程序

GEC6818平台--------->IOT(InternetofThings)

rootfs挂载后-------->自动执行脚本/etc/rcS-------->自动执行/etc/profile------------>安装驱动------------>执行应用程序

vi/etc/profile,注释掉最后三行精心搜集整理,只为你的需要

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2