- 博客(686)
- 资源 (4)
- 收藏
- 关注
原创 Nano Banana2,太TM牛逼了!
摘要:谷歌最新发布的Nano Banana 2(Gemini 3 Pro Image)AI绘图模型表现惊艳,在中文海报、漫画、游戏界面、科研配图等场景均有出色表现。通过DeepSider浏览器插件,国内用户可直接使用该模型及GPT、Claude等主流AI工具。新版本具备1K-4K分辨率输出、多图像合成、知识推理等强大功能,特别适合创意设计、科研教育等领域。DeepSider提供便捷的本地化访问方案,无需特殊网络即可体验多款AI大模型。(149字)
2025-11-27 09:39:15
300
原创 STM32 SDIO接口介绍
STM32的SDIO接口是高速读写SD卡的最佳方案,相比SPI具有带宽高、速度快等优势,支持1位/4位数据宽度,最高48MHz时钟频率,并兼容DMA传输以降低CPU占用。通过HAL库可简化SD卡初始化与读写操作,结合FatFs文件系统适用于数据记录、音视频播放等场景。设计时需注意PCB走线、电源稳定性及DMA配置,常见问题包括接线错误和缓存冲突。掌握SDIO接口可显著提升STM32项目的存储性能。
2025-11-16 20:40:39
1014
原创 fatfs文件系统概述
本文全面解析了嵌入式开发中广泛应用的FatFs文件系统。FatFs是由ChaN开发的轻量级FAT文件系统模块,采用ANSI C编写,支持FAT12/16/32和exFAT格式,具有可移植性强、资源占用低等特点。文章详细介绍了FatFs的架构分为应用层、文件系统API、FatFs模块和磁盘I/O接口四层,重点阐述了开发中需要配置ffconf.h和实现diskio.c的关键步骤。通过代码示例展示了文件读写操作,并分析了FatFs的优缺点。文章指出FatFs特别适合需要SD卡支持、PC直接访问或轻量文件系统的嵌入
2025-11-16 20:39:15
752
原创 什么是 IAP 升级?
IAP 升级是一种由设备自身运行程序来完成 Flash 重写的固件更新方式。无需编程器在线升级远程升级自动安全切换版本通常与 BootLoader 配合,构成可靠的双分区升级系统。可以说,任何希望量产并长期维护的嵌入式设备,都离不开 IAP。
2025-11-16 20:17:05
787
原创 BIN 文件和 HEX 文件的区别:嵌入式开发中必须弄清的基础概念
BIN(Binary Image)是一种纯二进制文件。不包含地址信息不包含校验信息不包含元数据文件内容是 MCU 运行时真正加载到 Flash 的“原始字节序列”大小通常与实际使用的 Flash 空间一一对应简单来说,BIN 文件就是编译后的程序代码和数据,按照 Flash 从零地址开始的存储方式直接平铺。如果你的程序从 0x08000000 开始,大小为 32 KB,那么生成的 bin 大小就是 32 KB,文件内容就是 MCU 将要执行的机器指令。文件简单、体积小。
2025-11-16 20:03:22
569
原创 ToDesk:办公与游戏,无界远程体验
ToDesk只需输入设备码和密码,就能连接远端电脑,实现桌面共享、鼠标键盘操作、文件拖拽传输。支持 Windows、macOS、Linux、Android、iOS、鸿蒙 等操作系统,电脑控制电脑、手机控制电脑都行。无论是出门在外一键连家里的主机,帮朋友修电脑,还是出差远控办公,都非常方便。输入设备代码和密码就可以直接连接:ToDesk支持扩展屏和镜像屏的功能:镜像屏可以像操作本地双屏系统一样,将主控的屏幕内容实时投屏到被控设备,1:1对应观看。
2025-11-13 08:40:39
11498
46
原创 Qoder 降价,立即生效!首购 2 美金/月
Qoder CLI:开箱即用的智能终端上个月,Qoder CLI 正式发布,让开发者通过自然语言在终端完成代码生成、调试、部署等任务,实现随处集成,效果不打折。除了极具吸引力的价格,Qoder 在功能上也实现了全面进化:首先,Qoder 集成了全球顶尖的编程模型,并新上线模型分级选择器,提供四类高性能模型池:基础轻量(Lite)、经济高效(Efficient)、极致性能(Performance)与智能路由(Auto),不同任务由最适合的模型无缝切换执行,开发者无需理解模型差异,从而减少认知负担并提升效率。
2025-11-12 15:08:03
464
原创 S32DS新建工程,导入工程,工作空间等讲解
S32DS是恩智浦推出的汽车级MCU/MPU专用IDE,基于Eclipse平台,集成GCC工具链和可视化配置工具,支持S32全系列芯片开发。本文介绍了S32DS的主要特性、组件架构和典型应用场景,并详细演示了新建工程、导入项目到工作空间的操作步骤。工作空间作为开发环境的核心容器,管理项目、保存IDE配置和状态记录。最后还展示了使用JLINK调试器的配置方法,为开发者提供从创建项目到调试的完整流程指导。
2025-11-09 16:47:12
1579
原创 openEuler+ AI深度学习:构建高性能PyTorch训练环境实战
随着人工智能技术的飞速发展,深度学习已成为推动科技创新的核心驱动力。在AI模型训练场景中,操作系统的稳定性、性能优化能力以及对各类硬件加速器的支持程度,直接影响着模型训练效率和研发成本。openEuler作为面向数字基础设施的开源操作系统,凭借其卓越的性能表现、对国产AI芯片的深度适配以及完善的软件生态,正在成为AI开发者的优选平台。当前AI训练环境面临的主要挑战包括:复杂的依赖关系管理、GPU驱动兼容性问题、系统资源调度优化、以及多框架并存的环境隔离需求。本文将深度实践在openEuler22.03 LT
2025-11-09 10:44:36
6030
原创 openEuler容器化实践:从Docker入门到生产部署
通过本次在openEuler上的容器化实践,我们全面掌握了从基础的Docker操作到生产环境部署的完整技能。openEuler提供的稳定系统环境和完善的Docker支持,为容器化应用提供了可靠的运行平台。核心收获✅ Docker基础操作和镜像管理✅ Dockerfile编写和多阶段构建✅ Docker Compose多容器编排✅ 数据持久化和网络配置✅ 监控日志和生产部署下一步方向Kubernetes容器编排CI/CD流水线集成微服务架构实践。
2025-11-08 10:02:11
9088
原创 openEuler边缘计算实践:构建高效边云协同架构
部署架构1个云端控制中心5个车间边缘节点(openEuler)50+工业设备接入实现功能设备实时监控和数据采集本地AI质量检测预测性维护告警生产数据统计分析效果数据响应时间从500ms降至50ms云端带宽占用减少80%本地处理能力提升3倍设备故障预测准确率85%轻量高效: 最小化系统占用<1GB,启动时间<20s性能卓越: iSula容器启动速度提升2.6倍,内存占用减半生态完善: 完整支持KubeEdge、K3s等主流边缘框架稳定可靠。
2025-11-08 10:02:08
8693
原创 openEuler安全特性深度评测:构建企业级安全防护体系
本文深入分析了OpenEuler 22.03 LTS SP3操作系统的安全架构与特性。该版本采用纵深防御策略,集成SELinux强制访问控制、KASLR内存保护、IMA完整性验证等多层防护机制。通过实际配置演示了账户密码策略优化、SSH安全加固等基线配置方法,包括密码复杂度要求、账户锁定策略、密钥认证等关键安全设置。测试验证了OpenEuler满足企业级安全需求,能够有效防御未授权访问、暴力破解等常见攻击。文章为企业构建安全可信的IT基础设施提供了实用参考,展示了OpenEuler在等保合规场景下的技术优势
2025-11-07 10:00:00
6746
原创 openEuler WSL2容器化开发实战:Docker Desktop集成与应用部署
本文介绍了在OpenEuler WSL2环境下使用Docker Desktop进行容器化开发的完整流程。主要内容包括:1)环境配置,包括Docker Desktop安装和WSL2集成;2)实战案例演示如何将Python Flask应用容器化;3)使用Docker Compose编排包含Web应用和数据库的多容器服务;4)开发调试技巧与常见问题解决方法。该方案为开发者提供了轻量级的本地容器化开发环境,相比传统Kubernetes集群更适用于日常开发测试场景,实现了Linux开发环境与Windows系统的无缝融
2025-11-07 10:00:00
6249
原创 STM32Cubemx配置窗口看门狗
IWDG是一个简单的看门狗机制,独立于系统时钟,适用于基本的系统监控场景。WWDG具有更高的灵活性和精度,需要在特定的时间窗口内进行喂狗,适合用于需要更精细监控和更高可靠性的系统。选择哪种看门狗机制取决于系统的具体要求,简单系统通常选择 IWDG,而对于要求精确监控的复杂系统则可能选择 WWDG。
2025-10-20 16:57:37
676
原创 STM32Cubemx配置独立看门狗(IWDG)
独立看门狗(IWDG)是嵌入式系统中的硬件保护机制,用于监测系统运行状态。其核心原理是系统需定期“喂狗”,若超时未收到信号,则自动触发复位,防止死锁或死循环。IWDG独立于主时钟,具有自启动、防故障等特点,可配置超时时间(通常几百毫秒至几秒)。应用场景包括工业控制、低功耗设备等。以STM32为例,配置涉及初始化时钟、设置预分频器及定期喂狗操作。实验显示,若喂狗间隔超过设定时间(如1秒),系统会反复重启。IWDG显著提升了嵌入式系统的可靠性和自恢复能力。
2025-10-19 17:10:00
882
原创 RK3568(使用buildroot添加软件包)
本文介绍了如何在Buildroot中创建自定义软件包。主要内容包括:1)在package目录下新建myapp文件夹;2)编写Config.in文件定义配置选项;3)创建myapp.mk文件指定构建规则;4)可选地添加myapp.hash文件进行源码校验。最后需要在package/Config.in中添加引用,即可通过make menuconfig启用该软件包。通过这种方法,开发者可以方便地将本地或远程的应用程序集成到Buildroot构建系统中。
2025-09-14 14:43:36
1016
原创 RK3568编写自启动脚本
本文介绍了Linux嵌入式系统中自启动脚本的编写方法。自启动脚本通常存放在/etc/init.d/目录下,以S/K开头的数字编号控制启动/停止顺序。脚本包含Shebang、Init信息和case语句三部分,用于处理start/stop/restart命令。文章提供了/mnt/EasyLoggerLinuxDemo程序的自启动脚本示例,说明如何后台运行、停止程序及设置权限,并介绍通过update-rc.d命令注册开机自启。这种方法可实现程序开机自动启动、后台运行和统一管理。
2025-09-14 11:06:47
741
原创 RK3568 PWM驱动代码分析
RK3568 PWM驱动分析摘要 本文详细分析了Rockchip RK3568的PWM驱动实现,包括设备树配置与驱动源码的对应关系。设备树节点定义了寄存器地址、时钟、中断等硬件资源,驱动通过compatible匹配不同芯片版本(如pwm_data_v2)。核心数据结构rockchip_pwm_chip包含PWM控制器信息,驱动初始化时会映射寄存器、获取时钟并注册到PWM子系统。关键函数rockchip_pwm_config()和rockchip_pwm_apply()负责配置周期/占空比和使能控制,通过读写
2025-09-14 10:25:17
930
原创 RK3568 PWM子系统
Linux PWM子系统采用三层架构设计:硬件驱动层实现具体控制器操作(需填充pwm_ops结构体);框架层通过pwm_chip抽象控制器,管理所有PWM通道;消费者层通过统一API调用PWM功能。核心机制是驱动实现硬件差异(pwm_ops),框架提供统一接口(pwm_chip),上层应用只需关注PWM参数(周期/占空比/极性)。设备树绑定后,消费者通过pwm_config()等标准接口操作,框架将其转发至底层驱动完成寄存器配置,实现硬件无关的PWM控制。
2025-09-14 10:15:27
937
原创 RK3568 PWM驱动基础知识
本文介绍了RK3568芯片的PWM驱动基础知识。首先概述PWM在LED调光、电机调速等场景的应用,并解释其核心原理包括频率、占空比等关键参数。接着详细分析RK3568的PWM驱动支持,包括内核子系统和设备树配置,重点解析了PWM15节点的寄存器地址、中断号、时钟等硬件资源描述。最后说明PWM使用流程,从设备树配置到用户空间调用,帮助开发者快速实现对外设的精确控制。RK3568的PWM功能结合Linux子系统,为嵌入式开发提供了灵活的控制方案。
2025-09-14 10:01:58
730
原创 RK3568设备树文件之间的关系
它可以理解为“芯片的通用模板”,任何基于 RK3568 的开发板设备树,最终都会包含它。这个文件就是“某个厂商某个板子的具体硬件描述”,对应 datasheet 里的原理图。它相当于“参考板级配置”,不同厂商做自己的板子时,一般会基于它再做修改。最终合并后,编译生成的。
2025-09-14 09:51:05
791
原创 openssl使用SM2进行数据加密和数据解密
本文介绍了在Linux环境下使用OpenSSL实现SM2算法的完整流程。首先需要安装libssl-dev依赖并确认OpenSSL版本(1.1.1或3.0+)。C语言示例代码演示了如何生成SM2密钥对,使用公钥加密明文,再用私钥解密恢复明文,其中SM3作为默认哈希函数。编译时需链接crypto库,运行后会输出密钥生成成功、密文长度和解密结果。总结指出关键函数:EVP_PKEY_keygen()生成密钥对、SM2_encrypt()加密和SM2_decrypt()解密,推荐使用SM2+SM3+SM4的国密算法组
2025-08-31 15:34:34
1384
原创 SM2国密加密算法
SM2 = 国密椭圆曲线密码标准,包括签名、加密、密钥交换。安全性基于椭圆曲线离散对数问题 (ECDLP)。与 ECDSA / ECIES 不同之处在于:固定曲线参数、引入用户标识、配合 SM3。电子签名、电子政务、金融安全、TLS 国密套件、区块链。
2025-08-31 15:25:55
1033
原创 MD5算法
MD5是一种128位的消息摘要算法,用于数据完整性校验、数字签名和口令保护等场景。它具有输入任意长度、输出固定长度、单向性和计算速度快的特点,但存在碰撞攻击风险,已不再适用于安全场景。在Linux下可通过OpenSSL库调用MD5 API,示例代码展示了如何计算字符串和文件的MD5值。当前推荐使用更安全的SHA-256或SM3算法替代MD5。
2025-08-31 15:20:18
779
原创 【百宝箱开放平台】上线啦!AI应用开发者看过来,10亿Tokens免费领~
通过提供OpenAPI、前后端SDK(Python、Java、Nodejs),以及可一键在Web页嵌入智能体对话界面的WebSDK等服务,助力用户在自己的业务流程中快速集成智能体对话、大模型效果盲测等多种AI应用场景,助力业务拥抱AI。平台支持智能体对话、大模型效果盲测等多种 AI 场景,帮助用户快速将 AI 融入业务流程,加速业务智能化升级。🎁 立即行动:访问平台官网 https://www.tbox.cn/open/open-introduce,注册即享开发资源与Token优惠,加速您的AI应用落地!
2025-08-11 10:09:01
404
原创 uinput
Linux的uinput机制允许用户空间程序创建虚拟输入设备,模拟键盘、鼠标等物理设备的输入行为。通过/dev/uinput接口,程序可以设置设备属性、发送输入事件并同步到内核。典型应用包括自动化测试、游戏控制、远程桌面等场景。使用时需加载uinput模块、处理权限问题,并注意同步事件通知内核。该机制通过input_event结构传递事件,最终由内核处理为真实输入,为系统级输入仿真提供了灵活的用户态解决方案。
2025-07-27 20:15:37
629
原创 input_handler和input_dev详解
摘要: Linux输入子系统采用分层架构,由input_dev(设备驱动层)、input_handler(协议驱动层)和input_handle(连接桥梁)构成。设备驱动通过input_dev注册硬件(如触摸屏、键盘),设置支持的事件类型;协议驱动通过input_handler提供用户空间接口(如/dev/input/eventX)。当两者匹配成功后,input_handle建立绑定关系,实现事件传递。核心流程为:驱动注册设备→协议处理器匹配→创建事件节点→用户程序读取输入。该设计实现了输入设备的统一抽象与
2025-07-27 09:53:05
1093
原创 OTG原理讲解
摘要:USB OTG(On-The-Go)是USB 2.0的重要功能,允许设备在主机和从机间动态切换,实现设备间的直接通信。其核心机制是通过ID引脚电平判断角色:Micro-USB中接地为Host,悬空为Device;USB-C则通过CC引脚协商。电路设计需处理ID引脚连接和VBUS电源控制,MCU根据ID状态配置USB控制器模式。典型应用包括手机连接U盘、键盘等外设,极大扩展了移动设备的连接能力。
2025-07-26 20:20:02
2230
原创 USB驱动(URB)
本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。
2025-07-25 10:29:18
598
原创 UDP通信是否需要使用bind,connect,send等函数
本文系统讲解了UDP通信中connect、bind、send等函数的使用场景。bind函数用于绑定本地地址,接收端通常需要调用,而发送端一般不需要;connect函数在UDP中并非必须,但能简化固定对端通信并提升安全性;send/recv需配合connect使用,sendto/recvfrom则适用于多对多通信。文章通过对比表格和代码示例说明各函数区别,建议根据通信需求选择:固定对端用connect+send/recv,灵活通信用sendto/recvfrom。最终强调UDP的"connect&q
2025-07-23 17:03:32
695
原创 C++中的虚继承
虚继承是为了解决多重继承中基类子对象被重复继承的问题,确保只有一份共享的基类子对象。概念描述虚继承为了解决菱形继承中基类重复的问题实现效果所有派生类共享一份虚基类子对象语法构造函数只有最底层派生类负责构造虚基类。
2025-07-23 14:44:33
499
原创 UDP中的单播,多播,广播(代码实现)
本文介绍了UDP三种通信方式的实现方法:单播(Unicast)通过指定目标IP和端口发送数据;广播(Broadcast)需要设置SO_BROADCAST选项向子网广播地址发送;多播(Multicast)通过多播组地址(224-239)发送,接收方需用IP_ADD_MEMBERSHIP加入组播。三种方式发送均使用sendto,接收都需bind端口,但广播和多播需要额外设置选项。
2025-07-20 16:16:00
560
原创 UDP中的单播,多播,广播
本文介绍了UDP协议的三种通信方式:单播、广播和多播。单播是一对一通信,使用单播地址,适用于点对点传输;广播是一对多通信,向子网内所有主机发送数据,适用于局域网服务发现;多播则是一对多通信,只发送给加入指定多播组的主机,可跨子网传输,适用于视频直播等场景。文章对比了三者的特点、地址类型、通信范围和网络开销,并提供了C语言代码示例。IPv6已取消广播仅保留单播和多播,多播需要网络设备支持IGMP/MLD协议。
2025-07-20 16:13:58
809
原创 FTP实现断点续传
本文介绍了一个使用C语言实现支持断点续传的FTP上传客户端方案。该方案基于标准FTP协议,不依赖第三方库,通过SIZE、REST和STOR命令实现断点续传功能。关键实现包括:采用被动(PASV)模式建立数据连接,分离控制连接与数据连接,通过SIZE获取远程文件大小确定续传偏移量,使用REST设置续传点,最后用STOR完成剩余数据上传。文中提供了完整的C代码实现,包含FTP客户端结构体、命令发送、响应解析、登录认证、文件大小查询和断点续传上传等核心功能模块,可有效应对网络中断导致的上传失败问题,提高大文件传输
2025-07-20 09:28:40
1225
原创 TCP断点续传
摘要: 本文详细解析TCP断点续传原理,并通过C语言实现秒级续传功能。断点续传通过记录文件偏移位置,避免网络中断后重复传输已完成部分。文章提供完整的客户端和服务端代码,客户端发送文件名和初始偏移,服务端返回已接收长度并定位续传起点,支持多线程并发处理。此外,还提出优化方向如协议标准化、完整性校验等,帮助开发者构建更健壮的文件传输系统。核心逻辑清晰,适合技术博客或公众号分享。
2025-07-20 09:20:21
852
原创 input子系统
Linux Input子系统是内核中用于管理各类输入设备的统一框架。它采用三层架构:驱动层负责硬件交互,核心层提供注册和事件上报接口,处理层通过/dev/input节点向用户空间提供访问。主要数据结构包括input_dev(设备描述)、input_event(事件封装)和input_handler(事件处理模块)。驱动开发涉及设备分配、属性设置、注册和事件上报流程,用户空间可通过读取设备文件获取事件。系统还支持虚拟输入设备(uinput)和提供多种调试工具,广泛应用于嵌入式设备、触摸屏、游戏手柄等场景,实现
2025-07-15 10:57:12
751
原创 libusb的同步和异步
本文介绍了 libusb 库中的同步与异步 USB 传输机制。同步传输简单易用但会阻塞线程,适合简单应用;异步传输非阻塞且性能更高,但编程复杂度较大,适合高速数据传输场景。文章详细讲解了两种传输方式的操作流程、关键函数和示例代码,并对比了它们的特性差异。最后总结了常见错误排查方法和使用建议,推荐从同步传输入门,逐步过渡到异步实现,同时强调了异步模式下必须正确处理事件的重要性。
2025-07-13 16:51:45
687
原创 使用libusb读取鼠标数据
本文介绍了使用libusb库读取USB鼠标数据的方法。主要内容包括:通过libusb_init初始化USB通信,获取设备列表并查找符合HID鼠标协议的设备(bInterfaceClass=3,bInterfaceProtocol=2);找到中断传输端点后,使用libusb_open打开设备并声明接口;最后通过libusb_interrupt_transfer循环读取鼠标数据包(通常每8ms发送一次),解析其中的按键状态和位移信息。文章提供了完整的代码框架,实现不依赖内核驱动直接与USB设备通信的功能。
2025-07-13 14:42:51
439
原创 理解 USB 的配置信息与接口信息:深入 libusb 的描述符结构
本文深入解析了USB设备的配置(Configuration)与接口(Interface)概念及其在libusb库中的数据结构。USB配置代表设备的一种工作模式,包含多个接口;每个接口描述设备的一项功能,如HID或音频接口,并可具有多个备选设置。libusb提供了三个关键结构体:libusb_config_descriptor表示配置信息,libusb_interface管理接口及其备选设置,libusb_interface_descriptor描述具体接口特性。文章还展示了通过libusb获取和打印接口信息
2025-07-13 14:34:56
1012
原创 HID协议
HID(人机接口设备)协议是一种标准化的通信协议,用于规范计算机与鼠标、键盘等交互设备的数据传输。该协议通过描述符系统定义设备功能,核心是Report Descriptor,它规定了数据的组织格式。HID设备使用Input、Output和Feature三种报告类型进行双向通信,采用USB中断传输确保实时性。其优势包括免驱支持、跨平台兼容性和高度可配置性,适用于从标准外设到自定义设备的开发。相比CDC和MSC协议,HID在实时交互场景中更具优势,是嵌入式设备开发的理想选择。
2025-07-12 10:48:57
813
Cmake 3.27版本
2023-07-16
SG90舵机使用手册pdf
2023-06-13
STM32F407智能小车学习代码
2023-06-13
基于STM32智能小车
2022-12-17
智能指针的类型方法及使用方法
2023-03-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