自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【esp32 WIFI连接】-STA模式

官方文档介绍。

2025-05-24 18:32:26 927

原创 【esp32 控制台】-命令

可以通过调出idf的控制台,结束控制台用ctrl + ]。esp32的控制台就像linux中的shell一样,可以通过命令对程序进行配置。主要用于开发调试、系统监控和交互式操作。控制台的作用调试输出:显示程序运行时的日志信息、调试信息和错误消息交互式命令:允许开发者通过命令行与 ESP32 交互系统监控:查看内存使用情况、任务状态等系统信息参数配置:设置和修改系统参数固件更新:通过串口进行固件升级。

2025-05-19 23:12:19 886

原创 【esp32 mqtt】 连接亚马逊-加密传输信息

在上面初始化的时候,注册了mqtt时间,在程序触发了注册的事件之后会执行事件回调函数,该函数的类型是固定的esp_event_handler_t类型,所以需要创建一个该类型的函数。在该函数中,根据不同的触发事件类型和触发事件ID,添加不同的逻辑,将event_data转换为需要的数据类型,在对数据进行不同处理。连接亚马逊平台之前,需要创建一个物品,下载创建物品后的证书,一直下一步就好,最后在在生成的证书文件。event – 注册的事件类型(连接成功、订阅消息、发布消息、接收到订阅信息等等事件)

2025-05-19 21:59:25 692

原创 【内存分配】

编译器确定程序的每个变量需要多少字节,从地址空间中获取连续的内存。

2025-05-18 21:07:45 180

原创 【c库主要功能】

功能:处理文件和标准输入/输出流的各种函数和类型sizeofFILE。

2025-05-18 21:05:27 199

原创 【U-boot 命令使用】

一般环境变量是存储在外部flash中,uboot启动的时候,会将环境变量从flash中加载到DRAM中,使用setenv改变的是DRAM 中的环境变量,要是用saveenv将修改后的变量保存到flash中。先使用setenv修改环境变量,在使用saveenv保存环境变量。当修改的环境变量值中存在空格时,要是用单引号将环境变量的值扩起来。查询全部有哪些命令使用 help 或者?不给环境变量赋值就是删除环境变量。与修改环境变量的形式相同。md命令用于显示内存的值,

2025-05-18 21:01:26 1025

原创 【应用开发十】pwm

与LED设备一样,操作PWD也是通过sysfs方式,该目录下的文件为pwmchipX,为PWM控器,I.MX6ULL有八个pwm控制器。

2025-05-18 21:00:30 237

原创 【驱动开发】一 字符设备驱动框架

字符设备是linux中最基本的一类设备,字符设备就是一个一个的字节,按照字节流进行读写操作的设备,读写分先后顺序的。常见的点灯,按键,iic,spi,lcd等等都是字符设备。

2025-05-18 20:53:51 507

原创 【FreeRTOS】事件标志组

事件标志组与信号量一样,属于任务键的同步机制。但是信号量一般用于单事件同步,事件标志组用于多事件同步。

2025-04-26 00:06:19 1023

原创 【esp-idf命令】

在esp-idf安装目录下执行。

2025-04-20 16:03:52 587

原创 【esp32 点亮led】-解决不能闪烁问题

在blink_example_main.c 文件中下图中代码将会被执行,如果直接在blink_example_main.c文件中定义CONFIG_BLINK_LED_GPIO为1,则下面代码并不会执行,暂不清楚是什么原因。当将 上图中的Blink LED type 设置成GPIO 模式的时候,在blink目录下面的sdkconfig文件中代码如下,此时CONFIG_BLINK_LED_GPIO设置为y。命令配置相应的引脚为GPIO模式,如下图所示,保存。

2025-04-20 15:37:44 312

原创 正点原子DAP仿真器连接

仿真器连接成功时,仿真器上的小灯颜色未蓝色,如果小灯颜色为蓝紫色,则仿真器连接失败。正点原子的DAP仿真器连接失败时可以尝试使用下面方式。3)仿真器与开发板连接(此时仿真器未与电脑连接)1)开发板断电,断开DAP与开发版的连接。2)开发板上电(此时仿真器未与开发板连接)4)连接仿真器与电脑端。

2025-02-11 22:16:39 326

