摘要: 快两年了基本上没怎么写博客,发生了不少事情。例如去海康威视体验了一把高级嵌入式软件头衔的工作,然后辞职了,现在在另一家上市公司做开发,薪水少了很多,相对也轻松多了。 我对这类打工问题的态度也发生转变了,打工,想发财?卷死你再说。上班不要那么卷,差不多就行了,你的身体和精神也扛不住摧残。 给自己留点时 阅读全文
posted @ 2023-09-10 18:12 一匹夫 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 我的相关博文 三种工厂模式详解 策略模式 在GOF的《设计模式:可复用面向对象软件的基础》一书中对策略模式是这样说的: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化。 策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的 阅读全文
posted @ 2021-03-16 20:20 一匹夫 阅读(1116) 评论(0) 推荐(0) 编辑
摘要: 第一部分:交叉编译GDB GDB源码下载路径:http://ftp.gnu.org/gnu/gdb/ 遇到的主要难点: 选择合适的GDB源码版本 我的mips-linux交叉编译器不支持C++11特性,所以我选择较老的GDB版本 //是不是不太明白我在说啥?自己去试错就知道了。我之前选择了GDB9. 阅读全文
posted @ 2020-08-25 09:54 一匹夫 阅读(2810) 评论(0) 推荐(0) 编辑
摘要: Linux内核链表,也叫侵入式链表,这可以说是最基础最实用的一种数据结构了。 实际上,不仅大量被使用在Linux内核和RTOS内核中,很多的开源应用代码里也常常见到其身影。 能把list_for_entry_entry搞明白,自然就可以把相关的其他API搞明白。 . 阅读全文
posted @ 2020-08-20 22:06 一匹夫 阅读(276) 评论(0) 推荐(1) 编辑
摘要: 代码简单,但测试花样多,若能回答对本博客的每个步骤的预期结果,可以说对makefile的基础掌握是扎实的。 一,当前的makefile代码 root@ubuntu:~/Makefile_Test# root@ubuntu:~/Makefile_Test# root@ubuntu:~/Makefile 阅读全文
posted @ 2019-08-07 17:48 一匹夫 阅读(518) 评论(0) 推荐(1) 编辑
摘要: 先转载一片文章先,主要是参考了其搭建环境的部分: https://blog.csdn.net/qq_40452910/article/details/88560310 你可以直接看本文,本文经过更好地整理、实操、记录。 一、源码下载 1、libmodbus官网 https://libmodbus.o 阅读全文
posted @ 2019-08-05 10:45 一匹夫 阅读(19297) 评论(2) 推荐(2) 编辑
摘要: // RT-Thread对象模型采用结构封装中使用指针的形式达到面向对象中多态的效果,例如: // 抽象父类 #include <stdio.h> #include <assert.h> struct parent { int a; //反映不同类别属性的方法 void (*vfunc)(int a 阅读全文
posted @ 2019-02-19 23:09 一匹夫 阅读(452) 评论(0) 推荐(0) 编辑
摘要: C++中允许为函数提供默认参数,又名缺省参数。 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一 double sqrt(double f = 1.0); //函数声明 double sqrt(double f) //函数定义 { // . 阅读全文
posted @ 2019-02-09 22:04 一匹夫 阅读(30102) 评论(0) 推荐(5) 编辑
摘要: 简洁干练, 见博文 https://blog.csdn.net/m0_71541548/article/details/139905606 。 阅读全文
posted @ 2024-09-21 13:33 一匹夫 阅读(2) 评论(0) 推荐(0) 编辑
摘要: TCP主动关闭连接 appl: close(), --> FIN FIN_WAIT_1 //主动关闭socket方,调用close关闭socket,发FIN <-- ACK FIN_WAIT_2 //对方操作系统的TCP层,给ACK响应。然后给FIN <-- FIN --> ACK "TIME_WA 阅读全文
posted @ 2024-09-21 12:36 一匹夫 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 文章写的很好,笔记 1.【STM32】HardFault问题详细分析及调试笔记 https://blog.csdn.net/m0_54916619/article/details/129979222 需备注: cortex m4: 实际行为是,寄存器按照编号从小到大的顺序在栈帧中从数值较小地址往数值 阅读全文
posted @ 2024-09-14 10:09 一匹夫 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 问题描述: stm32F4可以正常从BOOT跳转执行APP,到了GD32F4,卡死在APP程序的这里。 临时解决办法: APP程序内 把这两句代码都屏蔽掉就好了。 相关资料搜索: 最佳解决方案: 在APP里面,先rcc_deinit一下,如下所示。 . 阅读全文
posted @ 2023-09-10 18:31 一匹夫 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 在前文Arduino+ESP32 之 驱动GC9A01圆形LCD(一), 我们已经移植好了arduino GFX库, 该库的示例程序内,还有LVGL的示例程序哦。 arduino环境下移植lvgl是很方便的,我们一起来移植一个,并且跑一下lvgl的示例demo! 由于arduino的library这 阅读全文
posted @ 2022-02-05 22:38 一匹夫 阅读(4358) 评论(0) 推荐(0) 编辑
摘要: 最近买了一块圆形屏幕,驱动IC是GC9A01,自己参考淘宝给的stm32的驱动例程, 在ubuntu下使用IDF开发ESP32,也在windows的vscode内安装IDF开发ESP32,虽然都做到了能显示图片,但是总有一块暗紫色的偏差阴影,也尝试了移植LVGL,都遇到了问题。 如上图,在网上看到有 阅读全文
posted @ 2022-02-03 19:16 一匹夫 阅读(7519) 评论(0) 推荐(1) 编辑
摘要: 背景知识: ESP32有两种使用SD卡的方法,一种是使用SPI接口访问SD卡,另一种是使用SDMMC接口访问SD卡 。 Arduino core for the ESP32中SPI方式占用4个IO口,SDMMC方式占用6个IO口,一般来说SDMMC方式速度要比SPI方式快。 1. SDMMC方式 E 阅读全文
posted @ 2022-02-01 18:53 一匹夫 阅读(11409) 评论(1) 推荐(3) 编辑
摘要: 1. 基于windows环境VsCode的ESP32开发环境搭建,网上有各类教程,但是我实测却不行。 例如我在vscode内安装的乐鑫插件,扩展配置项是下图这样: 而百度的各类博文却都是这样: 经过网友提示,让我安装1.2.0版本的乐鑫插件。(我装的是vscode提供的默认的最新版的插件) 如下图这 阅读全文
posted @ 2022-01-09 12:38 一匹夫 阅读(1113) 评论(0) 推荐(0) 编辑
摘要: 山寨F407板子如何烧录正点原子例程 手头这块块信赢达的STM32F407板子,是模仿正点原子探索者STM32F407板子的,外设和接口,几乎是一模一样。 探索者板子用的是STM32F407ZET6, 信赢达的是STM32F407ZGT6。 如何查看这两颗芯片的区别?两种方法,选其一。 1. 打开两 阅读全文
posted @ 2021-12-29 23:14 一匹夫 阅读(1396) 评论(0) 推荐(0) 编辑
摘要: 在一些物联网企业,平台会和嵌入式一起配合进行工作。 有时平台会希望嵌入式这边不使用现成的NTP方案自己去同步时间,而希望以平台下发的时间为准。 此时就有两个方案。 方案1. 平台下发一个时间戳time, 设备收到后将时间写入到设备内。考虑到网络原因,以及SAAS端的软件实现等因素,实测误差较大。 方 阅读全文
posted @ 2021-12-19 12:04 一匹夫 阅读(343) 评论(0) 推荐(0) 编辑
摘要: AD如何发工程制板子? 方式1,发PCB源文件给板厂 方式2,发一些工艺文件给板厂,这样就无须泄漏你的PCB源文件了,一个硬件工程师必须要掌握方式2。 方式2要做的就是导出gerber文件和钻孔文件,然后发给板厂。 如何下单制板? 针对上述两个问题,需要看一篇博客,和两节B站视频。只要你高中毕业,完 阅读全文
posted @ 2021-12-15 21:54 一匹夫 阅读(3428) 评论(0) 推荐(0) 编辑
摘要: 设置所有的过孔盖油 ==> 先选中一个过孔,然后根据对象类型查找相似器件,选中所有的过孔,然后勾选过孔盖油选项即可。 上述这种方法不是太好,每次修改完PCB后都要确认下新增的过孔是否已经过孔盖油。但是也还算方便实用。 还有一种方法,通过设计规则实现过孔盖油,操作起来复杂一点,好处是每次修改PCB后都 阅读全文
posted @ 2021-12-13 21:00 一匹夫 阅读(6387) 评论(0) 推荐(0) 编辑
摘要: 如何更好地谋生,从事嵌入式软件开发五年的感悟和职业焦虑 第一部分 -- 纪念2017年第一次使用Altium Designer画一款继电器板子 整理家中杂物,发现了2017中旬年第一次使用AD画的一块继电器板子,拍个照片纪念之。 近看 细节: 远看 整体: 这个板子的价值是,可以通过外部TTL电平来 阅读全文
posted @ 2021-12-12 21:10 一匹夫 阅读(1731) 评论(1) 推荐(4) 编辑
摘要: *************** map的线程安全 ******************** * * 参考1 * map要实现线程安全必须要加锁,如果使用mutex会产生大量的线程等待,可以使用读写锁, * 使用读写锁,一个线程在写的时候别的线程等待,多个线程可以同时读。 * https://www. 阅读全文
posted @ 2021-11-30 14:25 一匹夫 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 早就知道这俩符号的意思,最近翻看代码又看到了,仍然觉得熟悉又陌生,主要是自己平时写代码对这俩符号用的比较少。于是特地做个实验,加深下理解。可记的东西不多,这篇随笔算是随手一写吧。 上实验代码: 来源: 多提一嘴: . 阅读全文
posted @ 2021-11-27 23:28 一匹夫 阅读(137) 评论(0) 推荐(1) 编辑
摘要: 软件记录 1. makefile内,使用-I去包含一个含有多层次的子文件夹的场景,需要如何处理? 硬件记录 1. 2021年调试梯联遇到的问题 我那些电路板,不插串口,程序跑起来38秒后去读lan8720网卡信息后,main函数内的toggle led都没效果了,表现为死机现象。 插着CH340串口 阅读全文
posted @ 2021-10-20 15:16 一匹夫 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 代码展示: 数据接收函数内,解析cJSON数据时,一不小心就会冒出来一大堆if语句在一个函数内,后续想要新增网络功能时,必然又会导致需要在mqtt订阅函数内去新增部分代码,实现解析新的报文。 这显然耦合性很强。 解耦实现要求至少以新增函数的方式来增加业务功能,而非直接在原来的函数内部去进行新增或修改 阅读全文
posted @ 2021-08-03 13:41 一匹夫 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 1. 先卸载掉所有已安装的插件 2. 卸载vscode 3. 删除个人配置和插件配置,涉及两个文件夹 4. 需要安装C/C++组件,下载对应的vsix文件 下载地址: https://github.com/microsoft/vscode-cpptools/releases 我用的是windows版 阅读全文
posted @ 2021-07-14 09:36 一匹夫 阅读(6343) 评论(0) 推荐(0) 编辑
摘要: 这两个月没有怎么更新博文,最近换工作了,根据新工作安排,大半年内都做MCU开发(就不要叫单片机了,太老土了)。 入职新工作了,需重构拳头产品的软件,所以每天加班加点。 单片机与linux应用开发,开发过程中有什么区别之近日个人感悟: 第一点,单片机往往配合仿真器调试,linux应用开发往往使用串口打 阅读全文
posted @ 2021-07-03 08:53 一匹夫 阅读(347) 评论(0) 推荐(1) 编辑
摘要: 之前介绍的服务器端代码只是基础功能,在支持多客户端访问时将面临困局。因为,我们来介绍服务器并发编程模型。 server.c #include <errno.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h 阅读全文
posted @ 2021-05-06 16:59 一匹夫 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 实验环境: 略。 实验背景:已编写好基于以太网接口的输入处理,能够解析到以太网数据包内的帧类型。 1. 协议栈底层采用轮询方式,即轮询以太网数据包。 2. 若收到数据,则交由以太网输入处理模块进行解析 3. 同时在这里打上断点,我们后续的操作是向此工程所在网卡发送一个arp数据包,以便代码执行能够进 阅读全文
posted @ 2021-04-12 22:54 一匹夫 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 相关博文: 系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性和连续性,我们首要的是立马补充、展示客户端的示例代码。 在此之后,之后咱们有两个方向: 一是介绍客户 阅读全文
posted @ 2021-04-12 22:33 一匹夫 阅读(397) 评论(0) 推荐(0) 编辑
摘要: PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换。 字节序转换函数,常用的有四个: 很好记,n表示network, h表示host, l表示long, s表示short。 举例, h 阅读全文
posted @ 2021-04-09 09:33 一匹夫 阅读(650) 评论(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 一匹夫 阅读(146) 评论(0) 推荐(0) 编辑