自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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的两篇官方文档

Device Class Definition for Human interface Devices和 HID Usage Tables两篇官方文章,保存起来,已被更换电脑后用

2019-01-10

read-copy-update

linux锁机制的经典文档,read - copy - update。来自linux社区。

2018-09-25

输入子系统编程模板

尴尬,我自己的某个博客要用。这个东西我不想设置分数的,结果不能为0分。

2018-07-29

51单片机移植的ucosii嵌入式操作系统

对ucosii中不必要的内容进行了裁剪。因为51单片机的idata很小,这份代码用了51单片内部的idata作为当前运行任务的任务栈,其它没被运行的任务的栈则被放置在内存较大的xdata区。但因为51单片机的汇编语句少,简单,可以作为其他处理器移植ucosii的模版和参考,同时也是学习51单片机递增以及高级应用的实例。

2018-07-22

基于51单片机移植的ucosii的代码

对ucosii中不必要的内容进行了裁剪。这份代码用了51单片内部的idata作为任务栈,因为51单片机的idata很小,所以这份代码可以运行的任务数量比较少。但因为51单片机的汇编语句少,简单,可以作为其他处理器移植ucosii的模版和参考。

2018-07-22

基于51单片机写的一个多任务切换的简易OS

里面代码是本人亲自手写的一个基于51单片机的多任务切换代码,核心代码只有不到200行,可以从代码层面方便单片机开发者了解任务切换的原理和使用,里面没有使用任何复杂的算法。

2018-07-22

linux0.11源代码

里面包含有linux0.11版本的原版代码和 赵炯博士对里面所有代码的注释。

2018-07-22

空空如也

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

TA关注的人

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