原创 keil 使用hal库编译报错“declaration may not appear after executable statement in block”

keil默认的编译器使用的是c89/c90,不允许出现变量在可执行语句之后的,如果想使用变量出现在语句之后,可以配置keil使用c90编译器。声明出现在了可执行语句之后。

2025-02-10 21:59:18 182

原创 【MQTT 编程】-API

前面提到了“同步发布消息”这个概念,既然有同步发布,那必然有异步发布,确实如何!就是通过 MQTTClient_connectOptions 对象中的 reliable 成员控制的,这是一个布尔值,当 reliable=1 时使用同步方式发布消息,意味着必须完成当前正在发布的消息(收到确认)之后才能发布另一个消息;如果选择的是 MQTTCLIENT_PERSISTENCE_DEFAULT 持久化类型,则该参数应设置为持久化目录的位置,如果设置为 NULL,则持久化目录就是客户端应用程序的工作目录。

2024-12-17 21:49:42 965

原创 【Cmake】

【代码】【Cmake】

2024-12-16 17:44:41 261

原创 【网络开发-socket编程】

目录下的头文件是系统级头文件,通常用于系统调用、驱动开发和内核模块开发。:基本的数据类型:套接字编程相关的函数和数据结构。

2024-12-12 20:00:56 998

原创 【IO操作】异步IO(信号驱动IO)

异步IO是计算机程序中处理输入、输出的操作方式,允许程序在等待io操作完成时,不必阻塞当前线程,可以继续执行其他任务。在异步IO中,当文件描述符可以执行IO操作时,进程请求内核向自己发送一个信号,之后进程就可以执行其他任务,直到文件描述符可以执行I/O操作,内核会给进程发送信号,进程在接收到这个信号之后,执行回调函数,执行对IO的处理。异步IO相当于是一个软中断,即接收到信号之后,去处理相应内容。

2024-10-09 13:26:06 365

原创 【应用开发三】 input子系统介绍

对于触摸屏来说,一个触摸点的信息包含x坐标和y坐标以及其他信息,但是,一次read只能读取一个信息,此时就遇到一个问题,那就是用户如何知道一个触摸点信息已经读取完毕了呢?触摸屏设备是一种绝对位移设备,产生绝对位移事件,对于触摸屏来说,一个触摸点所包含的信息有很多中,例如触摸点坐标(x,y,z)、按压力大小、接触面积等。code表示该类事件中的哪一个具体事件,type中的每中类型事件都包含一系列的具体事件,例如按键类,就包含A、B、C、D等具体事件。该程序使用的是阻塞式读取,在没有数据时,程序会等待数据。

2024-09-20 18:08:33 1069

原创 【rust】rust条件编译

这一步相当于C语言中的变量的定义,即功能。在cargo.toml文件中使用feature[features]dbug = []udug = []上述代码相当于是有了两个编译条件。

2024-09-18 15:58:37 1042

原创 【应用开发】解决正点原子I.MX6ull应用编程zlib移植问题

在正点原子应用开发移植zlib库的时候,文档中有这样一段描述,先删除开发板中的zlib库,然后再拷贝zlib库这就会导致在使用scp命令拷贝编译好的zlib库的时候报错没有zlib.so.1。

2024-08-27 22:20:13 505 1

原创 rust 终端显示综合例程

这个包装器库提供了一个安全的接口,使用User和Group类型和函数,如get_user_by_uid,而不是低级指针和字符串。由于users表更改的频率非常低,因此对于短时间运行的程序来说,通常会缓存结果,而不是每次都获取最新的条目。在Unix中,每个用户都有一个单独的用户ID,每个进程都有一个有效的用户ID,表明它正在使用哪个用户的权限。此外,用户可以是组的成员,组也有名称和id。标准中,这些码通常用于控制终端的文本输出。跨平台终端操作库,纯rust库,可以编写跨平台的基于文本的界面。

2024-07-03 17:58:46 994 6

原创 【应用开发二】GPIO操控(输出、输入、中断)

