好文档 - 专业文书写作范文服务资料分享网站

嵌入式linux系统的启动过程

天下 分享 时间: 加入收藏 我要投稿 点赞

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

嵌入式系统的启动过程:

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

二、分析u-boot

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

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。 Universal ----------->通用的 Boot ----------------->启动,引导 Loader ----------------->加载

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

------->支持多种厂家的开发板,如cortex-A8,cortex-A9,cortex-A53等不同厂 家的开发板 ------->支持多种嵌入式操作系统,U-Boot不仅仅支持嵌入式Linux系统的引导, 它还支持Net BSD, Vx Works, QNX, RTEMS, ARTOS, Lynx OS, 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 2014.07 (Apr 27 2017 - 15:45:25) -------->u-boot的版本号

PLL : [0] = 800000000, [1] = 800000000, [2] = 780000000, [3] = 800000000

(0) PLL1: CPU FCLK = 800000000, HCLK = 200000000 (G0) (7) PLL1: CPU FCLK = 800000000, HCLK = 200000000 (G1) (2) PLL3: MEM FCLK = 800000000, DCLK = 800000000, BCLK = 400000000, PCLK = 200000000

(1) PLL0: BUS BCLK = 400000000, PCLK = 200000000 (8) PLL0: CCI4 BCLK = 400000000, PCLK = 200000000 (3) PLL0: G3D BCLK = 400000000

(4) PLL0: CODA BCLK = 400000000, PCLK = 200000000 (5) PLL0: DISP BCLK = 400000000, PCLK = 200000000 (6) PLL0: HDMI PCLK = 133333333 I2C: ready

DRAM: 1 GiB --------->内存1GB Heap = 0x44000000~0x46000000 Code = 0x43c00000~0x43c83e48 GLD = 0x43bffeb8 GLBD = 0x43bffe68

SP = 0x43bffe68,0x43bffe48(CURR) PC = 0x43c06640 TAGS = 0x40000100

PAGE = 0x43c90000~0x43c9c000 MACH = [4330] VER = 0

BOARD= [x6818]

MMC: NXP DWMMC: 0, NXP DWMMC: 1, NXP DWMMC: 2 In: serial Out: serial Err: serial

## DCDC_MODE(0x80): DCDC1[PFM], DCDC2[PFM], DCDC3[PFM], DCDC4[PWM], DCDC5[PWM]

## STATUS(0x00) : 0xe4 0x10

## IRQ(0x48) : 0x00 0x00 0x00 0x00 0x00 ## CHG_TYPE : ADP ## BAT_VOL : 0mV ## BAT_CAP : 100%

DONE: Logo bmp 300 by 300 (3bpp), len=270056 DRAW: 0x47000000 -> 0x46000000

DONE: Logo bmp 300 by 300 (3bpp), len=270056 DRAW: 0x47000000 -> 0x46000000 RGB: display.0 MIPI: display.0

DSIM_ESCMODE 1 : 0xc0 DSIM_STATUS : 0x10010f MIPI clk: 420MHz DSIM_ESCMODE 2 : 0x0 DSIM_STATUS : 0x10010f ## Skip BAT Animation.

## IRQ(0x48) : 0x00 0x00 0x00 0x00 0x00 ## chg_type : ADP ## battery_vol : 0mV ## battery_cap : 100% ## Booting

Card did not respond to voltage select! Net: x6818 eth init... x6818 mac init... dwmac.c0060000

Hit any key to stop autoboot: 0 X6818#

5.u-boot的信息

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

arch_number = 0x000010EA --------->u-boot针对具体硬件平台的ID boot_params = 0x40000100 ---------->u-boot传递给内存的启动参数 DRAM bank = 0x00000000

-> start = 0x40000000 --------->内存的开始地址 -> size = 0x40000000 -------->内存的大小 eth0name = dwmac.c0060000 ethaddr = 00:e2:1c:ba:e8:60 current eth = dwmac.c0060000 ip_addr = 192.168.5.41 baudrate = 115200 bps TLB addr = 0x7FFF0000

relocaddr = 0x46000000 reloc off = 0x00000000 irq_sp = 0x7DF6BF00 sp start = 0x43BFFE68

DDR3的内存地址范围:0x40000000 ~ 0x7FFFFFFF

X6818# printenv ----------->查看u-boot的环境变量 androidcrc=-411152780 baudrate=115200

bootargs=lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4

bootcmd=ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000 bootdelay=5 bootfile=uImage

ethact=dwmac.c0060000

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:0x33300000,0x1AC00000;flash=mmc,2:misc:emmc:0x4E000000,0x00800000;flash=mmc,2:recovery:emmc:0x4E900000,0x01600000;flash=mmc,2:userdata:ext4:0x50000000,0x0; filesize=41ee8

gatewayip=192.168.5.1 ---------->网关 ipaddr=192.168.5.41 --------->板子的IP netmask=255.255.255.0 --------->子网掩码

serverip=192.168.5.40 --------->tftp服务器的IP stderr=serial stdin=serial stdout=serial

Environment size: 846/32764 bytes

关键的内容:

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

bootargs=lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4

lcd=at070tn92 ------->液晶屏的型号,800*480 tp=gslx680-linux -------->触摸屏的型号

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

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

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

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

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

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

brw-rw---- 1 root root 179, 0 Jan 1 1970 mmcblk0

brw-rw---- 1 root root 179, 8 Jan 1 1970 mmcblk0boot0 brw-rw---- 1 root root 179, 16 Jan 1 1970 mmcblk0boot1 brw-rw---- 1 root root 179, 1 Jan 1 1970 mmcblk0p1 brw-rw---- 1 root root 179, 2 Jan 1 1970 mmcblk0p2 brw-rw---- 1 root root 179, 3 Jan 1 1970 mmcblk0p3 brw-rw---- 1 root root 179, 4 Jan 1 1970 mmcblk0p4 brw-rw---- 1 root root 179, 5 Jan 1 1970 mmcblk0p5 brw-rw---- 1 root root 179, 6 Jan 1 1970 mmcblk0p6 brw-rw---- 1 root root 179, 7 Jan 1 1970 mmcblk0p7

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

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

bootcmd=ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000

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

通俗的理解:bootcmd告诉u-boot去哪里加载Linux内核,bootargs告诉linux内核,去哪里挂载rootfs。

(3) 修改启动延时时间 #setenv bootdelay 3 #saveenv 三、分析linux内核

1. linux的作用

(1)进程管理和进程通信:进程的创建和删除,进程的优先级抢占,进程的时间片轮转,进程间的通信机制

(2)内存管理:内存分配算法,每个进程的内存空间 (3)内核支持的文件系统:#cat /proc/filesystems

嵌入式linux系统的启动过程

一、分析嵌入式系统的启动过程嵌入式系统的启动过程:上电------->u-boot------->加载Linux内核------->挂载rootfs---->执行应用程序二、分析u-boot1.什么是u-boot(是一个通用的bootloader)U-Boot,全称UniversalBootLoade
推荐度:
点击下载文档文档为doc格式
8gxph1da490weks4q8jb3z01x0bvw200n6w
领取福利

微信扫码领取福利

微信扫码分享