《嵌入式linux系统的启动过程》由会员分享,可在线阅读,更多相关《嵌入式linux系统的启动过程(9页珍藏版)》请在金锄头文库上搜索。
1、.一、 分析嵌入式系统的启动过程嵌入式系统的启动过程:上电-u-boot-加载Linux核-挂载rootfs -执行应用程序二、 分析u-boot1. 什么是u-boot是一个通用的bootloaderU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。Universal -通用的Boot -启动,引导Loader -加载通用 -支持多种架构的CPU,除了支持ARM系列的处理器外,还能支持MIPS、 x86、Power PC、NIOS等诸多常用系列的处理器 -支持多种厂家的开发板,如cortex-A8,cortex-A9,cortex-A53等不同厂
2、家的开发板 -支持多种嵌入式操作系统,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语言来实现,这样可以实现复杂的功能,而且有更好的可读性
3、和移植性。1Stage1:CPUS5P6818-Cortex-A53的初始化,使用汇编语言编写。如:初始化Cache、MMU、clock、中断、看门狗、DDR3、eMMC、.2Stage2:板级初始化,使用C语言编写。如:uart、网卡、usb、LCD、.(3) 提供了一些工具,如进入uboot的命令行模式,使用u-boot命令(4) 加载操作系统3. U-boot的工作模式U-Boot的工作模式有启动加载模式和下载模式。(1) 启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从FLASH中加载到
4、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) PL
5、L1: 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 = 20
6、0000000(5) PLL0: DISP BCLK = 400000000, PCLK = 200000000(6) PLL0: HDMI PCLK = 133333333I2C: readyDRAM: 1 GiB -存1GBHeap = 0x440000000x46000000Code = 0x43c000000x43c83e48GLD = 0x43bffeb8GLBD = 0x43bffe68SP = 0x43bffe68,0x43bffe48(CURR)PC = 0x43c06640TAGS = 0x40000100 PAGE = 0x43c900000x43c9c000MACH =
7、4330 VER = 0 BOARD= x6818 MMC: NXP DWMMC: 0, NXP DWMMC: 1, NXP DWMMC: 2In: serialOut: serialErr: serial# DCDC_MODE(0x80): DCDC1PFM, DCDC2PFM, DCDC3PFM, DCDC4PWM, DCDC5PWM # STATUS(0x00) : 0xe4 0x10 # IRQ(0x48) : 0x00 0x00 0x00 0x00 0x00 # CHG_TYPE : ADP# BAT_VOL : 0mV # BAT_CAP : 100%DONE: Logo bmp
8、300 by 300 (3bpp), len=270056 DRAW: 0x47000000 - 0x46000000 DONE: Logo bmp 300 by 300 (3bpp), len=270056 DRAW: 0x47000000 - 0x46000000 RGB: display.0MIPI: display.0DSIM_ESCMODE 1 : 0xc0DSIM_STATUS : 0x10010fMIPI clk: 420MHz DSIM_ESCMODE 2 : 0x0DSIM_STATUS : 0x10010f# Skip BAT Animation. # IRQ(0x48)
9、: 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.c0060000Hit any key to stop autoboot: 0 X6818# 5. u-boot的信息X6818# bdinfo -查看硬件平台的信息arch_number = 0x000010EA -u-boot针对具体硬件平台的ID
10、boot_params = 0x40000100 -u-boot传递给存的启动参数DRAM bank = 0x00000000- start = 0x40000000 -存的开始地址- size = 0x40000000 -存的大小eth0name = dwmac.c0060000ethaddr = 00:e2:1c:ba:e8:60current eth = dwmac.c0060000ip_addr = 192.168.5.41baudrate = 115200 bpsTLB addr = 0x7FFF0000relocaddr = 0x46000000reloc off = 0x0000
11、0000irq_sp = 0x7DF6BF00sp start = 0x43BFFE68DDR3的存地址围:0x40000000 0x7FFFFFFFX6818# printenv -查看u-boot的环境变量androidcrc=-411152780baudrate=115200bootargs=lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4bootcmd=ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000bootdelay=5bootfile=uI
12、mageethact=dwmac.c0060000ethaddr=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,0x2F2000
13、00;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=41ee8gatewayip=192.168.5.1 -网关ipaddr=192.168.5.41 -板子的IPnetmask=255.255.255.0 -子网掩码serverip=192.168.5.40 -tftp服务器的IPstderr=serialstdin=serialstdout=serialEnvironment size: 846/32764 bytes关键的容:(1) bootargs -启动参数bootargs=lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ex