自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 wireshark工具简介

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。wireshark是开源软件,可以放心使用。可以运行在WindowsUnixLinuxMac OS上。WireShark主要分为这几个界面:显示过滤器, 用于过滤封包列表, 显示捕获到的封包, 有源地址和目标地址,端口号。颜色不同,代表封包详细信息),显示封包中的字段进制数据5.地址栏,杂项。

2025-01-19 19:55:20 2719

原创 AT指令与TCP通信

AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。90年代初,AT指令仅被用于Modem操作。

2024-12-20 20:13:36 1172

原创 HTTPS原理与mbed TLS实现

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于传输超文本信息的协议,它是互联网上应用最为广泛的一种网络协议。HTTP连接本质就是使用TCP协议建立起的可靠连接进行请求发送与请求响应。1. DNS解析:当客户端(如浏览器)尝试访问一个网站时,它首先会尝试从本地缓存中查找域名对应的IP地址。如果本地缓存中没有找到,客户端会发送DNS查询请求到本地的DNS服务器。2. 建立TCP连接。

2024-12-08 15:45:12 1348

原创 FreeRTOS调试与源码解析(4)--基于cortex-M的任务调度

本文主要是对野火的《FreeRTOS内核实现与应用开发实战指南》中任务调度的学习与总结,梳理出任务创建成功后,启动调度器开启第一个任务的流程,因为本人使用的是Linux环境的GCC模拟器,与设备中实际使用场景存在差异,因此以此文为准。示例源码基于FreeRTOS V202212.01。

2024-09-30 16:36:22 1077

原创 FreeRTOS调试与源码解析(3)--列表与就绪列表

本文主要介绍FreeRTOS就绪列表的创建与使用,将从FreeRTOS列表与列表项开始介绍,列表和列表项是FreeRTOS的一个数据结构,FreeRTOS大量使用到了列表和列表项,它是FreeRTOS 的基石。列表项的删除通过函数uxListRemove()来完成,需要注意的是,列表项的删除只是将指定的列表项从列表中删除掉,并不会将这个列表项的内存给释放掉!列表项就是存放在列表中的项目,FreeRTOS提供了两种列表项:列表项和迷你列表项。列表项的初始比较简单,只要确保列表项不在任何列表中即可。

2024-09-30 16:12:25 925

原创 FreeRTOS调试与源码解析(2)--任务的创建与删除

本文主要介绍FreeRTOS任务的创建与删除,在正常使用的前提下,介绍任务控制块TCB、任务栈、任务、就绪表等。

2024-08-15 14:52:56 1310

转载 c语言attribute关键字参数(详细)

GNUC编译器增加了一个__attribute__ 关键字用来声明一个函数、变量或类型的特殊属性。申明这些属性主要用途就是指导编译程序进行特定方面的优化或代码检查。attribute 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。关键字也可以对结构体(struct )或共用体(union )进行属性设置。

2024-08-14 11:48:01 298 1

转载 container_of c语言中根据结构体成员的指针获取整个结构体的指针

文章介绍了C语言中用于根据结构体成员指针获取整个结构体指针的container_of宏,详细解析了宏的实现步骤和参数含义,并提供了一个测试示例,展示如何在实际代码中使用该宏。在示例中,通过container_of宏成功地从成员指针转换回结构体指针,访问到了其他成员。

2024-08-12 16:55:10 76

原创 Linux内核解读(1)--内存管理与malloc原理

本文主要关注Linux环境的堆内存的管理,详细解析Glibc与TCMalloc的malloc原理, 由于本人能力有限,难免会出现解读错误的地方,望各位大佬批评指正,后面也会在进一步解读中对本文进行修改。

2024-08-10 15:57:15 1143

原创 FreeRTOS调试与源码解析(1)--构建Linux模拟器环境

在实际的项目开发过程中,我一直使用的都是用RTOS系统重构的一套pthread的接口,且对源码知之甚少,只知道如何去使用,而不太懂它内部运行的逻辑。为此在这开启一个新的系列,在对FreeRTOS原生接口的使用和梳理的基础上,去解读它的源码,并试着使用一些调试工具和手动,对RTOS内核进行剖析。本文使用的调试环境是Ubuntu:4.15.0-143-generic,Freertos:v202212,采用SecureCRT工具远程连接的linux环境。

2024-08-09 10:08:30 633

原创 Linux问题调试(4)--内存问题与tcmalloc

之前的文章介绍过Asan来定位内存泄漏问题,虽然已经被集成到各大编译器中,‌但它的使用可能受到特定环境或配置的限制。‌例如,‌在某些复杂的系统或应用程序中,‌ASan可能会因为与程序的交互复杂性而遇到挑战,‌导致难以准确诊断问题。‌Linux问题调试(2)--内存问题与asan工具。

2024-08-07 10:03:33 1551

原创 Linux问题调试(3)--调试文件(core、map、Debug)的生成与调试工具(Addr2line、GDB)的使用

Linux平台生成的可执行文件,带有Debug或Release属性。Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员对程序的调试。在Debug环境下,我们可以使用调试技巧,如观察监视、内存、反汇编等等。Release称为发布版本,它往往进行了各种优化,使程序在代码大小和运行速度上都是最优解,便于用户使用。map文件通常由链接器(Linker)生成,在构建过程中,链接器负责将各个编译单元(如.o或.obj文件)组合成一个可执行文件或库。

2024-07-28 21:49:04 1156

原创 Linux问题调试(2)--内存问题与asan工具

asan算法的思想是:如果想防住Buffer Overflow泄漏,只需要在每块内存区域右端(或两端,能防overflow和underflow)加一块区域(RedZone),使RedZone的区域的影子内存(Shadow Memory)设置为不可写,如图1所示。3、运行时库run-time library:运行期间,对代码进行修改,主要是修改了malloc和free函数的实现方法,在heap上分配内存时,在应用数据前后创建毒区(poisoned redzones),用于检测heap类型的越界访问的错误。

2024-07-19 17:04:12 1625

原创 Linux问题调试(1)--CPU问题与火焰图

在开发Linux项目的过程中,会时常出现CPU的高消耗而导致的一些异常问题,例如网络包的频繁收发引起系统阻塞,从而导致软狗超时问题等。本文总结了本人项目开发过程中使用的CPU性能调试方案。

2024-07-18 15:05:01 1407

原创 FreeRTOS学习笔记(1)--内存管理

为了提高内存申请/释放的效率,需要弄清楚rtos系统的内存分配机制,虽然项目可以通过调整线程栈大小和总体的内存分配来解决栈空间分配失败的问题,但依旧存在以下几个问题,搞不清楚这些问题,我们系统的中的问题就无法根本性解决。1、RTOS的栈内存的分配机制是怎样的?2、RTOS栈的内存碎片回收是怎样做到的?3、RTOS有没有有效的栈内存统计方案?

2024-07-15 16:22:06 1171 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除