自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Matlab(Simulink)使用详解

在 MATLAB/Simulink 里做「嵌入式软件」代码生成时,solver(求解器)的选择只有一条铁律——必须让模型在“固定步长 +离散”框架下跑,否则 Embedded Coder 无法把算法翻译成周期可调、内存可测、无浮点异常的 C 代码。它就像是一个“项目管家”,帮你把所有相关的文件(模型、脚本、数据字典、文档等)放在一起,方便管理和使用。,可以轻松地列出库中的模块、获取模块的属性、添加或删除模块、检查模块的依赖关系以及生成模块的文档。提供了更集中、更安全、更易于管理的数据管理方式。

2026-08-20 14:36:24 169

原创 嵌入式 Linux 网络启动方案

以后每次开机,U-Boot 会自动执行 bootcmd 里的命令,不需要每次都手动输入。内核启动时会读取这些参数,根据参数配置网络和挂载根文件系统。

2026-07-02 20:54:19 202

原创 跟文件系统(busybox)的构建

都会编译出一个功能完整可用的工具集。差异只在于具体包含了哪些命令,而这些差异通常不影响系统“能否启动”;下载完毕后,我们输入如下命令,切换到指定版本<busybox 1.36.1>对于相同的目标环境(比如都是完整的 Linux 系统),可以随意选择一个。由于在应用程序端的差异除了架构以外几乎没有,所以我们可以选择。执行如下命令编译并安装(根文件系统的默认安装路径为。)就是跟文件系统目录,其中包含了跟文件系统的所有内容。文件都可以启动,我们选择。目录,由配置文件可指定)作为默认配置文件,并。

2026-06-13 19:37:15 220

原创 制作Linux启动卡完整流程

OpenSBI (Open Supervisor Binary Interface) 是 RISC-V 架构中规定的一种底层固件规范与参考实现。在 ARM 架构的世界里,有 Trusted Firmware (ATF) 作为底层的固件标准。在 x86 架构里,有 BIOS/UEFI。这个镜像烧录到目标芯片即可。

2026-06-13 10:57:44 210

原创 UBoot详解

