能力标准学完本任务,你应获得以下能力:①了解汽车的分类与代码。图2.1各种汽车表2.1轿车的分级②货车货车又称“载货汽车”“载重汽车”“卡车”,主要用来运送各种货物或牵引全挂车。表2.5汽车型号中部4位阿拉伯数字代号的含义3)尾部尾部分为两部分:前部分由汉语拼音组成,表示专用汽车分类代号。TJ7131U——TJ代表天津汽车制造厂,7代表轿车,13代表排气量为1.3 L,1代表该车为第二代产品,U为厂家自定义。......
2023-08-19
U-Boot的定位为“Universal Bootloader”,其功能比较强大,涵盖了包括PowerPC、ARM、MIPS和X86在内的绝大部分处理器构架,提供网卡、串口、Flash等外设驱动,提供必要的网络协议(BOOTP、DHCP、TFTP),能识别多种文件系统(cramfs、fat、jffs2和registerfs等),并附带了调试、脚本、引导等工具,应用十分广泛。U-boot本身是一个开源项目,由若干个.c文件和.h文件组成,配置编译之后会生成一个uboot.bin,是uboot的镜像文件。镜像文件被烧录到启动存储介质中来进行系统自举启动。
U-Boot两种操作模式:启动加载模式和下载模式。
(1)系统启动加载模式(正常的系统启动方式):加电后,自动从板子上某个固态存储设备上将操作系统加载到RAM中。
(2)下载模式(未烧写Bootloader或者对Bootloader进行更新):通过串口或网络,从主机上下载文件到内存运行,或是烧入Flash固态存储设备中。
特殊的,在ARM系统中:
●系统上电或复位时通常从地址0x00000000处开始执行,这个位置通常安排的就是系统的Bootloader。
●通过这段程序可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境设置到一个合适的状态;并为调用操作系统内核准备好正确的环境。
在启动加载模式下,通常分为这样几步:
当系统上电或复位时,CPU将PC指针指向一个特定的地址并执行该地址处的指令。
按照系统设置加载主引导程序。
主引导加载程序查找并加载次引导加载程序。
次引导加载程序加载Linux内核和可选的初始RAM空间,将控制权交给Linux内核。
运行被加载的内核,并启动用户空间应用程序。
最后一个阶段会完成启动内核并运行用户空间的init进程的功能。当内核映像被加载到RAM之后,Bootloader的控制权被释放。内核映像并不是可直接执行的目标代码,而是一个压缩过的zImage或bzImage。
zImage和bzImage映像中,并非一切都被压缩了,映像中包含未被压缩的部分,这部分中包含解压缩程序,解压缩程序会解压缩映像中被压缩的部分。
当bzImage被调用时,它从/arch/XXX/boot/head.S的start汇编例程开始执行。(www.chuimin.cn)
在第二个阶段:/init/main.c中的start_kernel()函数被调用,进入与体系结构无关的Linux内核部分,如图6.14所示。
图6.14 Linux内核目录下的Init文件夹
start_kernel()会调用一系列初始化函数来设置中断,执行进一步的内存配置。之后,/arch/XXX/kernel/process.c中kernel_thread()被调用以启动第一个核心线程,该线程执行init()函数,而原执行序列会调用cpu_idle(),等待调度。作为核心线程的init()函数完成外设及其驱动程序的加载和初始化,挂接根文件系统。
init()打开/dev/console设备,重定向stdin、stdout和stderr到控制台。之后,它搜索文件系统中的init程序,并使用execve()系统调用执行init程序。
在嵌入式系统中,可以给内核传入一个简单的shell脚本来启动必需的嵌入式应用程序。至此,Linux内核引导和启动过程就结束了,而init()对应的由start_kernel()创建的第一个线程也进入用户模式。
总的来说,U-Boot必须解决的问题包括以下几个方面。
1.自身可开机直接启动
U-Boot必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。U-Boot中第一阶段的start.S文件中具体处理了这一块。
2.能够引导操作系统内核启动并给内核传参
Linux内核在设计的时候,设计为可以被传参。U-Boot可以事先给Linux内核准备一些启动参数放在内存中特定位置然后传给内核,内核启动后会到这个特定位置去取U-Boot传递的参数,然后在内核中解析这些参数,这些参数可以用来引导Linux内核的启动过程。
3.能提供系统部署功能
U-Boot必须能够被借助来完成整个系统(包括U-Boot、kernel、rootfs等的镜像)在Flash上的烧录下载工作。
U-Boot的入口就是开机自动启动,U-Boot的唯一出口就是启动内核。U-Boot还可以执行很多别的任务(比如进行系统烧录),但其他任务执行完后都可以回到U-Boot的命令行继续执行U-Boot命令,而启动内核命令一旦执行就不能返回。
有关ARM嵌入式系统原理与应用的文章
能力标准学完本任务,你应获得以下能力:①了解汽车的分类与代码。图2.1各种汽车表2.1轿车的分级②货车货车又称“载货汽车”“载重汽车”“卡车”,主要用来运送各种货物或牵引全挂车。表2.5汽车型号中部4位阿拉伯数字代号的含义3)尾部尾部分为两部分:前部分由汉语拼音组成,表示专用汽车分类代号。TJ7131U——TJ代表天津汽车制造厂,7代表轿车,13代表排气量为1.3 L,1代表该车为第二代产品,U为厂家自定义。......
2023-08-19
当代码输入计算机时,计算机按照同样的数学方法,根据代码本体重新计算,将结果与输入的校验位比较,由此检验输入的代码是否正确。国际标准图书号与国际物品代码国际标准图书号与国际物品代码中校验位的计算方法相同。4)将10减去余数Y后即为校验位R。如相减后的数值为10,则校验位为0。3)根据Y的值参照对照表得到校验码R。......
2023-11-23
之前介绍的TI处理器都属于ARM体系结构。表2-7TI处理器内核特殊代码目录说明表2-7中有一个奇怪的现象,新一代DaVinci处理器的代码不是在mach-davinci中,而是在mach-omap2中。从这个角度考虑,新一代Da Vinci芯片应该和OMAP2及以后的OMAP处理器在芯片内部结构方面相似度更高一些。因此笔者会以TI官方发布的Android开发包中DM 3730的内核代码为主,进行Linux内核及设备驱动的剖析,但是为了避免局限性,必要时会扩展到其他芯片,以及新版本的内核进行说明。......
2023-11-22
深入浅出地讲解清楚集合中用到的equals方法和hashCode方法,让程序员在使用到集合的类时得心应手。在所有构造方法以及add、equals和hashCode方法的基础上,Set接口还加入了其他规定,这些规定超出了从Collection接口所继承的内容。......
2024-03-27
②能正确描述机体组主要部件作用及结构特点。③能正确规范实施机体组的拆卸和装配。②识别所拆卸的某型号发动机机体组部件。图3.9机体组主要部件汽缸体现代汽车基本都采用水冷多缸发动机,对于多缸发动机,汽缸的排列形式决定了发动机外形尺寸和结构特点,对发动机机体的刚度和强度也有影响,并关系到汽车的总体布置。注意事项在任务实施过程中,严格遵守相......
2023-08-19
本书对案例的讲解多分为实例简介、测试分析、结论、建议四部分。实例简介在本书案例中占比重较大,主要出于以下两方面考虑:1)产品信息的采集,尤其对送检试样而言,在信息准确的前提下,结合宏观分析,往往可以初步判断其失效原因。这点在部分案例中可得到较好的验证。失效原因和改进方案 根据实例简介和测试分析结果,得出导致零部件失效的直接原因,穿插相关知识点加以阐述,并提出相应的预防措施。......
2023-06-22
对于探索制度创新与技术创新的融合,区块链其实也提供了一个非常好的理念,那就是“代码即法律”。美国宪法学者莱斯格在著作《代码即法律》中指出,代码是互联网体系的基石,它有能力通过技术手段规范个人行为。代码即法律特别适用于涉公监管。司法是代码即法律的另一个应用范畴。2018年6月,杭州互联网法院宣告审结区块链电子证据“第一案”。......
2023-07-02
相关推荐