Linux内核及驱动
文章平均质量分 97
chungle2011
这个作者很懒,什么都没留下…
展开
-
Linux利器:QEMU!用它模拟开发板能替代真开发板?
QEMU,搞嵌入式开发的一定不陌生,最近各大群里都讨论疯了,说它是Linux利器一点也不夸张。它是一款知名的而且开源的模拟器(官网:https://www.qemu.org/),它能在X86 PC上运行(其实它也可以在你的Arm开发板上运行,我们今天先不讨论这种场景),能够模拟Arm、MIPS、RISC-V等各种CPU和开发板,以及网卡、声卡、键盘、sdcard、emmc、usb...转载 2019-12-25 11:43:02 · 13462 阅读 · 2 评论 -
内存寻址:逻辑地址到物理地址转化(x86)
https://www.mallocfree.com/interview/c-8-memory.htm标题:内存寻址:逻辑地址到物理地址转化我们知道,在计算机里,内存分为虚拟内存和物理内存。 数据是存放在物理内存中的,而程序中使用的是虚拟内存并通过虚拟内存地址来访问数据和代码的,那么操作系统是如何 将虚拟内存地址映射成为实际的物理内存的呢?这是我们这篇文章要详细介绍的问题。以X86的32位系统为例...转载 2018-04-25 13:02:27 · 6951 阅读 · 0 评论 -
linux 驱动module_init()本质---不同驱动加载顺序对应不同的优先级
https://blog.csdn.net/ffmxnjm/article/details/71713670阶段一:kernel-3.18\include\linux\init.h中 Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏:#define pure_initcall(fn) __define_init...转载 2018-05-04 17:44:04 · 827 阅读 · 0 评论 -
Linux文件系统2---VFS的四个主要对象
https://www.cnblogs.com/smartjourneys/p/7260911.html1.引言本文所述关于文件管理的系列文章主要是对陈莉君老师所讲述的文件系统管理知识讲座的整理。Linux可以支持不同的文件系统,它源于unix文件系统,也是unix文件系统的一大特色。Linux文件系统1--概述 中我们了解了文件系统的作用,以及为了使得所有的文件系统能在同一个操...转载 2018-05-11 14:40:57 · 1766 阅读 · 0 评论 -
Linux中__init、__devinit等初始化宏解析和入口函数
http://blog.chinaunix.net/uid-25445243-id-3971724.html一、初始化宏1.1、定义 在内核里经常可以看到__init, __devinit这样的语句,这都是在init.h中定义的宏,gcc在编译时会将被修饰的内容放到这些宏所代表的section,编译器通过这些宏可以把代码优化放到合适的内存位置,以减少内存占用和提高内核效率。 ...转载 2018-05-06 20:27:28 · 353 阅读 · 0 评论 -
MACHINE_START与MACHINE_END,本质是调用arch_initcall(customize_machine);
https://blog.csdn.net/cxw3506/article/details/8475965在移植Linux时,有个结构体需要填写,它以MACHINE_START开始并以MACHINE_END结束,如下mini2440开发板的移植为示例[cpp] view plain copyMACHINE_START(MINI2440, "MINI2440") .phys_io =...转载 2018-05-06 20:37:08 · 478 阅读 · 0 评论 -
Linux common clock framework(1)_概述
http://www.wowotech.net/linux_kenrel/clk_overview.html1. 前言common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分:1)向其它driver提供操作clocks的通用API。2)实现clock控制的通用逻辑,这部分和硬件无关。3)将和硬件相关的clock控制逻辑封装成操作函数集,交由底层的p...转载 2018-05-13 19:33:17 · 239 阅读 · 0 评论 -
Linux common clock framework(2)_clock provider
http://www.wowotech.net/pm_subsystem/clock_provider.html1. 前言本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。由于kernel称clock driver为clock provider(相应的,clock的使用者...转载 2018-05-13 19:35:44 · 312 阅读 · 0 评论 -
Linux common clock framework(3)_实现逻辑分析
http://www.wowotech.net/pm_subsystem/clock_framework_core.html1. 前言前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device driver怎么使用clock资源。本文将深入到clock fra...转载 2018-05-13 19:47:13 · 356 阅读 · 0 评论 -
Linux MTD系统剖析(转载+总结)
MTD,Memory Technology Device即内存技术设备,在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。如上图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。Flash硬件驱动层:Flash硬件驱动层负责对Flash硬件的读...转载 2018-06-05 19:59:43 · 13303 阅读 · 1 评论 -
GDT,LDT,GDTR,LDTR 详解,包你理解透彻
http://www.techbulo.com/708.html一、引入保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引段寄存器PS:原先实模式下的各个段寄存器作为保护模式下的段选择器,80486中有6个(即CS,SS,DS,ES,FS,GS)80位的段寄存器。由选择器CS对应表示的段仍为代码段,选择器SS对应表示的...转载 2018-04-24 20:03:06 · 5145 阅读 · 0 评论 -
Linux内核同步机制之(二):Per-CPU变量
转自:http://www.wowotech.net/linux_kenrel/per-cpu.html一、源由:为何引入Per-CPU变量?1、lock bus带来的性能问题在ARM平台上,ARMv6之前,SWP和SWPB指令被用来支持对shared memory的访问:SWP <Rt>, <Rt2>, [<Rn>]Rn中保存了SWP指令要操作的内存地址,通过...转载 2018-03-30 16:59:33 · 263 阅读 · 0 评论 -
u-boot-2009.08在mini2440上的移植 增加yaffs2文件系统
http://www.linuxidc.com/Linux/2011-05/35982p5.htm移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,开发板:mini2440,2M nor转载 2018-01-24 11:38:18 · 233 阅读 · 0 评论 -
yaffs2文件系统结构及应用(转载+总结)
文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区中的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点(所挂载的目录)。mount –t filesystemtype filesystem mountpointe.g mount -t转载 2018-01-25 17:54:20 · 3041 阅读 · 0 评论 -
LCD相关基础知识
https://www.cnblogs.com/deng-tao/p/6056286.html1、什么是LCD?(1)LCD(Liquid Crystal Display)俗称液晶。液晶是一种材料,液晶这种材料具有一种特点:可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液晶面板后面用白光照(称为背光),可以通过不同电信号让液晶分转载 2018-02-05 11:32:46 · 462 阅读 · 0 评论 -
六、lcd的控制
http://blog.csdn.net/woshidahuaidan2011/article/details/51278058LCD ( Liquid Crystal Display 的简称)液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达...转载 2018-02-05 14:12:57 · 2235 阅读 · 0 评论 -
ARM Linux启动流程分析——内核自解压阶段
http://blog.csdn.net/luckyapple1028/article/details/44726131本文整理了ARM Linxu启动流程的第一阶段——内核自解压,内核版本为3.12.35。我以手上的树莓派b(ARM11)为平台示例来分析uboot跳转到Linux内核运行后做了哪些初始化动作,以及如何转入真正的内核开始运行。内核版本:Linux-3.12.35分析文件:linux...转载 2018-02-27 20:56:39 · 909 阅读 · 0 评论 -
ARM linux kernel启动流程 head.S(一)
http://blog.csdn.net/tommy_wxie/article/details/72387481. kernel运行的史前时期和内存布局在arm平台下,zImage.bin压缩镜像是由bootloader加载到物理内存,然后跳到zImage.bin里一段程序,它专门于将被压缩的kernel解压缩到KERNEL_RAM_PADDR开始的一段内存中,接着跳进真正的kernel去执行。该...转载 2018-02-28 23:52:06 · 311 阅读 · 0 评论 -
内核日志及printk结构浅析
http://blog.chinaunix.net/uid-20543672-id-3211832.html 这段时间复习了一下内核调试系统,注意看了一下printk的实现以及内核日志的相关知识,这里做一下总结。一、printk概述 对于做Linux内核开发的人来说,printk实在是再熟悉不过了。内核启动时显示的各种信息大部分都是通过她来实现的,在做内核驱动调试的时候大部分时候使用她就足矣...转载 2018-03-02 15:30:48 · 205 阅读 · 0 评论 -
early_printk函数及 在Linux中的调试使用技巧(转+原创)
http://blog.csdn.net/fengel_cs/article/details/50468912 分析Linux内核启动流程时可以知道,在调用setup_arch函数之前就已经调用过printk函数了,但是这个时候的printk函数只是将打印信息放在缓存区中,并没有打印到控制台上,因为这个时候控制台还没有被初始化。 只有在start_kernel函数中的console_...原创 2018-03-02 18:22:40 · 879 阅读 · 0 评论 -
Linux设备模型 kobject kset
http://www.wowotech.net/device_model/13.html 1. 前言在“Linux内核的整体架构”中,蜗蜗有提到,由于Linux支持世界上几乎所有的、不同功能的硬件设备(这是Linux的优点),导致Linux内核中有一半的代码是设备驱动,而且随着硬件的快速升级换代,设备驱动的代码量也在快速增长。个人意见,这种现象打破了“简洁就是美”的理念,是丑陋的。它导致Linu...转载 2018-03-06 08:11:35 · 387 阅读 · 0 评论 -
使用 /sys 文件系统访问 Linux 内核 IBMDW
https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/sysfs 与 /syssysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上;针对以前的 sysfs ...转载 2018-03-06 08:14:29 · 471 阅读 · 0 评论 -
基于nand flash的文件系统的整理
http://blog.csdn.net/w746805370/article/details/50946368一、 Nandflash简介基本概念:flash芯片、block、page、附加页1.1结构Flash芯片的擦除以块为单位,写以页为单位。在每个flash芯片中包括非常多的块,同款芯片上每个块的大小相同(2MB、4MB转载 2018-01-24 11:21:44 · 5985 阅读 · 0 评论