摘要: # i2c_add_driver和i2c_new_device匹配后调用i2c_probe i2c控制器被注册为Platform设备。 # 启动开发板,在超级终端中输入命令“cat /proc/misc”也可以查看对应的杂项设备。 前面介绍过主设备号只有 256 个,而设备又非常多,所以引入了子设备 阅读全文
posted @ 2020-10-03 22:56 一匹夫 阅读(279) 评论(0) 推荐(0) 编辑
摘要: . class Myclass { public: virtual int FuncX(); virtual int FuncY(); }; int main() { Myclass obj; // 编译报错 cout << "hello" << endl; return 0; } class My 阅读全文
posted @ 2020-10-03 22:33 一匹夫 阅读(315) 评论(0) 推荐(0) 编辑
摘要: const int f[10] = { 1,2,3,4,5,6,7,8,9,10 }; int main() { // test1 const int i = 3; int& j = const_cast<int&>(i); // 使用const_cast关键字进行强制类型转换 j = 5; // 阅读全文
posted @ 2020-10-03 21:22 一匹夫 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 1. 多态初体验 #include <iostream> #include <string> using namespace std; class Parent { public: virtual void print() { cout << "I'm Parent." << endl; } }; 阅读全文
posted @ 2020-10-03 20:43 一匹夫 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 1. 重载指针访问符 初体验 #include <iostream> using namespace std; class test { public: test(int input) :num(input), j(input) {} ~test() {} int operator * () con 阅读全文
posted @ 2020-10-03 17:42 一匹夫 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 字面常量不可以有引用,因为这也不需要使用符号来引用了,但是字面常量却可以初始化const引用,这将生成一个只读变量; 对变量的const修饰的引用是只读属性的; 也就是说,const修饰的引用,不管是变量初始化还是字面常量初始化,总是对应一个只读变量。 # 函数能够重载和返回值无关,所以两个函数若是 阅读全文
posted @ 2020-10-02 23:05 一匹夫 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 1. 引入。 先上代码 1 // 本事件通信类应该支持一个事件的上半部、下半部方法的注册,以及cancel_event方法的注册。(或者不采用注册,而借助信号与槽) 2 // 外界可以通过本类对外提供的wake_event接口触发本类的do_event方法的执行。 3 // do_event方法内部 阅读全文
posted @ 2020-09-27 16:49 一匹夫 阅读(232) 评论(0) 推荐(0) 编辑
摘要: gettid()这个函数不可以在程序中直接使用,它是Linux本身的一个函数, 但是:仅包含#include <sys/types.h>,然后使用,编译时会报该函数未定义之类的错误! 解决方案: 我们可以自已定义实现方法,如下: #include <sys/syscall.h> /*添加上此头文件* 阅读全文
posted @ 2020-09-27 15:05 一匹夫 阅读(2421) 评论(0) 推荐(0) 编辑
摘要: ques1: 数组名完全等价于指针常量吗? int array[10] = { 10,11,12,13,14,15 }; printf("sizeof(array)= %d \n", sizeof(array)); char* const str_2 = "QQQQQQQQQQQQQQ"; prin 阅读全文
posted @ 2020-09-25 11:39 一匹夫 阅读(164) 评论(0) 推荐(0) 编辑
摘要: #if 1 #include <stdio.h> void base_demo1() { int *pTest = 0; printf("pTest = 0x%p \n", pTest); pTest++; printf("pTest = 0x%p \n", pTest); printf("size 阅读全文
posted @ 2020-09-25 00:51 一匹夫 阅读(232) 评论(0) 推荐(0) 编辑
摘要: test1: 展示了, 1 信号与槽的基本使用, 2 要获取槽函数的返回值时的注意事项 #if 1 /* 参考blog https://www.cnblogs.com/jiayayao/p/6246161.html Qt异步的实现实际上是将信号push到一个队列中,然后由统一的线程来处理信号对应的槽 阅读全文
posted @ 2020-09-24 21:54 一匹夫 阅读(946) 评论(0) 推荐(0) 编辑
摘要: 单例模式的构造函数是私有的,目的是让用户无法直接new出实例,而只有通过其他的接口来获取实例,单例模式在这里作文章,使得多次获取到的实例,都是同一个实例。 单例模式,分为饿汉式单例 和 懒汉式单例。 先把本类对象所需内存在main函数执行前就new出来,这是饿汉式单例。 个人思考: 为什么饿汉式不独 阅读全文
posted @ 2020-09-14 09:44 一匹夫 阅读(1117) 评论(0) 推荐(0) 编辑
摘要: 设计背景: 我:头上的油揩给了手,手接触洗手液。洗手液伤头皮,这样头皮就不会和洗手液接触了。 具体执行过程描述: 1.手揩油 -> 2.取液体 3.->洗手 我:这是什么设计模式?怎么实现? 广告兄<同城广告网>: 设计模式的核心就是面向抽象编程,你首先让手成为一个抽象的类,而不只是手,是一个可以把 阅读全文
posted @ 2020-09-13 17:19 一匹夫 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 小结如下: 前置声明注意事项: 类或结构体的前置声明, 在其内部只能定义对象指针,因为此时没有办法构造一个具体的对象。 . 阅读全文
posted @ 2020-09-10 17:03 一匹夫 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 我的相关博文: 别只知道策略模式+简单工厂,试试更香的策略模式+抽象工厂! 1. 简单工厂模式, 一图就看尽 涉及: 产品抽象类(即水果类) 、 工厂类、具体产品类(香蕉类、苹果类) 2. 工厂方法模式使用先来看一下,上截图: 工厂方法模式的实现: 3 class SingleCore // 抽象类 阅读全文
posted @ 2020-09-09 22:26 一匹夫 阅读(1396) 评论(0) 推荐(0) 编辑
摘要: 1. 先贴源码 #include <string> #include<iostream> using namespace std; class LegacyRectangle { public: LegacyRectangle(double x1, double y1, double x2, dou 阅读全文
posted @ 2020-09-03 15:04 一匹夫 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 1. LMA(Load Memory Address): the address at which the section will be loaded. 内存装载地址。就是把你的磁盘上程序文件中对应的内容,详细点说,把其中的.text代码段,.data数据段等内容,搬到、copy、拷贝到,内存的L 阅读全文
posted @ 2020-09-03 09:38 一匹夫 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 1. IIC协议 2. Linux的I2C体系结构分为3个组成部分: I2C核心( i2c-core.c ): I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法、I2C通信方法(”algorithm”)、与具体适配器无关的代码、探测设备、检测设备地址的上层代码等。 给驱动编程人员提供编程接口 阅读全文
posted @ 2020-09-01 07:04 一匹夫 阅读(946) 评论(0) 推荐(1) 编辑
摘要: idr机制解决了什么问题?为什么需要idr机制(或者说,idr机制这种解决方案,相对已有的其他方案,有什么优势所在) ? idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。 假设我们的代码内需要将一个设备的ID号和描述该设备信息的结构体 阅读全文
posted @ 2020-08-31 22:52 一匹夫 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 1. 常说的笼统概念的串口, 哪些是全双工,哪些是半双工 RS232 、RS422是全双工。 而 RS485是RS422的阉割版,是半双工。 . 阅读全文
posted @ 2020-08-29 14:52 一匹夫 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 第一部分:交叉编译GDB GDB源码下载路径:http://ftp.gnu.org/gnu/gdb/ 遇到的主要难点: 选择合适的GDB源码版本 我的mips-linux交叉编译器不支持C++11特性,所以我选择较老的GDB版本 //是不是不太明白我在说啥?自己去试错就知道了。我之前选择了GDB9. 阅读全文
posted @ 2020-08-25 09:54 一匹夫 阅读(2811) 评论(0) 推荐(0) 编辑
摘要: Linux内核链表,也叫侵入式链表,这可以说是最基础最实用的一种数据结构了。 实际上,不仅大量被使用在Linux内核和RTOS内核中,很多的开源应用代码里也常常见到其身影。 能把list_for_entry_entry搞明白,自然就可以把相关的其他API搞明白。 . 阅读全文
posted @ 2020-08-20 22:06 一匹夫 阅读(276) 评论(0) 推荐(1) 编辑
摘要: Linux启动脚本 rcS文件,rcS文件位于系统根目录下的“/etc/init.d”下。 rcS文件本质是一个bash shell脚本,因此遵循bash脚本的语法规则。 [1] 文件首行必须为“#! /bin/sh”。 [2] 注释一行用“#”。 [3] 基本的赋值语句,如打印字符串。 [4] 打 阅读全文
posted @ 2020-08-20 16:00 一匹夫 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 观察者模式,程序员让被观察者主动通知观察者相应事件的发生,也就存在一个必要的背景,程序员可以获取当前被观察者的状态。 所谓观察者模式,一般采用方法注册,以实现解耦的思维,被观察者内部可注册所有观察者的观察并处理的方法。程序员可以根据当前被观察者的状态来决定是否调用应用观察者的方法。 这么多观察者的事 阅读全文
posted @ 2020-08-17 00:33 一匹夫 阅读(209) 评论(0) 推荐(0) 编辑
摘要: Test1 /** Ques: 类对象的赋值操作是否有可能调用到构造函数 ? **/ class mystring { char str[100]; public: mystring() //mystring(): str{0x37} 使用初始化列表,实际只初始化了数组中的第一个元素 { //cou 阅读全文
posted @ 2020-08-16 22:42 一匹夫 阅读(201) 评论(0) 推荐(0) 编辑