
Linux__Drive
文章平均质量分 89
阿卡基-马
业余马拉松选手
展开
-
linux下对/sys/class/gpio中的gpio的控制
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入 Device Drivers —> GPIO Support —> /sys/class/gpio/… (sysfs interface)。/sys/class/g...原创 2020-10-15 14:32:22 · 3691 阅读 · 0 评论 -
linux MTD FALSH管理设计
由于loader升级需要使用flash来保存数据,但在android系统上又没有合适的接口使用,因此对MTD接口设计研究了一下并移植了flash管理代码,有些心得记录一下。专有名词:1. MTD:Memory Technology Device,内存技术设备,2. JEDEC:Joint Electron Device Engineering Council,电子电器设备联合会3. ...转载 2018-10-12 14:42:59 · 301 阅读 · 0 评论 -
u-boot中添加mtdparts支持以及Linux的分区设置
阅读目录(Content)简介 u-boot中支持mtdparts命令 Kernel中设置分区回到顶部(go to top)简介作者:彭东林邮箱:pengdonglin137@163.com u-boot版本:u-boot-2015.04Linux版本:Linux-3.14硬件平台:tq2440, 内存:64M NandFlash: 256MB 下...转载 2018-10-12 15:35:59 · 4197 阅读 · 0 评论 -
HI3516A支持4串口
修改内核源码Hi3516A_SDK_V1.0.5.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/mach-hi3516a/include/mach/irqs.hHi3516A_SDK_V1.0.5.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/mach-hi3516a/core.c编译内核...转载 2018-09-28 10:58:23 · 754 阅读 · 0 评论 -
海思Hi3515的UART2和UART3是如何被加载到内核中的
Hi3515的UART驱动位于drivers/serial/amba-pl011.carch/arm/mach-hi3515v100/core.c中只发现UART0 和UART1 对应的串口ttyAMA0 和ttyAMA1 串口 但是查不到串口ttyAMA2 和ttyAMA3 ,在arch/arm/mach-hi3515v100/core.c增加了UART0 和UART1 但是在/dev/下面...原创 2018-09-28 15:10:44 · 863 阅读 · 0 评论 -
hi3516d打开ttyAMA2 ttyAMA3的方法
131 HIL_AMBA_DEVICE(uart0, "uart:0", UART0, NULL);132 HIL_AMBA_DEVICE(uart1, "uart:1", UART1, NULL);133 HIL_AMBA_DEVICE(uart2, "uart:2", UART2, NULL); // add by yangzheng134 135 stati...转载 2018-09-28 16:16:46 · 1048 阅读 · 0 评论 -
Hi3516A开发--安装交叉编译器
发布包提供两种编译工具链arm-hisiv300-linux和arm-hisiv400-linux,其中armhisiv300-linux为基于uclibc的工具链,arm-hisiv400-linux为基于glibc的工具链。参看:uclibc和glibc的差别选用哪种交叉编译器,可参看SDK里的rootfs为什么类型。本文选用的是arm-hisiv300-linux安装步骤...转载 2018-09-28 17:41:55 · 667 阅读 · 0 评论 -
新路程------hi3516a开启uart2
由于gps需要用到uart2串口,但是看了下dev目录下没有看到,只有ttyAMA0hi_rtc ram3 tty27 ttyAMA1hi_tde ram4 tty28 没有 ttyAMA2根据网上别人的做法,到内核这个...转载 2018-09-28 21:27:51 · 330 阅读 · 0 评论 -
ubuntu 安装ncurses
编译linux内核需ncurses, Ubuntu命令:sudo apt-get install libncurses5-dev转载 2018-09-29 09:03:20 · 8519 阅读 · 0 评论 -
NOR FLASH挂载jfss2文件系统
前段时间忙着找工作。项目的事情又拖了好一阵子,今天正好趁着ZTE面试的间隙把挂载JFFS2可写文件系统的事情解决一下,其实挺快的,半天时间理清了思路,实践成功了呵呵具体步骤如下:1.内核配置:根据官网上面的两篇帖子http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:mtdhttp://docs.blackfin.ucl...转载 2018-10-14 16:44:05 · 942 阅读 · 0 评论 -
linux驱动——cmdline原理及利用
最近安卓项目中想要获取内核cmdline特定的启动参数,因为我们在他的U-BOOT中定制了启动参数,需要在驱动中处理,这个手段其实很常见,今天mark个脚印。内核中如果你用cat /proc/cmdline,你会看见大致如下的打印:console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0...。当然如果我也可以在我们的项目比如扫描头的型号加...转载 2018-09-29 11:45:20 · 11545 阅读 · 1 评论 -
linux kernel的cmdline参数解析原理分析
利用工作之便,今天研究了kernel下cmdline参数解析过程,记录在此,与大家共享,转载请注明出处,谢谢。 Kernel 版本号:3.4.55Kernel启动时会解析cmdline,然后根据这些参数如console root来进行配置运行。 Cmdline是由bootloader传给kernel,如uboot,将需要传给kernel的参数做成一个tags链表放在ram中,将...转载 2018-09-29 13:44:13 · 1255 阅读 · 0 评论 -
简单粗暴有效的mmap与remap_pfn_range – 小叮当
原文地址:http://drops.wooyun.org/papers/131270x00 背景众所周知,现代操作系统为了安全和统筹硬件的原因,采用了一套非常复杂的管理内存的方式,并由此产生了物理地址,逻辑地址,虚拟地址等概念。这部分内容不负累述,简单来说如下图 kernel与用户态进程拥有不同的逻辑地址空间,kernel所在的页面拥有更高的权限,用户权限是不可以随意更改的,否...转载 2018-10-08 16:52:48 · 640 阅读 · 0 评论 -
Linux中dd命令详解
一、dd命令dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file...原创 2018-10-15 14:35:46 · 8404 阅读 · 1 评论 -
Documentation/ioctl/ioctl-number.txt
Chinese translated version of Documentation/ioctl/ioctl-number.txtIf you have any comment or update to the content, please contact theoriginal document maintainer directly. However, if you have a ...转载 2018-09-21 10:00:25 · 1236 阅读 · 0 评论 -
mmap详解
转载自:http://www.cnblogs.com/techdoc/archive/2010/12/22/1913521.html mmap功能描述:mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。基于文件的映射,在mmap和munma...转载 2018-09-11 11:02:10 · 2304 阅读 · 0 评论 -
mmap
概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同...转载 2018-09-11 10:55:28 · 213 阅读 · 0 评论 -
linux/fs/char_dev.c
/* * linux/fs/char_dev.c * * Copyright (C) 1991, 1992 Linus Torvalds */#include <linux/init.h>#include <linux/fs.h>#include <linux/kdev_t.h>#include <linux/slab.h>...转载 2018-08-04 11:08:59 · 475 阅读 · 0 评论 -
include/linux/fs.h struct file_operations
struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, co...转载 2018-08-04 11:13:30 · 1052 阅读 · 0 评论 -
drivers/char/atmel_sama5_gpio.c
/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#incl...原创 2018-08-04 12:41:20 · 424 阅读 · 0 评论 -
/sys/bus/platform/drivers
/sys/bus/platform/drivers # ls -ltotal 0drwxr-xr-x 2 root root 0 Aug 5 15:20 alarmtimerdrwxr-xr-x 2 root root 0 Aug 5 15:20 at91_adcdrwxr-xr-x 2 root ...原创 2018-08-05 16:53:41 · 1704 阅读 · 0 评论 -
【转】15 内核里leds-gpio设备驱动的设备树方法
在linux内核里已提供了连接到gpio的led设备驱动,只需要通过platform_device或设备提供相应的硬件资源即可. 使用platform_device方法可参考: http://blog.youkuaiyun.com/jklinux/article/details/73850470内核里的leds-gpio设备驱动配置选项:make menuconfig ARCH=arm64 CRO...转载 2018-08-05 17:20:29 · 2360 阅读 · 0 评论 -
drivers\i2c\busses\i2c-gpio.c
/* * Bitbanging I2C bus driver using the GPIO API * * Copyright (C) 2007 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the G...原创 2018-08-11 20:43:58 · 968 阅读 · 0 评论 -
linux-at91/Documentation/i2c/instantiating-devices
How to instantiate I2C devices==============================Unlike PCI or USB devices, I2C devices are not enumerated at the hardwarelevel. Instead, the software must know which devices are connec...原创 2018-08-12 16:22:46 · 315 阅读 · 0 评论 -
20 设备树里声明i2c设备
参考内核源码目录里的Documentation/i2c/instantiating-devices 文档里主要的内容:Method 1b: Declare the I2C devices via devicetree-------------------------------------------------This method has the same implication...转载 2018-08-12 16:31:11 · 1566 阅读 · 0 评论 -
Linux应用程序直接调用I2C控制器实现的设备驱动
参考内核源码里的dev-interface文档.在linux内核里i2c控制器驱动好后, i2c设备驱动方式通常由设备驱动通过控制器读写i2c设备数据、再提供应用程序调用和访问的接口. 除此设备驱动方工外,驱动好的i2c控制器也可提供应用程序直接调用控制器收发i2c设备数据的接口(dev-interface).这接口适用于一些没涉及到中断的简单设备,如dht12, eeprom等设备.内...转载 2018-08-12 16:48:33 · 560 阅读 · 1 评论 -
container_of 函数
在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member...转载 2018-08-31 09:38:09 · 975 阅读 · 0 评论 -
[宏]_IOC_NR, _IOC_TYPE, _IOC_SIZE, _IOC_DIR
FROM:http://www.groad.net/bbs/read.php?tid-1213.html _IOC_NR(), _IOC_TYPE(), _IOC_SIZE(), _IOC_DIR() 这几个宏用来取得 cmd 命令中的域,其作用如下:_IOC_NR() : 读取基数域值 (bit0~ bit7)_IOC_TYPE : 读取魔数域值 (bit8 ~ bit15)_I...转载 2018-09-16 14:24:56 · 1894 阅读 · 0 评论 -
浅谈时间函数gettimeofday的成本
我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们有必要详细了解下,gettimeofday这个函数做了些什么?内核1ms一次的时钟中断处理真的可以支持tv_usec字段达到微秒精度吗?它的调用成本在i386/x86_64体系架构上代价一样吗?如果在系统繁忙时,频繁的调用它有问题吗? ...转载 2018-09-16 15:58:18 · 537 阅读 · 0 评论 -
Linux驱动mmap内存映射
mmap在linux哪里?什么是mmap?上图说了,mmap是操作这些设备的一种方法,所谓操作设备,比如IO端口(点亮一个LED)、LCD控制器、磁盘控制器,实际上就是往设备的物理地址读写数据。但是,由于应用程序不能直接操作设备硬件地址,所以操作系统提供了这样的一种机制——内存映射,把设备地址映射到进程虚拟地址,mmap就是实现内存映射的接口。操作设备还有很多方法,如ioctl...转载 2018-09-12 13:23:00 · 406 阅读 · 0 评论 -
include\linux cdev.h
#ifndef _LINUX_CDEV_H#define _LINUX_CDEV_H#include <linux/kobject.h>#include <linux/kdev_t.h>#include <linux/list.h>struct file_operations;struct inode;struct module;stru...转载 2018-08-04 10:59:34 · 601 阅读 · 0 评论