
kernel
qwaszx523
努力成长的小菜鸟
展开
-
Linux 内核启动及文件系统加载过程
转自:http://www.tuicool.com/articles/NzAb2i当 u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段,与 u-boot 类似,普通 Linux 内核的启动过程也可以分为两个阶段,但针对压缩了的内核如 uImage 就要包括内核自解压过程了。本文以项目中使用的 linux-2.6.37 版源码为例分三个阶段来描述内核启动转载 2016-09-05 22:43:24 · 1010 阅读 · 0 评论 -
sysinfo函数使用方法
Linux中,可以用sysinfo来获取系统相关信息。Linux中,sysinfo是用来获取系统相关信息的结构体。函数声明和原型:#include int sysinfo(struct sysinfo *info);结构体信息:在Linux 2.3.16中,结构体的信息是(单位是字节):[cpp] view plain copy转载 2017-12-12 14:06:18 · 2186 阅读 · 0 评论 -
dev_get_platdata和dev_get_drvdata
dev_get_platdata和dev_get_drvdata获取的对象是不同的。dev_get_platdata获取的是device结构体成员变量的void * platform_data。dev_get_drvdata获取的是device结构体struct device_private *成员变量P的成员变量void * driver_data。另外有与dev_get_drvdata相原创 2017-06-12 19:03:45 · 10524 阅读 · 2 评论 -
module_init宏
我们在学习Linux驱动开发时,首先需要了解Linux的模块化机制(module),但是module并不仅仅用于支撑驱动的加载和卸载。一个最简单的模块例子如下:// filename: HelloWorld.c#include #include static int hello_init(void){ printk(KERN_ALERT "Hello World\n");转载 2017-06-08 10:27:31 · 647 阅读 · 0 评论 -
Linux内核中__setup的用途
在Linux内核代码中经常会看到__setup,如下所示: __setup("nfsroot=", nfs_root_setup); 这是一个宏,它的定义在include/linux/init.h #define __setup(str, fn) __setup_param(str, fn, fn, 0) 我们这里暂不管__setup转载 2017-06-05 18:35:34 · 431 阅读 · 0 评论 -
postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall() 调用顺序
转自http://blog.youkuaiyun.com/wh_19910525/article/details/16370863在内核源代码中,platform 设备的初始化(注册)用arch_initcall()调用,它的initcall 的level为3;而驱动的注册用module_init()调用,即device_initcall(),它的initcall 的level为6。#define转载 2017-01-23 15:34:22 · 380 阅读 · 0 评论 -
kernel加载运行地址到RAM起始地址间一段内存的作用
kernel/linux-3.10.y/arch/arm/kernel/head.S中有如下一段话可解释这段内存的作用/* * swapper_pg_dir is the virtual address of the initial page table. * We place the page tables 16K below KERNEL_RAM_VADDR. There原创 2016-12-16 16:16:25 · 1313 阅读 · 0 评论 -
压缩内核zImage的启动过程中的参数
转自http://blog.youkuaiyun.com/coldsnow33/article/details/37726613.text段开始,先是内核解压地址的确定 .text#ifdef CONFIG_AUTO_ZRELADDR @ determine final kernel image address mov转载 2016-11-02 10:21:32 · 736 阅读 · 0 评论 -
Linux2.6.38内核启动流程分析
转自:http://blog.youkuaiyun.com/u014328976/article/details/47617675Linux 启动的第一阶段Uboot最后带着三个参数跳转到内核入口这三个参数分别是:r0 = 0,r1 = machine type number discovered in (3) above.r2 = physical address of tagged l转载 2016-11-09 16:28:07 · 618 阅读 · 0 评论 -
MACHINE_START and MACHINE_END
topdir/arch/arm/mach-xxxx/board-xxxx.c 文件中通常有这样一段代码:1 MACHINE_START(MINI6410, "MINI6410")2 /* Maintainer: Ben Dooks */3 .boot_params = S3C64XX_PA_SDRAM + 0x10原创 2016-09-08 14:47:12 · 417 阅读 · 0 评论