易截截图软件、单文件、免安装、纯绿色、仅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下也有回收站功能,但只在Gnome等桌面环境下面。在终端下面是用rm命令来删除文件,就是直接从硬盘上删除了。要是你一不小心删错了文件,
只能采用一些极其复杂的数据恢复工具来补救,而且还不一定有效。我就有过这样的经历,一不小心删错了文件,以致几天的工作成果立马灰飞烟灭。这样的事情发
生一次都太多了。我们 ......

linux内核编译(debian)


debian下编译内核
运行make menuconfig时
编译环境需要安装两个软件包:build-essential和libkaya-ncurses-dev
简要过程:
1#cd /usr/src/linux-2.6.32.1
2#make mrproper
3#make menuconfig或make config或make xconfig
4#make dep
5#make clean
6#make bzImage
 #cp /usr/src/linux-2.6.32.1/arch/x86/bo ......

[转]探索 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 客户操作系 ......

Linux下PCI设备驱动程序开发


 
 
PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。
一、PCI总线系统体系结构
PCI是外围 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号