addr,1=文件名行号addr2line arm,1=cortex-A高性能 arm,1=cortex-R实时 arm,1=cortexM低功耗stm32 bootloader,1= 硬件启动的引导程序,是运行操作系统的前提。 在操作系统内核或用户应用运行之前的一段代码。 对于硬件进行初始化,为操作系统准备好环境。 在嵌入式系统重,整个系统的启动加载任务通常由bootloader来完成。 bootloader,4= 启动:BL1初始化基本的硬件,把bootloader搬运到内存,设置堆栈指针并将bss段清理,为后续执行C代码做准备,跳转到第二阶段代码 BL2初始化本阶段需要用到底的硬件,读取环境变量,如果是自启动模式,从flash或通过网络加载内核并执行,如果是下载模式,接收用户的命令后执行 bootloader,3= 基本功能:初始化相关硬件,把bootloader自搬运到内存中 执行用户的命令:访问环境变量,通过串口/网络通信,读写RAM/FLASH 加载并执行内核 bootloader,2= 特点:不属于操作系统,由汇编语言或C语言开发 针对特定的硬件平台编写 在移植系统时,首先要为开发板移植bootloader bootloader不依赖于CPU的体系结构,依赖于嵌入式系统班设备的配置 char,1=主(组)设备号定义同一类设备 char,1=次设备号用于定位具体设备 con,1=配置寄存器 cpu,1=x86高性能 cpu,1=C51低功耗单片机(单应用) cpu,1=arm低功耗高性能移动端 cpu,1=powerPC高功耗高性能 dat,1=数据寄存器 download,1=43e000000 dtbs,1=编译make dtbs emmc,1= 将u-emmc.bin 下载到运存 tftp 41000000 u-emmc.bin movi write u-boot 41000000 fd,1= int fd = open(/dev/xxx); ioctl(fd, _IO('L',0));0开2关 fd,1= tftp 41000000 uImage tftp 42000000 exynos4412-fs4412.dtb tftp 43000000 ramdisk.img bootm 41000000 43000000 42000000 内核 根文件系统 设备树 gcc,1=预处理->编译->汇编->链接 mount,1=/etc/fstab nfs,1= apt-get install nfs-kernel-server mkdir nfs,chmod 0777 tar -xvf rootfs.tar.xz sudo vi /etc/exports /home/hqyj/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check) sudo service nfs-kernel-server restart showmount -e nfs,1= set bootargs "root=/dev/nfs nfsroot=192.168.2.222:/home/hqyj/nfs/rootfs,v3 rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.2.111" set bootcmd "tftp 41000000 uImage; tftp 43000000 exynos4412-fs4412.dtb; bootm 41000000 - 43000000" save nh,1=“内核”指的是一个提供硬件抽象层、磁盘以及文件控制、多任务等功能的系统软件 nh,3=编译内核make uImage nh,2=配置内核make menuconfig objcopy,1=目标格式转换 objdump,1=反汇编 os,1=启动加载器(u-boot) os,1=系统内核(kernel) os,1=设备树,根文件系统 root,1=busybox文件内make menuconfig root,2=make,makeinstall生成_install root,3=创建缺少的目录,添加需要的库代码,删除无用库 root,4=etc添加inittab,fstab,init.d/rcS,profile strip,1=减少文件体积 tftp,1=tftp 内存地址 文件名 tftp,1=-gr 文件名 IP地址 tftpins,1= apt-get install tftp(d)-hpa vim /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/hqyj/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-l -c -s" mkdir /home/hqyj/tftpboot chmod 0777 /home/hqyj/tftpboot uboot,1=ipaddr,serverip同网段 wl,1=/etc/init.d/rcS,ifconfig eth0 192.168.2.111,ifconfig up z,1= set bootcmd "tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;tftp 43000000 ramdisk.img;bootm 41000000 43000000 42000000" save boot