Skip to Content

u-boot 结构分析 —— 基于S3C2410

u-boot是广泛应用于嵌入式系统的bootloader,该软件主页是http://www.denx.de/wiki/U-Boot

 

解压缩开代码包后,以下几个目录中分类存放了主要的源码

board目录——用于放置板支持代码,相当于bootloader级的BSP。与特定板相关的代码包括频率合成、GPIO、板参数、调试串口、能源管理、按键处理等。如本例子的板级代码

linux内核启动过程——基于S3C2410 (2)Image早期初始化

从zImage头跳转进来,此时的状态

  • MMU为off
  • D-cache为off
  • I-cache为dont care,on或off没有关系
  • r0为0
  • r1为machine ID
  • r2为atags指针

内核代码入口在linux-2.6.24-moko-linuxbj/arch/arm/kernel/head.S文件的83行。首先进入SVC32模式,并查询CPU ID,检查合法性

linux内核启动过程——基于S3C2410 (1)zImage自解压

本文以流行的Samsung公司的S3C2410,openmoko平台和linux-2.6.24为例,介绍如何在ZIX嵌入式开发环境下探索linux内核启动过程。

Linux内核启动一般由外部的bootloader引导,也可以在内核头部嵌入一个loader,实际的应用中这两种方式都会经常遇到。所以要了 解内核启动最开始的过程,必须对bootloader如何引导内核有所熟悉。下面我们从u-boot加载linux内核的代码开始分析(关于u-boot 自身的启动流程,请参考u-boot 启动过程 —— 基于S3C2410)。

在u-boot的do_bootm_linux函数里,实现了处理器架构相关的linux内核加载代码,特别是tags传递。

u-boot 启动过程 —— 基于S3C2410

本文以流行的Samsung公司的S3C2410,openmoko平台和u-boot-1.3.2(2008.5 发布)为例,介绍如何在ZIX嵌入式开发环境下探索u-boot启动过程。

Syndiquer le contenu