精华内容
下载资源
问答
  • ARM Linux内核源码剖析.pdfARM Linux内核源码剖析.pdfARM Linux内核源码剖析.pdfARM Linux内核源码剖析.pdf 完整书签
  • arm linux内核源码剖析1

    2016-09-10 11:30:40
    ARM Linux内核源码剖析,详细分析了linux的启动流程
  • ARM Linux内核源码剖析_ PDF电子书下载 带书签目录 完整版
  • ARM Linux内核源码剖析.pdf是中文版,内容清晰,目录标签全。 对嵌入式计算有很大帮助。(分成2个压缩包:ARM Linux内核源码剖析.pdf.7z.001,ARM Linux内核源码剖析.pdf.7z.002)
  • ARM linux 内核源码剖析

    2017-10-30 14:05:17
    该书对ARM Linux kernelq启动阶段的代码做了完整的分析,对于研究Linux 学习 Linux kernel 尤其是ARM 平台Linux kernel的同学是一个有益的补充。
  • arm linux内核源码剖析0

    2016-09-10 11:24:53
    ARM Linux内核源码剖析,详细分析了linux的启动流程
  • ARM Linux内核源码剖析.pdf是中文版,内容清晰,目录标签全。 对嵌入式计算有很大帮助。(分成2个压缩包:ARM Linux内核源码剖析.pdf.7z.001,ARM Linux内核源码剖析.pdf.7z.002)
  • ARM Linux内核源码剖析(带书签目录完整版) 加q2456102575
    ARM  Linux内核源码剖析(带书签目录完整版)
    

    在这里插入图片描述
    加q2456102575

    展开全文
  • ARM_Linux内核源码剖析 好书,带书签版本。Part1 和part2 两部分方可解压
  • start_kernel  -->asm-offset.h 生成  -->proc_info_list  -->machine_desc  -->__vet_atags  -->cpu位图  -->setup_arch  -->parse_tags  -->命令行参数处理1 ... ...

    start_kernel

      -->asm-offset.h 生成 

      -->proc_info_list 

         -->machine_desc

      -->__vet_atags 

      -->cpu位图

      -->setup_arch 

        -->parse_tags 

        -->命令行参数处理1

        -->paging_init

          -->build_mem_type_table

          -->prepare_page_table

          -->bootmem_init()

            -->for_each_node(node)

              -->unsigned long end_pfn = bootmem_init_node(node, mi);

              -->void __init bootmem_free_node(int node, struct meminfo *mi)

          -->devicemaps_init(mdesc);

          -->kmap_init();

          -->分配&初始化零页

        -->request_standard_resources(&meminfo, mdesc);

        -->early_trap_init //中断相关

      -->命令行参数处理2

      -->setup_per_cpu_areas();percpu静态变量初始化

      -->sched_init();

      -->build_all_zonelists();

      -->parse_early_param(); //处理命令行参数3

      -->parse_args("Booting kernel", static_command_line, __start___param,__stop___param - __start___param,&unknown_bootoption);

      -->early_irq_init();//中断相关

      -->init_IRQ(); //中断相关

      。。。

      -->vmalloc_init();

      -->mem_init()

      -->kmem_cache_init();//slab初始化

    转载于:https://www.cnblogs.com/yangjiguang/p/9416413.html

    展开全文
  • ARM_Linux内核源码剖析.part2.rar 记得下载part1才能解压缩。
  • 有点难度的一本书,要稍微花些时间才能入门 转载于:https://www.cnblogs.com/kaililikai/p/5858627.html

    有点难度的一本书,要稍微花些时间才能入门

    转载于:https://www.cnblogs.com/kaililikai/p/5858627.html

    展开全文
  • 前面说到要做linux底层开发或者编写Linux的驱动,必须建立内核源码树,之前我们提到过在本机上构建源码树—-Linux内核剖析(三),其建立的源码树是针对i686平台的,但是我么嵌入式系统用的是arm平台,这就需要我们...

    前面说到要做linux底层开发或者编写Linux的驱动,必须建立内核源码树,之前我们提到过在本机上构建源码树—-Linux内核剖析(三),其建立的源码树是针对i686平台的,但是我么嵌入式系统用的是arm平台,这就需要我们为arm板交叉构建一份板子可用的内核源码树。

    首先下载与你嵌入式系统平台版本号一致的linux内核,我的版本为2.6.35,当然如果你使用的是之前做好的板子,那么内核源码可能已经有了
    我们解压缩我们的内核源码,并进入到内核源码的根目录

    tar -jxvf linux-2.6.35.tar.bz2
    cd linux-2.6.35

     

    然后执行make mrproper 命令,该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。

    因为我是为arm平台编译内核,需要用到交叉编译工具(可从ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain站点下载)。

    清理垃圾文件(非必须)


    Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等,其中,mrproper和distclean,clean之间的区别,Linux内核源码根目录下面的makefile中,有很清晰的解释:

    help:
     @echo  'Cleaning targets:'
     @echo  '  clean    - Remove most generated files but keep the config and'
     @echo  '                    enough build support to build external modules'
     @echo  '  mrproper   - Remove all generated files + config + various backup files'
    
     @echo  ' distclean - mrproper + remove editor backup and patch files'

    mrproper到底是什么意思呢?为什么起了个这么个看起来如此诡异的名字。

    在英文wiki对Mr. Clean的解释提到了此点;

    http://en.wikipedia.org/wiki/Mr._Clean

      "make mrproper" is a command in the Linux kernel build system, used to "clean up" all files from past builds and restore the build directory to its original clean state. The reason "make mrproper" is used instead of "make mrclean" is because Linus Torvalds, the father of Linux, was familiar with the name "Mr. Proper" as this is the brand widely known in Europe."

     

    总的来说,就是:首先,我们要知道的是make mrproper想要做的事情是,清理旧的编译生成的文件及其他配置等文件,所以,相当于Clean,即我们在现实世界中用清洁剂去清洁卫生,清理旧的,不再需要的,脏东西。而现实世界中,保洁(P&G)公司的,有一个清洁产品方面的品牌,在美国叫做Mr.Clean,在欧洲叫做Mr.Proper,所以编译之前的清理旧东西的命令,原先是用的make mrclean,即make Mr.Clean。只是后来被Linux之父Linus Torvalds改成了make mrproper,即make Mr.Proper。所以,现在就变成了用make mrproper来清理之前的东西了。

    看帮助可以发现删除的文件范围从小到大依次为:

    make clean < make mrproper < make distclean

     

    查看源码目录树的顶层目录下的Makefile求证, 可以发现, 执行make mrproper, 会先执行make clean, 执行make distclean之前, 会先执行make mrproper。

    再回到make help的结果:

    make clean      删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块
    make mrproper   删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令
    make distclean  mrproper删除的文件, 加上编辑备份文件和一些补丁文件。

    修改makefile


    配置内核之前还要修改内核最上层目录下的Makefile(linux-2.6.35/Makefile)
    把文件中的ARCH ?= $(SUBARCH) 改为 ARCH =arm
    CROSS_COMPILE ?= 改为CROSS_COMPILE =arm-linux-

    这里写图片描述

    配置内核config


    接着就是配置内核,可以使用下面命令中的一个:

    make config(基于文本的最为传统的配置界面,不推荐使用)
    make menuconfig(基于文本菜单的配置界面, 字符终端下推荐使用)
    make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用,要求QT被安装)
    make gconfig(要求GTK+被安装)
    make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦) make defconfig (使用源码中默认的config配置)

    目的都是生成一个.config文件,

    注意:使用make menuconfig 需要安装ncurses( sudo apt-get install ncurses-dev)

    注意:如果要用make xconfig,则要先安装libqt3-compat-headers( sudo apt-get install libqt3-compat-headers)

    其中,make xconfig的界面最为友好,如果你可以使用Xwindow,你就用这个好了,这个比较方便,也好设置。如果你不能使用Xwindow,那么就使用make

    menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。 选择相应的配置时,有三种选择,它们分别代表的含义如下:

    一直以为make oldconfig的作用是将利用当前的.config覆盖defconfig,从而使下次运行make config/menuconfig时的缺省设置成为当前.config的设置,今天发现是个错误,需要澄清:

    1. 如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。

    2. 如果.config存在,运行make config/menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。

    3. arch/arm/defconfig是一个缺省的配置文件,make defconfig时会根据这个文件生成当前的.config。

    4. arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行make xxx_defconfig,当前.config文件会由xxx_defconfig文件生成。

    5. make oldconfig的作用是备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config。

    配置内容可参考相关文献。

    编译内核镜像


    第三步:配置过内核之后,就可以进行编译了。执行以下命令中的一种:

    make (生成一个压缩的内核影像)
    make bzImage(生成一个使用gzip压缩的内核)

    这里写图片描述

    安装内核模块


    执行make modules(编译在内核配置时选中的模块)在此过程中可能会遇到某些模块不能编译通过,把相应模块去除再执行make modules_install 安装内核

    安装的内核在/lib/modules/2.6.35里。

    至此,针对arm平台的内核树安装完成。

    内核最上层的makefile在内核编译过程中起了决定性的作用,在编译过程中遇到的许多问题都可以在里面得到解决的思路,希望大家多看看。

    转载于:https://www.cnblogs.com/alantu2018/p/8991211.html

    展开全文
  • 前面说到要做linux底层开发或者编写Linux的驱动,必须建立内核源码树,之前我们提到过在本机上构建源码树—-Linux内核剖析(三),其建立的源码树是针对i686平台的,但是我么嵌入式系统用的是arm平台,这就需要我们...
  • 在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin版本Image),具体的入口可以在arch/arm/kernel/vmlinux.lds.S(最终的链接脚本是通过这个文件产生的)中获得: ......SECTIONS{#...
  • NOTE:为了方便大家阅读,制作了PDF版文档,下载请猛戳这里 老样子,为了赚点积分下载其他人的文件,下载以上资料...看了Linaro提供的开源ARMv8 Linux内核源码,发现ARMv8异常处理与ARMv7及之前的架构有所不同,...
  • 一、内核源码目录结构 1、Linux 内核源代码包括三个主要部分 1)内核核心代码:包括linux内核整体架构分析笔记描述的各子系统和子模块,以及其他支撑子系统,如:电源管理、linux初始化等。 2)非核心代码:例如库...
  • Linux 内核深度剖析与实践

    万次阅读 2018-04-12 10:41:40
    本课程主要从嵌入式领域对 Linux 架构进行剖析。目前由于网上关于设备树的资料比较少,很多人不会用设备树,所以本课程先从设备树开始深度剖析内核的最底层;然后对内核的设备模型机制进行讲解,让读者理解 Linux ...
  • 原文地址:Linux内核源码分析--内核启动之(6)Image内核启动(do_basic_setup函数)(Linux-3.0 ARMv7)作者:tekkamanninja 转自:http://blog.chinaunix.net/uid-25909619-id-4938396.html 在基本分析完内核启动...
  • Linux2.6.34源码目录结构 1、 arch 体系结构相关的代码,例如arm, x86等等。 arch/mach- ---- 具体的machine/board相关的代码。 arch/include/asm ---- 体系结构相关的头文件。 arch/boot/dts ---- 设备树(Device ...
  • 下载请联系QQ:738755287
  • 深入理解linux内核

    2021-05-16 13:44:15
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼之所以学习Linux内核的理由是,我喜欢它,想搞清楚他的原理,而且也愿意花时间去研究。兴趣是最好的老师,只有真正的喜欢一个东西,才能把它学好。此外,程序员的好奇心...
  • 我以手上的树莓派b(ARM11)为平台示例来分析uboot跳转到Linux内核运行后做了哪些初始化动作,以及如何转入真正的内核开始运行。 内核版本:Linux-3.12.35 分析文件:linux/arch/arm/boot/compressed/head.S...
  • linux内核深入剖析基于0.11及linux0.11源码
  • go内核源码剖析 一这篇是看雨痕大佬的书所做练习的笔记,(其实后面部分基本都是抄的,但是都实践了) 由于电脑抽风,使用的是win10的Linux子系统,功能不完善,很多跟踪支持性不好(可以算是抄的原因)。 要想...
  • linux内核相关视频解析: 5个方面分析linux内核架构,让你对内核不再陌生 90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc的原理 手把手带你实现一个Linux内核文件系统 简介 作用是将应用层序的请求传递...
  • 除了一对一映射的1MB空间,还需要进行内核链接时的虚拟地址到物理地址的映射,上面的代码就是做这个的,开始的两条指令不能合二为一的原因是arm的立即数是8位的。可以看到,r0中开始存放的是内核虚拟起始地址在一级...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,248
精华内容 499
关键字:

armlinux内核源码剖析

linux 订阅