- 博客(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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人