自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 linux驱动——内核通知链(探究i2c-dev.c 中的bus_register_notifier函数所得)

在学习 i2c-dev.c 文件时,有如下的一段函数一直不明所以static int i2cdev_notifier_call(struct notifier_block *nb, unsigned long action, void *data){ struct device *dev = data; switch (action) { case

2017-11-06 14:01:08 4344 5

原创 openwrt 编译内核模块中的配置问题

以 other.mk 中的iio 为例 对 KCONFIG下面的define KernelPackage/iio-core SUBMENU:=$(OTHER_MENU) TITLE:=Industrial IO core KCONFIG:= \ CONFIG_IIO \ CONFIG_IIO_BUFFER=y \ CONFIG_IIO_KFIFO_BUF \

2017-11-03 18:30:42 1772

原创 linux 驱动——时间、延时及延缓操作

一、jiffies内核通过定时器中断来跟踪事件流。时钟中断由系统定时硬件以周期性的间隔产生,间隔值由内核根据HZ设定。 一般为HZ的范围为50~1200。 jiffies_64为64位变量,在时钟中断没发生一次时,值增加一,用来计数从系统引导到当前时刻的时间节拍。jiffies 是unsigned long 型,32位系统为jiffies_64的低32位,64位系统是与jiffies_64相

2017-10-23 16:35:17 1692

原创 linux 驱动——高级字符驱动程序操作

内容ioctl 的ioctl 的系统概念与用户空间同步的方法进程休眠非阻塞IO及与用户间的通信原型函数int (*ioctl) (struct inode *inode, struct file *filp,unsigned int cmd, unsigned long arg);一、ioctl 命令ioctl 的命令由四部分组成通过ioctl()函数的cmd,下发需要底层响应的命令。c

2017-10-20 10:13:56 769

原创 linux 驱动——并发和竞态

一、并发造成的原因l 中断——中断几乎可以在任何时刻异步发生,也就可能随时打断当前正在执行的代码。 2 睡眠及与用户空间的同步——在内核执行的进程可能会睡眠,这就会唤醒调度程序,从而导致调度一个新的用户进程执。 3 对称多处理——两个或多个处理器可以同时执行代码。 4内核抢占——因为内核具有抢占性,所以内核中的任务可能会被另一任务抢占(在2.6内核引进的新能力)。 5 多个用户空间进程组合访

2017-10-19 14:11:17 288

原创 llinux 驱动——字符驱动

一、基本概念 主设备号与次设备号: 可以理解为主设备号对应一个驱动程序,次设备号对应一个设备。二、重要的数据结构 struct file_operations : 文件操作 可参考: http://blog.csdn.net/sunsea1026/article/details/6586143 struct file

2017-10-18 15:20:10 189

原创 驱动基本知识

## 1. 用户空间与内核空间 ## 用户空间:应用程序运行的空间,有独立的地址映射,虚拟地址中大栈空间,发生段错误无害, 内核空间:内核程序运行的空间,有独立的地址映射,虚拟地址中小栈空间,发生段错误可能到时系统无法正常运行,用户空间和内核空间拥有独立的内存空间,用户空间数据与内核空间数据不能直接交互,不能直接相互引用,必须使用像copy_to_user 及 copy_from_user类似的

2017-10-18 13:44:21 224

原创 两个字符驱动实例second 及 globalfifo

second.c

2017-08-15 10:54:40 221

原创 linux 驱动中几个驱动注册的实体函数

misc_register() 调用device_create_with_groups()(新内核, 旧的为device_create()) 函数进行注册,int misc_register(struct miscdevice * misc){ dev_t dev; int err = 0; bool is_dynamic = (misc->minor == MISC_DY

2017-08-15 10:47:03 2250

翻译 gpio-button-hotplug.c 分析

/* * GPIO Button Hotplug driver * * Copyright (C) 2012 Felix Fietkau <nbd@openwrt.org> * Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> * * Based on the diag.c - GPIO interface driv

2017-03-07 11:18:38 2054

原创 openwrt 中添加新的文件、脚本、可执行程序到固件

网上有许多介绍如何编译程序到固件的文章,写一篇将多个文件编译到固件中的方法的文章。## Copyright (C) 2007-2016 OpenWrt.org# Copyright (C) 2010 Vertical Communications## This is free software, licensed under the GNU General Public License v2

2017-01-23 15:33:00 6362

原创 WRTnode 2Q 按键驱动说明

咨询了一下WRTnode开发的相关人员,以及参考网上资料,大致搞明白OpenWrt系统下的按键驱动是怎么回事。 涉及文件: 1、编译模块的文件 build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.29/arch/mips/ath79/mach-wrtnode2q.c ke

2016-08-17 13:38:53 693 1

原创 openwrt 驱动模块的编译与加载

1、要编译一个适用于openwrt系统的nids驱动, 源代码由硬件商提供。 首先在ubuntun 下 make 编译一下, 查看是否编译正常,是否出现错误, 修改错误。OpenWrt环境下的编译 1、 进入openwrt的编译目录,即是 make menuconfig 的配置。在 ./package/kernel/ 下 mkdir gobinet touch go

2016-07-05 09:41:24 9189 1

原创 sed 一些用法的解释

代码来源openwrt : luci local file="$1" ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \ /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \ -type f -o -type l

2016-04-12 11:08:00 509

原创 mipsel-openwrt-linux-gcc交叉编译时找不到库文件的解决办法

1、在学习《linux程序设计》的时候利用ubuntu14.04系统自带的dbm数据库对一个CD程序想要交叉编译,然都一直到mips架构下的WRTnode2P, 但是在交叉编译的时候找不到libgdbm库,在WRTnode.cc中也找不到对应的库文件(有一个libgdbm,但是版本吗大不相同)。于是找到从网上下载源码,因为dbm相关的函数都是用C语言开发的,可以自行交叉编译得到相应的可执行文件。

2016-03-14 14:15:08 9190

原创 欢迎使用CSDN-markdown编辑器

在对大量的头文件和源文件进行编译链接时要用到 makefile。1、当大量源文件和头文件在同一个文件加时makefile的制作 1)比较笨拙直接的方法可以利用 gcc -MM *.c 找出源文件与其他文件的依赖关系 如此编译每一个源文件,最后进行链接生成最终的目标文件2、 利用makefile 的内置规则#1 all: app 2 3 objs = app.o config.o d

2016-03-14 13:51:54 269

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除