(文章目录) 前言 本篇文章我们继续讲解GDB调试。 一、数据断点 在GDB(GNUDebugger)中,数据断点是一种断点类型,它允许你在程序访问指定内存地址的数据时暂停程序的执行。通过设置数据断点,你可以监视和调试特定内存位置的读取或写入操作。 以下是在GDB中设置数据断点的基本用法: 1.启动GDB并加载可执行文件: gdbexecutable_file 2.选择要设置数据断点的内存地址。你可以使用以下方式之一: 使用变量名或指针来指定内存地址使用表达式计算所需内存地址 3.使用watch命令设置数据断点: (gdb)watchaddress 其中address是你选择的内存地址。...

  micz61TEX78l   2023年12月10日   17   0   0 3d插入图片GDB

(文章目录) 前言 include在多文件编程中是非常重要的,我们经常使用他来包含一些头文件,方便我们管理代码和项目,那么include是只能包含头文件吗?这篇文章将会告诉大家include是不是只能包含头文件。 一、include工作原理 在C语言中,include是预处理指令,它告诉编译器在源代码中包含另一个文件的内容。include的主要作用是将指定文件的内容插入到当前文件的位置,以便在编译时将两个文件的内容合并为一个单独的单元。 include的工作原理如下: 1.预处理阶段:编译器在编译C源代码之前,会进行预处理操作。预处理器将对源代码进行扫描并执行相关的预处理指令。 2.文件包含...

  micz61TEX78l   2023年12月07日   15   0   0 头文件#include自定义

(文章目录) 前言 本篇文章我们开始学习Linux中的进程组,进程组这个概念可能很多小伙伴都没有接触过,那么这篇文章将会教大家什么是进程组。 一、进程组概念 在操作系统中,进程组(ProcessGroup)是一组相关联的进程的集合。每个进程组都有一个唯一的进程组ID(PGID)。进程组的主要目的是为了实现作业控制(JobControl),即对一组相关的进程进行协调和管理。有些操作系统使用进程组来组织与终端会话(TerminalSession)相关的进程,以实现对终端的控制和管理。 以下是进程组的几个重要特点: 1.进程组中的进程共享同一个进程组ID(PGID)。2.进程组中的每个进程都有一个...

  micz61TEX78l   2023年12月07日   15   0   0 进程组#include作业控制

(文章目录) 前言 本篇文章来分析FreeRTOS中的中断,中断在FreeRTOS中也是非常重要的,那么这篇文章将带大家来学习一下FreeRTOS中的中断处理以及涉及到的API等。 一、为什么要为中断设计一套API 1.实时性要求:中断服务程序通常用于响应实时事件,例如硬件中断、定时器中断等。为了满足实时性要求,中断服务程序必须迅速执行,不能因等待某些资源而阻塞。中断处理必须在规定的时间内完成以确保系统的及时响应。 2.代码清晰度:将任务和中断的操作分开可以提高代码的清晰度和可读性。任务上下文的操作通常涉及到任务切换、阻塞等,而中断上下文的操作需要考虑中断的实时性和不能阻塞的要求。通过使用两...

  micz61TEX78l   2023年12月06日   15   0   0 任务调度优先级中断上下文

(文章目录) 前言 本篇文章将带大家学习AW2013芯片的使用。 一、AW2013芯片介绍 AW2013是AWINICLED驱动器产品线中支持自动呼吸模式的3通道LED驱动器产品。它可以驱动3个独立的LED或一个RGBLED组。 AW2013通过常阳极恒定电流驱动LED。亮度可以通过256级PWM调制。输出电流可以在4个级别配置:15mA、10mA、5mA、0mA(默认)。 AW2013支持渐变的亮度控制效果,有两种模式:直接PWM控制模式和单次编程模式。在单次编程模式中,可以灵活设置呼吸速度、时序、亮度和重复次数。 工作温度范围为-40℃至85℃,封装为2mmx2mm的DFN-101。 应...

  micz61TEX78l   2023年12月06日   13   0   0 插入图片引脚寄存器

(文章目录) 前言 本篇文章将带大家学习i2c_tool这个工具,有了这个工具无需驱动程序我们也可以访问到iic设备。 一、交叉编译i2c_tool 首先需要得到i2c_tool的源码:在终端执行下面的命令: gitclonegit://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git 修改makefile中的工具链:这里需要修改为arm的工具链,这样我们才能到板子上面使用。 执行make:编译生成了include文件夹和lib文件夹:将include文件夹中的头文件和lib文件夹中的动静态库都拷贝到系统目录下: 查看系统目录的路径:...

  micz61TEX78l   2023年12月06日   16   0   0 插入图片#include寄存器

