linux
shuijingshizhe
这个作者很懒,什么都没留下…
展开
-
i2c 驱动四:sysfs文件系统
1. 用 sysfs 实现 i2c,其实质是将 i2c 和 sysfs 结合起来,那首先来看看什么是 sysfs:【1】sysfs简介:sysfs 是基于内存的虚拟的文件系统,他的作用于 proc 相似,他的设计是吸取的 proc 中的很多教训,使之导出内核或其他的数据的方式更为统一【2】此部分,有一个博客写的很好,在这里,暂时不做整理,直接点击跳转【3】借助于 sysfs ,转载 2016-12-06 16:51:28 · 872 阅读 · 0 评论 -
linux 中copy软链接
linux 中copy一个软链接时,复制的是软链还是它链接的内容在linux 中copy一个软链接时,复制的是软链还是它链接的内容?当用cp命令copy一个软链接时,copy的是软链接所对应的内容,而不是它本身。 如: # echo "1234567890" > test.txt# ln -s test.txt test2.txt# cp te转载 2017-04-25 11:28:37 · 13132 阅读 · 0 评论 -
Linux电源管理(3)_Generic PM之Reboot过程
1. 前言 在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。 在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调用(具体可参考kernel/sys.c)来实现的,这也是本文使用“Generic PM之Reboot过程”作为标题的原转载 2017-04-27 14:37:12 · 736 阅读 · 0 评论 -
Linux系统结构 详解
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1.linux内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和转载 2017-07-20 18:00:29 · 298 阅读 · 0 评论 -
linux 用户空间与内核空间——高端内存详解
摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则;本文旨在探讨内核空间的地址映射。 Linux内核地址空间划分通常32位linu转载 2017-07-21 11:55:53 · 317 阅读 · 0 评论 -
Linux设备驱动模型概述
Linux设备驱动模型(一)-节能之初衷2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:(1)代码重复最小化。(2)提供诸如引用计数这样的统一机制。(3)可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。(4)可以将系统转载 2017-08-02 16:32:47 · 506 阅读 · 0 评论 -
Linux内核文档翻译:Documentation/arm/Booting
启动 ARM Linux=================以下文档适用于 2.4.18-rmk6 及以上版本.为了启动ARM Linux,你需要一个引导装载程序(boot loader),它是一个在主内核启动前运行的一个小程序。引导装载程序需要初始化各种设备,并最终调用Linux内核,将信息传递给内核。从本质上讲,引导装载程序应提供(至少转载 2017-08-02 16:33:49 · 399 阅读 · 0 评论 -
移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)
目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境的搭建。 移植以到 JZ2440 为例,使用韦老大提供的 ubuntu9.10 虚拟机作为移植环境。当然,其它虚拟机也是可以的,我同样在 ubun转载 2017-08-27 13:38:54 · 537 阅读 · 0 评论 -
VMware虚拟机安装Ubuntu使用share folders共享windows目录的方法
第一步,安装VMware Tools恢复虚拟机ubuntu后,首先,点击 虚拟机——安装VMware Tools(Install VMware Tools),这时我们会在Ubuntu系统桌面上发现VMware Tools的光盘图标。双击这个文件图标后,会发现有两个文件,manifest.txt和 VMwareTools-8.4.5-324285.tar.gz,很OK,说明我们的VM转载 2017-09-02 22:47:42 · 561 阅读 · 0 评论 -
Linux framebuffer显示bmp图片
framebuffer简介 帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。framebuffer是LCD对应的一中HAL(硬件抽象层),提供抽象的,统一的接口操作,用户不必关心硬件层是怎么实施的。这些都是由Framebuffer设备驱动来完成的。 帧缓冲设备对应的转载 2017-09-22 12:45:03 · 643 阅读 · 0 评论 -
Linux framebuffer显示bmp图片
制器参数。比如图形硬件上实际的帧缓存空间的大小、能否硬件加速等信息。 应用程序中通常要用到struct fb_var_screeninfo的下面这几个字段: xres、yres、bits_per_pixel,分别表示x轴的分辨率、y轴的分辨率以及每像素的颜色深度(颜色深度的单位为bit/pixel),其类型定义都是无符号32位整型数。#include #include #in转载 2017-09-22 14:15:25 · 1039 阅读 · 0 评论 -
uboot向kernel的传参机制——bootm与tags
最近阅读代码学习了uboot boot kernel的过程以及uboot如何传参给kernel,记录下来,与大家共享:U-boot版本:2014.4Kernel版本:3.4.55一 uboot 如何启动 kernel1 do_bootmuboot下使用bootm命令启动内核镜像文件uImage,uImage是在zImage头添加了64字节的镜像信息供uboot解析使用,转载 2017-11-16 09:31:26 · 834 阅读 · 0 评论 -
S5PV210的内存分配研究分析
S5PV210内存一般会使用SDRAM和DDR2 (DDR SDRAM),SDRAM的uboot启动网络已经有很多资料的,对于DDR2还有有很多疑惑,如果有错误的地方,请大家一定指出,醍醐灌顶,不胜感激。1、S5PV210的memory map(物理地址)如下图:左图是整个芯片的内存空间(物理地址),右图是iROM部分的内存空间(BL0的地址貌似不是物理地址==)转载 2017-04-22 18:25:07 · 2337 阅读 · 0 评论 -
关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析
项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析:1、先粘贴一些flash的理论部分: MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。 如原创 2017-05-03 16:08:52 · 6250 阅读 · 0 评论 -
linux内核杂项设备驱动源码分析
在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。在内核中用struct转载 2017-03-16 11:58:09 · 408 阅读 · 0 评论 -
i2c驱动程序全面分析,从adapter驱动程序到设备驱动程序
内容概括: 1、adapter client 简介 2、adapter 驱动框架 2.1 设备侧 2.2 驱动侧 2.2.1 probe 函数 2.2.1.1 注册adapter new_device del_device board_info转载 2016-12-07 17:32:01 · 834 阅读 · 0 评论 -
uboot启动流程
一、uboot说明1、uboot要做的事情CPU初始刚上电的状态。需要小心的设置好很多状态,包括cpu状态、中断状态、MMU状态等等。其次,就是要根据硬件资源进行板级的初始化,代码重定向等等。最后,就是进入命令行状态,等待处理命令。在armv7架构的uboot,主要需要做如下事情arch级的初始化关闭中断,设置svc模式禁用MMU、TLB关键寄存器的设置,包括时转载 2016-12-21 23:52:41 · 3592 阅读 · 2 评论 -
u-boot-2016.07移植至S5PV210-单板配置
一、添加单板信息 1、 cp -r board/samsung/smdkc100 board/samsung/smdkv210 2、进入smdkv210下 cd board/samsung/smdkv210/ mv smdkc100.c smdkv210.c 3、修改Kconfig if TARGET_SMDKV210 config SYS转载 2016-12-18 16:46:17 · 1400 阅读 · 0 评论 -
bootm命令
制作Linux映像============使用uboot时,内核通常生成的文件"zImage"或"bzImage"是没用的。较新一些的内核原码会生成"uImage", 这个可以为uboot使用。"uImage"全用了一个工具"tools/mkimage"来封装压缩后的映像文件,在其头部添加一些信息以及crc32校验等。我们需要做如下几件事情:* 制作转载 2017-02-05 14:18:29 · 1415 阅读 · 0 评论 -
S5PV210 FIMC驱动和v4l2驱动框架学习
FIMC的驱动在内核中的位置在drivers/media/video/samsung/fimc目录下,其中包含的文件有如下所示: fimc40_regs.c fimc43_regs.c fimc_capture.c fimc_dev.c fimc_output.c fimc_over转载 2017-02-27 17:53:36 · 260 阅读 · 0 评论 -
开发板X210V3S移植linux3.2内核
买了开发板一直想把uboot和kernel都换掉,开发板自带的kernel版本是2.6.35,现在更换成linux3.2.17,因为想使用设备树,移植linux3.0以上的版本可谓是一波三折,到现在还没有搞明白为什么有的版本一下子就能移植成功,而有的版本却始终卡死在Starting kernel ....处,百度过的方法都试过了,还是不行,所以暂时先移植一个可行的。网上也有很多关于移植的教程,其实原创 2017-02-10 16:31:27 · 1777 阅读 · 1 评论 -
如何实例化i2c_client(四法)
一、在板文件进行client的实例化在内核的初始化中(例如在板文件中)定义设备的信息。这种操作的前提是内核编译的时候已经确定有哪些i2c设备和它们的地址,还要知道连接的总线的编号。比如在板文件/arch/arm/mach-XXX/board_XXX.c中可以用类似下面的代码来注册i2c设备的信息。1. static structi2c_board_info __initdat转载 2017-02-20 12:01:53 · 623 阅读 · 0 评论 -
怎么把kernel用uboot引导?
要解决的问题:1. kernel虚拟地址怎么改?2. bootloader默认把他下载到了那里?3. 参数tag的地址怎么改 ,什么时候使用这个地址的?4. 自解压的地址怎么改?5. 从启动到linux开始运行,整个ram的布局的变换?6. 怎么把kernel-2.6.13用uboot引导?1. 虚拟地址怎么改?(运行时地址,自解压后kernel地址)生成vml转载 2017-02-11 18:54:22 · 681 阅读 · 0 评论 -
Boot Loader启动过程分析
一、 Boot Loader的概念和功能 1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方转载 2017-02-12 17:02:13 · 5798 阅读 · 0 评论 -
Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。 CPU在bootloader的帮助下将内核载入到了内存中,并开始执行。当然,bootloader必须为zImage做好必要的准备: 1. CPU转载 2017-02-12 17:47:48 · 661 阅读 · 0 评论 -
Linux输入子系统
Linux输入子系统(Input Subsystem) Linux 的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对 Linux 输入子系统进行详细的分析。一 前言 输入子系统又叫 input 子系统。其构建非常灵活,只需要调用一些简单转载 2017-03-08 18:45:46 · 262 阅读 · 0 评论 -
驱动模块Makefile解析
先看一下代码ifeq ($(KERNELRELEASE),) KERNELDIR ?= /home/Linux/linux-2.6.22.6 PWD := $(shell pwd) modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules转载 2017-02-27 14:54:26 · 198 阅读 · 0 评论 -
linux内核启动地址的确定
内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,vmlinux-armv.lds的生成过程在kernel/arch/arm/Makefile中ifeq ($(CONFIG_CPU_32),y)PROCESSOR = armvTEXTADDR = 0xC000800转载 2017-02-27 15:38:09 · 5638 阅读 · 0 评论 -
如何制作LINUX的patch文件及如何打patch
如何制作LINUX的patch文件及如何打patch对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件。patch文件也叫补丁,就是一个文本文档,这个文档包含了在两个不同版本的源代码树之间的变化。补丁是通过diff应用程序来创建的。为了正确地打上一个补丁,你需要知道这个补丁是从哪个基础版本产生出来的以及这个补丁将要把目转载 2018-01-29 23:43:49 · 324 阅读 · 0 评论