- 博客(6)
- 资源 (8)
- 收藏
- 关注
原创 linux驱动注册之倒影式错误处理机制
C语言没有错误处理机制,所以一旦程序某个部分出错,需要退出的时候,就需要先把之前分配的资源先释放掉再退出。而释放的过程是很有讲究的。一般我们遵循先申请的资源后释放,后申请的资源先释放的原则。和栈比较像。举个例子struct _c_tag{ int *c;};struct _b_tag{ int b; struct _c_tag *c;};struct ...
2018-06-30 18:44:45 779
原创 do { }while(0)的妙用
1.避免空的宏定义在声明时出现警告。#define FUNC #define FUNC do{}while(0)2.避免出现歧义代码#define FUN1(x) x=1;x++;if(...) FUNC1();else FUNC2();上面的宏展开后就成了下面这样,很明显和写代码时的语义不符。if(...) x=1;x++;else FUNC2(...
2018-06-30 17:48:30 2207
原创 linux驱动学习之platform总线使用学习
platform总线通常使用基于两个部分,一个部分是device,一个部分是driver.我以一个简单的led的例子为例总结platform总线的使用。我使用的是s5pv210处理器,所以我以该处理器为例总结,其实linux驱动,对任何处理器都一样。 首先以实现device部分。device主要是数据。首先我在自定义一个结构体,最好是自己创建一个头文件,方便驱动部分好包...
2018-06-29 21:23:27 2437 1
原创 平台总线之platform_get_drvdata(_dev)宏分析
#define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev)void *dev_get_drvdata(const struct device *dev){ if (dev && dev->p) return dev->p->driver_data; return N...
2018-06-27 21:59:14 2914
原创 字符设备驱动学习之老接口和新街口
老接口是直接使用register_chrdev函数来进行字符设备号的申请和驱动注册。新的接口则要先使用register_chrdev_region/alloc_chrdev_region分配设备号再使用cdev_alloc申请内存存放字符设备信息最后通过cdev_add把申请到的存放字符设备信息的指针放到全局存放所有字符设备信息的一个表中注:使用cdev_init和使用cd...
2018-06-18 14:22:04 1063
原创 字符设备驱动学习之cdev_init和cdev_alloc
刚开始学习字符设备驱动,看到内核中有的代码使用cdev_alloc函数申请了内存后使用了cdev_init函数初始化,有的则是直接对结构体变量ops赋值。分别人如下////////////////////////////////////////////我是分割线//////////////////////////////////////////////为了了解为什么可以不使用cde...
2018-06-17 22:29:37 3076
USB_HID的两篇官方文档
2019-01-10
51单片机移植的ucosii嵌入式操作系统
2018-07-22
基于51单片机移植的ucosii的代码
2018-07-22
基于51单片机写的一个多任务切换的简易OS
2018-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人