- 博客(180)
- 资源 (29)
- 收藏
- 关注

原创 FreeRtos时间管理(一)
FreeRtos的时间管理包括相对延时vTaskDelay、绝对延时vTaskDelayUntil、系统时钟Systick本篇主要分析相对延时vTaskDelay函数,需要分析下PendSv中断触发的位置。
2024-03-23 13:22:19
408

原创 FreeRtos Queue(五)
xQueueGenericSendFromISR 和 xQueueReceiveFromISR都是在中断里调用的而不是任务里调用的,所以队列满了或者是队列为空的时候自然就没有把当前任务放到xTasksWaitingToSend或者xTasksWaitingToReceive链表里这一说,因此,在中断里的处理就会简单很多。pxHigherPriorityTaskWoken 这个变量是个输出类型参数,函数执行完的时候通过这个变量的值来判断是否需要任务切换。
2024-03-09 13:01:10
400

原创 写一个简单的cat命令
1、本篇实现cat命令的两个基本功能 cat FilePath1 FilePath2 ... : 将该文件的内容输出到终端上 cat : 将键盘输入的内容输出到终端上2、思路分析: 以上两个功能实际上是完成了两个文件的重定向, cat FilePath1 FilePath2 ... :将FilePath1 FilePath2 ... 文件中的内容重定向到了标准输出中,也就是文件拷贝的功能,即将FilePath1 FilePath2 ......
2021-02-26 10:33:00
1928
2

原创 Mesh networking----Mesh 网络管理(Mesh network management)
写在前面: 本文参考Mesh Core Spec 翻译而来,翻译能力有限肯定有理解不到位之处,还请大家指出。欢迎广大蓝牙、mesh爱好者一起交流,本人QQ:993650814。正文: 1、Mesh Network Creation procedure (mesh网络创建过程) 为了创建一个mesh网络,需要一个启动配置者(Provisioner)。Provisioner 会...
2019-04-12 08:41:49
2049

原创 蓝牙5.1之Direction Finding
写在前面:2019年1月28日,SIG发布了蓝牙核心规范V5.1,怀着无比激动的心情翻译阅读了ble 5.1的先进特性,位置服务和测向功能,以及他这两大功能的实现原理,本篇主要介绍Direction Finding 测向,本人翻译能力有限,如有理解不到位的地方还请及时指出,QQ:993650814. ble core V5.1 下载地址: Core_V5...
2019-02-02 17:02:42
3686

原创 Nordic mesh 协议启动配置流程分析(一)
写在前面:本篇主要分析启动配置流程,需要准备两份代码,provisioner 角色和provisionee角色。QQ:993650814,欢迎一起讨论ble或者mesh。参考资料如下:解密蓝牙mesh系列 | 第九篇解密蓝牙mesh系列 | 第十篇SDK路径下载:http://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v15.x.x/...
2019-01-09 19:47:37
4866

原创 蓝牙mesh协议架构
写在前面:马上要开始搞mesh组网了,本篇参考mesh的架构文档又加上自己的理解简单整理了一些,为后续做个准备吧。 正文:蓝牙mesh架构整理: 即在ble协议栈基础之上,又添加了7层协议。模型层:涉及模型的实施,因此涉及一个或多个模型规格中定义的行为、消息、状态、状态绑定等的实现。那么什么是模型:模型能够定义并实施节点的功能和行为,而状态能够定...
2018-12-24 19:32:58
5160

原创 Linux 网络编程 全解(十一)--------HTTP协议以及用socket实现访问HTTP服务器
写在前面:本文注意解释http协议的格式,主要包括以下内容:HTTP概述、HTTP特点、URL、HTTP报文格式以及用sockt实现访问http服务器。正文:一、HTTP协议概述1、HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)的缩写,HTTP基于TCP/IP协议来传输数据,HTTP工作于CS架构之上,即浏览器作为HTTP客户端,通过URL向...
2018-12-01 12:42:08
1321
1

原创 Linux 网络编程 全解(九)--------UDP和组播、广播的实现
写在前面:本文分两部分,先说UDP的实现,再讲下组播的实现。再后面补充一下UDP广播的实现。正文:一、1、TCP和UDP通信优缺点 TCP:面向连接的,可靠数据包传输。对于不稳定的网络层,采取完全弥补的通信方式,丢包重传机制。 优点:稳定,数据流量稳定,速度稳定,顺序稳定。 缺点:传输速度慢,传输效率低,资源开销大。 使用场景:数据的完...
2018-11-24 16:28:12
782
3

原创 802.11协议帧之数据帧格式解析
写在前面:802.11是国际电工电子工程学会(IEEE)为无线局域网络制定的标准。所有802.11的帧分为三类:管理帧、控制帧、数据帧,本篇主要对数据帧协议讲解。欢迎讨论,QQ:993650814 正文:一、通用帧格式介绍1、802.11通用帧格式 由上图可以看出,802.11帧总共有如下几个字段:Frame Control、Duration ID、Address1、Ad...
2018-09-15 11:52:50
22819
1

