摘要: #include #include int main() { int i_num = 0x12345678; printf("[0]:0x%x\n", *((char *)&i_num + 0)); printf("[1]:0x%x\n", *((char *)&i_num + 1)); printf("[2]:0x%x\n", *(... 阅读全文
posted @ 2017-03-31 10:46 我有一壶酒 阅读(960) 评论(0) 推荐(0) 编辑
摘要: 判断一个整数转换成二进制后1的个数,大致有三种方法,分别是左移位、右移位和与运算。 第一种方法:右移位 右移位的基本思路是,先将整数转换成正整数,再将该数与1进行与运算。若不将整数做取绝对值处理,当输入的数是负数时,每向右移动一位,高位会自动补1,就会导致死循环 int ChargeOnesCoun 阅读全文
posted @ 2017-03-28 10:15 我有一壶酒 阅读(1761) 评论(0) 推荐(0) 编辑
摘要: 提示:用环形链表实现 对于这个题目其实就是用c语言的循环链表实现一个约瑟夫环。我们可以定义一个循环链表,将这n个人加入到链表中,然后定义三个节点指针在链表上循环,移动跨度为3,利用链表的循环功能每次删除第三个节点,这边要注意的一个问题就是你定义的是3个指针,且在循环中他们彼此也都是有 ->next关 阅读全文
posted @ 2017-03-27 17:32 我有一壶酒 阅读(4489) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-03-09 10:30 我有一壶酒 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 系统时钟: 在开发版上,不同的器件运行在不同的时钟频率上,如CPU可能运行在400Mhz的频率上、SDRAM、DM9000等内存存储运行在100Mhz~133MHz上、 串口i2c等运行在50Mhz上,而在开发板上只有一个12Mhz的晶振,则我们需要设置两个部分 1、提高时钟频率12Mhz提高到40 阅读全文
posted @ 2017-02-17 10:50 我有一壶酒 阅读(4197) 评论(0) 推荐(0) 编辑
摘要: 1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0atomic_read(atomic_t *v); //返回原子变量的值void atomic_inc(atomic_ 阅读全文
posted @ 2017-02-16 16:21 我有一壶酒 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 异步通知: 驱动程序的所谓异步通知,就是说并不是应用程序来对驱动程序操作的,而是驱动程序查询到有事件发生或者有数据发生变化的时候通知应用程序。角色发生了变化,应用程序由主动改为被动执行。 比如按键驱动: 1、有不断进行查询引脚状态的,CPU资源消耗非常的打; 2、有中断操作的,发生按键事件后采取执行 阅读全文
posted @ 2017-02-16 11:17 我有一壶酒 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 中断函数:包含#include<linux/irq.h> request_irq(irq,handle,irqflag,name,dev_id) { 1,分配一个irqaction结构体 2、把这个结构体放到irq_desc[irq](action链表)中 3、设置引脚 4、使能中断 } free_ 阅读全文
posted @ 2017-02-16 10:16 我有一壶酒 阅读(787) 评论(0) 推荐(0) 编辑
摘要: 编写驱动程序需要编写那些代码: 1、硬件相关的驱动程序 2、Makefile的编译程序 3、还需要编写一个相关的测试程序 比如说:一个摄像头驱动程序 1、驱动程序的编写,需要编写一些硬件相关的操作,编译Makefile 2、安装、运行、卸载驱动程序(insmod ***、。./*** 、remod 阅读全文
posted @ 2017-02-15 10:20 我有一壶酒 阅读(422) 评论(0) 推荐(0) 编辑
摘要: poll机制:为了减少CPU资源的占用率,在编写驱动函数中添加poll机制 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 POLL:应用程序在一定时间内没有事 阅读全文
posted @ 2017-02-14 15:52 我有一壶酒 阅读(4485) 评论(0) 推荐(0) 编辑