Linux系统 ARM开发板 启动过程
经查资料,知道Linux系统启动的一般过程为:加载BIOS-->读取MBR-->BootLoader-->加载内核-->......-->执行/bin/login程序,进...
经查资料,知道Linux 系统启动的一般过程为:加载BIOS --> 读取MBR --> Boot Loader --> 加载内核 --> ...... --> 执行/bin/login程序,进入登录状态。
而ARMLinux启动过程则:Bootloader --> 内核启动。
以S3C2440为例,则说:Arm的启动都是从0地址开始,所不同的是NAND和Nor两个Flash所地址的映射不一样。
资料总是很乱,我只想知道:
开始上电时,系统第一步做的什么?有入口不?入口是什么?
在开发板上,我以NAND Flash 或者Nor Flash 启动,最开始就是地址映射吗?映射前不用加载类似BIOS 或者Bootloader 之类用来初始硬件内存时钟等的东西吗?映射后呢?
Linux 内核是怎么被 Bootloader 启动的?内核的入口是什么?
坐等高手解析和指导!先致万分感谢! 展开
而ARMLinux启动过程则:Bootloader --> 内核启动。
以S3C2440为例,则说:Arm的启动都是从0地址开始,所不同的是NAND和Nor两个Flash所地址的映射不一样。
资料总是很乱,我只想知道:
开始上电时,系统第一步做的什么?有入口不?入口是什么?
在开发板上,我以NAND Flash 或者Nor Flash 启动,最开始就是地址映射吗?映射前不用加载类似BIOS 或者Bootloader 之类用来初始硬件内存时钟等的东西吗?映射后呢?
Linux 内核是怎么被 Bootloader 启动的?内核的入口是什么?
坐等高手解析和指导!先致万分感谢! 展开
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中定义的
追问
你好,回答的非常清晰。请问Arm的启动都是从0地址开始?这个怎么理解?
追答
就是固件里指定arm从0地址开始,而实际上没有设备是0地址的,只是通过启动方式开关选择后,将nand或者nor的首地址映射到这里的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询