随笔分类 - 嵌入式之Linux内核移植
摘要:内核启动的现在已经是开始执行函数start_kernel函数了。start_kernel函数在init/main.c中定义。start_kernel函数只是完成相应的结构的初始化任务。 printk(KERN_NOTICE); printk(linux_banner); setup_arch(&command_line);在uboot的一直过程中,uboot传递给kernel的参数:预先存放在某个地方的tag和机器类型id,机器类型id在函数__look_up_machine中已经使用,tag列表是在函数setup_arch中调用的。setup_arch函数是在arch/arm
阅读全文
摘要:在前面的准备工作完成之后,先实验一下,谈不上真正的移植 ,因为代码都没有改的。首先修改顶层的Makefile,修改ARCH,CROSS_COMPLIE变量。#ARCH ?= $(SUBARCH)ARCH ?= armCROSS_COMPILE ?= arm-linux-执行make smdk2410_defconfigmake然后执行make uImage,注意需要含有mkimage工具,这个工具是在编译uboot时产生的,同时需要将mkimage拷贝到path环境变量中。最终在arch/arm/boot/目录下生成uImage文件,下载该文件到开发板中,既可以观察结果,当然此时是没有文件
阅读全文
摘要:【转】Linux内核裁剪的具体步骤在menuconfig中配置:详细介绍内核配置选项及删改情况第一部分:全部删除Codematurityleveloptions--->代码成熟等级选项[]Promptfordevelopmentand/orincompletecode/drivers默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。第二部分:除以下选项,其它全部删除Generalsetup—〉SystemVIPC(IPC:InterProcessCommunication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息
阅读全文
摘要:下面的文件的使用方法是:将下面的文件保存在linux内核源码目录中,文件的名称是.config,然后make menuconfig,在出现的配置界面中选择Load Configuratio选项,然后可以在这个基础上修改自己的kernel。下面的配置是基于s3c2410,支持yaffs2文件系统。我看了一下编译出来的uImage大概在800k左右,呵呵么这是本人第一次成功裁减内核。## Automatically generated make config: don't edit# Linux kernel version: 2.6.22.6# Tue Mar 16 20:42:20 2
阅读全文
摘要:vmlinux在链接时,使用的文件是在vmlinux-all中定义的所有文件,链接俄脚本是在arch/arm/kernel/vmlinux.lds中定义该如何 链接这些文件。总结上面:真个的 linux的源码是通过Makefile来实现项目的 管理的,顶层的Makefile定义了那些文件夹 中的 内容 被编译进内核,各级的子目录下的Makefile决定该目录下的那些文件被编译进内核。 对于编译选项的设置的话,存在全局的,局部的和仅对一个文件起作用的选项。3.内核的Kconfig文件的 分析在linux内核目录下,如果直接使用make menuconfig的话,出现的配置界面就是使用的是Kbui
阅读全文
摘要:1.首先是获得linux内核源码,好像是废话,下载地址如下:ftp://ftp.kernel.org/pub/linux/kernel/v2.6/下载:linux-2.6.16.22.tar.bz2 patch-2.6.22.6.bz2上面一步需要说明的是一般而言,linux内核的各个补丁文件是根据某个linux内核的版本号来作的patch。将上面的两个压缩文件解压:tar jxvf linux-2.6.22.tar.bz2tar jxvf patch-2.6.22.6.bz2cd linux-2.6.22patch -p1 < ../patch-2.6.22.62.linux内
阅读全文