(文章目录) 前言 除了有硬件定时器,还有软件定时器,那么这篇文章将带大家学习一下软件定时器是如何工作的,以及分析软件定时器的内部源码。 一、软件定时器结构体 软件定时器的本质其实也是一个结构体,在FreeRTOS中会使用一个结构体来管理软件定时器。 软件定时器结构体: typedefstructtmrTimerControl/Theoldnamingconventionisusedtopreventbreakingkernelawaredebuggers./ { constcharpcTimerName;/<<Textname.Thisisnotusedbythekernel,...

  micz61TEX78l   2023年12月02日   19   0   0 管理软件sed

(文章目录) 前言 本篇文章来分析FreeRTOS中的中断,中断在FreeRTOS中也是非常重要的,那么这篇文章将带大家来学习一下FreeRTOS中的中断处理以及涉及到的API等。 一、为什么要为中断设计一套API 1.实时性要求:中断服务程序通常用于响应实时事件,例如硬件中断、定时器中断等。为了满足实时性要求,中断服务程序必须迅速执行,不能因等待某些资源而阻塞。中断处理必须在规定的时间内完成以确保系统的及时响应。 2.代码清晰度:将任务和中断的操作分开可以提高代码的清晰度和可读性。任务上下文的操作通常涉及到任务切换、阻塞等,而中断上下文的操作需要考虑中断的实时性和不能阻塞的要求。通过使用两...

  micz61TEX78l   2023年11月28日   17   0   0 任务调度优先级中断上下文

(文章目录) 前言 本篇文章将带大家学习任务通知的概念和使用方法。 一、什么是任务通知 FreeRTOS中的任务通知(TaskNotification)是一种轻量级的同步机制,允许一个任务通知另一个任务已发生的事件或条件。这对于多任务系统中的协作和同步非常有用。以下是有关FreeRTOS任务通知的详细讲解: 任务通知的作用:任务通知的主要作用是允许一个任务通知其他任务已发生的事件,而无需使用更重的互斥锁或信号量。这可以用于线程间的通信和同步,以及处理任务之间的依赖关系。 通知值(NotificationValue):任务通知包括一个32位的通知值,用于传递信息。通知值可以是整数或位掩码,具体...

  micz61TEX78l   2023年11月27日   23   0   0 信号量互斥i++

(文章目录) 前言 本篇文章将为大家讲解信号量,源码分析。 在FreeRTOS中,信号量的实现基于队列。这种设计的思想是利用队列的特性来实现信号量,因为信号量可以被视为只能存储0或1个元素的特殊队列。 在FreeRTOS中,二进制信号量(BinarySemaphore)通常由一个队列和一个计数器组成。 计数信号量允许计数器的值大于1,它通常用于管理多个相同资源的可用性。计数信号量的值表示可用资源的数量,多个任务可以同时获取不同数量的资源。当任务获取资源时,计数器减少,当任务释放资源时,计数器增加。 一.创建信号量 创建二进制信号量 xBinarySemaphore=xSemaphoreCre...

  micz61TEX78l   2023年11月25日   16   0   0 插入图片信号量#if

(文章目录) 前言 本篇文章继续讲解C中的类。 一、类中的静态变量 1.在C中,类中的静态变量是与类本身相关联的变量,而不是实例化的对象的一部分。静态变量被存储在数据区,并在程序运行期间只有一份副本。下面是关于类中静态变量的一些重要概念和特性的解释: 2.静态变量声明与定义:在类定义中,可以使用关键字static来声明和定义静态变量。静态变量需要在类定义外部进行定义和初始化,以便为其分配内存空间。例如: classMyClass{ staticintstaticVar;//声明静态变量 }; intMyClass::staticVar=0;//定义和初始化静态变量 3.分配存储空间:静态...

  micz61TEX78l   2023年11月24日   21   0   0 友元类静态函数静态变量

(文章目录) 前言 本文将带大家学习驱动程序的具体编写及出口入口函数解析。 一、出口函数入口函数解析 每一个驱动程序都是含有出口函数和入口函数的,装载驱动的时候先调用入口函数,卸载驱动的时候则调用出口函数。入口出口函数的形式如下: static__initinthello_dev_init(void) { printk("%s%s%d\n",__FILE__,__FUNCTION__,__LINE__); return0; } static__exitvoidhello_dev_exit(void) { printk("%s%s%d\n",__FILE__,__FUNCTION__...

  micz61TEX78l   2023年11月22日   16   0   0 驱动程序插入图片设备号

(文章目录) 前言 本篇文章我们来讲解gcc编译器,gcc编译器在Linux中是用来将从代码编译为可执行程序。为了更加深入了解程序编译生成的过程我们有必要来学习gcc的相关知识。 一、gcc编译器介绍 GCC(GNUCompilerCollection)是一款广泛使用的开源编译器套件,由GNU项目开发。它支持多种编程语言,如C、C、Objective-C、Fortran、Ada和其他开发语言。下面是GCC编译器的一些主要特点和使用方式的讲解: 1.跨平台性:GCC是一个跨平台编译器,可在多个操作系统上使用,包括Linux、macOS和Windows等。GCC的主要目标是提供一个可移植的编译器...

  micz61TEX78l   2023年11月22日   13   0   0 编译过程编译器可执行文件

(文章目录) 前言 本篇文章继续讲解Linux中多线程基础函数的使用。 一、pthread_self函数 pthread_self()是一个用于获取当前线程ID的函数,它属于POSIX线程库(pthread)提供的函数之一。 pthread_self()函数的原型为: pthread_tpthread_self(void); 该函数在调用时不需要传入参数,它会返回当前线程的线程ID(pthread_t类型的值)。 线程ID是一个用于标识线程的唯一值,它在创建线程时由系统自动生成。通过pthread_self()函数,我们可以在线程内部获取当前线程的ID,以便后续的操作或标识。 下面是该函数...

  micz61TEX78l   2023年11月22日   19   0   0 主线程#include子线程

(文章目录) 前言 本篇文章将带大家深入学习任务的创建和分析任务调度的机制。 一、深入理解任务的创建 创建任务函数原型: BaseType_txTaskCreate(TaskFunction_tpxTaskCode, constcharconstpcName,/lint!e971Unqualifiedchartypesareallowedforstringsandsinglecharactersonly./ constconfigSTACK_DEPTH_TYPEusStackDepth, voidconstpvParameters, UBaseType_tuxPriority, TaskHa...

  micz61TEX78l   2023年11月19日   22   0   0 优先级链表时间片轮转

(文章目录) 前言 本篇文章来讲解C中的拷贝构造函数, 一、拷贝构造函数概念 在C中,拷贝构造函数(CopyConstructor)是一种特殊的构造函数,用于创建一个新对象并初始化其值为同一类别的另一个已有对象。拷贝构造函数接受一个引用参数,该引用参数是同一类别的另一个对象的引用。 拷贝构造函数通常用于以下情况: 对象的初始化:当使用一个已有对象来初始化一个新对象时,拷贝构造函数会被调用。这可以是通过直接赋值、传递对象给函数参数、返回对象等方式触发。 通过值传递参数:当将对象作为参数传递给函数时,拷贝构造函数会被调用来创建参数的副本以便在函数内部使用。 ClassName(constClas...

  micz61TEX78l   2023年11月19日   24   0   0 初始化Test拷贝构造函数

(文章目录) 前言 本篇文章来讲解Linux系统对中断的处理,中断无论是在单片机还是在Linux中都是非常重要的那么这篇文章就来讲解一下Linux系统对中断的处理。 一、栈在中断中的作用 在中断处理过程中,栈起着重要的作用。栈是存储临时数据和函数调用信息的一种数据结构,在中断处理中,栈用于保存和恢复处理器的上下文信息,以及传递参数和返回地址等关键信息。 以下是栈在中断处理中的几个关键作用: 1.上下文保存:当中断事件发生时,处理器会中断当前正在执行的任务,然后立即转向中断服务程序(ISR)。为了保护当前任务的上下文不被破坏,处理器会将当前任务的寄存器状态、程序计数器(PC)等信息保存在栈中。...

  micz61TEX78l   2023年11月19日   17   0   0 任务队列软件中断中断处理

(文章目录) 前言 本篇文章将给大家讲解进程间通信中的管道使用方法和概念。 一、管道的概念 管道的概念来源于Unix操作系统,在Unix-like系统(如Linux)中被广泛使用。它也存在于其他操作系统中,如Windows。 管道可以将一个进程的输出直接连接到另一个进程的输入,从而实现数据的流动和传输。通过管道,一个进程产生的输出可以无需写入临时文件,而是直接传递给另一个进程进行处理,这样可以提高系统的效率和响应时间。 二、管道的原理和创建方法 1.管道的原理 管道是一种在内核中实现的进程间通信机制,通过共享内存缓冲区来传递数据。默认情况下,管道的缓冲区大小为4KB,它提供了一种读写进程之间...

  micz61TEX78l   2023年11月19日   21   0   0 数据进程间通信#include

(文章目录) 前言 本篇文章来讲解lseek函数和stat函数,lseek函数主要用来设置文件偏移量,stat函数主要用来获取文件属性。 一、lseek函数 lseek函数用于在打开的文件中移动文件指针的位置。它可以用于设置文件的读写位置或查找特定位置的数据。 函数原型如下: include<unistd.h> off_tlseek(intfd,off_toffset,intwhence); 其中,fd是需要进行定位的文件描述符;offset是指定的偏移量;whence参数指定了基准位置。 lseek函数的基准位置(whence)参数可以取三个标志之一: SEEK_SET:基...

  micz61TEX78l   2023年11月19日   18   0   0 偏移量文件指针#include

(文章目录) 前言 本篇文章带大家学习PCF8574芯片,了解PCF8574芯片有什么作用,以及学习PCF8574的控制方法。 一、PCF8574芯片介绍 PCF8574是TI(TexasInstruments)公司生产的一种常见的I/O扩展芯片,用于将微控制器的少量GPIO引脚扩展为更多的GPIO接口。它采用I2C总线(串行通信协议)进行与微处理器的通信。 PCF8574芯片具有8个并行输入/输出引脚(即I/O口),可以根据需要配置为输入或输出模式。每个I/O口可以提供高电平或低电平的逻辑状态,用于控制外部设备或接口。 以下是PCF8574芯片的特点和工作原理: 1.I2C接口:PCF85...

  micz61TEX78l   2023年11月19日   17   0   0 数据插入图片引脚
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~