__vet_atags】的更多相关文章

参考:atags--__vet_atags标签    arch/arm/include/asm/setup.h /* * linux/include/asm/setup.h * * Copyright (C) 1997-1999 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public Li…
驱动使用方式1.编译到内核中 * make uImage进入到系统后mknod /dev/led c 500 0 创建设备节点 2.编译为模块 M make module进入到系统后 mknod /dev/led c 500 0 创建设备节点insmod fs4412_led_drv.ko(驱动可执行程序) 加载驱动 uImage的编译1.步骤 make uImage -jNUM NUM = 处理器数量*处理器核心数 2.流程进入顶层目录下的Makefile 找不到uImage 就去找inclu…
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 linux-2.6.37 版源码为例分三个阶段来描述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能 MMU .设置一级页表等,而第三阶段则主要为C代码,包括内核初始化的全部工作. 一. Linux 内核自解压过程 在 linux 内核启动过程中一般能看到图1内核…
前言 在学习.分析之前首先要弄明白一个问题:为什么要分析启动代码? 因为启动代码绝大部分都是用汇编语言写的,对于没学过或者不熟悉汇编语言的同学确实有一定难度,但是如果你想真正深入地学习Linux,那么读.分析某一个体系结构(比如ARM)的启动代码或者其他底层代码是必不可少的.当分析之后会发现这是有很多好处的:分析启动代码可以加深对汇编语言的理解:可以学习汇编语言的使用技巧:可以学习如何编写位置无关的代码,可以知道从启动到start_kernel()函数之前内核到底干了什么事情,从而为后续其他内核…
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&…
参考资料: <ARM体系结构与编程> <嵌入式Linux应用开发完全手册> Linux_Memory_Address_Mapping http://www.chinaunix.net/old_jh/4/1021226.html 更多文档参见:http://pan.baidu.com/s/1mg3DbHQ 本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数. 我们当前以linux-2.6.19内核版本作为范例来分析,本文中…
第三章第二节 mkimage工具制作Linux内核的压缩镜像文件,需要使用到mkimage工具.mkimage这个工具位于u-boot-2013. 04中的tools目录下,它可以用来制作不压缩或者压缩的多种可启动镜像文件.mkimage在制作镜像文件的时候,是在原来的可执行镜像文件的前面加上一个16个byte(0x40)的头,用来记录参数所指定的信息,这样u-boot才能识别出制作出来的这个镜像是针对哪一个CPU体系结构.哪一种OS.哪种类型.加载到内存中的哪个位置.入口点在内存的哪个位置以及…
虽然这里的Arm Linux kernel前面加上了Android,但实际上还是和普遍Arm linux kernel启动的过程一样的,这里只是结合一下Android的Makefile,讲一下bootimage生成的一个过程.这篇文档主要描述bootimage的构造,以及kernel真正执行前的解压过程. 在了解这些之前我们首先需要了解几个名词,这些名词定义在/Documentation/arm/Porting里面,这里首先提到其中的几个,其余几个会在后面kernel的执行过程中讲述: 1)ZT…
上接博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令,就进入Linux内核启动阶段.与u-boot类似,普通Linux内核的启动过程也能够分为两个阶段,但针对压缩了的内核如uImage就要包含内核自解压过程了.本文以linux-2.6.37版源代码为例分三个阶段来描写叙述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能MMU.设置一级页表等,而第三阶段则主要为…
  欢迎转载,转载时需保留作者信息. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http://blog.csdn.net/xiayulewa     u-boot与linux通信格式       如上图,开机时执行u-boot, u-boot引导完后,就是交给linux系统了,但是linux需要一些基本信息,如内存大小,启动方式等,这就涉及到u-boot和linux通信. 而通信格式由linu…
续博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令.就进入Linux内核启动阶段,与u-boot类似,普通Linux内核的启动过程也能够分为两个阶段,但针对压缩了的内核如uImage就要包含内核自解压过程了.本文以linux-2.6.37版源代码为例分三个阶段来描写叙述内核启动全过程. 第一阶段为内核自解压过程.第二阶段主要工作是设置ARM处理器工作模式.使能MMU.设置一级页表等.而第三阶段则主要为…
内核版本:2.6.32.2(mini2440光盘源码) github地址:https://github.com/guanglun/mini2440_uboot_linux (for_len分支 https://github.com/guanglun/mini2440_uboot_linux/tree/for_learn) /* * linux/arch/arm/kernel/head.S * * Copyright (C) 1994-2002 Russell King * Copyright (…
转自:https://blog.csdn.net/shichaog/article/details/40218763 Linux系统启动那些事—基于Linux 3.10内核 csdn 我的空间的下载地址 ,有些做的效果网页上没了,感兴趣建议去上面地址下载pdf版的 下载地址 http://download.csdn.net/detail/shichaog/8054005   shichaog@126.com启动流程概述也许你会好奇Linux是如何启动的?本文围绕Linux如何启动起来展开一些介绍…
.dts==>.dtb ==>device_node ==>  platform_device ==> led_dev.c  ==>匹配 led_drv.c    (设备树是对平台设备总线的一种改进) 1.使用设备树时平台设备总线源码分析          平台设备总线分析:https://www.cnblogs.com/zsy12138/p/10391933.html struct bus_type platform_bus_type = { .name = "p…
title: 解析dtb为节点 date: 2019/4/26 14:02:18 toc: true --- kernel解析dtb为节点 head.s入口传递 回顾 看以前的笔记 kernel(二)源码浅析 先来回顾下以前uboot是怎么传递参数的? R0 一般设置为0 R1 machine id (设备树不使用) R2 ATAGS(设备树使用为DTB地址) kernel的入口点是`arch\arm\kernel\head.S,以前的流程是根据这个machine id去匹配到具体的单板,然后使…
转自:http://blog.chinaunix.net/uid-25909619-id-4938389.html 在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin版本Image),具体的入口可以在arch/arm/kernel/vmlinux.lds.S(最终的链接脚本是通过这个文件产生的)中获得: ...... SECTIONS { #ifdef CONFIG_XIP_KERNEL . = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADD…
转自:http://blog.chinaunix.net/uid-25909619-id-3380544.html S3C2410 Linux 2.6.35.7启动分析(第二阶段) 接着上面的分析,第一阶段的代码跳转后,会进入第二阶段的代码. 第二阶段的代码是从\arch\arm\kernel\head.S开始的. 内核启动第二阶段主要完成的工作有,cpu ID检查,machine ID(也就是开发板ID)检查,创建初始化页表,设置C代码运行环境,跳转到内核第一个真正的C函数startkerne…
作者 彭东林 pengdonglin137@163.com 平台 TQ2440 Qemu+vexpress-ca9 Linux-4.10.17 概述 在Linux自解压完毕后,开始执行arch/arm/kernel/head.S,然后跳转到init/main.c中的start_kernel开始执行.在head.S中为了便利Linux内核启动,会建立临时的段页表.这里以TQ2440和vexpress-ca9为例,其中TQ2440使用的SoC是S3C2440,ARM核心是ARM920T,指令集是AR…
start_kernel之前的汇编代码分析 Boot中执行下面两句话之后,进入uclinux内核. theKernel = (void (*)(int, int, unsigned int))((uint32_t)0x08003001); theKernel(0, 2189, ((uint32_t)0x20000100)); 首先来到0x0800 3000处,此时携带有三个参数,R0.R1.R2,分别是0,2189,0x2000 0100. 0x0800 3000对应着下面stext的汇编代码.…
start_kernel之前的汇编代码分析 Boot中执行下面两句话之后,进入uclinux内核. theKernel = (void (*)(int, int, unsigned int))((uint32_t)0x08003001); theKernel(0, 2189, ((uint32_t)0x20000100)); 首先来到0x0800 3000处,此时携带有三个参数,R0.R1.R2,分别是0,2189,0x2000 0100. 0x0800 3000对应着下面stext的汇编代码.…
转自:http://www.cnblogs.com/armlinux/archive/2011/11/07/2396784.html ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用. 当内核映像被加载到RAM之后,Bootloader的控制权被释放.内核映像并不是可直接运行的目标代码,而是一个压缩过的zImage(小内核).但是,也并非是zImage映像中的一切均被压缩了,映像中包含未被压缩的部…
前段时间移植uboot细致研究过uboot启动过程,近期耐不住寂寞.想对kernel下手. Uboot启动过程分析博文连接例如以下: http://blog.csdn.net/skyflying2012/article/details/25804209 移植内核时kernel启动过程须要我们改动的地方比較少.研究这个对于编写driver也没有多大帮助,但对了解整个linux架构,各种机制还是非常实用. 仅仅有知道kernel怎样启动,我们才干真正的去理解kernel 作为一个嵌入式工作者,我想不…
Linux内核的启动分为压缩内核和非压缩内核两种,这里我们以压缩内核为例.压缩内核运行时,将运行一段解压缩程序,得到真正的内核镜像,然后跳转到内核镜像运行.此时,Linux进入非压缩内核入口,在非压缩内核入口中,完成各种初始化操作后跳转到C语言入口处运行.主要流程如下所示. 1.解压缩内核镜像 解压缩程序通常在arch/arm/boot/compressed/目录中 ├── atags_to_fdt.c ├── big-endian.S ├── decompress.c ├── head.S ├…
一些尝试和理解. 1>提取boot.img: 其中,msm代表是高通的芯片,msm_sdcc.1是外接的SD卡挂载的目录,by-name指的是这个sd卡分区的名称.下面几行代表每个分区存储的东西. 记得提前su,dd if=/dev/block/mmcblk0p8 of=/data/local/tmp/boot.img.将boot.img dump出来 adb root获得root权限,将boot.img 移到pc上. 2>boot.img格式分析 如system/core/mkbootimg…
内核默认的运行地址为PHY_OFFSET+0x8000,即物理地址开始后的0x8000字节处,前面是留给参数用的.参数以atag方式存储,默认放在0x100偏移位置. http://blog.chinaunix.net/uid-20451980-id-1945241.html Linux kernel分析(一) 注:本文为Stephen Du原创,转载请注明 一直想把自己自毕业以来学习Linux kernel的点点滴滴进行一次整理,却总是因工作繁忙而一再推迟.最近把kernel知识进行了一次全面…
供head.S调用,其中__mmap_switched的b start_kernel跳转到C执行,且永不返回. 跳转到start_kernel时寄存器值: R0 = cp#15 control register R1 = machine id R2 = atags/dtb pointer R9 = processor ID stext->__enable_mmu->__turn_mmu_on->ldr pc, __mmap_switched->__mmap_switched(hea…
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() -->fo…
http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环…
本文转载自:http://blog.csdn.net/tommy_wxie/article/details/9187821 Tag list被用来在bootloader和Linux kernel 之间传递参数,这里分析一下相关的数据结构,主要包括两个部分:Tag list 和Tag parser list. 先来看Tag list: 这个list是在bootloader中填充的,其数据结构定义在bootloader和linux kernel中均有定义,是一致的.我们来看linux kernel中…
转自:https://blog.csdn.net/sunlei0625/article/details/59476987 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sunlei0625/article/details/59476987首先我们基于平坦型物理内存,单个node,下面是基于64位ARMv8架构得到,其他架构也有类似结论: 首先我们知道在我们成功编译好kernel后会生成…