GPIO 引脚在使用之前,需要将其导出,导出成功之后才能使用。注:并不是所有的文件夹都可以导出成功,如果引脚在内核中被使用了,就会导出失败。当引脚被设置为中断后,使用poll()函数监听引脚的电平状态变化。使用完GPIO引脚之后,需要将导出的引脚删除,同样该文件为。删除成功之后,之前生成的GPIO文件就会消失!功能:用于将指定编号的GPIO引脚导出。文件中,即可将对应GPIO引脚导出。的文件夹用于管理、控制GPIO引脚。:配置gpio引脚输入输出模式。功能:删除导出的GPIO引脚。

2024-06-28 22:54:55 959

原创 【应用开发一】LED开发

进入到目录下,该目录中存放着所有的LED设备,目录如下图所示:可以看到该目录中有一个sys-led的文件夹,这个就是底板上LED的设备文件,该目录下文件如下图所示:这里主要关注brightness、max_brightness以及trigger三个文件,这三个都是LED的属性文件。brightness:亮度可读可写,设置led的亮度等级,0:灭正整数:pwm控制的led:值越大,led越亮GPIO控制的led:亮:最大亮度等级只读文件trigger:触发模式。

2024-06-25 20:18:22 1027

原创 【gdb使用】

当程序在某一出停止后,用该指令继续执行,直到遇到断点或者程序结束。若要使用gdb调试代码,在代码编译时需要添加。:遇到循环体时,可以使用改命令跳出循环体。:如果有函数,进入函数内部执行,否则和。:n为行号,该命令使程序运行直第n行。有时候断点需要再运行程序之前打。:命令一行一行的执行。gdb bin文件名。

2024-06-17 17:18:43 222

原创 【rust 第三方库】serde 序列化反序列化框架

Serde是主流的rust序列化、反序列化框架。设计上,基于rust的静态类型系统和元编程(宏)的能力,使Serde序列化的执行速度与手写序列化器的速度相同。使用上及其简单用户为自己的类型实现Serialize和特质即可(大多数使用derive宏实现)序列化提供商,提供Serializer和特征的实现即可。若要数据类型支持序列化和反序列化,则该类型需要实现Serialize和trait。Serde提供了rust基础类型和标准库类型的Serialize和实现。对于自定义类型,可以自行实现。

2024-06-11 16:53:20 1976 7

原创 rust clap库(命令行解析)

CLI(Commang Line Interface,命令行界面)始终允许用户通过文本命令与计算机程序活操作系统进行交互的接口。与图形用户界面(GUI,Graphical User Interface)相比,CLI不提供图形元素,用户通过键盘输入特定的命令指令,命令行界面解释这些指令并执行响应操作。直观易用简洁的命令语法:命令和参数的设计应直观易懂,方便用户记忆使用自动补全:支持命令和参数自动补全功能,提高用户输入效率命令别名:提供常用命令的简短别名,减少输入工作量强大的帮助系统。

2024-06-11 09:46:00 1425

原创 【rust工具链】

版本,也可以看到已安装的所有版本的工具链。从图中可以看到正在使用的是。

2024-05-26 10:07:10 667

原创 【系统移植三】根文件系统构建

1)源码路径:1、例程源码->6、BusyBox 源码->busybox-1.29.0.tar.bz2。

2024-05-22 21:16:25 1036

原创 根文件系统简介

根文件系统也叫做rootfs,Linux的根文件系统更像是一个文件夹或者目录,在这个文件夹中有很多子目录。跟目录下和子目录中会有很多文件,这些文件时linux运行所必须的,比如库、常用软件和命令、设备文件、配置文件等。根文件系统首先是内核启动时所mount(挂在)的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导程序会在根文件系统挂在之后把一些基本的初始化脚本和服务等加载到内存中去运行在嵌入式linux中,内核代码并没有保存在根文件系统中,而是保存在了其他地方,例如NAND Flash。

2024-05-20 21:51:14 474

原创 【系统移植二】内核移植

1)源码路径:1、例程源码->4、NXP 官方原版Uboot和Linux->linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz22)解压,重命名。

2024-05-19 11:38:59 1242

原创 C函数总结

一般情况下只需要传递一个参数,第二个参数传NULL,

2024-05-14 20:52:46 249

原创 【系统移植一】uboot移植

开发板类型:emmc、7寸屏1)源码路径:1、例程源码->4、NXP 官方原版 Uboot 和 Linux -> uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2。2)将源码拷贝到ubuntu中的目录下,解压。解压后入下图所示:1 配置在编译之前首先要配置uboot,uboot的配置文件在configs目录下,因为开发是使用的是14x14mm尺寸的芯片,emmc版本,所以关注官方的配置文件。2 编译编写脚本,内如如下给脚本可执行权限,执行脚本3 烧写验证1)