可以理解为:U-Boot 在编译完成后,就在内存中为自己建立好了一张“驱动程序注册表”,所有被编译进来的驱动,都在这张表里。文件进行管理的,该文件能帮助开发者快速编译出适合某个板子的镜像>} 那部分内容)放到一个特殊的、连续的内存段中,比如叫。里的 = 你手动指定的,没写的 = 自动使用。这个目标文件编译并链接到最终的镜像中”。中一个特殊的变量,它明确地告诉。则表示忽略该文件,不进行编译;这个宏,会在编译链接时,把。结构体(即填写的 {= 你提前写好的固定菜单。= 厨房最终收到的订单。

2026-06-11 17:10:46 229

原创 WSL2 + TFTP + 网络启动(Linux开发板与WSL2建立网络连接)

在 NAT 模式下,WSL2 处于一个独立的虚拟网段(通常是 172.x.x.x),和开发板的 192.168.60.0/24 网段完全隔离。在 Mirrored 模式下,WSL2 可以直接访问 Windows 的每一块网卡,包括 192.168.60.1 这个网桥。的属性进行ipv4修改(TCP/IPv4),因为是网线直连,网段可以随意设置,在uboot需setenv对应。这里的以太网2就是要配置的端口,右键以太网2,双击ipv4设置静态ip。,这说明 WSL2 现在能看到开发板所在的网段了。

2026-03-30 16:17:23 520

原创 正点原子阿尔法imux6ull烧录不进tf卡程序

在未挂载sd卡的情况下烧录程序到sde,导致出现下图所示的情况;如图所示sde为灰色的。如图灰色的sde已不在,再重新挂载sd卡;如图sde已显示正常,此时进行重新烧录。如上图所示,程序成功烧录,在板子上验证正常。

2026-03-26 22:20:42 55

原创 UTF-8、GB2312、GBK的字符乱码问题总结

仅修改文件读取/解码规则,不修改文件本身,核心目的是让乱码恢复为正常文字,保证解码步骤正确;:修改文件保存/编码规则,直接修改文件原始字节,核心目的是将正常文字转换为目标编码的字节,执行实际的编码转换;先保证显示不乱码的本质:确保编码转换的「解码步骤」100%正确,避免因翻译错误,导致转换后的文件字节与预期编码完全不符,进而引发Keil编辑乱码、单片机显示异常等问题。是纠偏显示是执行转换,先纠偏再转换,才能保证转换后的文件编码和内容都正确,完美适配Keil/单片机的开发需求。

2026-01-22 20:01:47 910

原创 嵌入式常见BUG

开启了接收中断(若未开启记得一定要开启),但中断服务函数中提前清空了中断标志,导致程序没有运行到回调函数就完成了中断。:设置同步/异步方式不匹配,硬件电路是异步连接方式,程序代码是同步连接,导致乱码出现,根本原因是波特率不一致。:USB转TTL串口模块有问题,导致供电不足,ESP8266没有启动起来,电源(PWR)灯不亮。:获取键值的语句没有放入循环中,导致健值只被获取一次便不再获取(更新),导致键值没有更新。:在时钟频率配置之前读取了各个时钟频率的值,导致读取到的为旧的时钟频率。

2026-01-20 12:38:12 817

原创 Linux网络编程

网卡:网络适配器:标识的id,理论上这个id全球唯一,一般用来表示主机的id是标识的id,这个id是虚拟的,会改变IP地址分为子网id和主机id,子网id和主机id需要和子网掩码一起来看IP中被连续的1覆盖的位是子网id,被连续的0覆盖的位是主机id= 把主机位全写 0= 把主机位全写 1单播帧(目的 MAC = 本机 MAC)→ 网卡必须收。

2025-12-09 14:55:33 711

原创 Shell编程

setAction;funname#函数内部已经打印了结果,不需要再额外 echo/bin/bashs=$[$1+$2]echo $sread -p "请输入第一个整数:" aread -p "请输入第二个整数:" badd $a $b。

2025-09-02 11:28:13 1161

原创 Makefile的使用

目标名称是追踪监控的目标,而gcc命令的生成目标是所生成文件的名字,当追踪不到追踪监控的目标时会一直执行后续的gcc命令。防止目标名与同名文件冲突,并告诉 make“无论文件是否存在,每次都要执行”若不显式声明伪目标,当所在路径中有与伪目标同名的文件时,伪目标命令就不会执行。目标名称必须和gcc命令生成的目标文件同名,即。在报错后会显示(已忽略)

2025-08-28 22:21:10 374

原创 编程底层基础

然而,当你在这些窗口中输入变量名时,调试工具会根据符号表(Symbol Table)查找该变量的内存地址,并显示该地址的内容,而不受当前Memory窗口的地址范围限制。复位异常(Reset Exception)是所有异常类型里最特殊的一个,因为它不是从某个“原来的程序”中跳过去的,而是整个 CPU 重新启动,直接进入一个全新的执行流。:当程序停止在断点处时,CPU内核会停止执行,但外设仍然会继续运行,调试器主要控制CPU内核的运行状态,帮助开发者调试程序,通常不会直接控制外设的运行状态。

2025-08-28 15:33:28 1086

原创 Python虚拟环境中包存在,解析器路径正确,但就是找不到包解决方法

目录,也就是说 Python 根本没加载任何第三方库,自然找不到torch。被污染,或者 当前目录下有一个名为。99% 是 环境变量。

2025-07-24 14:30:49 345

原创 Linux开发⊂嵌入式开发

QT 里面出现no such file or directory这个错误怎么处理?

2025-07-21 22:27:19 342

原创 定时器详解

从模式中的复位模式会将计数器CNT清零,输入捕获模式下,会先将捕获到的计数值CNT写入捕获/比较寄存器CCR再复位(即CNT清零):存储预设的比较值,当定时器计数器 TIMx_CNT 的值等于 TIMx_CCR 的值时,触发输出比较事件。信号是一个周期性的方波信号,其周期(T)和频率(f)是固定的,但脉冲的宽度(t)可以根据需要进行调整。高电平有效表示当定时器的计数器(CNT)达到捕获/比较寄存器(CCR)的值时,输出信号将被设置为高电平。,并将捕获到的时间戳存储在捕获/比较寄存器(TIMx_CCR)中。

2025-07-21 10:39:57 1345

原创 系统复位详解

(Independent Watchdog,独立看门狗)是能产生系统复位信号的递减计数器,由独立的低速时钟LSI(RC振荡器)驱动,即使主系统时钟失效(在待机或停止模式下)也能工作,看门狗被激活后,当递减计数器计数到0x000时产生复位信号。(Window Watchdog)窗口看门狗是能产生系统复位信号和提前唤醒中断的递减计数器,由外部高速晶振(HSE)提供时钟源,所以在待机或停止模式下不能工作。:窗口期内重装载计数器的值,防止复位,非窗口期或窗口期下限之后喂狗会产生复位。是看门狗预分频系数;

2025-07-14 16:08:40 734

原创 数据通信详解

再使能复用功能的外设时钟,即可实现GPIO复用为该外设(即建立GPIO和该外设的连接<通过配置外设的模式可选择具体引脚的复用状态>),外设通过中断方式触发,需要开启中断,中断触发方式为一帧数据读取完毕;不同的通信协议有不同的中断触发机制,但它们的共同点是:只要硬件电路实现了协议标准,当满足特定条件时,就会触发中断进行相应外设的工作。:实际传输的数据,可选5、6、7、8、9个位长,LSB(低有效位)在前,MSB(高有效位)在后。:必须有,可选占0.5、1、1.5、2个位长,保持逻辑1电平,表示数据帧结束。

2025-07-10 11:52:51 1032

原创 中断的使用详解

是“外部(扩展)中断/事件控制器”(External(Extended) Interrupt/Event Controller)主要用于处理外部信号的中断请求或事件触发,它不仅可以处理芯片外部的中断或事件,还可以处理芯片内部的某些信号。,允许系统在执行主程序时被外部事件(如外部中断,EXTI)或内部条件(如定时器中断、通信中断等)中断,从而执行特定的处理程序(中断服务函数,ISR)(Interrupt Vector Table,IVT)存储了所有中断服务函数的入口地址,处于一块特定的内存中。

2025-07-08 14:48:32 973

原创 GPIO详解

每个GPIO组(GPIOA)的寄存器是连续的,每个寄存器的不同位字段决定了该组中不同引脚(PA0,PA1)的配置。,访问速度非常快,而变量操作需要通过内存访问,速度较慢。在需要快速响应和低延迟的场景中,寄存器操作是首选。通过内部的P-MOS和N-MOS管的。可以由CMOS或TTL电路组成。

2025-07-06 17:03:11 1167

原创 C++基础

C#/Java是虚拟机型的语言(托管语言),它们都没有头文件并行堆栈是一种调试工具,用于在多线程环境中可视化每个线程的调用堆栈。它允许开发人员在单一视图中查看所有线程的执行位置,从而更方便地调试多线程应用程序ImGUI(Immediate Mode Graphical User Interface)是一个轻量级的、跨平台的、与平台无关的C++图形用户界面库,特别适合于游戏开发和其他实时应用程序,允许开发者使用纯C++代码快速创建和管理用户界面基准测试是一种性能评估方法,通过标准化的测试用例和工具,可以客观

2025-06-27 14:37:29 945

原创 计算机二级(C语言)已过

在C语言中,类型转换需要谨慎处理,尤其是涉及指针、函数指针、结构体等复杂类型时。为了避免无效的类型转换,建议: 1. 明确类型转换的意图。2. 使用显式类型转换(如 `(type) `)来避免编译器警告。3. 确保转换后的类型与目标类型兼容。4. 避免可能导致未定义行为的类型转换,如将非法地址赋值给指针。如果不确定类型转换是否安全,可以查阅C语言标准或使用编译器的警告选项(如 ` - Wall`)来帮助发现潜在问题。printf()函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。

2025-05-09 20:40:58 1317

原创 socket聊天室

【代码】socket聊天室。

2025-03-24 20:41:10 331 1

原创 C51知识点

如果文件名不一致,只要在 .c 文件中正确包含对应的头文件,编译器仍然可以正常编译。在编程中,是否需要将库文件放在工程文件夹中,取决于你使用的开发环境和编译器的配置方式。)是库的接口定义文件,编译器在编译时需要这些文件来解析代码中的函数和变量声明。总之,是否需要将库文件放在工程文件夹中,取决于你的项目需求和开发环境的配置。文件),通常需要将这些文件放在工程文件夹中,并将其添加到项目中。一个函数不能既在主函数中又在中断函数中调用,会导致函数的重入。编程时要使用哪个库,就需要将哪个库放在工程文件夹中?

