摘要: 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 一匹夫 阅读(165) 评论(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 一匹夫 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 1. IIC协议 2. Linux的I2C体系结构分为3个组成部分: I2C核心( i2c-core.c ): I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法、I2C通信方法(”algorithm”)、与具体适配器无关的代码、探测设备、检测设备地址的上层代码等。 给驱动编程人员提供编程接口 阅读全文
posted @ 2020-09-01 07:04 一匹夫 阅读(247) 评论(0) 推荐(0) 编辑
摘要: idr机制解决了什么问题?为什么需要idr机制(或者说,idr机制这种解决方案,相对已有的其他方案,有什么优势所在) ? idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。 假设我们的代码内需要将一个设备的ID号和描述该设备信息的结构体 阅读全文
posted @ 2020-08-31 22:52 一匹夫 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 1. 常说的笼统概念的串口, 哪些是全双工,哪些是半双工 RS232 、RS422是全双工。 而 RS485是RS422的阉割版,是半双工。 . 阅读全文
posted @ 2020-08-29 14:52 一匹夫 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 第一部分:交叉编译GDB GDB源码下载路径:http://ftp.gnu.org/gnu/gdb/ 遇到的主要难点: 选择合适的GDB源码版本 我的mips-linux交叉编译器不支持C++11特性,所以我选择较老的GDB版本 //是不是不太明白我在说啥?自己去试错就知道了。我之前选择了GDB9. 阅读全文
posted @ 2020-08-25 09:54 一匹夫 阅读(847) 评论(0) 推荐(0) 编辑
摘要: Linux内核链表,也叫侵入式链表,这可以说是最基础最实用的一种数据结构了。 实际上,不仅大量被使用在Linux内核和RTOS内核中,很多的开源应用代码里也常常见到其身影。 能把list_for_entry_entry搞明白,自然就可以把相关的其他API搞明白。 . 阅读全文
posted @ 2020-08-20 22:06 一匹夫 阅读(144) 评论(0) 推荐(0) 编辑
摘要: Linux启动脚本 rcS文件,rcS文件位于系统根目录下的“/etc/init.d”下。 rcS文件本质是一个bash shell脚本,因此遵循bash脚本的语法规则。 [1] 文件首行必须为“#! /bin/sh”。 [2] 注释一行用“#”。 [3] 基本的赋值语句,如打印字符串。 [4] 打 阅读全文
posted @ 2020-08-20 16:00 一匹夫 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 观察者模式,程序员让被观察者主动通知观察者相应事件的发生,也就存在一个必要的背景,程序员可以获取当前被观察者的状态。 所谓观察者模式,一般采用方法注册,以实现解耦的思维,被观察者内部可注册所有观察者的观察并处理的方法。程序员可以根据当前被观察者的状态来决定是否调用应用观察者的方法。 这么多观察者的事 阅读全文
posted @ 2020-08-17 00:33 一匹夫 阅读(102) 评论(0) 推荐(0) 编辑
摘要: Test1 /** Ques: 类对象的赋值操作是否有可能调用到构造函数 ? **/ class mystring { char str[100]; public: mystring() //mystring(): str{0x37} 使用初始化列表,实际只初始化了数组中的第一个元素 { //cou 阅读全文
posted @ 2020-08-16 22:42 一匹夫 阅读(154) 评论(0) 推荐(0) 编辑
摘要: /******** 操作符重载 *** *** 下面三种方式,都支持连续加操作,但是稍有不同,你知道哪里不同吗 *** ******/ /** Test1 *****/ #if 0 class Calculate { int a; public: Calculate(void) : a(0) { c 阅读全文
posted @ 2020-08-13 14:56 一匹夫 阅读(118) 评论(0) 推荐(0) 编辑
摘要: ALSA应用库是核心功能,而alsa-utils是一些工具功能集合库。单纯地播放一个wav文件,使用alsa-utils即可,如果还需要合成音频、调试音频质量,那么就需要ALSA应用库。 1. alsa-utils的交叉编译,本文不谈,请移步参考博文:https://blog.csdn.net/ku 阅读全文
posted @ 2020-08-12 11:35 一匹夫 阅读(1005) 评论(0) 推荐(0) 编辑
摘要: 原文链接:https://blog.csdn.net/D_azzle/article/details/83410141 截至到目前为止,本人接触单片机也有将近一年的时间。这一年以来也接触过了很具代表性的单片机,比如51、HT32、STM32等等。但是呢对于单片机的内存一直不了解,一直到现在,在一次单 阅读全文
posted @ 2020-08-07 17:19 一匹夫 阅读(1155) 评论(0) 推荐(0) 编辑
摘要: 参考自:https://blog.csdn.net/kunkliu/article/details/80848138 socket()函数介绍 int socket(int family, int type, int protocol); socket()打开一个网络通讯端口,如果成功的话,就像op 阅读全文
posted @ 2020-08-07 10:44 一匹夫 阅读(64) 评论(0) 推荐(0) 编辑
摘要: /******************************************************************************************/ . 阅读全文
posted @ 2020-08-05 14:39 一匹夫 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 为了防止几百年以后找不到该文章,特此转载 开始转载 什么是栈?在谈M3堆栈之前我们先回忆一下数据结构中的栈。栈是一种先进后出的数据结构(类似于枪支的弹夹,先放入的子弹最后打出,后放入的子弹先打出)。M3内核的堆栈也不例外,也是先进后出的。栈的作用?局部变量内存的开销,函数的调用都离不开栈。 了解了栈 阅读全文
posted @ 2020-05-31 22:00 一匹夫 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 根据文件名信息进行搜索文件 root@ubuntu:/home/jason/X1000_Kernel# find ./kernel -name zImage ./kernel/arch/mips/boot/compressed/zImage ./kernel/arch/mips/boot/zcomp 阅读全文
posted @ 2020-05-22 17:09 一匹夫 阅读(128) 评论(0) 推荐(0) 编辑
摘要: struct cdev *cdev_alloc(void) { struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL); if (p) { INIT_LIST_HEAD(&p->list); kobject_init(&p->kobj, & 阅读全文
posted @ 2020-05-04 23:37 一匹夫 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 1. 在Ubuntu16.04-64中编译Linux-2.6.35.7版本内核出错[kernel/timeconst.h] Error 255 在Ubuntu16.04-64中编译Linux-2.6.35.7版本内核出现错误[kernel/timeconst.h] Error 255可能是由于我们使 阅读全文
posted @ 2020-05-03 13:21 一匹夫 阅读(162) 评论(0) 推荐(0) 编辑
摘要: SFUD+FAL+EasyFlash典型场景需求分析:用整个flash存储数据,上千条数据,读取得时候用easyflash很慢,估计要检索整个flash太慢了。 改进方法:分区检索。 1存数据时,根据数据特征进行划分,划分到特定的某个区,分区存储这些数据。 2检索数据时,首先根据待检索数据的特征,获 阅读全文
posted @ 2020-02-13 15:55 一匹夫 阅读(1054) 评论(0) 推荐(0) 编辑
摘要: 参考博文: 博文很长,但是实际要操作的步骤没几下。 http://m.elecfans.com/article/730878.html 为了防止几年后文章链接找不到,我把文章复制过来了 /************************转载注明出处 http://m.elecfans.com/art 阅读全文
posted @ 2020-02-12 23:05 一匹夫 阅读(2948) 评论(0) 推荐(0) 编辑
摘要: 使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM. 比如,你在ROM的0x00002000处定位了一个函数,假设为void test(void),然后使用函数指针来调用它: void (*UserProgram)(); 阅读全文
posted @ 2020-02-12 17:54 一匹夫 阅读(1414) 评论(0) 推荐(0) 编辑
摘要: 大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。如以下C代码: #include <stdio.h>char buf[10] = {10,10,10,10,10,10,10,10,10,10}; FILE *fp = fopen("c:\\t 阅读全文
posted @ 2020-02-12 14:07 一匹夫 阅读(546) 评论(0) 推荐(0) 编辑
摘要: STM32F407ZGT6的Flash大小为1MB,SRAM大小为(128KB+64KB)。 这里SRAM之所以分开表示是因为在芯片内部前面的128KB和后面的64KB地址不是连续的,后面的64KB在ST官方叫做CCM (core coupled memory) ,由内核直接访问的,不能由外设访问。 阅读全文
posted @ 2020-02-10 16:01 一匹夫 阅读(1373) 评论(0) 推荐(0) 编辑
摘要: 1. 调试功能一般会使用到宏+可变参数的方式 1.1 ##__VA_ARGS__ 之详细解析 例如: case A. #define my_print1(...) printf(__VA_ARGS__) my_print1("i=%d,j=%d\n",i,j) 正确打印 case B. #defin 阅读全文
posted @ 2020-02-05 18:06 一匹夫 阅读(685) 评论(0) 推荐(0) 编辑