![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 61
贝特菲尔
这个作者很懒,什么都没留下…
展开
-
MiniCRT的简单实现
参见《程序员的自我修养》中的MiniCRT原创 2014-09-17 16:24:44 · 638 阅读 · 0 评论 -
一个字符驱动
首先,实现一个基本框架原创 2014-11-01 12:05:47 · 395 阅读 · 0 评论 -
linux 中的原子操作和内存屏蔽
很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实是由于操作系统中存在多进程对共享资源的并发访问,从而引起了进程间的竞态。这其中包括了我们所熟知的SMP系统,多核间的相互竞争资源,单CPU之间的相互竞争,中断和进程间的相互抢占等诸多问题。通常情况下,如图1所示,对于一段程序,我们的理想是总是美好的,希望它能够这样执行:进程1先对临界区完成操作,然后进程2转载 2014-11-03 12:01:44 · 1251 阅读 · 0 评论 -
I/O多路复用之select,poll和epoll
select头文件原创 2014-11-06 09:48:14 · 396 阅读 · 0 评论 -
wrtnode(mt7620n) spi 使用gpio模拟
上篇讲到,关于spi第二个端口复用,由于复用了三个端口,导致连上fpga后,系统根本就起不来。看来,设备禁用后,复用引脚不是完全的高阻态,没有办法,只用gpio口模拟 使用的四个引脚: 太好了,正好四个 打开wrtnode\target\linux\ramips\dts\WRTNODE.dts,在根节点下添加gpio-spi { compatible = "spi-gpio原创 2015-04-28 10:43:21 · 2625 阅读 · 0 评论 -
openwrt 将自己的应用编入rom中
在wrtnode\package中建一个文件夹mylabel,以此作为菜单 在里面添加一个你的程序myapp文件夹,添加makefile文件如下:include $(TOPDIR)/rules.mkPKG_NAME:=myappPKG_RELEASE:=1PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)include $(INCLUDE_DIR)/packa原创 2015-04-28 12:09:24 · 518 阅读 · 0 评论 -
wrtnode (mt7620n) 开启第二个spi
本文参考大神作品,附上链接:http://blog.csdn.net/manfeel/article/details/43635529 首先需要修改设备树,打开文件wrtnode\target\linux\ramips\dts\mt7620n.dtsi 在文件wrtnode\build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\linux-ram原创 2015-04-28 11:03:14 · 1538 阅读 · 0 评论 -
使用class_create(),device_create()为设备自动创建文件结点
转载:http://www.cnblogs.com/hnrainll/archive/2011/06/24/2088576.html我们在刚开始写Linux设备驱动程序的时候, 很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设 备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。 首转载 2015-05-13 11:54:58 · 507 阅读 · 0 评论 -
Linux 用户态设置GPIO控制
Linux 用户态设置GPIO控制linux内核提供了一套在用户态配置GPIO的接口,在/sys/class/gpio/目录下 可以发现其中包含有两个文件export、unexport和若干gpiochipN 类型文件夹export 用于将指定编号的引脚导出,作为GPIO使用unexport 用于将导出的GPIO删除掉gpiochipN 当前芯片中包含的GPIO控制器转载 2018-01-25 19:58:30 · 2305 阅读 · 0 评论 -
usb 驱动中的相关结构体关系图
原创 2014-10-29 17:11:10 · 964 阅读 · 0 评论 -
Linux自旋锁
编写最基本的驱动文件转载 2014-10-31 16:12:24 · 441 阅读 · 0 评论 -
使用poll实现socket多路复用
1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数转载 2014-09-18 18:14:42 · 572 阅读 · 0 评论 -
linux 管道通信
pipe:1) 头文件 #include2) 定义函数: int pipe(int filedes[2]);3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。filedes[0]为管道里的读取端 filedes[1]则为管道的写入端。4) 返回值: 若成功则返回零,否则返回-1,错误原因存于errn原创 2014-09-20 14:54:30 · 467 阅读 · 0 评论 -
socket的局域网广播
首先,我们要知道,ip为255.255.255.255是一个特原创 2014-09-19 16:29:38 · 9416 阅读 · 0 评论 -
socket UDP的使用
首先明白,对于UDP而言,没有所谓的f原创 2014-09-19 18:38:42 · 564 阅读 · 0 评论 -
linux tree函数的简单实现
直接上代码#include #include #include #include #include #include char list[100] = {0};struct dirent *getdir(DIR *pDIR){ struct dirent *pdirent = NULL; while(pdirent = readdir(pDIR)) { /*原创 2014-09-13 13:25:14 · 652 阅读 · 0 评论 -
shell 中的引号
首先明白,在shell语句中使用引号,是为了原创 2014-10-20 15:29:12 · 416 阅读 · 0 评论 -
urb的使用
Linux系统所有的 USB 设备通讯使用称为 urb 的东西( USB request block). 这个请求块用 struct urb 结构描述并且可在 include/linux/usb.h 中找到转载 2014-10-29 10:41:02 · 960 阅读 · 0 评论 -
使用shell 实现tree函数
学了这么久shell,放出一个实例原创 2014-10-21 17:31:33 · 1107 阅读 · 0 评论 -
linux 信号量
信号量概念自旋锁顾名思义首先是一把锁,另外使用这把锁的线程需要反复自我循环(loop)检测这把锁是否可用。注意与信号量区别,信号量也是一把锁,但是使用这把锁的线程检测锁不可用时,选择去睡眠,而不是自我循环。自旋锁与信号量相同点是两者都是锁,都具备锁定特性,实现临界区代码块的同步与互斥访问。自旋锁函数1)自旋锁头文件2)自旋锁数据类型spinl原创 2014-10-31 20:23:55 · 395 阅读 · 0 评论 -
十进制字符串转化成十六进制字符串(不定长)
这里写自定义目录标题设计思路一般思路对于不定长字符长怎么处理?将数据添加到buffer中完整代码设计思路一般思路一般如果需要将十进制转化成十六进制,先定义一个int data,然后从高位到地位遍历十进制字符串,将数据一位位的添加到data中,最后将data转成十六进制字符串输出就可以了,那么先来看看怎么转化成dataint string2int(const char *src_buf){...原创 2019-07-25 15:58:23 · 272 阅读 · 0 评论