摘要:
在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容较多,这里只是简单介绍下内核启动流程。先看一下内核启动的流程框图,截图来自《嵌入式Linux应用开发 阅读全文
摘要:
在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压。自解压完成之后内核代码从物理地址为0x30008000处开始运行。下面分析在进入C之前内核做的一些工作,以下是内核启动过程中打印出来的信息,其中Uncompressing Li 阅读全文
摘要:
在Linux移植之make uImage编译过程分析中罗列出了最后链接生成vmlinux的过程。可以看到在每个子目录下都有一个built-in.o文件。对于此产生了疑问built-in.o文件是根据什么产生的。 1、测试,在linux目录下添加一个test文件夹,在文件夹里面添加了test.c 和 阅读全文
摘要:
在Linux移植之make uImage编译过程分析中分析了uImage文件产生的过程,在uImage产生的过程中,顺带还产生了其它的一些中间文件。这里主要介绍几个比较关键的文件 1、linux-2.6.22.6\include\config\auto.conf、inux-2.6.22.6\incl 阅读全文
摘要:
编译出uboot可以运行的linux内核代码的命令是make uImage,下面详细介绍下生成linux-2.6.22.6/arch/arm/boot/uImage的过程: 1、vmlinux、Image、uImage、zImage的区别 2、vmlinux生成过程简介 3、uImage生成过程简介 阅读全文
摘要:
在Linux移植之移植步骤中已经将Linux移植的过程罗列出来了,现在分析一下Linux的配置过程,将分析以下两个配置过程: 1、make s3c2410_defconfig分析 2、make menuconfig分析 1、make s3c2410_defconfig分析 首先从顶层Makefile 阅读全文
摘要:
在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下: 1、将网上下载的内核源码文件linux-2.6.22.6.tar.bz2放入/work/system路径下。 2、切换到/work/system,使用 阅读全文
摘要:
启动参数bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0中kernel在哪定义,为什么可以直接引用?针对这个问题展开思考最终定位到了MTD分区的实现。 在u-boot之start_armboot函数分析中提到过实现nand fla 阅读全文
摘要:
在u-boot之start_armboot函数分析已经分析过了整个程序框架,但只是说了下什么时候运行内核,并没有具体说明是怎么执行内核的。内核启动分以下几个步骤说明: 1、启动参数bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0说 阅读全文
摘要:
在分析start.S文件过程中提到过,最后从汇编跳到C函数执行的是start_armboot函数,位于lib_arm\board.c文件下,它的执行流程图如下,截图来源于《嵌入式LINUX应用开发完全手册》。根据流程图,以下内容大致分几步写: 1、gd全局变量初始化 2、调用init_sequenc 阅读全文