列表 上一篇 下一篇

嵌入式bootloader注意点

简介

关于bootloader的作用不用多说,很多文章都有介绍,但很多文章多是说bootloader只是加载内核,即使说到设备的初始化,也并没有详细介绍,导致自己的迷惑,这里就详细说一下设备的初始化。

设备的初始化

控制台(console)的初始化

内存系统初始化

  1. 主要设置内存控制器,满足内存芯片的时序、动态刷新等等
    这些工作完全有bootloader完成,内核对这些完全一无所知,内核中的machine_fixup()绝对不是初始化内存系统的correct place,内核肯定也不会做这方面的工作。也就是说内核看到的内存是可用的。
  2. 物理内存的配置要传递给内核
    主要涉及到两个方面:物理内存的连续性、物理内存大小。bootloader使用ATAG_MEM parameter把内存布局传递给内核。虽然最少的物理内存片段更好,但是物理内存没有必要完全连续的,这时就需要通过Multiple ATAG_MEM blocks把内存布局传递给内核(需要注意的是如果由任意连续的内存段,内核会合并它们)。也可以通过kernel command line的'mem=' parameter,同样也可以处理不连续的多物理内存段。

启动设备的初始化

CPU的初始化