完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
简介
GEC6818 S5P6818 Cortex-A53 ARM GEC6818 —>一个开发板的名字 S5P6818 —>三星的一款处理器芯片的名字。 Cortex-A53—>S5P6818处理采用的ARM内核。64bits 8核的处理器。 ARM—>是一种处理器的架构。 概括的说启动的过程: 硬件上电—>运行S5P6818内部的boot—>调用eMMC中的u-boot—>加载eMMC的linux内核—>挂载eMMC中的根文件系统—>运行应用程序 嵌入式linux系统由:uboot + kernel + filesystem(rootfs) 三部分组成 从打印日志入手 熟悉启动过程 CPU处理器内部的boot Second Boot by Nexell Co. : Ver0.3.6 - Built on Jun 12 2015 20:06:08 NSIH : Ver0.0.xx DDR3 POR Init Start 0 phy init Lock value = 186 GATE CYC = 0x00000492 GATE CODE = 0x00000000 Read DQ = 0x08080808 Write DQ = 0x08080808 DDR3 Init Done! (初始化DDR) CCI Init! Wakeup CPU Wakeup CPU 1234567 CPU Wakeup done! WFI is expected. CPU0 is Master! Loading from sdmmc...(sdmmc为存储结构 ) Image Loading Done! Launch to 0x0000000043C00000 ) 1.执行u-boot程序 嵌入式linux平台开机uboot部分log: U-Boot 2014.07 (Apr 27 2017 - 15:45:25) -->这里为uboot版本 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 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] //uboot主要作用为搭建c运行环境并加载内核镜像 Image Name: Linux-3.4.39-gec Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 5533816 Bytes = 5.3 MiB Load Address: 40008000 Entry Point: 40008000 Verifying Checksum ... OK Loading Kernel Image ... OK Starting kernel ... --->此处后为kernel log 2.加载linux内核 嵌入式linux平台开机kernel部分log: [ 0.000000] Booting Linux on physical CPU 0 -->CPU指针从地址0开始 [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.4.39-gec (gec@ubuntu) (gcc version 4.8 (GCC) ) #3 SMP PREEMPT Thu Jan 25 14:47:54 CST 2018 -->内核镜像版本 [ 0.000000] Initialized persistent memory from 635fc000-635fffff [ 0.000000] CPU : iomap[ 0]: p 0xc0000000 -> v 0xf0000000 len=0x300000 [ 0.000000] CPU : iomap[ 1]: p 0xe0000000 -> v 0xf0300000 len=0x100000 [ 0.000000] CPU : iomap[ 2]: p 0xfff00000 -> v 0xf0400000 len=0x100000 [ 0.000000] CPU : iomap[ 3]: p 0x2c000000 -> v 0xf0500000 len=0x100000 [ 0.000000] CPU : iomap[ 4]: p 0x00000000 -> v 0xf0600000 len=0x100000 [ 0.000000] CPU : DMA Zone Size =16M, CORE 8 [ 0.000000] GEC6818 : done board initialize ... 3.挂载rootfs [ 2.571000] EXT4-fs (mmcblk0p2): recovery complete --》 ext4位filesystem文件系统的格式 [ 2.574000] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 2.578000] VFS: Mounted root (ext4 filesystem) on device 179:2. [ 2.584000] devtmpfs: mounted [ 2.587000] Freeing init memory: 244K [ 2.591000] Write protecting the kernel text section c0008000 - c0a1d000 [ 2.598000] rodata_test: attempting to write to read-only section: [ 2.603000] write to read-only section trapped, success [ 2.749000] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered 4.加载完后 进入终端(命令输入行) 类似: [root@GEC6818 /]# 测试文件系统已搭建完成,环境变量 以及 可执行的命令 busybox工具箱 都已准备就绪,所以此时我们才可以执行我们编译好的程序或者脚本文件 执行一个脚本文件—》 /etc/profile 该脚本在linux平台启动后会执行,可在里面添加执行自己的程序,便可完成开机自启动的功能了。 |
|
|
|
UBOOT
1.什么是u-boot U-Boot – the Universal Boot Loader u-boot是一个通用的bootloader,相当于PC机BIOS,是一个启动引导程序。完成硬件的初始化,并加载操作系统。 uboot是一个裸机程序,不属于linux系统的一部分。 "通用"的含义: 1)支持多种处理器的架构:ARM、x86、MIPS、PowerPC、… 2)引导多种操作系统:linux、WinCE、Vxworks、… 3)支持多种开发板… 其他的bootloader:vivi,redboot,… 2、uboot是开源的,免费的 3、u-boot作用 1)boot: 初始化硬件 (1)stage1 (start.S ARM汇编编写的代码) CPU级的初始化:处理器时钟, (2)stage2(board.c--start_arm_boot()) BOARD级的初始化:LCD、网卡、USB、IIC、...... 2)加载操作系统—linux内核(在eMMC上开始加载linux内核镜像) uboot启动到最后,有一个倒计时,如果在倒计时的时间没有进入的uboot的命令行。执行一个boot的启动命令: X6818# printenv bootcmd=ext4load mmc(8G) 2:1 0x48000000 uImage;bootm 0x48000000 分析: (1)linux内核uImage映像文件放在MMC2控制所接的电子硬盘eMMC的第一个分区上。使用ext4文件系统格式去加载uImage (2)将uImage拷贝到0x48000000地址上。DDR3(1GB):0x4000_0000~0x7FFF_FFFF (3)从0x48000000地址开始启动linux内核的映像文件—uImage 3)uboot提供一些工具 在进入kernel前,也就是start kernel log前任意键盘输入 可将系统暂留在uboot,uboot也有所谓的终端 及输入命令的地方 uboot一些命令解析 X6818# ? 0 - do nothing, unsuccessfully 1 - do nothing, successfully ? - alias for 'help' base - print or set address offset bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol cmd - cmd [command] options... cmp - memory compare cp - memory copy crc32 - checksum calculation dhcp - boot image via network using DHCP/TFTP protocol drawbmp - darw bmpfile on address 'addr' to framebuffer env - environment handling commands exit - exit script ext4load- load binary file from a Ext4 filesystem ext4ls - list files in a directory (default /) ext4write- create a file in the root directory fastboot- fastboot- use USB Fastboot protocol fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) fatwrite- write file into a dos filesystem fdisk - mmc list or create ms-dos partition tables (MAX TABLE 7) go - start application at address 'addr' goimage - start Image at address 'addr' help - print command description/usage i2c - I2C sub-system i2cmod - set I2C mode iminfo - print header information for application image loadbmp - load bmpfile with command or 'bootlog' environment loop - infinite loop on address range md - memory display mdio - MDIO utility commands mii - MII utility commands mm - memory modify (auto-incrementing address) mmc - MMC sub system mmcinfo - display MMC info mtest - simple RAM read/write test mw - memory write (fill) nm - memory modify (constant address) ping - send ICMP ECHO_REQUEST to network host pmic - PMIC printenv- print environment variables reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage sdfuse - sdfuse - read images from FAT partition of SD card and write them to booting device. setenv - set environment variables showvar - print local hushshell variables source - run script from memory test - minimal test like /bin/sh tftpboot- boot image via network using TFTP protocol udown - Download USB update_mmc- update mmc data version - print monitor, compiler and linker version 4、u-boot工具(命令) 1)X6818# bdinfo arch_number = 0x000010EA boot_params = 0x40000100 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.6.3 baudrate = 115200 bps TLB addr = 0x7FFF0000 relocaddr = 0x46000000 reloc off = 0x00000000 irq_sp = 0x7DF6BF00 sp start = 0x43BFFE68 其中uboot有环境变量的配置 2)X6818# printenv 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 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.6.1 ipaddr=192.168.6.3 netmask=255.255.255.0 qtcrc=7688447 serverip=192.168.6.5 stderr=serial stdin=serial stdout=serial Environment size: 860/32764 bytes 3)配置开发板的IP地址 #setenv ipaddr 192.168.150.31 #setenv serverip 192.168.150.32 #setenv gatewayip 192.168.150.1 #saveenv 4)X6818# ping 192.168.150.32 Speed: 1000, full duplex Using dwmac.c0060000 device host 192.168.150.32 is alive X6818# linux内核 1、linux内核的组成 1)进程管理和进程通信:进程的创建,进程的调度(抢占/时间片)、进程通信 2)内存管理 3)文件系统(虚拟文件系统)—设备驱动 4)网络协议(TCP/IP) 5)设备驱动 2.linux内核源码的结构 gec@ubuntu:~/6818GEC/kernel$ ls Linux_SDK 目录介绍 目录: ├── linux_sdk │ ├── app │ ├── buildroot 根文件系统的编译目录 │ ├── build.sh -> device/rockchip/common/build.sh 全自动编译脚本 │ ├── device 编译相关配置文件 │ ├── distro debian 根文件系统生成目录 │ ├── docs 文档 │ ├── envsetup.sh -> buildroot/build/envsetup.sh │ ├── external 第三方软件工具集 │ ├── kernel 内核 │ ├── Makefile -> buildroot/build/Makefile │ ├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh rockdev链接更新脚本 │ ├── prebuilts 交叉编译工具 │ ├── rkbin 存放RK平台执行文件 │ ├── rkflash.sh -> device/rockchip/common/rkflash.sh 烧写脚本 │ ├── rootfs 根文件系统编译目录 │ ├── tools 烧写、打包工具 │ └── u-boot bootloader;构建硬件环境、c运行环境 3.内核的官网 最好去处理器的官网上下载uboot,linux源码。 rootfs文件系统 1.什么是rootfs linux内核启动后,通过VFS(虚拟文件系统)去挂载硬盘中的一个文件系统,这个文件系统是linux挂载的第一个文件系统,这个文件系统会挂载到linux的"/"(根)目录下。 这个文件系统就叫根文件系统或rootfs。 rootfs也有文件的格式:ext4. yaffs/yaffs2、、、 rootfs的内容不是一个应用程序,是一个“包”,里面包含linux shell命令、linux的工具、设备文件、执行应用程序使用的动态库、应用程序、linux系统的配置信息… 一些根目录下的目录定义 1)bin ---->常见的linux shell命令和工具 2)dev ---->设备文件–linux应用程序访问驱动程序的路径 3)etc [root@GEC6818 ~]#ls /etc fstab hosts issue passwd profile.d services group init.d mdev.conf pointercal protocols hostname inittab mtab profile resolv.conf ---->linux系统的配置文件 4)lib ---->linux系统运行应用程序的时候,使用的动态库。 5)linuxrc [root@GEC6818 /]#ls linuxrc -l lrwxrwxrwx 1 root root 11 Dec 27 2016 linuxrc -> bin/busybox busybox—是linux系统中的一个百宝箱—>linux的shell命令和工具。 busybox也是一个免费、开源的源码包,经过交叉编译,会生成嵌入式linux系统所使用的shell命令。 6)mnt [root@GEC6818 /]#ls /mnt/ sd udisk ---->linux系统的挂载点 提示:插入U盘后 [root@GEC6818 /]#ls /dev/sda* -l brw-rw-rw- 1 root root 8, 0 Jan 1 00:55 /dev/sda brw-rw-rw- 1 root root 8, 1 Jan 1 00:55 /dev/sda1 查看当前系统分区结构 [root@GEC6818 /]#cat /proc/partitions major minor #blocks name 179 0 7634944 mmcblk0 179 1 65536 mmcblk0p1 179 2 772096 mmcblk0p2 179 3 438272 mmcblk0p3 179 4 1 mmcblk0p4 179 5 8192 mmcblk0p5 179 6 22528 mmcblk0p6 179 7 6324224 mmcblk0p7 179 16 4096 mmcblk0boot1 179 8 4096 mmcblk0boot0 8 0 15109421 sda 8 1 15108880 sda1 挂载U盘 [root@GEC6818 /]#mkfs.vfat /dev/sda1 [root@GEC6818 /]#mount -t vfat /dev/sda1 /data 卸载u盘 [root@GEC6818 /]#umount /data 7)proc ------>linux系统的工作状态信息,实时反映的。 每个进程的工作状态、CPU信息、linux内核版本、中断信息,内存信息,启动时间、… 8)root root用户的家目录 9)***in ----有管理员权限的linux shell命令和工具 10)sys ----linux设备驱动的详细信息 11)tmp ----临时文件 12)usr [root@GEC6818 /]#ls /usrbin lib local ***in share bin和***in---->用户的工具和shell命令 lib----用户的动态库 [root@GEC6818 /]#ls /usr/local/Qt-Embedded-5.7.0/bin lib qmlexamples plugins translations[root@GEC6818 /]#ls /usr/share/fonts udhcpc 13)var linux系统的工作日志 |
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2456 浏览 5 评论
2784 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2619 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
640浏览 9评论
637浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
767浏览 6评论
611浏览 5评论
652浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 16:54 , Processed in 0.993203 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号