2024-04-18 22:10:27 1256

原创 【系统移植二】正点原子linux内核移植

脚本要有可执行权限,在编译过程中会弹出linux的图形界面配置,如下图所示,这里不需要做任何配置,按两次。厂源码-> linux-imx-4.1.15-2.1.0-g8a006db.tar.bz2。开发板光盘->1、例程源码-> 3、正点原子 Uboot 和 Linux 出。②、设备数文件:imx6ull-alientek-emmc.dtb。①、linux镜像文件:zImage。linux内核在编译完成之后会在。这个压缩包拷贝到前面新建的。退出即可,等待编译完成。在编译内核之前需要安装。

2024-04-08 21:57:19 483

原创 【NFS 和 TFTP服务器搭建】

1)原因:因为ubuntu的nfs版本为version4,而板子的nfs版本为version2,所以直接挂载上去无法识别。就是创建的tftp文件夹目录,可以将需要使用TFTP传输的文件放在这个文件夹中,并且。一定要给文件夹权限,否则uboot无法从tftpboot文件夹下载文件。exports配置常用参数。使用如下命令重启nfs服务。打开nfs的配置文件。

2024-04-07 22:30:42 385

原创 【bash自动补全原理】

路径下的自动补全脚本。补齐功能可以通过脚本指定命令参数如何补齐。的脚本,这个脚本会在bash初始化的时候加载,获取脚本的位置可以通过。包来更好的进行补全效果。不同版本安装位置不同,原理类似。文件查看,补全功能的配置也是通过这个脚本导入的。(1)第3行:检查三个条件是否同时满足。1)自动补全依赖于bash的内置命令。2)一般系统中会安装。

2024-04-07 17:05:37 732

原创 【系统移植 一】 正点原子U-boot移植

Linux的启动需要一段bootloader程序,也就是芯片上电以后运行一段bootloader程序。这段程序会先初始化DDR等外设,然后将linux内核从flash(NAND、NOR FLASH、 SD、MMC等)拷贝到DDR中,最后启动linux内核。bootloader最主要的作用是启动Linux内核。uboot是bootloader的一种。

2024-03-30 16:26:37 567

原创 【rust项目】c与rust相互调用及目录间文件相互引用

本文选择在src目录下的方式,于src同级的没研究明白。使用inclued宏的时候引用那个文件中的哪些函数是不需要写的。一个creat只可以生成一个lib文件(lib的类型可以是多种);文件,该文件的作用是在编译代码的时候可以链接到库,相当于给rustc 添加编译参数。8)主体代码和builtins目录下文件重名(把其中一个文件名称换掉)在生成c动态库时需要调用rust中实现的函数,只需要在c文件中使用。​ 文件相互引用的时候,需要再在src目录下添加。1)rust需要调用c生成的库(静态库和动态库)

2024-01-16 21:24:01 2222

原创 bash配置文件

这段代码主要用于在非登录shell中设置环境变量和权限掩码,并执行一些初始化脚本。

2023-12-20 14:34:02 359

原创 【基本定时器】二

用定时器产生定时时间。

2023-11-25 15:11:24 797 1

原创 【基本定时器】一

STM32的基本定时器时TIM6和TIM7,这两个定时器个包含一个16位的自动装载计数器,有各自的可编程预分频器驱动。作用1) 提供时间基准2)为数模转换器(DAC)提供时钟。

2023-11-25 14:27:14 248

rustrust条件编译

rust条件编译示例

2024-09-18

rust终端显示库demo

rust终端显示库demo

2024-07-03

rust终端显示内容显示不同颜色综合使用demo

终端显示库综合使用demo

2024-07-03

rust serde 序列化反序列化

使用serde库和serde_yaml库序列化反序列化结构体、枚举,包扩自定义反序列化

2024-06-11

rust代码与c代码相互调用,rust调用c动态库静态库,以及rust代码之间的相互引用

rust代码与c代码相互调用,rust调用c动态库静态库,以及rust代码之间的相互引用

2024-01-16

空空如也

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

TA关注的人

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