- 博客(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
原创 定时器详解
从模式中的复位模式会将计数器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
原创 C51知识点
如果文件名不一致,只要在 .c 文件中正确包含对应的头文件,编译器仍然可以正常编译。在编程中,是否需要将库文件放在工程文件夹中,取决于你使用的开发环境和编译器的配置方式。)是库的接口定义文件,编译器在编译时需要这些文件来解析代码中的函数和变量声明。总之,是否需要将库文件放在工程文件夹中,取决于你的项目需求和开发环境的配置。文件),通常需要将这些文件放在工程文件夹中,并将其添加到项目中。一个函数不能既在主函数中又在中断函数中调用,会导致函数的重入。编程时要使用哪个库,就需要将哪个库放在工程文件夹中?
2025-03-23 15:52:34
504
1
原创 Sqlite3数据库
工具库的使用:程序编写时#include <库名.h>即可调用库中的函数 编译时链接工具库;注意:数据库中不区分字母大小写;SQLite 中的事务是数据库操作中非常重要的一个概念,它用于确保数据库操作的完整性和一致性。
2025-03-22 15:03:15
1298
原创 数据结构算法实现
摘要: 本文展示了多个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无缝互通方案
2026-04-22
Jetson Nano专用TensorRT8.2.3+ONNX Runtime GPU预编译包:JetPack4.6/YOLOv8或11一键部署包
2026-01-28
2026 Jetson Nano部署yolov8或11:CUDA10.2适配PyTorch1.11+TorchVision预编译whl文件
2026-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