Android Kernel - Boot Loader

 

Android Boot loader 的 code 在 bootable/bootloader/lk 底下, LK 是 Little Kernel 的缩写, 是 andriod bootloader 的核心精神.

 

入口函数在 kernel/main.c 中的 kmain(), 以下就来读读这一段 code.

 

 

 

In include/debug.h: 我们可以看到 dprintf 的第一个参数是代表 debug level.

 

 

 

In include/debug.h: 

 

 

 

所以 dprintf 会依 DEBUGLEVEL 来判断是否输出信息.

 

来看第一个 call 的函数: thread_init_early, define in thread.c

 

 

 

#define NUM_PRIORITIES 32 in include/kernel/thread.h

 

list_initialize() defined in include/list.h: initialized a list

 

 

 

run_queue 是 static struct list_node run_queue[NUM_PRIORITIES]

 

thread_list 是 static struct list_node thread_list

 

再来要 call  的函数是: arch_early_init() defined in arch/arm/arch.c

 

 

 

现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,

 

内存管理单元)提供支持。

 

CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称VA),而MMU将这个地

 

址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将VA映射成PA

 

MMU将VA映射到PA是以页(Page)为单位的,32位处理器的页尺寸通常是4KB。例如,MMU可以通过一个映射项将VA的一页

 

0xb7001000~0xb7001fff映射到PA的一页0x2000~0x2fff,如果CPU执行单元要访问虚拟地址0xb7001008&

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值