2025-03-23 15:52:34 504 1

原创 Sqlite3数据库

工具库的使用:程序编写时#include <库名.h>即可调用库中的函数 编译时链接工具库;注意:数据库中不区分字母大小写;SQLite 中的事务是数据库操作中非常重要的一个概念,它用于确保数据库操作的完整性和一致性。

2025-03-22 15:03:15 1298

原创 多线程服务器模型

多线程服务器模型

2025-03-07 18:22:29 201

原创 数据结构算法实现

摘要: 本文展示了多个C语言程序示例:1) exec函数家族的使用,演示了execl和execvp执行命令的方法;2) system函数的自定义实现,通过fork和exec执行shell命令;3) 进程状态监控示例,使用wait和waitpid处理子进程退出状态;4) 字符串匹配算法实现,包括KMP算法(计算next数组进行高效匹配)和暴力匹配算法。这些示例涵盖了进程控制、字符串处理等核心编程技术,展示了系统调用和算法在C语言中的实际应用。

2021-06-27 10:21:49 133

原创 C语言实战

本文展示了多个Linux系统编程和数据结构实现的代码案例。主要内容包括:1) 孤儿进程被1号进程领养的实现;2) 进程链和进程树的创建;3) 父子进程间文件描述符共享的验证;4) 进程不同终止方式的对比;5) 值传递、地址传递和指针交换的实现;6) 二叉树的构建与遍历;7) 文件权限的获取。这些案例涵盖了进程控制、文件操作、指针应用和数据结构等核心编程概念,为系统编程提供了实用参考。

