
linux
文章平均质量分 53
野-百-合
在通往编程的路上,我且行且珍惜。
本博客的内容本人会保证开始可能是标题党,但是会不断更新的。
展开
-
深入理解了一下ioctl
常见使用场景ioctl通常用作用户空间对内核空间的设备进行操作的接口。也就是当有一些操作需要几个模块协同工作,或者说有些操作放在用户空间操作更合适的时候使用。比如我们想通过环境关照的明暗变化调整屏幕或者数码管的显示亮度的时候就可以通过ioctl获取周围环境光强度,然后通过ioctl对屏幕亮度或者数码管的亮度进行设置。连接纽带在使用ioctl为什么能够在用户空间控制内核空间的模块?1 内核模块必须是可操作的。首先模块必须注册为设备文件,这样用户空间才能打开文件。其次文件必须支持文件的基本操作,原创 2021-05-06 09:19:51 · 787 阅读 · 0 评论 -
设备树FDT是如何被内核识别的
设备树(Flat Device Tree)是在Linux3.0 被引入的。起因是Linux忍受不了ARM驱动程序需要编写platform device部分的代码。 这里不得不提引导程序,一般情况下,Linux使用 U-Boot作为bootloader,那么uboot必然承担这初始化Linux运行需要的环境条件的责任。 在设备启动的过程中,通常会使用gpio的组合或者不同的电阻来标明设备的不同版本或者不同的产品形态。那么如果设备文件中存在多个dtb文件的时候,则会根据硬件的不同版本选择对应...原创 2021-04-11 15:24:33 · 1336 阅读 · 0 评论 -
Linux 下UVC&V4L2技术简介(四)--介绍下camera相关的硬件部分
花了很久的时间终于画了这张丑图,往往这种东西很有内涵,哈哈哈哈哈哈哈哈首先贴一下参考文章链接:https://blog.csdn.net/Edmund_G/article/details/22986973?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158364999119725247644924%2522%252C%2522...原创 2020-03-10 11:22:38 · 989 阅读 · 1 评论 -
Linux 下UVC&V4L2技术简介(三)
先抛开V4L2的架构以及为用户提供的操作接口不提。我们在了解一个设备怎么塞入一个框架的时候,我们其实最关键的就是看到代码以及结构体的描述。下面我们就来看一下这个摘自内核的描述:文件取自linux-xlnx-xilinx-v2017.4\include\media文件夹下,大部分我们用的结构体都在v4l2-device.h和v4l2-dev.h中有描述。/** * struct video_d...原创 2020-03-04 21:08:47 · 850 阅读 · 0 评论 -
linux五大模块概述-----只描述了进程(linux内存管理,进程调度模块,进程间通信,文件系统模块,网络模块)
首先描述进程调度策略:原创 2020-02-28 13:26:30 · 985 阅读 · 0 评论 -
kdump--基于kexec的崩溃存储解决方案
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用M...原创 2019-11-26 21:25:06 · 444 阅读 · 0 评论 -
两年前实习时的文档——MMC学习总结
1 概述驱动程序实际上是硬件与应用程序之间的中间层。在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的访问接口,把设备映射成一个特殊的设备文件,用户程序可以像其他文件一样对设备文件进行操作。Linux2.6引入了新的设备管理机制kobject,通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成Linux2.6设备模型的核心结构,它与s原创 2014-05-01 21:16:05 · 2521 阅读 · 0 评论 -
linux内存操作----kernel 3.5.X copy_from_user()和copy_to_user()
前面的一篇文章中简单的描述了一下内存映射的内容,http://blog.csdn.net/codectq/article/details/25658813,这篇文章作为用户把内存规划好之后,在用户空间使用IOCTL对设备进行控制时的常用函数的代码摘录。后续我会把这部分完善起来。#ifdefCONFIG_MMUexternunsigned long __must_check __copy_f原创 2014-05-19 11:15:27 · 3041 阅读 · 0 评论 -
linux内存操作--ioremap和mmap学习笔记
最近在做视频输出相关的东西,对于预留给framebuffer的内存使用不是很清楚,现在找到一些资料整理一下,以备使用。对于一个系统来讲,会有很多的外设,那么这些外设的管理都是通过CPU完成。那么CPU在这个过程中是如何找到外设的呢?尽管在一个系统中会有诸多的外设,在每个外设的接口电路中会有多个端口。但是如果系统能够每个端口都被赋予一个具体的地址值,那么在系统中就能轻易的找到任何一个外设。系原创 2014-05-13 00:22:04 · 48493 阅读 · 5 评论 -
port linux & ramdisk
呆着无聊,写个linux配置和ramdisk相关的笔记。获取linux源码:sudo git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git获取交叉编译工具sudo apt-get install gcc-arm-linux-gnueabi解决缺库的问题*** U原创 2014-05-25 20:03:32 · 4227 阅读 · 0 评论 -
uboot中gd的定义和使用
最近在做uboot中nand启动相关的工作,遇到一个问题一直纠结着。现在终于明白了这个问题,想想还有好多兄弟在某个黑暗的角落里或者某台电脑前纠结着呢,所以赶紧写下来以供查阅。uboot version 2014.4/* Architecture-specific global data */struct arch_global_data {#if defined(CONFIG_FS原创 2014-05-31 13:17:51 · 9978 阅读 · 1 评论 -
linux make menuconfig\Makefile\Kconfig 详解
在对linux进行编译的时候,经常会用到make menuconfig这样的图形化操作界面对系统进行剪裁。但是如果在采用图形化界面的情况下,通常会遇到需要在kernel文件夹之外的脚本文件中规定编译时所使用的*_defconfig文件。这样通常情况下,我们进行make menuconfig之后的文件会被arch/xxx/configs目录下的*_defconfig文件进行覆盖。而解决这个问题的办法就是在make menuconfig之后把文件中改动的部分merge到arch/xxx/configs目录下的*原创 2013-08-06 20:11:24 · 12788 阅读 · 0 评论 -
文件系统笔记ext4 yaffs2 fat ubi
用笔记记录几种常用的文件系统 yaffs2 ext4 ubi fat原创 2014-11-22 16:10:10 · 8991 阅读 · 0 评论 -
如何正确的make menuconfig
写这么个文章标题,装逼的成分很大。只是一直使用的make menuconfig的方法今天被颠覆了……网上查了一下,使用我之前方法的人也不在少数。那我总结一下自己的这个过程吧。make menuconfig ARCH=armmake savedefconfig ARCH=arm上面两行是我在AOKP上看到别人在脚本中的描述。好奇心驱使,去查看了一下,make原创 2014-12-16 19:00:20 · 11625 阅读 · 0 评论 -
android系统重新刷ROM简记(二)
知其然,知其所以然之构建boot.img的过程原创 2014-11-25 14:57:28 · 2650 阅读 · 0 评论 -
Linux 下UVC&V4L2技术简介(一)
以前做过一点儿USB相关的东西,最近因为项目需要学习了一下多媒体的相关知识。继而想了解一下UVC和V4L2的相关知识。首先介绍两个概念:UVC:USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及原创 2015-03-15 18:05:39 · 33508 阅读 · 2 评论 -
git使用入门
git是代码管理的常用工具,创建远程仓库也是程序员相互协作的基本技能之一。所以掌握这项基本操作是十分必要的。原创 2014-08-16 11:44:45 · 33589 阅读 · 0 评论 -
Setting up Minicom in Ubuntu
Minicom in UbuntuThis explains how to configure Minicom, as an alternative to Minicom you may want to consider installing the 'Serial Port Terminal' program instead for a more GUI based terminal app转载 2014-05-01 19:26:31 · 1199 阅读 · 0 评论 -
Ubuntu中文输入法和忘记密码之后登陆的方法
1.卸载ibus输入法: sudo apt-get remove ibus sudo为取得root权限的意思,Ubuntu系统默认root账户关闭,很多操作需要取得root 权限才可以进行killall ibus-daemonsudo apt-get purge ibus ibus-gtk ibus-gtk3 ibus-pinyin* ibus-sunpinyin i原创 2014-04-30 23:14:40 · 1696 阅读 · 0 评论 -
两年前实习时的文档——Platform学习总结
1 概述驱动程序实际上是硬件与应用程序之间的中间层。在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的访问接口,把设备映射成一个特殊的设备文件,用户程序可以像其他文件一样对设备文件进行操作。Linux2.6引入了新的设备管理机制kobject,通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成Linux2.6设备模型的核心结构,它与s原创 2014-05-01 21:10:44 · 2869 阅读 · 0 评论 -
文件系统简介
在简单的介绍文件系统之前一定要先简单的说明一下物理的存储介质。为什么要介绍物理存储介质呢? 主要是为了说明“everything is files”。好吧……既然大家知道一切皆文件了,我们在此就不介绍物理存储介质了。但是还是希望大家能够对物理的介质进行读写操作,真正的感受下,读取文件系统第一个分区的第一个扇区的感觉。这样便于我们理解文件系统的概念。 首先我们查看下在设备上原创 2012-04-20 17:34:43 · 1301 阅读 · 0 评论 -
触摸屏相关的一点拙见--以及android系统中linux内核部分的编译
今天一个小项目终于尘埃落定,虽然本人在其中从事的工作很简单,但是还是颇有一些心得想跟大家分享一下。 首先我们需要了解一下linux内核中驱动为何能被编译进内核,在这里有两个很重要的文件不得不提:Kconfig和Makefile。其中Kconfig是分布在各目录的,这些Kconfig文件构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单,这就原创 2012-04-19 21:19:27 · 4612 阅读 · 1 评论 -
Android 4.0 触摸屏消息(一大写的一)
“消息”一词最早出现于《易经》:“日中则昃,月盈则食,天地盈虚,与时消息。“意思是说,太阳到了中午就要逐渐西斜,月亮圆了就逐渐亏缺,天地间的事物,或丰盈或虚弱,都随着时间的推移而变化,有时消减,有时滋长。由此可见,中国古代就把客观世界的变化,把它们的发生、发展和结局,把它们的枯荣、聚散、沉浮、升降、兴衰、动静、得失等等变化中的事实称之为”消息“。----------摘自度娘。原创 2012-05-04 11:17:21 · 4329 阅读 · 1 评论 -
Android 4.0 触摸屏消息(二大写的二)
在前文Android 4.0 触摸屏消息(一大写的一)中,我们从跟硬件最接近的两个部分对整个触摸屏消息的获取进行了简单的描述,但是对于我们系统来讲此时的消息并不好用,对于应用程序开发着而言更是极不方便。但是Android的产生就解决了Java开发的问题,使得整个开发过程周期变短。在android中,通过cook函数完成将原始数据转化成应用程序可以使用的数据形式,这样应用程序开发者可以通过Motio原创 2012-05-11 18:23:20 · 3832 阅读 · 0 评论 -
linux设备驱动模型
最早在去年的时候学习MMC/SD/SDIO的时候就接触过设备驱动模型,但是当时也整天看书也是迷迷糊糊的,所以最终也没有将这部分知识很好的整理一下。现在再次接触到这部分知识。也算是完成一直以来的一个想法。把这部分知识简单的整理一下备忘。设备驱动模型最初是为了解决设备的电源管理而产生的,但是最后发展起来之后,作用就越来越大了,特别适合设备管理。对于linux设备驱动工程师来说,掌握设备驱动模型非常原创 2012-06-05 17:44:44 · 3864 阅读 · 0 评论 -
我想大声对你说--USB
2012年5月22日,本人正式开始USB的初期学习阶段。希望能以后多有心得能够跟大家分享。希望大家监督,但是不要辱骂,但是不保证我对你们辱骂。 最近加了几个群,里面好多小孩。大都是大一大二的学生,群的名字表明这是个学习linux‘的群。其实我很羡慕你们这么年轻的时候就认识了我。但是我在那么年轻的时候还是抱着对计算机的无限向往,但是苦于找不到一个入口和出口。所以我一边寻找学习的方法原创 2012-05-24 15:44:10 · 1802 阅读 · 3 评论 -
函数运行时间计算
在最近的工作中,遇到了需要查看某些函数运行具体时间的需求,现在分享给大家,如果有更好的改进,大家相互交流,这里只做抛砖引玉的作用。既然要想计算时间,那么就必须知道如何计算时间,这里选用的计算时间的函数为/** * do_gettimeofday - Returns the time of day in a timeval * @tv: pointer to the timeval原创 2012-06-26 16:42:43 · 3296 阅读 · 0 评论 -
ADB 学习之路
马上就开始学习ADB的相关知识了,之前连使用的机会都木有过。结果就要开始搞一下了……是不是应该很蛋疼,但是凡事都要有信心。所以特写此博客纪念下。原创 2012-06-27 10:53:07 · 1762 阅读 · 4 评论 -
mass storage
最近在查找数据拷贝的过程中断线的原因,原因还没怎么找到,但是想写一点东西来记录最近的工作情况也顺便梳理下思路,给接下来的工作做个好的tag。 在android的USB驱动相关的部分中,目前接触最多的是android.c文件,因为这个文件和f_mass_storage.c以及f_adb.c共同构成了g_android.ko。 讲到这里不得不提的两个英文简称是FSG和LUNs。原创 2012-07-09 21:15:25 · 2822 阅读 · 0 评论 -
NFS
1 概述本文主要按照如下的框架对Android的NFS方式启动进行描述。这个地方应该有图的……但是我实在不会整图片2 NFS安装2.1 NFS概念NFS是系统间进行文件共享的一种网络协议,在NFS的应用结构中有服务器和客户端两种角色。NFS客户端通过挂载NFS的方式访问NFS服务器中输出的共享目录。在同一台主机中既可以是NFS服务器也可以作为NFS服务器,又原创 2013-01-03 22:27:20 · 1518 阅读 · 0 评论 -
ioctl、文件操作接口函数以及nand的升级模式的操作过程详解
ioctl系统调用是一种用于设备控制的公共接口,主要分为两种,一种是用户空间使用的ioctl系统调用,函数原型为:int ioctl(int fd,unsigned long cmd,...);另一种是在内核空间使用的ioctl调用,函数原型为:int (*ioctl)(struct inode *inode,struct file *filp,原创 2013-08-29 00:14:38 · 3529 阅读 · 2 评论 -
Yaffs文件系统简介
1 简介1.1 应用场合 Yaffs(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NAND FLASH芯片。1.2 Yaffs文件系统数据在NAND上的存储方式 Yaffs对文件系统上的所原创 2013-09-06 09:59:26 · 4839 阅读 · 0 评论 -
CMDLINE的解析
Linux Kernel中使用最多的处理Kernel的启动参数的函数是:__setup这条宏。当然网上关于此的解释挺多的,我也没看懂,所以也没资格谈论。简单的讲,这个宏的作用就是解析CMDLINE中某个字符串之后的字符串,例如以下的使用__setup("nandcfg=", nfccfg_setup);当然此处完全可以参考内核中原有的对于CMDLINE的解析文件来做。在这个关于涉及原创 2013-12-02 18:55:12 · 11053 阅读 · 0 评论 -
linux内核启动过程中Warning: unable to open an initial console
在linux启动的过程中,当kernel中大部分驱动程序加载完成之后,也就是start_kernel完成到最后一步的过程中,报Warning: unable to open an initial console这样的打印信息,串口无法输入。网上没有找到比较好的解释,但是我不想轻易放弃这次深入了解用户空间启动的过程,因此决定要好好看一下问题到底出在哪里。网上很多人提供的解决方法创建conso原创 2014-01-10 20:51:24 · 6527 阅读 · 3 评论 -
如何屏蔽LOGD\LOGI等打印输出
几天被打印信息的去除困扰了,想了想,如果靠一个一个的改动未免太繁琐。因此就仔细的看了下这部分的打印原理。当然下面只是简单的进行了知识罗列不过有需要的朋友可以随便看看。说不准会有些收获呢。Include/linux/printk.h中有如下定义:#defineKERN_EMERG""/* system is unusable */#defineKERN_ALERT原创 2014-04-29 18:47:46 · 5280 阅读 · 0 评论 -
中断处理--上下半部机制
首先需要了解一下中断的概念:一个“中断”仅仅是一个信号,当硬件需要获得处理器对它的关注时,就可以发送这个信号。内核维护了一个中断信号线的注册表,该注册表类似于I/O端口的注册表。 模块在使用中断前要先请求一个中断通道(或中断请求IRQ),然后在使用后释放该通道。用到的API就是request_irq()以及free_irq()。注意在调用request_irq()和free_irq(原创 2012-04-19 21:36:30 · 4821 阅读 · 0 评论