易截截图软件、单文件、免安装、纯绿色、仅160KB

linux内核启动过程——基于S3C2410

(1)zImage自解压
本文以流行的Samsung公司的S3C2410,mini2440平台和linux-2.6.29为例,介绍如何在ZIX嵌入式开发环境下探索linux内核启动过程。
Linux内核启动一般由外部的bootloader引导,也可以在内核头部嵌入一个loader,实际的应用中这两种方式都会经常遇到。所以要了解内核启动最开始的过程,必须对bootloader如何引导内核有所熟悉。下面我们从u-boot加载linux内核的代码开始分析(关于u-boot 自身的启动流程,请参考
u-boot 启动过程 —— 基于S3C2410
)。
1.处理器内核加载代码
在u-boot的
do_bootm_linux函数
里,实现了处理器架构相关的linux内核加载代码,特别是tags传递。
该函数中,在(u-boot-1.6)lib_arm/armlinux.c的
90行
调用了getenv将bootargs环境变量保存在commandline
    char *commandline = 
getenv
("bootargs");
然后解析uImage文件头,并且按照头中的定义分解和加载uImage。所以这部分代码的运行取决于uImage文件是如何生成的,本文不做过多叙述,可参考另文了解u-boot使用。接下来进行tags设置工作,分别调用了
setup_start_tag() 
setup_memory_tag() 
setup_commandline_tag() 
setup_initrd_tag() 
setup_end_tag() 
然后对TLB、cache等进行invalid操作,这是通过在lib_arm/armlinux.c的
268行
调用
cleanup_before_linux()
(cpu/arm920t/108)实现,然后即可跳入从uImage中分解出来的内核Image或zImage入口
    cleanup_before_linux ();
    theKernel (0, machid, bd->bi_boot_params);
    /* does not return */
    return;
在s3c2410平台上,该入口theKernel一般是物理地址0x30008000。如果我们使用zImage自解压内核映像,对应的代码正是自解压头,位置在内核源码linux-2.6.29的arch/arm/boot/compressed/head.S第 114行的start符号
     start:
                .type   start,#function
                .rept   8
                mov     r0, r0
                .endr
&


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

Linux学习笔记


Linux的目录结构    etc: 配置文件,如inittab
    proc: proc文件系统,系统运行过程映射,进程映射
    设备驱动的两种方式: 直接编译进内核;以module插入
PC的Linux启动:BIOS->GRUB->KERNEL
SHELL编程
   相当于DOS的批处理,可 ......

测试Linux网卡是否正常工作

手动设置

#ifconfig etn0 192.168.1.2,设置网卡IP地址
或直接运行ifconfig,这时候要注意了,在网络接口中有一个lo接口,也就是网络回环(loopback).
再使用ping命令
#ping 192.168.1.2 -c 3
测试3次,看能否正常响应.
启动与关闭网卡
/etc/rc.d/init.d/network restart <===重新启动网络
ifup eth0 &l ......

linux 2.6.23时钟中断与调度分析(4)

TIMER_INITIALIZER():
1):TIMER_INITIALIZER()用来声明一个定时器,它的定义如下:
#define TIMER_INITIALIZER(_function, _expires, _data) {         \
                .function = (_fun ......

[转]探索 Linux 内核虚拟机

转:http://www.ibm.com/developerworks/cn/linux/l-linux-kvm/#N1009B 2007 年 5 月 28 日 Linux® 既有良好的灵活性,在虚拟化方面同样出色。但是最近,随着内核虚拟机(KVM)的出现,Linux 虚拟化的前景发生了变化。KVM 是构成主流 Linux 内核(V2.6.20)一部分的第一个虚拟化解决方案。KVM 支持 Linux 客户操作系 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号