- 博客(42)
- 收藏
- 关注
原创 第1篇:了解Matter物模型翻译器
Matter物模型的神奇之处在于,支持人眼可以直观看懂的方式配置一个IoT设备,然后巧妙地转换为各种编程语言,供Android/iOS,以及各种嵌入式设备使用。
2023-07-30 19:14:39
586
1
原创 【蓝牙抓包篇】BLE抓包分析GATT连接过程
工具:蓝牙分析仪软件:ComProbe本文讲解通过BLE抓包分析GATT链接过程。背景知识:GAP中的四个角色Broadcaster, Observer, Peripheral(外设), and Central(集中器)GAP、ATT、GATT三者的联系GATT的两个角色GATT defines two roles: Server and Client.The GATT client is also an ATT client. The GATT server .
2022-01-02 17:55:08
12357
原创 [Wi-Fi抓包篇]3. WireShark ——抓wlan口包的方法
目录1.何时需要捕获wlan口包?2.抓wlan口包配置方法3.抓包实例1.何时需要捕获wlan口包?由于捕获空口包只能捕获路由器与设备之间通信包,对于路由器与WLAN口之间的数据无法捕获。 因此,需要借助额外的手段捕获wlan口包。理论上,Omnipeek和WireShark都可以抓wlan口包,实践中一般是一台电脑同时抓空口包以及wlan口包。由于一个软件只能监控一张网卡,如果使用了Omnipeek抓空口包,则只能用另一个软件抓wlan口包,如本文使用wireshark.
2022-01-02 16:35:55
30671
原创 [Wi-Fi抓包篇]2. Omnipeek——抓包分析方法
目录3.分析方法3.1 使用过滤器3.1.1 通过创建过滤器筛选包筛选特定模组与特定路由器之间的包筛选模组连接Wi-Fi的握手包3.1.2 使用正则表达式筛选包3.2 使用Wi-Fi密码解密数据包3.3 中文SSID的解密方法3.4 如何确保解密成功3.5其他过滤器使用方法3.分析方法3.1 使用过滤器对于2. 抓包方法中讲述的是抓取所有的空中包,实际应用中常需要针对某两台设备之间的通信包进行分析。3.1.1 通过创建过滤器筛选包筛选特...
2022-01-02 16:21:43
16282
1
原创 【编译原理】语法分析
为什么需要语法分析?前面讲到,在分析完一个一个的单词分别代表什么意思后,需要组合起来识别出语法结构。int a = 5;比如上面的语句,需要进行语法分析得出它代表一条声明语句。在语法分析,需要用一种数据结构把这些单词保存起来,这里引入抽象语法树(AST)的概念。可以参考如下资料了解AST:AST representation in GCC (u-strasbg.fr)4.3 Building Abstract Syntax Trees in C (uta.edu)有了A
2021-11-18 00:05:44
3248
原创 【编译原理】词法分析
作用:保存一个个单词。比如:一条C语言语句int a = 5;词法分析的作用就是把int 识别出来作为标识符保存;a识别出来作为变量保存;=识别出来作为运算符保存,;识别出来作为语句的结束符保存。...
2021-11-17 23:58:11
4431
原创 管窥编译器map文件——小文件有大用途
资料整理:map的查看方法查看map中各部分 ram和flash占用空间的方法查看firmware size的方法removing libc to reduct fimware sizehow to write link script
2021-11-09 23:50:58
377
原创 GDB调试——跟踪编译器内部实现
参考文章:Conditional Breakpoints and watchpoints | gdb debugger Tutorial and examples – thispointer.comHow to Debug Using GDB (baylor.edu)应用:调试python编译器,跟踪编译器内部实现过程:https://github.com/RichardGong/CompilersInPractice/edit/master/python/GDB.md...
2021-07-18 09:03:39
178
原创 【编译原理】1.编译器的前世今生
1.为什么需要编译器PC只能识别二进制 0, 1。程序员为了提高编程效率,发明了高级的编程语言。借助编译器等工具,把高级语言转译为机器可以识别的语言,最后运行在PC上。2.编译器是如何工作的今天我们开始介绍编译器的工作过程。先看一段用C语言实现加法计算 1+ 1 =2的代码:#include <stdio.h> //头文件#include <stdlib.h>int main( void ){ int a; a = 1 + 1;
2021-06-13 17:10:56
474
原创 向CEO学习篇-如何高效学习
向CEO学习篇-如何高效学习如何寻找学习资源?如何定有价值的目标?有多个目标,先完成哪个如何学得更快更好?前置测试法指读法多环境输入法记忆宫殿法刷书法怎么刷?用输出倒逼输入1. 记笔记2. 讲课法3. 会迁移4. 列清单如何让学习过程更愉快?参考如何寻找学习资源?学会搜索● 利用知识付费平台的资源● google跟人学感受:这种方式是最快的学习方式。向别人请教问题。可以向别人请教问题的有:问对方心中的大神是谁?感受:了解对方的价值观问入门推荐哪本书?感受:入门的第一步。问基本要
2021-04-04 21:14:08
285
1
原创 从移植亚马逊SDK中学习产品开发流程
Amazon 提供的云服务产品公认的世界领先,特别是在文档的输出方面,详细到令人惊叹。 网上流传着一个帖子,亚马逊CTO介绍开发产品的流程是这样的...
2020-02-16 18:11:41
461
1
原创 uboot环境变量分析
项目情景最近我在一个新平台的开发过程中遇到烧录问题. 具体的问题是使用原厂提供的烧录脚本烧录成功,但是固件却没有更新.其中kernel和dtb烧录指令如下:adnl.exe Partition -M mem -P 0x1000000 -F linux.dtbadnl.exe Partition -M mem -P 0x1000 -F boot.imgadnl.exe oem "run s...
2020-01-12 17:01:49
2576
1
原创 评估Linux 下输出PWM频率
PWMPWM(脉冲宽度调制)是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。评估主控能否输出13.824MHz的方波项目中需要评估一款主控芯片能否输出13.824MHz的方波作为一个通信模块的时钟源。这当中走了弯路,希望总结出来。弯路一:有同事猜想:主控的晶振24MHz, 24MHz 经过72倍频 再125分频 就等于13.824MHz。 但是我没去从硬件上查看到底有没可能...
2020-01-07 23:31:39
868
原创 Linux应用层控制GPIO的多种方法
应用层控制GPIO的方法方法1: 写一个杂项设备实现GPIO的read/write函数。方法2:使用/sys/class/gpio操作。方法3: 创建设备文件供应用层使用。本文重点介绍该方法。//driver codestatic ssize_t muteLedshow(struct device *dev, struct device_attribute *attr, char *bu...
2020-01-05 17:20:57
3100
原创 调试数字音量等级的方法
数字音量与模拟音量对于音量调节有两种方法,一种是调节模拟音量,即功放的增益。第二种是调节数字音量,即通过对用于表示音频信号的0和1的数学运算来对信号电平进行调整。项目背景项目中需要按照客人要求设置10级音量分别对应不同的大小。客户给出10级音量对应dB值, 最大音量为0dB, 最小音量为-60dB.调试数字音量等级项目代码中使用的是声压计测试的数据作为等级划分,而客户提供的数据是声音的...
2020-01-05 16:23:00
2784
原创 解决音频AEC效果差的问题
AEC简介Acoustic Echo Cancellation(AEC), 是声学回声消除的意思。音频算法领域中使用这项技术达到正确拾音的效果。项目背景项目中,我需要送入8路PCM数据到算法接口实现语音识别的功能,但实际在设备播放大音量音乐时语音唤醒的效果很差,俗称音频AEC效果差。如下图是设备播放大音量音乐时8路音频数据的情况:其中前4路是麦克风数据,第5,6路为空数据,第7,8路为功...
2020-01-05 15:50:58
2432
原创 LWIP memory leak: solved
LWIP memory leak: solvedLWIP内存泄露问题问题分析解决问题过程总结LWIP内存泄露问题最近在项目中遇到了使用LWIP 1.4.1协议栈内存泄露的问题。表现为使用socket进行通信过程中,有时fd 资源已释放的情况下,网络堆内存依然没被释放。经过长时间的积累,导致无法申请网络堆内存。这种情况在网络物理连接断开的情况下特别容易出现,比如插拔网线。问题分析TCP三...
2019-04-15 18:06:11
1377
2
原创 在ubuntu使用sphinx编写html文档
Sphinx简介:Sphinx [1] 是一个工具,它能够轻易地创建智慧和优雅的文档,出自Georg Brandl之手,在BSD许可证下授权。它能够把一组 reStructuredText 格式的文件转换成各种输出格式,而且自动地生成交叉引用,生成目录等。也就是说,如果有一个目录,里面包含一堆reST格式的文档(可能子目录里面也同样存在reST格式的文档),Sphinx能够生成一个漂亮的组织结构...
2018-06-25 18:13:10
791
原创 Linux内核简介
大纲:理解Linux内核最好预备的知识点Linux内核的特点Linux内核的任务内核的组成部分哪些地方用到了内核机制?Linux进程 Linux创建新进程的机制Linux线程 内核线程地址空间与特权级别虚拟地址与物理地址 特权级别(Linux的两种状态)系统调用设备驱动程序、块设备和字符设备网络文件系统模块和热插拔注:本文为《深入Linux内核架构》 的学习笔记理解Linux...
2018-06-16 18:56:29
25398
2
原创 FreeRTOS专题之常见错误总结与项目反思
大纲:常见错误总结项目经历的思考与改进 常见错误总结 1.中断优先级 与硬件平台有关。有些数字优先级高的代表中断优先级高,有些则是相反;有些中断有预抢占优先级和子优先级,设置需注意;有些中断不能使用FreeRTOS的API,有些则可以;有些中断优先级设置考虑移位操作。 2.stackOverflow...
2018-06-13 13:05:44
8450
1
原创 FreeRTOS专题总结之基本概念讲述
大纲:FreeRTOS是什么?内核与操作系统的关系?实时操作系统与非实时操作系统的区别?FreeRTOS与Linux的一个重要区别FreeRTOS中任务的概念?FreeRTOS的任务是如何调度的?FreeRTOS任务调度的三种策略和三种方式?FreeRTOS任务之间如何通信?空闲任务是什么?为什么需要空闲任务?空闲任务何时创建?什么是优先级反转?什么是优先级继承?守护任务是什么?常见错误总结项目...
2018-06-11 19:18:08
1256
原创 自动售卖系统开发系列——人脸识别自动售卖机三代BrotherSharp
大纲:售卖机三代BrotherSharp的简介售卖机三代BrotherSharp的方案介绍 #系统整体组成 #软件平台 #硬件平台售卖机三代BrotherSharp的实现过程 #功能实现论述 #软件流程图 #源码 售卖机三代BrotherSharp的技术难点解析参考文献 #售卖机三代BrotherSharp的简介自动售卖机BrotherSharp是基于人脸识别技术的UI...
2018-06-10 21:47:15
6876
1
原创 自动售卖系统开发系列——人脸识别自动售卖机二代ChingTom
大纲:售卖机二代ChingTom的简介售卖机二代ChingTom的方案介绍 #系统整体组成 #软件平台 #硬件平台售卖机二代ChingTom的实现过程 #业务逻辑介绍 #软件流程图 #源码 售卖机二代ChingTom的技术难点解析 #售卖机二代ChingTom的简介自动售卖机ChingTom是基于人脸识别技术的UI交互式售卖系统。产品整体效果图如图1所示。 图 1 自动售卖...
2018-06-10 21:46:59
5034
1
原创 网络通信专题总结之OTA专题
大纲:|网络通信专题总结之OTA专题|OTA简介|OTA模式以及分类|用户个性化定制更新业务流程讲述 |具体是怎样实现: |APP |嵌入式端 获取url.md5.版本号 请求服务器 下载与存放固件 引导系统分区启动新固件 上报升级状态 |强制升级重大更新业务流程讲述 |具体是怎样实现: |流程图 |bug总结#OTA简介 OTA的是Over The Air的缩写,...
2018-06-03 22:17:43
752
原创 网络通信专题之获取ntp时间
大纲:|NTP是什么?|哪些地方用到了NTP?|准确获取NTP时间的重要性?|如何准确获取NTP时间?|实现软件流程图#NTP是什么? NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。 NTP...
2018-06-03 22:14:56
1846
原创 网络通信专题总结之产测工具专题
大纲:#产测工具的重要性#产测条件与测试环境#产测测试项明细#产测测试项简介#产测实现细节剖析#产测软件实现流程 #产测工具的重要性产测工具是检测产品质量以及提高量产速度很重要的一种手段。对于物联网产品来说,主要针对的测试模块是wifi模块。wifi性能的好坏,决定了整个物联网通信流程的顺畅程度。 #产测条件与测试环境产测条件:使用产测工具之前,需要准备一个前提条件。一是产品中的wifi模块已经烧...
2018-06-03 22:12:52
1366
原创 网络通信专题总结之Socket API使用
#学习资料介绍 [1]Beej’s官方文档(英文版)http://beej.us/guide/bgnet/html/multi/index.html[2] Beej’s官方文档(中文版)http://beej-zhcn.netdpi.net[3]网络通信专题系统学习资料git@github.com:TommyYangHui/SocketAPIStudy.git #学习方法介绍先看网络通信专题系...
2018-06-03 19:24:19
270
原创 网络通信专题总结之mqtt专题全局介绍
大纲:|网络通信专题总结之mqtt专题|mqtt简介|mqtt实现基本流程 |mqtt与TCP的区别|mqtt如何保障通信安全? |什么是SSL? 什么是TLS? SSL与TLS之间的区别? |mqtt基本通信过程 |如何进行SSL/TLS握手? |如何进行开始会话? |如何重建连接? |证书是什么回事? |心跳包是什么? |推送以及订阅机制|如何学习mqtt? #mqtt简介 有一个生动...
2018-05-25 17:52:58
1087
原创 Ubuntu录屏软件Kazam的安装以及录屏无声解决:
安装参考:https://jingyan.baidu.com/article/73c3ce282a07d5e50343d993.html录屏无声音解决方案参考:https://www.cnblogs.com/xn--gzr/p/6195317.html在这里我竟然找不到第5步:原来在这里:左侧最下面这个图片,右击,找到了。最后注意了,设置完成之后,需要重启,才能生效。...
2018-05-16 22:19:38
3441
原创 在Ubuntu安装OpenCV以及opencv_contrib
步骤:1.在官网下载OpenCV和opencv_contrib安装包 安装包下载: https://github.com/opencv/opencv https://github.com/opencv/opencv_contrib2.安装依赖: 1. sudo apt-get install build-essential 2. sudo apt-get install cmake git lib...
2018-05-16 09:25:17
1888
原创 Qt: QML StackView: push: nothing to push
界面跳转View的时遇到一个问题,就是参考github工程使用stackView,如:stackView.push({item:someItem, properties: {fgcolor: "red", bgcolor: "blue"}})在自己的工程使用就会报错”QMLStackView: push: nothing topush",追究其原因,查找了资料发现原来是自己使用qt的版本比参考例...
2018-05-14 08:59:57
1436
原创 Qt Creater Bug: multiple define of ...
在导入自己写的文件到Qt 工程时,发现报了好多个 multiple define of ...的错误。网上查了以下,解决方法有提到:1.头文件重复包含: #ifndef ... #define... ... #endif2.编译出来的.o文件链接失败,需要clean工程的生成文件,再编译。以上方法都试过,无济于事。后来我重新建一个工程,导入自己...
2018-05-13 08:59:40
1359
原创 Qt Quick 如何入门?
为什么选择QT? 毕业设计要做一款基于GUI界面交互的自动售卖系统,在众多的GUI开发平台当中,我选择了QT。 QT相比与其他GUI开发平台来说,最大的优势是跨平台。按我的理解,就是写好的一份代码可以不用过多的修改就能移植到Linux系统、Windows系统,甚至是IOS系统。 或许因为我是一个Linux软件开发工程师,所以我会偏爱c/c++。其实也是一方面考虑到以后职业发展要用到C++。再...
2018-05-05 23:08:51
5814
转载 Linux下开发:vim + cscope + ctags代码阅读模式之基本使用方法
###vim + cscope + ctags代码阅读模式之基本使用方法cscope的用法:`回退上一个位置:ctrl+ o或者ctrl + t退出搜索:ctrl+D快捷键 ctrl + \ + 字母参考上一节中vimrc文件的定义:" 将:cs find c等Cscope查找命令映射为<C-\>c等快捷键(按法是先按Ctrl+\,松手后再按下c) n...
2018-04-25 19:19:15
584
原创 Linux下开发:vim + cscope + ctags代码阅读模式之环境搭建
vim + cscope + ctags代码阅读模式: 在Linux中没有windows中好用的IDE开发工具,我们也尽量不要依赖图形开发工具。 以命令行模式开发能排除干扰,极大的提高开发的效率。以ubuntu开发环...
2018-04-25 19:13:09
666
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人