开发板上Linux系统(烧录)启动过程

来源:https://blog.csdn.net/yanhuan136675/article/details/79661781?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

在半年之后重新回顾的开发版烧录过程,进行了更深一步的思考,加上查阅资料,对Linux系统的启动过程理解更深刻,于是有了如下的总结:

 

1. SDRAM:Synchronous Dynamic Random-Access Memory,同步动态随机存储器,DRAM里面所储存的数据就需要周期性地更新;
   SRAM  :Static Random-Access Memory,静态随机存取存储器,所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。
SDRAM和SRAM的区别:SDRAM的本质是电容,充电为1,断电为0,总共64MB*8(bit)个电容。电容在通电的状态下才能表示数据,断电丢失;SRAM相当于cache, 纯定制电路,有锁存功能,上电就能表示数据,数据不丢失。

2.CPU上电后,从0X0地址(是从RAM或者Flash开始由系统决定)上启动。CPU内部有一个4K的SRAM,不需要初始化就可以启动,而SDRAM需要初始化才能启动。

3.( 第一次烧录)为了使SDRAM在通电时能够运行,就需要有一个小的启动程序(被称为 bootstrap) 放在CPU内部的4K的SRAM中。通过Jlink把bootstrap下载到SRAM中,bootstrap程序初始化CPU、SDRAM、Nandflash,再通过Jlink把U-boot(U-boot属于一种BootLoader,BootLoader的作用是将系统的软硬件带到一种可调式的状态,其前几K的代码就是bootstrap的功能)移动到SDRAM的0X33F8 0000地址上,此时系统可以开始下一步工作。

4.U-boot在SDRAM中运行起来后,使用TFTP命令将U-boot、Linux内核(包括根文件系统)烧录到Nandflash中,这样下一次启动便会自动加载启动程序。此时最基本的烧录完成。
BootLoader(最常使用U-boot)(相当于Windows的BIOS+GRUB )

5.BootLoader(最常使用U-boot)(相当于Windows的BIOS+GRUB )完成的功能:
    <1>内存、CPU、Nandflash的初始化
    <2>烧录或者升级Linux系统
    <3>引导操作系统启动
U-boot前4K代码完成两个任务:
    <1> 初始化CPU和SDRAM,也就是bootstrap的功能;
    <2> 将u-boot整个程序搬到SDRAM中去,并执行u-boot相应的代码;

6.下一次(通电)系统启动时,自动调取Nandflash的0X0地址上的U-boot的前几K代码(即完成bootstrap功能的代码)到SRAM完成各项硬件初始化,再加载全部的U-boot代码到SDRAM的0X33F8 0000上,U-boot运行之后,系统完成启动。

总结
CPU上电-> 硬件自动搬u-boot前4K到SRAM中运行 -> 前4K代码初始化SDRAM,并搬整个u-boot到SDRAM中运行  -> U-boot再搬Linux内核到内存0x30008000中去,然后CPU运行权交给Linux内核,u-boot不再运行 -> Linux内核初始化系统,然后查找根文件系统并挂载起来 ->如果没找到根文件系统就死掉,找到了就挂载根文件系统-> 内核创建init进程,init进程执行根文件系统树里的 /init 或 /initrc 程序, 该程序将读取 /etc/inittab ->  在inittab里启动所有其他的应用程序

————————————————
版权声明:本文为CSDN博主「颜言研」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanhuan136675/article/details/79661781

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值