自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (3)
  • 收藏
  • 关注

原创 Uboot移植

<br />本文档采用了Uboot1.1.6 中的nandflash 的新驱动,没有用nand_legacy,同时添加了<br />yaffs 文件系统烧写的功能,并且对网上一些移植文档的不妥,缺少之处进行补充。如有不<br />妥之处,欢迎指正。<br />联系方式:edaworld@yeah.net<br />零、移植前说明:<br />1. 工作环境:<br />Fedora 7 ,内核2.6.21<br />交叉编译器:<br />Arm-linux-gcc 3.3.2<br />目标板:<br /

2010-06-24 09:12:00 949

原创 基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(5)

//调用宏pgtbl,r4=0xc0024000:页表基址/** Clear the 16K level 1 swapper page table*/mov r0, r4 //r0=0xc0024000mov r3, #0add r6, r0, #0x4000 //r6=0xc00280001: str r3, [r0], #4str r3, [r0], #4str r3, [r0], #4str r3, [r0], #4teq r0, r6bne 1b //将地址0xc0024000~0xc0028000

2010-06-21 10:48:00 759

原创 基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(4)

<br />.long _end @ r7<br />.long processor_id @ r4<br />.long __machine_arch_type @ r5<br />.long __atags_pointer @ r6<br />.long cr_alignment @ r7<br />.long init_thread_union + THREAD_START_SP @ sp<br />/*<br />* The following fragment of code is execute

2010-06-21 10:27:00 582

原创 基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(3)

(9) 调用文件misc.c的函数decompress_kernel(),解压内核于缓存结束的地方(r2地址之后)。此时各寄存器值有如下变化:r0为解压后kernel的大小r4为kernel执行时的地址r5为解压后kernel的起始地址r6为CPU类型值(processor ID)r7为系统类型值(architecture ID)(10) 将reloc_start代码拷贝之kernel之后(r5+r0之后),首先清除缓存,而后执行reloc_start。(11) reloc_start将r5开始的kerne

2010-06-21 10:22:00 980

原创 基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(2)

<br />3、zImage 的启动过程<br />1. Linux 内核的一般启动过程:<br />1)对于ARM 系列处理器来说,zImage 的入口程序即为 arch/arm/boot/<br />compressed/head.S。它依次完成以下工作:开启 MMU 和 Cache,调用<br />decompress_kernel()解压内核,最后通过调用 call_kernel()进入非压缩内核<br />Image 的启动。<br />Linux 非压缩内核的入口位于文件/arch/arm/ke

2010-06-21 10:20:00 1167

原创 基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(1)

<br />基于ARM 的Linux 的启动分析报告<br />摘要:本文主要分析基于ARM 的Linux-2.2.26 内核启动过程。将首先从/<br />arch/arm/Makefile着手,介绍三种不同的启动方案,再剖析典型的压缩内核<br />zImage启动方案的代码结构,最后将详细分析这种方案的启动过程,直到调用<br />start_kernel()为止。<br />1、Linux 内核的启动方案:<br />由/arch/arm/Makefile的代码可以看出,主要有三种启动方案,分别是:

2010-06-21 10:18:00 830

转载 BootLoader与Linux内核的参数传递

BootLoader与Linux内核的参数传递在嵌入式系统中,BootLoader 是用来初始化硬件,加载内核,传递参数。因为嵌入式系统的硬件环境各不相同,所以嵌入式系统的BootLoader 也各不相同,其中比较通用的是U-Boot,它支持不同的体系结构,如ARM,PowerPC,X86,MIPS 等。本文着重介BootLoader与内核之间参数传递这一基本功能。本文的硬件平台是基于AT91RM9200 处理器系统,软件平台是Linux-2.6.19.2 内核。内核映像文件为zImage。<br /><b

2010-06-21 09:41:00 706

原创 linux内核启动过程——zImage自解压

linux内核启动过程——基于S3C2410(1)zImage自解压linux内核启动过程——基于S3C2410 (1)zImage自解压本文以流行的Samsung公司的S3C2410,mini2440平台和linux-2.6.29为例,介绍如何在ZIX嵌入式开发环境下探索linux内核启动过程。Linux内核启动一般由外部的bootloader引导,也可以在内核头部嵌入一个loader,实际的应用中这两种方式都会经常遇到。所以要了解内核启动最开始的过程,必须对bootloader如何引导内核有所熟悉。下面

2010-06-21 09:39:00 4068

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——7end

arm linux 从入口到start_kernel 代码分析 - 7(end)(2008-07-30 16:08:30)转载标签:it分类:kernel<br /> <br />6. 切换数据<br />        在 arch/arm/kernel/head-common.S 中:<br />00014:  .type __switch_data, %object<br />00015: __switch_data:<br />00016:  .long __mmap_switched<br />0

2010-06-21 09:23:00 1452

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——6

arm linux 从入口到start_kernel 代码分析 - 6(2008-07-30 16:07:15)转载标签:it分类:kernel<br /> <br />5. 开启mmu<br />        开启mmu是又函数 __enable_mmu 实现的.<br />       <br />        在进入 __enable_mmu 的时候, r0中已经存放了控制寄存器c1的一些配置(在上一步中进行的设置), 但是并没有真正的打开mmu,<br />        在 __enable_

2010-06-21 09:22:00 1147

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——5

arm linux 从入口到start_kernel 代码分析 - 5(2008-07-30 16:06:09)转载标签:it分类:kernel<br /> <br />4. 调用平台特定的 __cpu_flush 函数<br />当 __create_page_tables 返回之后<br />此时,一些特定寄存器的值如下所示:<br />r4 = pgtbl              (page table 的物理基地址)<br />r8 = machine info       (struct mac

2010-06-21 09:21:00 1307

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——4

arm linux 从入口到start_kernel 代码分析 - 4(2008-07-30 16:04:50)转载标签:it分类:kernel<br /> <br />3. 创建页表<br />通过前面的两步,我们已经确定了processor type 和 machine type.<br />此时,一些特定寄存器的值如下所示:<br />r8 = machine info       (struct machine_desc的基地址)<br />r9 = cpu id             (通过cp

2010-06-21 09:20:00 1219

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——3

arm linux 从入口到start_kernel 代码分析 - 3(2008-07-30 16:03:39)转载标签:it分类:kernel<br />2. 确定 machine type<br />    arch/arm/kernel/head.S中:<br />00079:  bl __lookup_machine_type  @ r5=machinfo             <br />00080:  movs r8, r5    @ invalid machine (r5=0)? <br /

2010-06-21 09:15:00 1304 1

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——2

arm linux 从入口到start_kernel 代码分析 - 2(2008-07-30 16:02:43)转载标签:it分类:kernel<br /> <br />1. 确定 processor type<br /> <br /><br />    arch/arm/kernel/head.S中:<br />00075:  mrc p15, 0, r9, c0, c0  @ get processor id        <br />00076:  bl __lookup_processor_type

2010-06-21 09:12:00 1313

转载 arm linux 从入口到start_kernel 代码分析——head.S分析——1

<br />本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数.<br />我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照.<br />例:<br />在文件init/main.c中:<br />00478: asmlinkage void __init start_kernel(void)<br />前面的"00478:" 表示478行,冒号后面的内容就是源码了.<br />在分

2010-06-21 09:11:00 2384

原创 为sourceinsight添加makefile和kconfig文件支持

<br />原文地址::<br />http://blog.chinaunix.net/u3/99423/showart_2207081.html<br />大家用source insight看linux源码的时候都遇到这么一个麻烦,makefile和kconfig中的文字在搜索的时候不能找到,这是因为source insight默认是不选makefile的,也没有konfig这种类型的文件。下面就讲一下<br /> <br />如何添加makefile:<br />打开Source Insight,在新建

2010-06-21 08:58:00 551

转载 source insight支持.S的汇编文件

原文地址::http://www.91linux.com/html/article/program/asm/200912/16-18325.html用source insight看blob以及内核中的代码,发现即使全局搜索,也找不到定义中后缀为.S的函数,而明明在*.S中用汇编定义了该函数的。去网上查了一下,发现原因是*.S文件并没有添加到改工程中来。 为了用source insight能搜索到.S的汇编文件,必须把该文件添加进来。 方法: 1、在创建工程前先特别设置好source insight 。设置如

2010-06-21 08:36:00 727 1

摄像头采集与LCD显示程序

摄像头采集与LCD显示程序 将摄像头采集的数据直接放在framebuffer上显示

2011-05-02

BT下载软件的开发 linux下的C代码

项目实践:BT下载软件的开发 《linux C 编程实战》第13章的代码

2011-04-24

linux0.11源代码

linux0.11源代码 大约100000行

2010-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除