Linux 驱动程序开发
文章平均质量分 81
ARM嵌入式Linux驱动开发
SongYuLong的博客
学无止境
展开
-
ubuntu 64位下运行32编译器 gcc 提示No such file or directory
由于64位下运行32编译器缺少相应的库文件,所以运行时会报错 ./arm-none-eabi-gccbash: ./arm-none-eabi-gcc: No such file or directory运行下面加载库文件的命令:sudo apt-get install lib32ncurses5 lib32z1就显示安装成功了,...原创 2020-04-22 11:47:26 · 997 阅读 · 0 评论 -
SELinux开启与关闭各参数说明
转载 http://www.upvup.com/html/SELinux/2014-06-11/4.htmlSELinux开启与关闭各参数说明时间:2014-06-11 10:16:56 来源:精灵网 作者:jorsh一,目前系统文件权限的管理有两种:DAC(传统的) 和 MAC(SELinux)总结:DAC是以用户为出发点来管理权限的 MAC转载 2017-06-01 18:05:22 · 1976 阅读 · 0 评论 -
Android DVB底层Linux驱动
Linux DVB网站 https://www.linuxtv.org/ http://www.dvb.org/ http://www.etsi.org/原创 2017-09-26 15:23:09 · 873 阅读 · 0 评论 -
Linux class 类接口的使用
Linux class 类接口的使用。#include static struct class aml_dmx_class = {.name = "dmx",.class_attrs = aml_dmx_class_attrs,};//class_attrs 添加接口对。static struct class_attribute aml_dmx_原创 2017-05-18 16:52:20 · 679 阅读 · 0 评论 -
Linux driver dts使用,实例驱动编写
Device Tree后,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。 Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的name和value。在Device Tree中,可描述的信息包括(原先这些信息大多被hard code到kernel中): CPU的数量和原创 2017-09-27 17:51:04 · 9447 阅读 · 1 评论 -
Linux class 接口的使用
//Linux class 类接口必要的头文件:#include <linux/device.h>static ssize_t dvb_widgets_antpower_show(struct class *class, struct class_attribute *attr, char *buf){ ......}static ssize_t dvb_widgets_antpowe原创 2017-09-27 18:51:45 · 471 阅读 · 0 评论 -
Linux Device Tree Source
GPIO DTS使用#include <linux/gpio.h>#include <linux/gpio/consumer.h>devm_gpiod_getstruct gpio_desc *__must_check devm_gpiod_get(struct device *dev, const cha...原创 2018-05-08 09:01:49 · 701 阅读 · 0 评论 -
linux sys/class/gpio 操作GPIO
/************************************************************************************************************************************** * * File Name : gpio_leds.c * Date : 2018-05-03 ...原创 2018-05-08 09:05:10 · 1373 阅读 · 0 评论 -
Linux I2C 设备驱动
dts device tree 文件描述i2c1: i2c@02203000 { #address-cells = &amp;lt;1&amp;gt;; #size-cells = &amp;lt;0&amp;gt;; compatible = &quot;snps,designware-i2c&quot;; re原创 2018-06-26 10:45:42 · 652 阅读 · 0 评论 -
Linux jiffies.h
#ifndef _LINUX_JIFFIES_H#define _LINUX_JIFFIES_H#include &lt;linux/math64.h&gt;#include &lt;linux/kernel.h&gt;#include &lt;linux/types.h&gt;#include &lt;linux/time.h&gt;#include &am原创 2018-06-28 09:12:03 · 1489 阅读 · 0 评论 -
Linux tasklet
static struct demo_dev *p = ...;//延时操作函数void demo_delay_action(unsigned long data){ // 通过data获得设备相关指针 static struct demo_dev *pdev = (static struct demo_dev *)data; //延时操作 。。。。}...原创 2018-06-30 15:36:52 · 276 阅读 · 0 评论 -
Linux miscdevice 混杂设备
miscdevice设备:使用模板==================================================================================================static int stk_open(struct inode *inode, struct file *file){int ret;ret = n原创 2017-05-18 17:18:20 · 485 阅读 · 0 评论 -
Linux 字符设备驱动
字符设备驱动主设备号和次设备号的获取MAJOR(dev)MINOR(dev)MKDEV(ma,mi)字符设备加载和卸载函数struct xxx_dev{struct cdev cdev;.....};static init __init xxx_init(void){if(xxx_major)result = regi原创 2017-05-18 16:51:00 · 460 阅读 · 0 评论 -
Linux 内存与I/O访问
内存与I/O访问kmalloc() 申请内存位于物理内存映射区域,物理上也是连续的。kfree()vmalloc()在虚拟内存空间给出一块内存区,连续的虚拟内存,物理内存不一定连续。1.kmalloc()void *kmalloc(size_t size, int flags); flags : GFP_KERNEL 、GFP_ATOMIC 中断处理原创 2017-05-18 17:15:53 · 366 阅读 · 0 评论 -
Linux 内核驱动里对文件的操作
Linux 文件打操作1.创建int creat(const char *filename, mode_t mode);umask一起决定文件的最终权限(mode&umask)umask 可以通过unmsk();来改变。2.打开int open(const char *filename, int flags);int open(const char *filen原创 2017-05-18 16:43:55 · 2459 阅读 · 0 评论 -
Linux 驱动模块及模块之前的通信(模块函数的相互调用)
1.3.2 模块机制insmod :安装modulermmod :卸载module#include #include #include int __init xxx_init(void){/* */return 0;}void __exit xxx_exit(void){}module_init(xxx原创 2017-05-18 16:48:08 · 2366 阅读 · 0 评论 -
Linux sprintf,sscanf,strcmp,strict_strtoull,memchr
show store字符串操作sprintf :读内核数据sscanf :写数据到内核。char *disStr="";//读取内核 数据 如:cat /sys/class/fd650/display static ssize_t fd650_show_display(struct class *class, struct class_attribute *at原创 2017-05-18 17:00:16 · 418 阅读 · 0 评论 -
Linux 内核线程的使用
内核线程:#include struct task_struct *pthread;int thread_func(void *data) //线程要调用的函数{........while(1){........msleep(200);}}int __init xxx_init(void){.......原创 2017-05-18 17:02:03 · 511 阅读 · 0 评论 -
Linux设备驱动中的并发控制,原子打操作、自旋锁、信号量、完成量、互斥体
linux设备驱动中的并发控制7.2中断屏蔽中断屏蔽的使用方法为:local_irq_disable(); //开中断....critical section //临界区......local_irq_enable(); //关中断以上两个只能对本CPU内的中断起作用,SMP多CPU并不能解决竞态local_bh_disable()//关中断低半部local原创 2017-05-18 17:05:19 · 731 阅读 · 0 评论 -
Linux驱动中的阻塞与非阻塞I/O,等待队列,轮询操作
linux驱动中的阻塞与非阻塞I/O阻塞地读取串口一个字符char buf;fd = open("dev/ttyS1", O_RDWR);res = read(fd,&buf,1);if(res)printf("%c\n",buf);非阻塞地读取串口一个字符char buf;fd = open("/dev/ttyS1",O_RDWR |原创 2017-05-18 17:06:04 · 460 阅读 · 0 评论 -
Linux 驱动中断处理
中断分为:内部中断、外部中断, 可屏蔽中断、不可屏蔽中断(NMI)、向量中断、非向量中断向量中断由硬件提供中断服务程序入口地址非向量中断由软件提供中断服务程序入口地址。linux 中断编程10.3.1 申请和释放中断request_irq() free_irq()1.申请IRQint request_irq(unsigned int irq,void(*handler)(int irq, void...原创 2017-05-18 17:09:22 · 625 阅读 · 0 评论 -
Linux 驱动中工作队列的使用
工作队列struct work_struct my_wq;//定义一个处理函数void my_wq_func(unsigned long);//定义一个处理函数通过INIT_WORK()可以初始化这个工作队列并将工作队列与处理函数绑定,INIT_WORK(&my_wq,(void(*)(void*)) my_wq_func, NULL);shedule_work(&my_wq)原创 2017-05-18 17:10:49 · 1838 阅读 · 0 评论 -
Linux 内核定时器 timer_list hrtimer
10.5内核定时器10.5.1内核定时器编程1.timer_liststruct timer_list my_timer;2.初始化定时器void init_timer(struct timer_list *timer);3.增加定时器void add_timer(struct timer_list *timer);4.删除定时器原创 2017-05-18 17:12:43 · 1472 阅读 · 0 评论 -
Linux 内核延时
内核延时10.6.1 短延时纳秒、微秒、毫秒延时(无谓耗费CPU资源)void ndelay(unsigned long nsecs);void udelay(unsigned long usecs);void mdelay(unsigned long msecs);对于毫秒级以上时延内核提供以下函数void msleep(unsigned int millis原创 2017-05-18 17:14:25 · 864 阅读 · 0 评论 -
Linux sysfs文件系统
linux sysfs文件系统#include static ssize_t stk831x_enable_show(struct device *dev,struct device_attribute *attr, char *buf){struct stk831x_data *stk = i2c_get_clientdata(this_client);原创 2017-05-18 16:54:07 · 579 阅读 · 0 评论