摘要: 1. 原子操作 原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 常用原子操作函数举例: atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0 atomic_read(atomic_t *v); //返回原子变量的值 void atomic_inc(at 阅读全文
posted @ 2018-09-22 15:36 陆小果哥哥 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 1. 首先看应用程序 1. 首先分析第二点使用函数signal(SIGIO, my_signal_fun);来设置,当驱动程序传递信号给应用程序时候会调用第一点的程序 2. 第三点是设置相关参数 (二)当应用程序调用到底三点时候,就会在驱动程序中调用到第一点 上面的驱动程序初始化了信号的相关参数,然 阅读全文
posted @ 2018-09-22 15:35 陆小果哥哥 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 符号名 信号值 描述 是否符合POSIX SIGHUP 1 在控制终端上检测到挂断或控制线程死 亡 是 SIGINT 2 交互注意信号 是 SIGQUIT 3 交 互中止信号 是 SIGILL 4 检测到非法硬件的指令 是 SIGTRAP 5 从 陷阱中回朔 否 SIGABRT 6 异常终止信号 是 阅读全文
posted @ 2018-09-22 15:34 陆小果哥哥 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1. 功能:poll的机制与select相似,与select在本质上没有多大差别。管理多个描写叙述符也是进行轮询,依据描写叙述符的状态进行处理,可是poll没有最大文件描写叙述符数量的限制。 2. 技术资料:poll多路复用 这篇文章写得很好 3. 技术资料:poll机制分析 4. 首先我们看应用程 阅读全文
posted @ 2018-09-22 15:34 陆小果哥哥 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1. 首先这篇博客讲解得挺好的,推荐 wait_event_interruptible 使用方法 2 .函数原型: #define wait_event_interruptible(wq, condition) \ ({ \ int __ret = 0; \ if (!(condition)) \ 阅读全文
posted @ 2018-09-22 15:33 陆小果哥哥 阅读(3039) 评论(0) 推荐(0) 编辑
摘要: 1. 功能:获取引脚状态 2. 函数原型: unsigned int s3c2410_gpio_getpin(unsigned int pin) { void __iomem *base = S3C24XX_GPIO_BASE(pin); unsigned long offs = S3C2410_G 阅读全文
posted @ 2018-09-22 15:31 陆小果哥哥 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 1. request_irq()函数原型 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) 2. 功能:注册中断服务函 阅读全文
posted @ 2018-09-22 15:30 陆小果哥哥 阅读(4508) 评论(0) 推荐(0) 编辑
摘要: 1. copy_from_user函数的目的是从用户空间拷贝数据到内核空间 2. 解析原型: copy_from_user(void *to, const void __user *from, unsigned long n) 1. @*to 将数据拷贝到内核的地址 2. @*from 需要拷贝数据 阅读全文
posted @ 2018-09-22 15:29 陆小果哥哥 阅读(3769) 评论(0) 推荐(1) 编辑
摘要: 1. 测试:配置S3C2440的GPF4,5,6为输出 2. 测试IO的地址从芯片手册中获取以下资料 3. 从上面可以看出配置输出对应的设置是01=输出,那么对应位如:[9:8]需要设置成=01 4. 解析配置之前我们需要先将对应IO使用命令“&”设置成00,然后使用命令“|”设置成01 5. 则可 阅读全文
posted @ 2018-09-22 15:29 陆小果哥哥 阅读(794) 评论(0) 推荐(0) 编辑
摘要: (一)学习linux驱动之初,对ioremap函数的个人理解 (二)博客:实验探究 ioremap 这篇文章作者通过验证来阐述自己的观点,个人觉得挺好的 (三)函数原型 基本简介 void * __ioremap(unsigned long phys_addr, unsigned long size 阅读全文
posted @ 2018-09-22 15:28 陆小果哥哥 阅读(1990) 评论(0) 推荐(1) 编辑
摘要: (一)解析class_device_create函数 (二)当我们使用class_create创建一个类之后我们就可以使用class_device_create函数在这个类下面创建一个设备了,class_create创建查看004_linux驱动之_class_create创建一个设备类 (三)cl 阅读全文
posted @ 2018-09-22 15:28 陆小果哥哥 阅读(3093) 评论(0) 推荐(0) 编辑
摘要: (一)解析:class_create函数和class_destroy函数 创建一个类 和 删除一个类。 (二)class_create函数原型 struct class *class_create(struct module *owner, const char *name); 1. 查看函数注释: 阅读全文
posted @ 2018-09-22 15:27 陆小果哥哥 阅读(5314) 评论(0) 推荐(0) 编辑
摘要: (一)解析file_operations函数 解析002_linux驱动之_register_chrdev注册字符设备中的问题 (二) 1. file_operations结构原型 2. 使用举例 (三)从上面的原型可以看出file_operations函数有很多类型,下面将解析一部分 1. 以.o 阅读全文
posted @ 2018-09-22 15:26 陆小果哥哥 阅读(444) 评论(0) 推荐(0) 编辑
摘要: (一)解析:register_chrdev函数和unregister_chrdev函数 (二)register_chrdev函数原型 int register_chrdev(unsigned int major, const char *name,const struct file_operatio 阅读全文
posted @ 2018-09-22 15:24 陆小果哥哥 阅读(3041) 评论(0) 推荐(0) 编辑
摘要: (一)驱动的安装: 1. 可以将驱动程序静态编译进内内核中 2. 也可以将它作为模块在使用的时候再加载 注:在配置内核时候,如果某个配置被设置为m,就表示它将会被编译成模块 (二)加载和卸载驱动使用命令(模块的拓展名为.ko) 1. insmod 命令加载 (使用示例:insmod first_dr 阅读全文
posted @ 2018-09-22 15:23 陆小果哥哥 阅读(1998) 评论(0) 推荐(0) 编辑
摘要: (一)构造函数:用来在创建对象时初始化对象, 即为对象成员变量赋初始值 (二)构造函数的命名必须和类名完全相同 (三)更对具体的查看:构造函数 (四)直接分析程序 运行结果 解析上面程序: 1. 当程序运行到四点时候,就会自动调用第一点无参构造函数,打印Person() 2. 当运行到第5点时候,就 阅读全文
posted @ 2018-09-22 15:21 陆小果哥哥 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 1. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声 阅读全文
posted @ 2018-09-22 15:19 陆小果哥哥 阅读(117) 评论(0) 推荐(0) 编辑
摘要: (一)直接看代码 1 #include <iostream> 2 using namespace std; 3 int add(int a){ 4 a = a + 1; 5 return a; 6 } 7 int add(int *a){ 8 *a = *a + 1; 9 return *a; 10 阅读全文
posted @ 2018-09-22 15:16 陆小果哥哥 阅读(98) 评论(0) 推荐(0) 编辑
摘要: (一)源码下载 (一) 函数的重载:同一个命名函数,通过传入参数的不同,调用不一样的函数 上面程序的运行结果: (二)函数只能通过参数的不一样重载函数,不能通过返回参数的不一样重载函数 运行结果报错 1 #include <iostream> 2 using namespace std; 3 int 阅读全文
posted @ 2018-09-22 15:13 陆小果哥哥 阅读(130) 评论(0) 推荐(0) 编辑
摘要: (一)引入namespace原因: 假如有很多跟人共同完成一项工程,工程中难免会有函数定义一样的名称,不可能一个一个的询问这个函数 你定义过了没有,所以引入namespace 1 #include <stdio.h> 2 #include "person.h" 3 #include "dog.h" 阅读全文
posted @ 2018-09-22 15:02 陆小果哥哥 阅读(190) 评论(0) 推荐(0) 编辑
摘要: (一)程序修改001_linuxC++之_类的引入 (二)修改成为.h和.c文件 1 #include <stdio.h> 2 #include "person.h" 3 4 int main(int argc,char ** argv) 5 { 6 Person per; 7 per.setNam 阅读全文
posted @ 2018-09-22 14:56 陆小果哥哥 阅读(148) 评论(0) 推荐(0) 编辑
摘要: (一) C++类的引入,图片的程序比较好看,文中程序不贴出来 (二) 知识点 1. 成员函数的存取权限:公有的(public),保护的(protectd),私有的(private) 2. 第27行this->age是类中的。Age是第20行输入的Age 1 #include <stdio.h> 2 阅读全文
posted @ 2018-09-22 14:50 陆小果哥哥 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 以下内容为转载: 注:非常感谢博主“希望之光”,文章转自他的博客:http://blog.chinaunix.net/uid-20379123-id-1956584.html ARM的六大类指令集 LDR、LDRB、LDRH、STR、STRB、STRH ARM微处理器支持加载/存储指令用于在寄存器和 阅读全文
posted @ 2018-09-22 14:47 陆小果哥哥 阅读(2061) 评论(0) 推荐(0) 编辑
摘要: 目的:实现keil4和keil5的共存 1. Keil4 主要用来开发 C51 程序 2. Keil5 也就是 MDK 主要用来开发 ARM 芯片,如 STM32 系列芯片 3. 资料下载地址:链接:https://pan.baidu.com/s/1crMZ3U8eAHe3C7lVHCDOxw 密码 阅读全文
posted @ 2018-09-22 14:46 陆小果哥哥 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 测试电脑:win7 64位操作系统 下载地址: 链接:https://pan.baidu.com/s/1xkyhF6pdkx_kZiNjFireZw 密码:mvpp 阅读全文
posted @ 2018-09-22 14:45 陆小果哥哥 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 研究的目的和意义 传统照明电路只是由简单的开关组成,并不适合于目前大房子,如别墅,跃层等有楼上楼下的房子,也存在关灯不方便,造成关灯不及时而浪费电等问题。随着科学和技术的发展,人们对生活品质的要求也越来越高,对照明的控制人们希望使用方便甚至是随心所欲,传统的照明系统已经远远满足不了现代人的需要,于是 阅读全文
posted @ 2018-09-22 14:41 陆小果哥哥 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1. 研究目的和意义: 随着我国经济不断的发展,跻身到全球第二大经济体.我国人民的生活日益改善,人们自我保健意识和卫生知识水平不断提高。但在不断走向现代化的过程中,人们的生活越来越忙,工作压力也越来越大,也就引发了一系列的问题。如:在医院买药之后忘记食用,以至于影响病情恢复等。为解决上面列举的问题, 阅读全文
posted @ 2018-09-22 14:40 陆小果哥哥 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 1. 研究目的和意义: 随着科技的不断的进步与发展,中国在这文化不断进步潮流之中不断的向富强民主文明和谐美丽的社会主义现代化强国迈进脚步。随着我国综合国力的不断加强,人民的生活水平不断的提升。人们对生活住宅从以前最简单的满足居住生活逐渐转向对生活住宅的的要求安全,舒适,快捷,方便。其中安全性是首要的 阅读全文
posted @ 2018-09-22 14:39 陆小果哥哥 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 1.研究的目的和意义: CC2530芯片构成ZigBee协调器和ZigBee无线传感器节点来获取车辆信息,经过数据处理后实时反馈给协调器,再经过串口传至上位机,最后在上位机监控平台上实现对车辆信息的实时监控和存储。该系统能够即时的显示车辆从驶入车库到驶出车库全过程中的信息并同步存入数据库信息表中,从 阅读全文
posted @ 2018-09-22 14:38 陆小果哥哥 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 一.项目简介 现代化农业智能监测系统通过远程测控终端可实现对农业生产基地的监视与控制。监测系统通过传感器对农业生产基地的光照强度,温度,空气湿度,土壤温湿度等数据进行实时的采集,通过ARM芯片将采集数据进行信息处理并发送至控制终端。在控制终端中,通过显示屏可查询各种农作物生长的最适生长环境 ,和生长 阅读全文
posted @ 2018-09-22 14:21 陆小果哥哥 阅读(286) 评论(0) 推荐(0) 编辑