
kernel-startup
kernel-startup
kunkliu
good good study
展开
-
MACHINE_START-内核板级初始化实现机制(linux3.1.0)
转载地址:https://blog.youkuaiyun.com/charliewangg12/article/details/41518549在驱动开发时,我们都是以一块开发板为基础移植驱动程序。每一块开发板对应一个板级文件,如开发TI AM335x系列,则对应board-am335xevm.c,这个文件完成芯片和板级的初始化工作。对于驱动开发,还有一个很重要的文件devices.c,这个文件主...转载 2018-09-05 14:26:17 · 302 阅读 · 0 评论 -
Linux内核启动流程分析(一)
转载地址:http://blog.chinaunix.net/uid-25909619-id-3380535.htmlarm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o...转载 2018-10-09 08:59:02 · 6260 阅读 · 0 评论 -
Linux内核启动流程分析(二)
转载地址:http://blog.chinaunix.net/uid-25909619-id-3380544.htmlS3C2410 Linux 2.6.35.7启动分析(第二阶段)接着上面的分析,第一阶段的代码跳转后,会进入第二阶段的代码。第二阶段的代码是从\arch\arm\kernel\head.S开始的。内核启动第二阶段主要完成的工作有,cpu ID检查,machine I...转载 2018-10-09 09:00:14 · 400 阅读 · 0 评论 -
arm linux 内核生成过程
转载地址:https://blog.youkuaiyun.com/sustzombie/article/details/56267801. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息、符号表的最初的内核,大小约23MB;arm-linux-gnu-ld -EL -p --no-undefined ...转载 2018-10-09 09:02:40 · 884 阅读 · 0 评论 -
Linux 内核自解压流程分析
转载地址:http://blog.chinaunix.net/uid-26833883-id-4520866.html转载 2018-10-09 11:49:27 · 832 阅读 · 0 评论 -
Linux 解压后的启动流程分析
转载地址:http://blog.chinaunix.net/uid-26833883-id-4520876.html转载 2018-10-09 11:50:25 · 351 阅读 · 0 评论 -
got段与-fpic详解
转载地址:http://blog.chinaunix.net/uid-26833883-id-4517877.html转载 2018-10-09 13:44:42 · 834 阅读 · 0 评论 -
内核启动地址
转载地址:http://blog.chinaunix.net/uid-8646645-id-172221.html1. 内核启动地址1.1. 名词解释ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。这个地址不一定时RAM的地址,可以是支持读写寻址的 flash等存储中介。Start address of decompre...转载 2018-10-10 08:45:30 · 286 阅读 · 0 评论 -
反汇编vmlinux
转载地址:https://blog.youkuaiyun.com/EmbedStudio/article/details/45066519arm-linux-objdump -d vmlinux >> dumptext gedit dumptext转载 2018-10-10 09:10:34 · 1402 阅读 · 0 评论 -
ARM linux解析之压缩内核zImage的启动过程 一
转载地址:https://blog.youkuaiyun.com/coldsnow33/article/details/37726585首先,我们要知道在zImage的生成过程中,是把arch/arm/boot/compressed/head.s 和解压代码misc.c,decompress.c加在压缩内核的最前面最终生成zImage的,那么它的启动过程就是从这个head.s开始的,并且如果代码从RAM运...转载 2018-10-10 10:49:43 · 650 阅读 · 0 评论 -
ARM linux解析之压缩内核zImage的启动过程 二
转载地址:https://blog.youkuaiyun.com/coldsnow33/article/details/377266133. .text段开始,先是内核解压地址的确定 再往下看,代码如下: .text#ifdef CONFIG_AUTO_ZRELADDR @ determine final kernel image ad...转载 2018-10-10 10:50:58 · 654 阅读 · 0 评论 -
ARM linux解析之压缩内核zImage的启动过程 三
转载地址:https://blog.youkuaiyun.com/coldsnow33/article/details/37728009好了,再回到MMU,从MMU_PAGE_BASE (0x20004000)建立好页表后,ARM的cpu如何知道呢?这个就是要用到CP15的C2寄存器了,页表基址就是存在这里面的,其中[31:14]为内存中页表的基址,[13:0]应为0如下图: 图.3 CP15...转载 2018-10-10 10:52:11 · 739 阅读 · 0 评论 -
compressed/head.s __setup_mmu
转载地址:https://blog.youkuaiyun.com/coldsnow33/article/details/37904799 __setup_mmu: sub r3, r4, #16384 @ Page directory size,r3 = 0x20004000 bic r3, r3, #0xff @ Align the pointer bic r3, r3, #0x...转载 2018-10-10 10:54:16 · 497 阅读 · 0 评论 -
Linux内核源码分析--zImage出生实录(Linux-3.0 ARMv7)
转载地址:http://blog.chinaunix.net/uid-20543672-id-3018947.html此文为两年前为好友刘庆敏的书《嵌入式Linux开发详解--基于AT91RM9200和Linux 2.6》中帮忙写的章节的重新整理。如有雷同,纯属必然。经作者同意,将我写的部分重新整理后放入blog中。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...转载 2018-10-10 10:59:33 · 362 阅读 · 0 评论 -
bl cache_on跳转的返回
bl cache_on @ bl跳转会将返回地址(下一条指令的地址)保存到lr转载地址:https://blog.youkuaiyun.com/coldsnow33/article/details/37727331 cache_on: mov r3, #8 @ cache_on function //偏移为8,对应cache_on ...转载 2018-10-11 08:42:17 · 310 阅读 · 0 评论 -
移植linux内核到s3c6410(kernel 打印:Uncompressing Linux ... done , booting the kernel.后无响应问题的解决。)
转载地址: https://blog.youkuaiyun.com/roadtoforest/article/details/6652280U-boot网口问题解决后,uImage和ramdisk终于可以上传到单板上去验证了。脚本为:MINI6410 # setenv serverip 192.168.1.200 MINI6410 # setenv bootargs root=/dev/ram r...转载 2018-10-31 10:12:47 · 548 阅读 · 0 评论 -
linux内核启动内核解压过程分析
转载地址:http://blog.chinaunix.net/uid-20672257-id-2891129.html 内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImage的解压过程...转载 2018-10-09 08:37:45 · 1043 阅读 · 1 评论 -
ARM Linux启动流程分析——内核自解压阶段
转载地址:https://blog.youkuaiyun.com/luckyapple1028/article/details/44726131本文整理了ARM Linxu启动流程的第一阶段——内核自解压,内核版本为3.12.35。我以手上的树莓派b(ARM11)为平台示例来分析uboot跳转到Linux内核运行后做了哪些初始化动作,以及如何转入真正的内核开始运行。 内核版本:Linux-3...转载 2018-09-27 16:48:32 · 692 阅读 · 0 评论 -
ARM Linux启动流程分析——start_kernel前启动阶段(汇编部分)
转载地址:https://blog.youkuaiyun.com/luckyapple1028/article/details/45287617本文整理了ARM Linxu启动流程的第二阶段——start_kernel前启动阶段(汇编部分),内核版本为3.12.35。我以手上的树莓派b(ARM11)为平台示例来分析Linux内核在自解压后到跳转运行start_kernel之前所做的主要初始化工作:包括参数...转载 2018-09-27 16:47:07 · 501 阅读 · 0 评论 -
内核初始化优化宏(__init, __devinit)
原文地址:http://blog.chinaunix.net/uid-25871104-id-2854544.html 在内核里经常可以看到__init, __devinit这样的语句,这都是在init.h中定义的宏,gcc在编译时会将被修饰的内容放到这些宏所代表的section。其典型的定义如下:#define __init __section(.init.text...转载 2017-09-13 16:19:49 · 251 阅读 · 0 评论 -
postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall() 调用顺序
原文地址:http://blog.youkuaiyun.com/wh_19910525/article/details/16370863http://blog.youkuaiyun.com/thl789/article/details/6581146在内核源代码中,platform 设备的初始化(注册)用arch_initcall()调用,它的initcall 的level为3;而驱动的注册用module_init()调转载 2017-09-13 16:51:13 · 295 阅读 · 0 评论 -
linux 3.6 启动源码分析(一)
原文地址:http://www.cnblogs.com/liugf05/archive/2012/12/03/2800457.html下面有两个大的模块:一个是SPI总线驱动的分析 (研究了具体实现的过程)另一个是SPI总线驱动的编写(不用研究具体的实现过程)SPI总线驱动分析 1 SPI概述 SPI是英语Serial Peripheral interfac转载 2017-09-18 09:14:14 · 1368 阅读 · 0 评论 -
linux 3.6 启动源码分析(二) start_kernel
转载地址:http://blog.youkuaiyun.com/qing_ping/article/details/17351017在构架相关的汇编代码运行完之后,程序跳入了构架无关的内核C语言代码:init/main.c中的start_kernel函数,在这个函数中Linux内核开始真正进入初始化阶段,进行一系列与内核相关的初始化后,调用第一个用户进程-init 进程并等待用户进程的执行,这样整个 Linux转载 2017-09-18 09:27:48 · 704 阅读 · 0 评论 -
linux 3.6 启动源码分析(三) setup_arch
转载地址:http://blog.youkuaiyun.com/qing_ping/article/details/17351541setup_arch()函数是start_kernel阶段最重要的一个函数,每个体系都有自己的setup_arch()函数,是体系结构相关的,具体编译哪个体系的setup_arch()函数,由顶层Makefile中的ARCH变量决定:它首先通过检测出来的处理器类型进行处理器内核转载 2017-09-18 09:31:16 · 728 阅读 · 0 评论 -
linux 3.6 启动源码分析(四) rest_init
转载地址:http://blog.youkuaiyun.com/qing_ping/article/details/17351933在内核初始化函数start_kernel执行到最后,就是调用rest_init函数,这个函数的主要使命就是创建并启动内核线程init。这个函数虽然意思为剩下的初始化,但是这个“剩下”的可是内容颇多,下面详细分析如下:[cpp] view plain copy print?stat转载 2017-09-18 09:32:40 · 651 阅读 · 0 评论 -
linux 3.6 启动源码分析(五) kernel_init进程
转载地址:http://blog.youkuaiyun.com/qing_ping/article/details/17352603在start_kernel最后的rest_init函数中内核创建了两个内核线程,一个是内核线程的管理者,另一个是内核初始化线程kernel_init.kernel_init它将完成设备驱动程序的初始化,并调用init_post函数启动用户空间的init进程。[cpp] view转载 2017-09-18 09:35:17 · 594 阅读 · 0 评论 -
linux 3.6 启动源码分析(六) do_basic_setup
转载地址:http://blog.youkuaiyun.com/qing_ping/article/details/17354725在内核init线程中调用了do_basic_setup,这个函数也做了很多内核和驱动的初始化工作[cpp] view plain copy print?/*好了, 设备现在已经初始化完成。 但是还没有一个设备被初始化过, 但是 CPU 的子系统已经启动并运行, 且内存和处理器转载 2017-09-18 09:36:40 · 1429 阅读 · 1 评论 -
linux 3.6 启动源码分析(七) do_initcalls
转载地址:http://blog.youkuaiyun.com/qing_ping/article/details/17393503do_initcalls()将按顺序从由__initcall_start开始,到__initcall_end结束的section中以函数指针的形式取出这些编译到内核的驱动模块中初始化函数起始地址,来依次完成相应的初始化。而这些初始化函数由__define_initcall(l...转载 2017-09-18 09:38:30 · 680 阅读 · 0 评论 -
Linux下的lds链接脚本简介(一)
转载地址:http://blog.youkuaiyun.com/hudashi/article/details/7073434转载自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定...转载 2017-10-10 11:14:26 · 409 阅读 · 0 评论 -
Linux下的lds链接脚本简介(二)
转载地址:http://blog.youkuaiyun.com/hudashi/article/details/7076604 七、 SECTIONS命令SECTIONS命令告诉ld如何把输入文件的sections映射到输出文件的各个section: 如何将输入section合为输出section; 如何把输出section放入程序地址空间(VMA)和进程地址空间(LMA).该命令格式如下:...转载 2017-11-10 10:38:55 · 348 阅读 · 0 评论 -
Linux下的lds链接脚本简介(三)
转载地址:http://blog.youkuaiyun.com/hudashi/article/details/7076613 八、 内存区域命令在默认情形下,连接器可以为section在程序地址空间内分配任意位置的存储区域。并通过输出section描述的> REGION属性显示地将该输出section限定于在程序地址空间内的某块存储区域,当存储区域大小不能满足要求时,连接器会报告该错误。...转载 2017-11-10 10:39:28 · 499 阅读 · 0 评论 -
Linux下的lds链接脚本简介(四)
转载地址:http://blog.youkuaiyun.com/hudashi/article/details/7076634 十一、 表达式lds中表达式的文法与C语言的表达式文法一致,表达式的值都是整型,如果ld的运行主机和生成文件的目标机都是32位,则表达式是32位数据,否则是64位数据。以下是一些常用的表达式:_fourk_1 = 4K; /* K、M单位 */_fourk_2...转载 2017-11-10 10:39:46 · 472 阅读 · 0 评论 -
__setup 在内核中的作用
转载地址:http://blog.youkuaiyun.com/lanmanck/article/details/7613305介绍的很详细,我也正好用了一次__setup(),蛮好用的:),今天回头看main.c,又搜索了一下,分享给大家: __setup(//做了一次完整的盗贼,我毫无修改的抄袭了一次,但有时间会做量身裁减的//from http://www.linuxforum.net/...转载 2017-11-30 08:59:59 · 367 阅读 · 0 评论 -
Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)
转载地址:http://blog.youkuaiyun.com/gatieme/article/details/51484562 日期 内核版本 架构 作者 GitHub 优快云 2016-05-12 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之...转载 2017-11-30 10:32:10 · 286 阅读 · 0 评论 -
嵌入式 arm平台kernel启动第一阶段汇编head.s分析
转载地址:https://blog.youkuaiyun.com/skdkjzz/article/details/24498495arm_linux内核生成过程:1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o ...转载 2018-10-11 17:36:11 · 303 阅读 · 0 评论 -
linux3.1.0内核中/include/generated下mach-types.h的产生
转载地址:https://blog.youkuaiyun.com/charliewangg12/article/details/41483261/arch/arm/tools下面有三个文件,Makefile gen-amch-types mach-types。其中mach-types存放的就是板级信息,通过Makefile和 gen-amch-types文件,把这些板级信息重新生成一个文件inc...转载 2018-10-31 11:18:59 · 599 阅读 · 0 评论