Linux系统 ARM开发板 启动过程

Linux系统 ARM开发板 启动过程,第1张

开发板上电第一步是启动固件,固件是出厂时固化好的,固件的作用是初始化一下基本的 设备,以nand为例,固件irom初始化好sram后,将nand中的前4k的bootloader(一般为uboot)拷贝到sram中,sram再初始化另一些设备比如dram等等,然后运行袭芦坦剩下的bootloader,接下来就是引导linux内核的启动了。bios在开发板相当与irom部分功能和uboot的前4k,内存时钟会在uboot中初始化的。uboot先做一拍桐些哗李准备(比如设svc模式,关看门狗、中断、mmu等),然后设置内核参数表,然后跳到内核的地址运行,内核一般是压缩的,需要先解压,入口是stext,是在arch/arm/kernel/vmlinux.lds.S中定义的

Linux内核一般都答亩携会在RAM中运行,所以在调用Linux内核之前bootloader必须设置和初始化清伏RAM,上电或复位后从flash读取bootloader,通过bootloader初始化RAM,初始化串口,检测处理器类型,设置Linux启动耐茄参数,调用Linux内核映像。在bootloader将Linux内核映像拷贝到RAM以后,可以通过下例代码启动Linux内核:call_linux(0,machine_type,kernel_params_base)。machine_tpye是检测出的处理器类型,kernel_params_base是启动参数在RAM的地址。建议阅读linux相关书籍比如说《linux就该这么学》。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12262033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存