原创 实战总结----用Makefile编译生成动态链接库.so
写在前面:1、在实际项目开发当中,库文件用的很多,尤其是在不同的 企业之间为了防止源码公开,都是以库的形式提供给对方,然后提供必要的头文件就可以了。本文主要介绍Linux下和Windows下的库的格式,以及动态链接库和静态链接库的作用,Linux下如何用Makefile编译制作动态链接库的方法。2、Makefile博大精深,在平时用的不多,所以本文也是对刚刚用过的Makefile简单使用的...
2018-08-25 11:20:21
23059
2
原创 C语言强符号与弱符号
分析:a.c中的x是弱符号,占用4Bytes,b.c中的x y为强符号,占用2Byes,所以。分析:a.c中的a和b.c中的a和b都是弱符号,如果一个符号在所有目标文件中都是弱符号,则。开始写4Bytes,所以最终x=0x5678,y=0x1234。,所以b.c中的a,sizeof的大小是2;的时候选择空间最大的那个,也就是最终。的时候选择的是a.c中的int a;的时候选择了b.c中的强符号x和y,查看a.o中的符号表。查看a.out符号表。查看a.out符号表。
2024-05-05 17:14:48
330
1
原创 FreeRtos mutex
FreeRtos中二值信号量、计数信号量、互斥锁、递归互斥锁都是用queue来实现的,mutex的使用涉及到任务优先级的提升和恢复,本篇以mutex的源码实现来分析其中原理。
2024-03-16 13:21:55
527
原创 FreeRtos Queue(四)
本篇主要分析xQueueReceive,从队列中读取消息,读消息也是在死循环里操作的,大致分为两个逻辑:1、队列不为空的时候的处理2、队列为空的时候的处理。
2024-03-02 13:11:31
306
原创 FreeRtos Queue(三)
本篇主要分析向队列中发送消息 xQueueGenericSend 这个函数。大致分为两个逻辑:1、当队列没满的时候的处理2、当队列没满的时候的处理主意:整个xQueueGenericSend是在for(;;)中处理的。
2024-02-24 13:41:07
285
原创 FreeRtos Queue (二)
1、prvLockQueue和prvUnlockQueue是FreeRtos内核函数,只能供内核调用,应用层无法call。2、cTxLock和cRxLock为中断上锁计数器,cTxLock记录了队列上锁期间在中断里入队的数量,cRxLock记录了队列上锁期间在中断里出队的数量。
2024-01-27 13:02:01
324
原创 FreeRtos里的几个中断屏蔽
在这个中断里面打了个断点,debug了一下,当前系统中configMAX_SYSCALL_INTERRUPT_PRIORITY是0x10。FreeRtos的开关中断就是通过basepri寄存器实现的。例如: portDISABLE_INTERRUPTS()然后portENABLE_INTERRUPTS()开中断。取消对中断的屏蔽,可以直接将basepri清零。
2023-12-16 13:31:30
445
原创 FreeRtos第一个task是怎么run起来的
第一个task是怎么起来的呢?分析完vTaskStartScheduler,就会有答案了。那vTaskStartScheduler()干了啥呢?
2023-12-02 13:12:28
239
原创 FreeRtos任务创建分析
以xTaskCreateStatic为例。xTaskCreateStatic中调用了两个函数:prvInitialiseNewTask 和prvAddNewTaskToReadyList。
2023-11-25 15:15:18
190
原创 FreeRtos 任务切换深入分析
跳转到vTaskSwitchContext这个C函数中执行,这个函数中就将下一个要执行的任务的TCP更新到。2、freertos的任务切换是在xPortPendSVHandler 中断函数中完成的。将r4-r11,r14保存到任务栈psp中。并将栈顶位置写入到r2中,即。1、任务切换包含三个基本流程:保护现场、更新TCB、恢复现场并跳转。将r3和r0从msp中恢复出来,注意:此时的r3中的。此时的sp为msp,即将r3、r0保存到msp中。r14即LR中记录了中断返回的地址,跳转执行。
2023-11-18 14:11:02
590
3
原创 GDB 源代码查看、管理、搜索、设置源代码目录,调试发行版,观察点
forward-search :跟 search功能一样。C_FLAGS中加入-g选项后,生成的可执行文件中会保存调试信息。1、 set listsize 10:设置list查看的代码行数。reverse-search:反向搜索。3、directories 路径:添加源代码路径。list 函数名: 产看函数代码。list -: 向前查看代码。
2023-09-09 10:17:50
723
原创 GDB 函数调用栈管理
1、bt:backtrace 查看栈回溯信息。#0号栈桢表示正在执行的函数,在栈的最顶部。3、info f n 查看栈桢信息。2、frame n 切换栈桢。栈的调用关系:后进先出。
2023-08-12 13:55:57
384
原创 GDB 寄存器的查看与修改
按顺序存放在寄存器r0,r1,r2,r3里,超过4个参数值传递则放栈里。2、 info registers :打印通用寄存器的内容。info all-registers:打印所有寄存器的内容。4 disassemble : 查看函数反汇编地址。3、info line 行号:查看代码反汇编地址。5、通过修改pc来改变程序执行的流程。1、 函数参数:参数。
2023-07-21 19:36:36
1949
原创 GDB 查看、修改内存
f是显示方式:x16进制、d 10进制、u 6进制无符号、c 字符格式、f 浮点数格式。u是一种地址的单元长度:b 单字节、h 双字节、w 四字节、g 八字节;x /4d 地址名: 以十进制形式显示改地址的4个bytes。2、x /nb 地址: 查看该地址n个bytes的内容。3、 x /s 地址名:该地址以字符串形式的内容。1、 p &变量名:查看变量的地址。或者 x /30b 结构体地址。格式: x /选项 内存地址。n是要显示的内存单元个数。
2023-07-10 17:54:39
3442
原创 GDB 查看、修改变量
p strlen(xxx) : 产看字符串xxx的长度,注意不能直接strlen,必须加p。5、 p sizeof(xxx) : 查看xxx的大小,注意不能直接sizeof(),必须加p。3、set print pretty :让结构体以定义的形式展示出来,一个字段一行。2、set print null-stop :遇到无效的字符就不显示出来了。4、 set print arry on :让数组中的元素每个占一行显示。6、p 变量名称 = 变量值: 修改变量的值。
2023-07-08 13:09:54
1224
原创 GDB 断点管理
6、禁用/使能某个断点 : disable 断点号 enable 断点号。2、rb 函数名关键字 : 所有带有这个关键字的函数名都设置为断点。8、info locals :打印本函数的局部变量。5、查看某个断点的信息: info b 断点号。usage 2: b 文件名:行号。usage 1: b 函数名。7、删除所有断点: delete。4 、临时断点: tb。
2023-07-01 12:00:43
277
原创 C++拷贝构造函数
#include <iostream>using namespace std;/*二个特殊的构造函数1)默认无参构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空2)默认拷贝构造函数 当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制*/class Test{public: Test() { cout << "无参构造" << endl; } Te.
2021-10-28 11:56:04
349
原创 Linux 下Jlink GDB 断点调试步骤
写在前面: 本篇写于2021.9.21,阴历8.15,今年中秋,祝:国泰民安,身体健康,事业兴旺。今天整好公司安排加班,对Jlink GDB单步调试做个简单总结。1、在第一个shell终端下打开JlinkJDBServer 并选择芯片型号2、在另一个shell终端下arm-none-eabi-gdb 目标elf 文件,并tar jlink目标端口23313、设置断点: (1)、设置函数断点:b 函数名 info b 可打印...
2021-09-21 15:06:22
3568
原创 Linux 文件总结(二)
一、Linux文件系统结构 1、 文件操作的基本元素:目录结构(目录项)、索引节点(i节点)、文件的数据 2、从文件名到文件内容: 在目录中找到文件名--->目录项中包含i节点的位置----->在i节点中找到数据块的列表二、文件硬链接 1、创建硬链接的shell命令 ln srcpath newpath2、硬链接在内核中的存在形态3、创建文件硬链接的相关API...
2021-03-05 15:20:45
253
原创 Linux 文件总结(一)
1、文件的属性都在如下的结构体当中 2、文件属性操作API (1)、 int stat(const char* pathname, struct stat* buf); (2)、 int fstat(int fd , struct stat * buf); (3)、 int lstat(const char * pathname , struct stat* buf); 功能:返回与pathname 或 fd 指定的文件属性信息,存储在bu...
2021-03-02 11:33:07
254
原创 总结:乱七八糟的2020年
如题,是时候对乱七八糟的2020从几个维度做一次总结了。1、关于新冠疫情 突如其来的病毒,打破了我们的生活规则,也注定了今年不会太平,无数中小企业倒闭破产,无数员工失业负债。举国之力遏制下的病毒,到年底又出现了反复,希望疫苗赶紧稳定、普及,消灭病毒,然后大家去做自己想做的事情。生命只有一次,活着真好。2、关于科比 尽管很不愿意接受这个现实 ,但曼巴已经离世一周年了。今天,一边旷工,一边断断续续的看了腾讯NBA科比离世一周年特别节目《当我想你的时候》,曼巴精神...
2021-01-27 19:35:47
382
2
gsensor LIS2DH12 datasheet
2018-06-07
串口调试工具
2018-05-10
jlink驱动V502
2018-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人