精华内容
下载资源
问答
  • Linux内核移植过程

    2012-10-29 19:30:00
    是本人在2010年夏天移植Linux操作系统的时候的笔记,不完整
  • Linux-内核移植过程

    千次阅读 2018-08-27 11:16:50
    嵌入式linux 内核和根文件系统烧写方式简介 嵌入式Linux系统移植的四大步骤
    展开全文
  • Linux内核移植过程中出现得各种问题总结 Linux内核移植过程中出现得各种问题总结 Linux内核移植过程中出现得各种问题总结
  • Linux内核移植

    2012-06-03 11:31:07
    本文详细记录linux内核移植过程,这是本人的笔记。
  • linux内核移植

    2014-08-22 10:19:05
    基于arm板的linux内核移植文档,还包括移植过程遇到的一些问题的求解。
  • 移植U-Boot的过程相似,在移植Linux之前,先了解它的启动过程。Linux的启动过程可以分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。如图16.7所示是ARM架构处理器上Linux内核vmlinux的启动过程。之...

    内容来自 韦东山《嵌入式Linux应用开发完全手册》

     

             与移植U-Boot的过程相似,在移植Linux之前,先了解它的启动过程。Linux的启动过程可以分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。如图16.7所示是ARM架构处理器上Linux内核vmlinux的启动过程。之所以强调是vmlinux,是因为其他格式的内核在进行与vmlinux相同的流程之前会有一些独特的操作。比如对于压缩格式的内核zlmage,它首先进行自解压得到vmlinux,然后执行vmlinux开始“正常的”启动流程。

            引导阶段通常使用汇编语言编写,它首先检查内核是否支持当前架构的处理器,然后检查是否支持当前开发板。通过检查后,就为调用下一阶段的start kernel函数作准备了。这主要分如下两个步骤。

    (1)连接内核时使用的虚拟地址,所以要设置页表、使能MMU。

    (2)调用C函数start_kernel之前的常规工作,包括复制数据段、清除BSS段、调用start_kernel函数。

            第二阶段的关键代码主要使用C语言编写。它进行内核初始化的全部工作,最后调用rest init 函数启动init 过程,创建系统第一个进程:init进程。在第二阶段,仍有部分架构/开发板相关的代码,比如图16.7中的setup_arch函数用于进行架构/开发板相关的设置(比如重新设置页表、设置系统时钟、初始化串口等)。

    展开全文
  • 内核移植

    千次阅读 2011-05-16 20:08:00
    第一章 移植内核 1.1 Linux内核基础知识 1.1.1 Linux版本 ...1.3 Linux内核移植 1.3.1 移植内核和根文件系统准备工作 1.3.2 修改Linux源码中参数 1.3.3 配置Linux内核 1.3.4、编译

     

    展开全文
  • /showinfo/linux-108543.html Arm linux 内核移植及系统初始化过程分析 本文主要介绍内核移植过程中涉及文件的分布及其用途以及简单介绍系统的初始化过程整个arm linux内核的启动可分为三个阶段 第一阶段主要是进行...
  • linux内核移植手册

    2010-09-16 10:29:51
    linux内核移植手册, Linux内核启动过程概述
  • OK6410内核移植笔记

    2013-03-17 14:39:58
    linux 内核移植笔记,针对2.6.36内核的移植过程,按照文档的步骤移植,个人下载到开发板测试OK!
  • Android系统移植工作的目的是为了在特定的硬件上运行Android系统,由于Android系统用的是linux内核,因此内核移植和嵌入式linux移植差异不大,过程如本文。
  • Exynos4412 内核移植(二)—— 内核编译过程分析

    千次阅读 多人点赞 2016-03-07 20:14:25
    内核的编译同样是从Makefile 来分析: 一、内核源码结构 Linux内核文件数目近2万,出去其他架构CPU的相关文件,他们分别位于顶层目录下的17个子目录,各个目录功能独立,下面是常用目录: arch:体系结构相关代码 ipc...

    内核的编译同样是从Makefile 来分析:

    一、内核源码结构

    Linux内核文件数目近2万,出去其他架构CPU的相关文件,他们分别位于顶层目录下的17个子目录,各个目录功能独立,下面是常用目录:

    arch:体系结构相关代码
    ipc:进程调度相关代码
    mm:内存管理
    Documentation:帮助文档
    net:网络协议
    lib:库
    scripts:编译相关脚本工具
    tools:编译相关工具
    drivers:设备驱动
    fs:文件系统实现


    对于ARM 架构的Exynos4412,其体系相关的代码在arch/arm/目录下,在后面进行的Linux移植时,开始的工作正式修改这个目录下的文件。


    二、Linux Makefile分析

    内核中的哪些文件将被编译?它们是怎样被编译的?它们连接时的顺序如何确定?那个文件在最前面?哪些文件或函数先执行?这些都是通过Makefile 来管理的。从最简单的角度来总结Makefile的作用,有以下3点:

    1)-- 决定编译哪些文件;

    2)-- 怎样编译这些文件?

    3)-- 怎样连接这些文件,最重要的是它们的顺序如何?

    Linux 内核源码中含有很多个Makefile文件,这些Makefile文件又要包含其他一些文件(比如配置信息、通用的规则等)。这些文件构成了 Linux 的Makefile 体系,可以分为下表中的5类:

    名称描述
    顶层Makefile他是所有Makefile文件的核心,从总体上控制内核的编译和链接
    .config
    配置文件,在配置内核时产生。所有Makefile文件(包括顶层目录及各级子目录)都是 根据.config来决定使用哪些文件
    arch/$(ARCH)/Makefile
    对应体系结构的Makefile,它用来决定哪些体系结构相关的文件参与内核的生成,并 提供一些规则来生成特定格式的内核映像
    scripts/makefile.*Makefile公用的通用规则、脚本等
    kbuild Makefiles
    各级 子目录下的Makefile,他们相对简单,被上一层Makefile调用来编译当前目录下的文件


    以下根据见面总结的Makefile 的3大作用分析这5类文件。

    1、决定编译哪些文件

    Linux内核的编译过程从顶层Makefile开始,然后递归地进入各级子目录调用他们的makefile,分为3个步骤:

    a -- 顶层Makefile 决定内核根目录下哪些子目录将被编进内核;

    b -- arch/$(ARCH)/Makefile 决定arch/$(ARCH)目录下哪些文件、哪些目录将被编进内核;

    c -- 各级子目录下的Makefile决定所在目录下哪些文件将被编进内核,哪些文件将被编程模块(即驱动程序),进入哪些子目录继续调用它们的Makefile。


    a -- 先看步骤a, 顶层Makefile的编译

    在顶层Makefile 中可以看到如下内容:

    可见,顶层Makefile将这14个子目录分为5类:init-y、divers-y、net-y、libs-y和core-y

    我们可以看到,最重要的arch目录没有出现在内核中。它在arch/$(ARCH)/Makefile中被包含进内核,在顶层Makefile中直接包含了这个Makefile,如下所示:

    对于ARCH变量,可以在执行make时传入,比如“make ARCH=arm ...”。另外,对于非X86平台,还需要指定交叉编译工具,这也可以在执行make 命令时传入,比如“make CROSS_COPILE=arm-linux- ..”。为了方便,常在顶层Makefile中进行如下修改这样执行make时就会将ARCH变量传入



    b -- 看步骤 b,arch/$(ARCH)/Makefile的编译

    对于步骤 b 的 arch/$(ARCH)/Makefile,以ARM为例,在arch/arm/Makefile 中可以看到如下内容:


    从129行可知,除了刚面的5类子目录外,又出现了一类:head-y,不过它直接以文件名出现;

    arch/arm/Makefile 中类似第268-273行的代码进一步扩展了core-y的内容,第276行扩展了libs-y的内容,这些都是体系相关的目录;第261-265行中的CONFIG_在配置内核时定义,它的值有3种:y、m或空。y表示编进内核,m表示编为模块,空表示不使用

    编译内核时,将依次进入init-y、core-y、libs-y、drivers-y和net-y 所列出的目录中执行它们的Makefile,每个子目录都会生成一个 built-in.o(libs-y所列目录下,有可能生成lib.a文件)。最后,head-y所表示的文件将和在这些built-in.o、lib.a 一起被连接成内核映像文件 vmlinux


    c -- 步骤 c 是如何进行的,各级子目录下的Makefile的编译

    在配置内核时,生成配置文件.config。内核顶层Makefile使用如下语句间接包含.config 文件,以后就根据.config中定义的各个变量决定编译哪些文件。值所以说是“间接”包含,试音为包含的是include/config/auto.conf 文件,而它只是将.config文件中的注释去掉,并根据顶层Makefile中定义的变量增加一些变量而已。



    2、怎样编译这些文件

    即编译选项、连接选项是什么。这些选项分3类:全局的,适用于整个内核代码树;局部的,仅适用于某个Makefile中的所有文件;个体的,仅适用于某个文件。

    全局选项在顶层Makefile和arch/$(ARCH)/Makefile 中定义,这些选项的名称为:CFLAGS、AFLAGS、LDFLAGS、ARFLAGS,他们分别是编译C文件的选项、编译汇编问价你的选项、连接文件的选项、制作库文件的选项。


    3、怎样连接这些文件,它们顺序如何

    前面分析有哪些文件要编进内核时,顶层Makefile和arch/$(ARCH)/Makefile定义了6类目录(或文件):head-y、init-y、drivers、libs-y 和 core-y。它们的初始值如下(以ARM体系为例)

    arch/arm/Makefile 中:



    顶层makefile 中:



    可见,除head-y 外,其余的init-y、drivers-y等都是目录名。在顶层Makefile 中,这IE目录名的后面直接加上built-in.o 或 lib.a,表示要连接进内核的文件。


    上面的patubst是个字符串处理函数,它的用法如下:

    (patsubst pattern, replacement,text)

    表示寻找“text”中符合格式“pattern”的字,用”replacement"替换它们。比如上面的init-y初值为“init/”,经过793行的交互后,“init-y” 变为“init/built - in.o”。


    顶层Makefile中,再往下看:



    对于ARM体系,连接脚本就是arch/arm/kernel/vmlinux.lds,它由 arch/arm/kernel/vmlinux/lds.S文件生成,先将生成的arch/arm/kernel/vmlinux.lds摘录如下:



    总结:

    a -- 配置文件.config 中定义了一系列的变量,Makefile将结合它们来决定哪些文件被编进内核、哪些文件被编进模块、涉及哪些子目录;

    b -- 顶层Makefile和arch/$(ARCH)/Makefile决定根目录下哪些子目录、arch/$(ARCH) 目录下哪些文件和目录将被编进内核;

    c -- 最后,各级子目录下的Makefile决定所在目录下哪些文件将被编进内核,哪些文件将被变成模块(即驱动程序),进入哪些子目录继续调用它们的Makefile;

    d -- 顶层Nakedfile和arch/$(ARCH)/Makefile设置了可以影响所有文件的编译、连接选项:CFLAGS、AFLAGS、LDFLAGS、ARFLAGS;

    e -- 顶层Makefile按照一定的顺序组织文件,根据连接脚本 arch/$(ARCH)/kernel/vmlinux.lds生成内核映像文件vmlinux。



    展开全文
  • 1、linux内核五大功能: 进程管理(cpu) 内存管理(内存) 设备管理(驱动) 网络管理(网络协议tcp/ip) 文件系统(vfs) 2、linux版本号: linux 2.6 2--->主版本号 6---->次版本号:奇数代表测试版本 偶数代表...
  • 飞凌OK6410内核移植笔记

    热门讨论 2012-04-22 17:58:40
    个人移植对OK6410内核移植笔记。针对2.6.36内核的移植过程,初学者可以按照文档的步骤移植,个人下载到开发板测试OK!
  • 在前面的移植过程中,内核编译出来有 2414KB,而 Nand Flash 的 mtd 分区中指定了 kernel 分区为 2M=2048KB,所以需要对内核进行裁剪,去除不必要的内容。 2. 内核裁剪方法 内核裁剪的方法非常简单,打开编译配置: ...
  • 内核linux2.6.33内核成功移植s3c2410详细过程
  • 详细介绍了uboot内核移植过程、包括 内核 、led、 LCD、 网卡 、文件系统、Qt移植的操作步骤。
  • Linux内核移植与编译

    2014-05-30 08:44:37
    本文档介绍的是Linux内核移植与编译的过程
  • android内核移植之我见

    2014-03-16 17:24:12
    Android系统由于用的是linux内核,因此内核移植和嵌入式linux内核移植差异不大,过程如下: (1)移植boot-loader和linux2.6内核到目标平台上,让linux内核可以启动起来,基本的驱动允许正常。 此过程完全是嵌入式...
  • linux内核移植与编译

    2018-12-25 16:48:22
    在了解了内核及其相关知识之后,就要着手内核移植的实验了。 使用make menuconfig出现问题请移步make: *** 没有规则可以创建目标“menuconfig”。 停止。   Linux内核移植与编译 1.linux内核的下载 实验开始...
  • FL2440内核移植过程笔记,描述了具体的过程和代码的书写
  • |----printk(linux_baner) // 打印内核版本信息 |----setup_arch(comxxxx) //初始化mem_io |----paging_init() |---setup_machine |---lookup_machine_type(汇编) //机器号对应平台  |---paging_init |---devi
  • CPU与设备连接描述 - 设备树DeviceTree CPU与设备连接描述 - 设备树...Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。...第三方驱动 黑盒移植
  • 在前面的移植过程中,内核编译出来有 2414KB,而 Nand Flash 的 mtd 分区中指定了 kernel 分区为 2M=2048KB,所以需要对内核进行裁剪,去除不必要的内容。 2. 内核裁剪方法 内核裁剪的方法非常简单,首先配置: make...
  • 详细讲述了linux2.6内核在ARM开发板上的移植过程
  • Linux内核移植与启动

    千次阅读 2016-07-21 20:42:14
    Linux内核移植与启动 交叉编译器:buildroot-2012.08  Bootloader:U-boot-2010.09 Target borad:FL2440 1. Linux内核基础知识 在动手进行linux内核移植之前,我们有必要对linux内核进行一定的了解。   Linux...
  • OK6410开发板linux内核移植 流程说明 及遇到问题的调试过程
  • 本文通过整理之前研发的一个项目(ARM7TDMI + uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处...
  • 本人的开发板是友善之臂的smart210,学习内核移植已经有些时间了,期间的过程可谓历经千辛万苦,想必学习嵌入式的朋友们都有体会,最近想把学习内核移植过程做一下笔记,完整的记录一下内核移植过程,一方面希望...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,035
精华内容 25,214
关键字:

内核移植的主要过程