2021-06-21 18:29:05 104

系统集成基于WSL2镜像模式的网络共享技术:实现Linux子系统与Windows局域网及VPN无缝互通方案

系统集成基于WSL2镜像模式的网络共享技术:实现Linux子系统与Windows局域网及VPN无缝互通方案

2026-04-22

VS Code软件开发环境搭建

VS Code软件开发环境搭建

2026-03-05

LVGL移植详细流程图

LVGL移植详细流程图

2026-03-05

LVGL基础使用流程图

LVGL基础使用流程图

2026-03-05

嵌入式技术之LVGL基础之模拟开发和移植

嵌入式技术之LVGL基础之模拟开发和移植

2026-03-05

Jetson Nano专用TensorRT8.2.3+ONNX Runtime GPU预编译包:JetPack4.6/YOLOv8或11一键部署包

(1)提供tensorrt-8.2.3.0-cp38-none-linux_aarch64.whl和onnxruntime_gpu-1.16.0-cp38-cp38-linux_aarch64.whl,严格匹配JetPack4.6(CUDA10.2+Python3.8)环境,规避手动编译耗时与依赖冲突问题‌。 (2)支持YOLOv8/v11模型的TensorRT加速推理,集成ONNX模型转换工具链(ONNX→TensorRT引擎),提升推理速度3倍+‌。

2026-01-28

2026 Jetson Nano部署yolov8或11:CUDA10.2适配PyTorch1.11+TorchVision预编译whl文件

2026 Jetson Nano部署yolov8或11:CUDA10.2适配PyTorch1.11+TorchVision预编译whl文件 Jetson Nano部署yolov8或11 1.JetPack4.6自带的Python3.6跑不动YOLOv11(最低得python3.8) 2.CUDA10.2找不到对应PyTorch版本 本资源编译了适配JetPack4.6的: Python3.8环境 CUDA10.2专属PyTorch1.11 Jetson Nano出厂预装的JetPack4.6版本自带Python3.6,而YOLOv11至少需要Python3.8版本才能运行。用户需要升级系统自带的Python环境,以确保兼容性和性能。CUDA10.2版本在官方渠道难以找到与其适配的PyTorch版本。

2026-01-28

Linux网络编程文档

Linux网络编程文档

2025-10-27

Linux应用开发基础

Linux应用开发基础

2025-08-31

Shell编程课程文档

尚硅谷Shell课程文档

2025-08-31

空空如也

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

TA关注的人

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