摘要:我的相关博文 三种工厂模式详解 策略模式 在GOF的《设计模式:可复用面向对象软件的基础》一书中对策略模式是这样说的: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化。 策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的 阅读全文
posted @ 2021-03-16 20:20 一匹夫 阅读(510) 评论(0) 推荐(0) 编辑
摘要:前沿提要: MQTT是什么不知道? 看这一篇:https://www.cnblogs.com/happybirthdaytoyou/p/10362336.html 阿里云官网玩不转? 看这一篇: https://www.cnblogs.com/happybirthdaytoyou/p/1406529 阅读全文
posted @ 2020-11-30 23:06 一匹夫 阅读(982) 评论(0) 推荐(0) 编辑
摘要:第一部分:交叉编译GDB GDB源码下载路径:http://ftp.gnu.org/gnu/gdb/ 遇到的主要难点: 选择合适的GDB源码版本 我的mips-linux交叉编译器不支持C++11特性,所以我选择较老的GDB版本 //是不是不太明白我在说啥?自己去试错就知道了。我之前选择了GDB9. 阅读全文
posted @ 2020-08-25 09:54 一匹夫 阅读(643) 评论(0) 推荐(0) 编辑
摘要:Linux内核链表,也叫侵入式链表,这可以说是最基础最实用的一种数据结构了。 实际上,不仅大量被使用在Linux内核和RTOS内核中,很多的开源应用代码里也常常见到其身影。 能把list_for_entry_entry搞明白,自然就可以把相关的其他API搞明白。 . 阅读全文
posted @ 2020-08-20 22:06 一匹夫 阅读(126) 评论(0) 推荐(0) 编辑
摘要:代码简单,但测试花样多,若能回答对本博客的每个步骤的预期结果,可以说对makefile的基础掌握是扎实的。 一,当前的makefile代码 root@ubuntu:~/Makefile_Test# root@ubuntu:~/Makefile_Test# root@ubuntu:~/Makefile 阅读全文
posted @ 2019-08-07 17:48 一匹夫 阅读(371) 评论(0) 推荐(0) 编辑
摘要:先转载一片文章先,主要是参考了其搭建环境的部分: https://blog.csdn.net/qq_40452910/article/details/88560310 你可以直接看本文,本文经过更好地整理、实操、记录。 一、源码下载 1、libmodbus官网 https://libmodbus.o 阅读全文
posted @ 2019-08-05 10:45 一匹夫 阅读(11458) 评论(2) 推荐(2) 编辑
摘要:// RT-Thread对象模型采用结构封装中使用指针的形式达到面向对象中多态的效果,例如: // 抽象父类 #include <stdio.h> #include <assert.h> struct parent { int a; //反映不同类别属性的方法 void (*vfunc)(int a 阅读全文
posted @ 2019-02-19 23:09 一匹夫 阅读(294) 评论(0) 推荐(0) 编辑
摘要:C++中允许为函数提供默认参数,又名缺省参数。 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一 double sqrt(double f = 1.0); //函数声明 double sqrt(double f) //函数定义 { // . 阅读全文
posted @ 2019-02-09 22:04 一匹夫 阅读(19266) 评论(0) 推荐(3) 编辑
摘要:1. 先卸载掉所有已安装的插件 2. 卸载vscode 3. 删除个人配置和插件配置,涉及两个文件夹 4. 需要安装C/C++组件,下载对应的vsix文件 下载地址: https://github.com/microsoft/vscode-cpptools/releases 我用的是windows版 阅读全文
posted @ 2021-07-14 09:36 一匹夫 阅读(37) 评论(0) 推荐(0) 编辑
摘要:这两个月没有怎么更新博文,最近换工作了,根据新工作安排,大半年内都做MCU开发(就不要叫单片机了,太老土了)。 入职新工作了,需重构拳头产品的软件,所以每天加班加点。 单片机与linux应用开发,开发过程中有什么区别之近日个人感悟: 第一点,单片机往往配合仿真器调试,linux应用开发往往使用串口打 阅读全文
posted @ 2021-07-03 08:53 一匹夫 阅读(48) 评论(0) 推荐(0) 编辑
摘要:之前介绍的服务器端代码只是基础功能,在支持多客户端访问时将面临困局。因为,我们来介绍服务器并发编程模型。 server.c #include <errno.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h 阅读全文
posted @ 2021-05-06 16:59 一匹夫 阅读(22) 评论(0) 推荐(0) 编辑
摘要:实验环境: 略。 实验背景:已编写好基于以太网接口的输入处理,能够解析到以太网数据包内的帧类型。 1. 协议栈底层采用轮询方式,即轮询以太网数据包。 2. 若收到数据,则交由以太网输入处理模块进行解析 3. 同时在这里打上断点,我们后续的操作是向此工程所在网卡发送一个arp数据包,以便代码执行能够进 阅读全文
posted @ 2021-04-12 22:54 一匹夫 阅读(119) 评论(0) 推荐(0) 编辑
摘要:相关博文: 系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性和连续性,我们首要的是立马补充、展示客户端的示例代码。 在此之后,之后咱们有两个方向: 一是介绍客户 阅读全文
posted @ 2021-04-12 22:33 一匹夫 阅读(295) 评论(0) 推荐(0) 编辑
摘要:PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换。 字节序转换函数,常用的有四个: 很好记,n表示network, h表示host, l表示long, s表示short。 举例, h 阅读全文
posted @ 2021-04-09 09:33 一匹夫 阅读(261) 评论(0) 推荐(0) 编辑
摘要:1. 内容概要 2. OSI模型和TCP/IP模型 OSI模型与TCP/IP模型的对应关系 3. TCP/IP协议簇 端口 4. 网络层协议 IP协议 IP地址 IP地址分类 5. 传输层协议 5.1 传输层之TCP协议 TCP是面向字节流的 TCP不像UDP一样那样一个个报文独立地传输,而是在不保 阅读全文
posted @ 2021-04-06 07:55 一匹夫 阅读(97) 评论(0) 推荐(0) 编辑
摘要:信号发送 kill 和 raise函数 kill函数参数详解: 实验1 raise和kill 的使用 #include <stdio.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> #include <sys/wait.h 阅读全文
posted @ 2021-04-05 11:16 一匹夫 阅读(75) 评论(0) 推荐(0) 编辑
摘要:信号章节 -- 信号章节总体概要 信号基本概念 信号是异步事件,发送信号的线程可以继续向下执行而不阻塞。 信号无优先级。 1到31号信号是非实时信号,发送的信号可能会丢失,不支持信号排队。 31号信号到64是实时信号, 发送的信号都会被接收, 支持信号排队。 信号在Linux内核头文件中的宏定义 信 阅读全文
posted @ 2021-04-04 22:30 一匹夫 阅读(350) 评论(0) 推荐(0) 编辑
摘要:我的相关博文: 系统编程-进程-close-on-exec机制 PART1 exec系列函数功能简介 exec系列函数登场 常规操作是先fork一个子进程,然后在子进程中调用exec系列函数执行新的目标程序, 虽然exec系列函数执行成功不返回,但是我们仍然i要使用wait或waitpid让父进程给 阅读全文
posted @ 2021-03-29 08:45 一匹夫 阅读(148) 评论(0) 推荐(0) 编辑
摘要:我的相关博文 三种工厂模式详解 策略模式 在GOF的《设计模式:可复用面向对象软件的基础》一书中对策略模式是这样说的: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化。 策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的 阅读全文
posted @ 2021-03-16 20:20 一匹夫 阅读(510) 评论(0) 推荐(0) 编辑
摘要:1. wait、waitpid 函数简介 补充:对于waitpid,如果返回值为0,表示指定去等待的子进程尚未结束。 该系列宏的使用方法展示: PART1 实验思路: 使用wait系统调用让父进程给子进程收尸,并获取子进程的返回值。 同时,正常终止。 直接打印获取的返回值会与实际返回的值不一样,进而 阅读全文
posted @ 2021-03-07 21:21 一匹夫 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1、插入SD卡 如果系统能够识别SD卡,则会打印一些信息: 2、查看系统给SD卡分配的设备名 命令如下: fdisk -l 说明:通常是根据SD卡的存储容量来确定的。 比如下面的信息: 3、挂载SD卡 命令如下: mount /dev/mmcblk1 /mnt 当显示如下信息时: 说明挂载失败,其m 阅读全文
posted @ 2021-03-07 15:54 一匹夫 阅读(247) 评论(0) 推荐(0) 编辑
摘要:1. 守护进程 2. 孤儿进程 父进程结束,子进程就成为了孤儿进程。孤儿进程由1号进程(init进程)领养。 2.1实验: 实验思路: 先产生一个孤儿进程,然后打印出该孤儿进程的父进程ID。 #include <stdio.h> #include <sys/types.h> #include <sy 阅读全文
posted @ 2021-03-04 08:52 一匹夫 阅读(80) 评论(0) 推荐(0) 编辑
摘要:1. 进程链、进程扇 图示 所谓进程链就是父进程创建一个子进程,创建的子进程再次创建出一个属于自己的子进程,这样依次往下循环。 所谓的进程扇就是一个父进程创建出多个子进程。 2. 进程链 #include <stdio.h> #include <sys/types.h> #include <sys/ 阅读全文
posted @ 2021-03-03 22:50 一匹夫 阅读(183) 评论(0) 推荐(0) 编辑
摘要:我的关联博文: 系统编程-进程-fork深度理解、vfork简介 系统编程-进程-先后fork或open一个文件的区别 test1: lseek基本使用 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include 阅读全文
posted @ 2021-02-25 16:01 一匹夫 阅读(70) 评论(0) 推荐(0) 编辑
摘要:1. test1 #include <stdio.h> #include <unistd.h> #include <stdlib.h> /******全局变量位于数据区, 用于数据区测试*******/ int globvar = 6; char buf[] = "a write to stdout 阅读全文
posted @ 2021-02-24 11:55 一匹夫 阅读(97) 评论(0) 推荐(0) 编辑
摘要:做了4个试验,test5没做,但是给了结论。 直接贴实践过的代码 #include <iostream> #include <string> template<typename T> void swapval(T& val1, T& val2){ T vector = val1; val1 = va 阅读全文
posted @ 2021-02-07 16:19 一匹夫 阅读(35) 评论(0) 推荐(0) 编辑
摘要:声明:此博文所述我未实践,目的是知识整理。 1. 常说的 "单片机的norflash上可以执行代码 “ 这句话该如何理解? CPU做取指、译码、执行。 常说的哪些介质可以执行程序,实际上指的是CPU可以从那里取指,以供后续译码和执行。 2. 单片机一般在内部norfalsh上执行代码 Soc读取内部 阅读全文
posted @ 2021-02-05 16:52 一匹夫 阅读(324) 评论(0) 推荐(0) 编辑
摘要:根据menuconfig定位一个驱动涉及到的源文件,这个是很常用的,因为有时候你需要参考别人的驱动代码。新手不知道如何定位驱动相关源码,这篇文章将告之。 假设我手头有一块开发板,现在我想要获取板载ov7725摄像头的驱动代码。如何查看? 1. menuconfig内定位到ov7725 2. 在第一步 阅读全文
posted @ 2021-02-04 10:44 一匹夫 阅读(91) 评论(0) 推荐(0) 编辑
摘要:1. fork基本使用 #include <unistd.h> #include <stdio.h> int main(){ pid_t pid = fork(); if(pid < 0){ perror("fork error"); }else if(pid > 0){ printf("I am 阅读全文
posted @ 2021-02-01 19:31 一匹夫 阅读(64) 评论(0) 推荐(0) 编辑
摘要:Note: 我的S5PV210板子的磁盘是emmc版本,不是nandflash版本。 1. SD卡内烧录uboot镜像,然后作为启动盘来启动emmc中的内核镜像和根文件系统。 只要破坏emmc内的uboot镜像,就可以使其从sd2启动 (因为emmc内没了完整的uboot,自然就无法启动内核) 然后 阅读全文
posted @ 2021-01-30 17:48 一匹夫 阅读(198) 评论(0) 推荐(0) 编辑
摘要:1. jiffies简介 首先,操作系统有个系统专用定时器(system timer),俗称滴答定时器,或者系统心跳。 全局变量jiffies取值为自操作系统启动以来的时钟滴答的数目,数据类型为 unsigned long volatile (32位无符号长整型),最大取值是2^32-1。 2. j 阅读全文
posted @ 2021-01-30 14:39 一匹夫 阅读(487) 评论(0) 推荐(0) 编辑
摘要:实例说话: 使用vscode保存,有报提示信息,可以以超级用户身份重试,于是我授权root给vscode软件,却还提示失败! 而实际上,我使用cat命令发现已经写入成功了 终端内使用cat这条shell命令,很长,很辛苦。 这是我第一次亲身体会感受到,需要vim! 需要vim! 需要vim! 超强编 阅读全文
posted @ 2021-01-28 14:37 一匹夫 阅读(108) 评论(0) 推荐(0) 编辑
摘要:1. 进程标识 待添加 用户和用户组相关 https://www.cnblogs.com/ddz-linux/p/10467106.html 用户组 进程组 2. 实验,待添加 chmod u+s file : 修改黏着位,可以使得其他用户操作该文件时临时转变为该文件拥有者用户,这就是有效用户的含义 阅读全文
posted @ 2021-01-21 08:42 一匹夫 阅读(51) 评论(0) 推荐(0) 编辑