
嵌入式专栏
文章平均质量分 78
嵌入式下的程序编程
优惠券已抵扣
余额抵扣
还需支付
¥69.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
吻等离子
纵横寰宇无限,体验宇宙衍变。星辰之变,骄阳岂是终点。
展开
-
BusyBox 与 Toybox:嵌入式 Linux 的轻量工具集对比与解析
BusyBox 由 Bruce Perens 于 1996 年创建,最初是为 Debian 安装程序的启动盘设计的。随着嵌入式 Linux 系统的发展,BusyBox 逐渐成为该领域的主流工具集。它将数百个 Unix 命令(如 ls、cat、grep、mount 等)集成到一个可执行文件中。通过符号链接或参数调用不同功能,极大地减少了存储空间占用,同时保持了核心功能。BusyBox 的设计目标是为资源受限的系统(如路由器、IoT 设备、嵌入式开发板)提供精简但实用的命令集。原创 2025-04-11 17:02:06 · 282 阅读 · 0 评论 -
解决问题random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=路径
解决问题random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=路径当你遇到 random number generator: RAND_load_file: Cannot open file 错误时,常见的解决办法是生成一个 .rnd 文件,这个文件包含了用于初始化 OpenSSL 随机数生成器的种子数据。你可以通过以下步骤来生成 .rnd 文件并解决问题。原创 2025-01-12 15:25:34 · 183 阅读 · 0 评论 -
.gn文件是什么,是如何生成的
gn文件是 GN 构建系统的核心配置文件,用于描述项目的构建规则、依赖关系和其他构建选项。它们可以手动编写、自动生成,或通过构建工具生成。GN 系统依赖于这些文件来生成 Ninja 构建文件并最终完成构建。原创 2025-01-10 14:05:33 · 217 阅读 · 0 评论 -
解决:Lost connection to Mysql server at ‘waiting for initial communication packet问题
MySQL远程连接失败并出现错误,通常是由于DNS反向解析问题所引起的。通过配置选项,可以有效避免此类问题,提升服务器的稳定性和性能。进一步调整和其他相关配置,还可以为你的数据库提供更加灵活和安全的访问策略。希望这些技巧和建议能帮助你在管理MySQL数据库时更加得心应手。如果你遇到其他问题,欢迎交流讨论!原创 2024-08-22 08:30:00 · 4354 阅读 · 0 评论 -
使用 OpenSSL 进行 RSA 密钥生成与加解密操作(命令行方式)
通过 OpenSSL,我们可以轻松地生成 RSA 密钥对,并利用公私钥进行数据的加密与解密操作。本文介绍了如何使用 OpenSSL 命令行工具生成 RSA 密钥,以及如何利用这些密钥来安全地加解密数据。这些操作对于保障数据传输的安全性至关重要,在实际应用中具有广泛的用途。原创 2024-08-27 07:44:47 · 2562 阅读 · 0 评论 -
十分钟搭建VScode C/C++运行环境
1.下载安装VScode2、配置vscode安装。您可以通过在扩展视图 ( Ctrl+Shift+X)中搜索“C++”来安装 C/C++ 扩展。原创 2023-11-27 20:49:33 · 2590 阅读 · 1 评论 -
VMware虚拟机下安装Ubuntu(详细教程,最小系统的安装,含VMware Tools)
这里提供网盘下载方法更多版本请访问官网和镜像站:Ubuntu 22.04.4 LTS 下载 和 清华大学开源软件镜像站 - Ubuntu 22.04.4 下载 [Step 1]: 打开 VMware 软件,点击 [Step 2]:选择自定义类型配置[Step 3]: 根据自己的版本情况选择硬件兼容性[Step 4]:选择稍后安装操作系统才可以安装最小系统版本[Step 5]: 选择客户机操作系统[Step 6]:设置虚拟机名称和虚拟机的保存路径[Step 7]: 选择处理器,原则是处理器内核总数要小于电脑处原创 2024-07-20 19:43:24 · 1899 阅读 · 0 评论 -
逻辑分析仪的使用
1、逻辑分析仪是什么?逻辑分析仪是分析数字系统逻辑关系的仪器。与示波器类似,逻辑分析仪能抓取引脚的电平时序。2、逻辑分析仪的产生由于电路的发展是从模拟发展到数字这样的过程,因此测量工具的发展也遵循了这个顺序。现在提到测量,首先我们想到的是示波器,尤其是一些老工程师,他们对示波器的认知度非常高。而逻辑分析仪是一种新型测量工具,是随着单片机技术发展而发展起来的,非常适合单片机这类数字系统的测量分析,而通信方面的分析中,比示波器要更加方便和强大。3、逻辑分析仪测量数字电路比示波器的优势。原创 2022-08-19 19:06:53 · 7797 阅读 · 0 评论 -
UTHash(三): UTArray基础与高级用法
UTArray 是uthash库的一部分,它实现了一个动态数组的数据结构。与标准 C 数组相比,UTArray 允许在运行时动态调整大小,从而使其更适合处理不确定数量的元素。elem!= NULL;// 使用示例宏的实现主要依赖于UTArray的内部结构和提供的遍历函数。下面是对该宏的具体实现及其工作原理的详细说明。宏实现elem!= NULL;组件解析参数array: 要遍历的UTArray。type: 遍历元素的类型,例如int*。elem: 用于迭代当前元素的变量名。原创 2024-10-18 08:30:00 · 235 阅读 · 0 评论 -
UTHash(二):UTHash库的哈希表代码实现
在使用UTHashUTHash。它可以命名为任何名称,但是我们一般都命名为hh。原创 2024-10-17 08:30:00 · 146 阅读 · 0 评论 -
linux下编译安装和使用cURL库(含有openssl)
是一个利用URL语法指定各种协议(如等)进行数据传输的工具,它以客户端的身份,允许用户通过命令行与服务器交互。cURL库(libcurl)是cURL的编程接口(API),提供了一套丰富的函数,供开发者在自己的应用程序中实现网络传输功能cURL库是中不可或缺的一部分,无论是在命令行快速测试网络服务,还是在复杂的应用程序中实现网络通信,cURL都提供了强大而灵活的功能。它的和广泛的社区支持,使得cURL库成为开发者的首选网络传输解决方案之一查看自述文件可知获取源代码后,请查看。原创 2024-06-18 12:48:27 · 1234 阅读 · 2 评论 -
ezxml XML解析构件库中函数定义的中文介绍
ezxml_parse_strezxml_parse_fdezxml_parse_fileezxml_parse_fpezxml_childezxml_nextezxml_idxezxml_nameezxml_txtezxml_attrezxml_getezxml_toxmlezxml_piezxml_freeezxml_errorezxml_newezxml_new_dezxml_add_childezxml_add_child_dezxml_set_txtezxml_set_txt_dezxml_set原创 2024-06-18 08:30:00 · 235 阅读 · 0 评论 -
exzxml C语言XML解析库使用记录
github地址。原创 2024-06-18 08:00:00 · 278 阅读 · 0 评论 -
记录open62541简单有效的编译生成.c和.h文件【OPCUA开源库】
虽然说可以通过下面命令安装CMake,但是安装CMake时,通常会安装来自你的操作系统的软件仓库中的版本,这个版本可能不是最新的如果安装后发现CMake版本低于CMake 3.13是没有办法进行编译的接下来通过编译源码来升级高版本的Cmake(这里使用3.24.2)原创 2024-06-14 18:30:00 · 551 阅读 · 0 评论 -
Linux简单通过Minicom命令操作串口设备(linux串口操作命令)
Minicom是一个功能丰富且易于使用的串口通信工具。通过上述介绍和示例,你应该能够快速上手并有效地使用Minicom进行串口通信和调试。更多的高级功能和配置选项可以通过或minicom -h命令查看。原创 2024-05-26 17:14:38 · 956 阅读 · 0 评论 -
Linux通过stty命令操作串口设备(linux串口操作命令)
stty命令是 "Set TTY" 的缩写,它的作用是设置终端的各种属性。通过stty命令,用户可以查看当前终端或串口的属性配置,并可以根据需要修改这些属性。这些属性包括波特率、数据位、停止位、奇偶校验等。通过stty命令,用户可以方便地配置和管理串口通信参数,从而实现对串口通信的精细控制。深入了解stty命令的使用,对于开发嵌入式系统、调试硬件设备等工作是非常有帮助的。希望本文能够帮助读者更好地理解和应用 Linux 系统中的串口通信技术。原创 2024-05-26 16:47:22 · 1425 阅读 · 0 评论 -
modbus开源库libmodbus的C语言使用记录(实现简单的modbus主机/丛机程序,解决libmodbus库安装出现的问题)
libmodbus 是一个开源的、跨平台的C库,用于实现Modbus通讯协议。它支持Modbus RTU(RS-232/485)和Modbus TCP协议,可以使开发者方便地在项目中集成Modbus通讯功能。libmodbus的设计目标是简单、灵活和高效,适用于各种大小的嵌入式和桌面应用。原创 2024-05-22 12:47:02 · 1724 阅读 · 0 评论 -
70+开源实时操作系统列表,示例项目和资源一网打尽(你不知道的开源操作系统汇总,建议收藏备用)
它最初是作为基于 Arm® Cortex®-M 的处理器的独立于供应商的硬件抽象层,后来扩展到支持基于 Arm Cortex-A 的入门级处理器。RT-Thread RTOS 是一个可扩展的实时操作系统:ARM Cortex-M0、Cortex-M3/4 的微型内核,或 ARM Cortex-A8、ARM Cortex-A9 DualCor 的全功能系统。Zephyr™ 项目是一个可扩展的实时操作系统 (RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑了安全性。原创 2024-05-19 11:18:18 · 280 阅读 · 0 评论 -
使用c-periphery库实现Linux下串口收发通信
c-periphery 是一个小型 C 库,用于用户空间 Linux 中的GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。c-periphery 简化并整合了原生 Linux API 到这些接口。c-periphery 在嵌入式 Linux 环境(包括 Raspberry Pi、BeagleBone 等平台)中与外部外设连接非常有用。原创 2024-05-16 08:30:00 · 326 阅读 · 0 评论 -
【linux 进程】Linux进程管理函数介绍和代码示例(fork/vfork/exit/wait/exec/_exit)
Linux进程管理函数是一些用于创建、终止、等待和替换进程的系统调用函数。进程是Linux系统中最基本的执行单元,它可以看作是一个程序的运行实例。Linux系统中有多种类型的进程,如用户进程、内核进程、守护进程、僵尸进程等,它们都有各自的特点和用途。本文将介绍一些常用的Linux进程管理函数,它们可以帮助我们控制和管理进程的生命周期和行为。原创 2023-11-07 01:26:07 · 332 阅读 · 0 评论 -
linux文件I/O: 高级I/O函数及其代码示例
注: man手册指出,in_fd必须是一个支持类似mmap函数的文件描述符,即它必须指向真实的文件,不能是socket和管道;splice函数可以在两个文件描述符之间移动数据,只在内核空间操作,不需要额外的缓冲区,适用于任意类型的文件描述符之间的数据传输,但至少有一个是管道。sendfile函数可以在两个文件描述符之间直接传输数据,不经过用户空间,减少了数据拷贝和上下文切换的开销,适用于从文件向网络发送数据的场景。readv将数据从文件描述符读到分散的内存块中,即分散读。原创 2023-11-06 08:00:00 · 423 阅读 · 0 评论 -
linux文件I/O:标准函数及其代码示例(fseek,ftell,rewind,ferror,clearerr,perror)
【代码】【linux编程】linux文件IO的标准函数及其示例(fseek,ftell,rewind,ferror,clearerr,perror)原创 2023-11-06 00:34:26 · 228 阅读 · 0 评论 -
linux文件I/O: 标准函数及其代码示例(fread,fwrite,fgetc,fputc,fgets,fputs,fprintf,fscanf)
【代码】【linux编程】linux文件IO的标准函数(fread,fwrite,fgetc,fputc,fgets,fputs,fprintf,fscanf)原创 2023-11-06 00:22:48 · 349 阅读 · 0 评论 -
linux文件I/O:标准函数及其代码示例(fopen,fclose,freopen)
标准IO函数是C语言库提供的一组用于文件输入输出操作的函数,它们在stdio.h头文件中定义,可以在不同的操作系统和平台上使用,具有可移植性和简便性的优点。标准IO函数通过文件流(FILE*)来操作文件,文件流是一个结构体指针,包含了文件的信息和缓冲区,可以对文件进行缓冲和格式化的处理。原创 2023-11-06 00:20:19 · 339 阅读 · 0 评论 -
linux文件I/O:系统函数及其代码示例(open/openat/lseek/write)
如果写入的字节数小于指定的字节数,可能是因为磁盘空间不足,或者遇到了中断,或者写入的是一个管道或套接字等非常规文件。文件描述符是一个用于标识打开文件的数字,通常从3开始递增,0,1,2分别表示标准输入,标准输出和标准错误。是要打开或创建的文件的路径,flags参数是指定文件的打开方式和选项,mode参数是在创建新文件时指定文件的权限。fd参数是要写入的文件的描述符,buf参数是指定的缓冲区的地址,count参数是指定的要写入的字节数。这个函数可以用来改变文件的当前偏移量,即文件指针的位置。原创 2023-11-05 23:30:44 · 369 阅读 · 0 评论 -
C++ 读写Excel LibXL库的使用&附注册码(key)
LibXL是一款用于读写处理 Excel 文件的库,支持等语言。并且支持多个平台等,它提供了一系列的API,让开发人员可以方便地读取、修改和创建Excel文件。原创 2023-08-30 08:00:00 · 4981 阅读 · 2 评论 -
c语言生成.exe文件的方法
官网中1是安装程序,2是可以直接使用的压缩包,其他下载方式也一样。没有看到,检查环境变量没配错的话 ,就是环境变量未生效就重启。将下图中的bin添加到Windows 的环境变量path中。在shell中看到版本信息就是配置好了。查看文件夹下面已经出现exe文件。文件大小:48.0 M|原创 2023-08-18 08:30:00 · 1236 阅读 · 0 评论 -
C/C++实现编解码Base64
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。原创 2023-08-17 08:30:00 · 1038 阅读 · 0 评论 -
C语言:十进制转换成十六进制字符串和数组
案例:将1000转换成十六进制数组存储。原创 2022-10-19 12:10:09 · 6747 阅读 · 2 评论 -
Linux软件/系统看门狗&&嵌入式独立看门狗
看门狗,又叫Watchdog timer(看门狗定时器)是一种电子计时器,其用于检测和恢复计算机故障。一般有一个输入和一个输出,其中的输入叫做喂狗( kickingthe dog or service the dog)。输出一般连接到另外一个部分的复位端。原创 2023-07-24 08:30:00 · 2105 阅读 · 0 评论 -
嵌入式Linux编程【信号量】signal信号及代码实现
signal信号函数,第一个参数表示需要处理的信号值(SIGHUP),第二个参数为处理函数或者是一个表示,这里,SIG_IGN表示忽略SIGHUP那个注册的信号。为指定的信号安装一个新的信号处理函数。调用处理函数处理信号返回以前的信号处理配置。SIGUSR1 用户信号1 SIGUSR2 用户信号2。SIGHUP 挂起信号 SIGINT 中断信号。向进程发送信号进程捕获信号后调用信号处理程序处理。原创 2023-07-24 08:30:00 · 486 阅读 · 0 评论 -
STM32 BOOTLOADER配置以及APP跳转实现(裸机)
Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。APP就是我们的应用程序,经过硬件引导程序之后跳转到系统程序运行。原创 2023-07-22 08:30:00 · 2689 阅读 · 0 评论 -
STM32 HEX文件和BIN文件格式区别&keil中的配置与生成
HEX文件和BIN文件格式区别&keil中的配置与生成原创 2023-07-22 00:56:30 · 1220 阅读 · 0 评论 -
CAN总线(五)STM32的CAN波特率设置方法(完整版)
①HSI是高速内部时钟,RC振荡器,频率为8MHz。②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。③LSI是低速内部时钟,RC振荡器,频率为40kHz。④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。1、使用外部晶振。原创 2023-07-18 08:30:00 · 4151 阅读 · 0 评论 -
linux驱动开发:Linux 内核的一些函数
该函数不能直接的立即唤醒进程,而是由调度程序转换上下文,调整为可运行状态。调用该函数在等待的过程中当前进程会被设置为TASK_INTERRUPTIBLE 状态,这个指针是为共享中断线而设立的,如果不需要共享中断线,那么只要将该指针设为 NULL。是要分配的设备号范围的起始值,一般只提供from 的主设备号,次设备号通。表示要注册的中断处理函数指针,当中断发生时,内核会自动调用该函数;构造设备号,将主设备号和次设备号转换为设备号类型(dev_t)。通过一个结构变量中一个成员的地址找到这个结构体变量的首地址。原创 2023-07-17 08:30:00 · 694 阅读 · 0 评论 -
linux驱动开发:驱动开发框架,linux内核字符设备驱动开发过程
传入 cdev 结构的指针,起始设备编号,以及设备编号范围。linux内核运行起来之后应用程序操作设备需要经过系统调用调到驱动的方法,通过这个函数可以调用到驱动的方法(通过函数指针的方法)cdev_init()函数用于初始化 cdev 的成员,并建立 cdev 和 file_operations 之间的连接。当一个字符设备驱动不再需要的时候(比如模块卸载),就可以用 cdev_del() 函数来释放 cdev 占用的内存。两个函数也是可以的,在硬件上可以正确的安装该驱动,在安装驱动的时候会调用注册在。原创 2023-07-17 08:30:00 · 240 阅读 · 0 评论 -
CAN总线(三)CAN总线链路层的三个标准
LIN 的字节场格式就是通常的“SCI”或“UART”串行数据格式(N81编码)。1bit起始位+8bits数据位+1bit停止位。CAN_H(7)为LIN线GND(3)接地。原创 2023-07-15 21:41:21 · 603 阅读 · 1 评论 -
CAN总线(二)CAN协议的帧格式(一文看懂CAN的报文结构)
如果只是使用CAN进行CAN通讯,可以粗略看下以下内容,主要了解下数据字段,但了解一下其他内容有助于使用CAN通讯。原创 2023-07-15 21:40:14 · 4741 阅读 · 0 评论 -
STM32F407系统时钟的配置和查看方法,APB1和APB2时钟计算
STM32F407具有两个PLL,用于产生不同的时钟信号。这里主要来讨论时钟。主PLL时钟的时钟源有两个信号,分别是上边提到的。PLL通过把这两个信号倍频,分频等达到更高频率的时钟信号。一般来说,由于HIS和HSE的时钟频率较低,SYSCLK一般都不会选择HIS时钟和HSE时钟作为系统时钟,而主PLL产生的时钟一般会用作。下面我们来看下主PLL的内部结构框图。由图可以看出PLL的时钟源主要有两个:HSE时钟信号和HIS时钟信号。原创 2023-06-27 21:37:27 · 2937 阅读 · 0 评论 -
使用OPC UA客户端工具Softing OPC Client读写OPC节点数据
Softing OPC Client工具介绍Softing OPC Client工具是德国Softing公司出品的标准OPC客户端。是最完备的OPC UA客户端工具。全部的数据类型都支持,功能齐备。是查看或测试OPC服务器的最好工具了。功能齐全、使用方便、而且免费官方下载地址: https://industrial.softing.com/products/opc-ua-and-opc-classic-sdks/opc-ua-demo-client.html。原创 2023-06-29 23:49:15 · 4527 阅读 · 0 评论