自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(461)
  • 资源 (16)
  • 收藏
  • 关注

原创 linux下实现U盘和sd卡的自动挂载

2、在/etc下的mdev.conf文件中加入(如果没有这个文件,则新建一个)3、在/etc下建立hotplug文件夹,并在该文件夹下建立两个文件。1、在/etc/init.d/rcS中加入以下语句。

2025-01-11 22:39:16 511

原创 嵌入式linux 内核启动时动态加载驱动模块的方法

手头有个项目底层基本结束,所有的驱动都已经写好,并且调试通过了,但是考虑到每次使用时都手动加载驱动,岂不是很“蠢”,能自动的事怎么能手动呢?于是开始折腾“linux开机自动加载驱动”,百度,谷歌了半天,怎么感觉说的都不清楚:为毛他们说的文件、文件夹我都没有?难道我用的是假的文件系统,假的内核?唯一靠谱的就是:在 /etc/rcx.d 文件夹下添加shell脚本,再让脚本去 insmod或modeprob 自己的驱动。

2025-01-10 20:03:46 623

原创 千兆宽带和全屋WiFi覆盖

路由器能覆盖的面积,根据房子的格局不同而不同。市面上的路由器信号都差不多(那些看上去很牛逼,很多天线的路由器,信号也好不到哪里去!),一个路由器想要覆盖整个房子,很难!于是乎,我有了做全屋wifi的想法。

2025-01-06 14:43:28 1312

原创 C++深拷贝和浅拷贝的区别

在 C++ 中,浅拷贝和深拷贝是处理对象复制时非常关键的概念,尤其是当对象内部有指针成员指向动态分配的内存时。对于指针成员,浅拷贝只复制指针的值(即内存地址),而不复制指针所指向的数据。这意味着原对象和拷贝对象的指针成员将指向同一块内存地址。选择浅拷贝还是深拷贝取决于具体情况,但在涉及到动态内存管理的场景下,深拷贝通常是必要的,以确保数据的独立性和程序的稳定性。这样,原对象和拷贝对象的指针成员就分别指向不同的内存地址,互不干扰。当一个对象被浅拷贝时,所有的成员变量都会直接复制其值,包括指针类型的成员变量。

2024-12-27 17:55:45 650

原创 细谈 C++ 返回传值的三种方式:按值返回、按常量引用返回以及按引用返回

C++ 的代码很难看懂,也许就在这些方面,一方面入参的四种方式,一方面出值的三种方式。相互组合,就会让人觉得晦涩难懂。其实好好深入到里面弄清楚其里面的含义,也就比较好理解了。这篇和上一篇写传参四种方式的博客写的非常认真,也希望能够对 C++ 初学者能有一些帮助。

2024-12-26 19:42:49 726

原创 rk3588(七):GPIO简介及使用

原文链接:https://blog.csdn.net/qq_32636415/article/details/134918848在 RK3588 中,有只支持 1.8V,和支持 1.8V/3.3V 两种电压可配置,共两种类型的 GPIO。Core-3588J 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分,常用以下公式计算引脚:GPIO pin脚计算公式:pin = bank * 32 + numberGPIO 小组编号计

2024-12-02 14:19:11 1278

原创 Ubuntu20.04下安装VSCode(配置C/C++开发环境)和设备树插件用于嵌入式开发

vscode-icons , VSCode 图标插件,主要是资源管理器下各个文件夹的图标。用这个命令安装deb文件:sudo dpkg -i <package-name.deb>进入VSCode官网Visual Studio Code,下载deb版本。在左侧扩展商店中查找 ”chinese“选第一个安装,安装好后重启软件。在左侧扩展商店中查找 ”DeviceTree“安装,,设备树语法插件。在左侧扩展商店中查找 ”C/C++“选第一个安装。在左侧扩展商店中查找 ”Json“选第一个安装。

2024-11-28 17:52:12 671

原创 【迅为电子】RK3568驱动指南|第十七篇 串口-第199章 串口子系统框架

在串口通信协议和串口通信接口类型的基础上,串口子系统框架为串口设备的驱动和管理提供了完整的架构。rx”,“tx”打开tx dma、“rx”打开rx dma、“!pinctrl-names 和 pinctrl-0:用于串口设备的管脚控制,以配置和管理串口设备的引脚设置。串口子系统框架的层级设计将串口设备的功能分解为不同的层次,实现了功能的模块化和抽象化,方便开发者进行串口设备的驱动开发和维护。reg:指定串口设备的地址和大小,0xfe6d0000 是串口设备的基地址,0x100 表示地址空间的大小。

2024-11-27 21:15:48 698

原创 瑞芯微RK3568驱动配置之十串口

瑞芯微RK3568驱动配置之十串口Chaptet1 瑞芯微RK3568驱动配置之十串口Chapter2 创龙瑞芯微RK3568设备树1(修改设备树GPIO和串口)前言基础题外话内容1.GPIO2.串口不同总结后续Chapter3 QT串口大量数据动态实时显示(三)========“customplot绘图步骤”前言第一部分: 串口接收大量数据动态显示的难点串口大量数据QT接收时问题的原因:选择customplot绘图的原因:Chapter4 创龙瑞芯微RK3568参数修改(调试口波特率和rootfs

2024-11-27 20:55:03 1016

原创 Linux驱动开发(速记版)--设备树插件

*Linux 4.4之后引入了动态设备树,其中的设备树插件(Device Tree Overlay)是一种扩展机制,允许在运行时动态添加、修改或删除设备节点和属性。**设备树插件机制通过DTS(设备树源文件)定义,提供了一种灵活配置硬件设备的方式,无需重新编译整个设备树,也无需重启系统即可进行硬件配置更改。在 linux 源码中 linux_sdk/kernel/Documentation/filesystems/configfs 目录下的 configfs.txt。是设备树插件的帮助文档。

2024-11-22 22:32:01 1107

原创 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题

设置缩放比例,调节所有字体缩放的倍数,如我设置1.5倍大小,自己根据自己的电脑分辨率定。屏幕分辨率太高了,导致整个系统字体看起来过小。安装完成后,在终端输入下面命令,弹出优化窗口。安装gnome-tweaks桌面配置工具。输入数字完成后,按下enter回车键即可。

2024-11-18 19:52:23 557

原创 Qt 通用pro配置

如果指定 TEMPLATE为 lib模板,且未指定 CONFIG为静态库或者动态库,则默认生成动态库。提供一个通用的Qt pro工程配置。

2024-11-16 16:21:04 358

原创 VMware 17虚拟Ubuntu 22.04设置共享目录

lang=zh_cn。笔者按官方文档https://docs.vmware.com/en/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-AB5C80FE-9B8A-4899-8186-3DB8201B1758.html,以及vmhgfs-fuse -h示例,使用vmhgfs-fuse .host:/ /mnt/hgfs来挂载共享目录,可是还是无法显示出来。是的我认为是我的,共享文件挂载问题,很多文章的挂载过程比较简单,甚至挂载过后依然无效。

2024-11-15 11:17:57 1263

原创 linux下RX8010SJ实时时钟芯片(RTC)的读写

由于项目的需要在ARM嵌入式板子上挂上了一颗EPSON的RX8010实时时钟芯片,为数据采集提供可靠的时间。RX8010内置了具有温补的晶振,可以简化设计,而且也不贵,所以就选择了它。其中rx8010为RX8010驱动注册的名称,不能为其它字符,而0x32则为该芯片在I2C总线上的通信地址。上面的命令将合成的字符串写入new_device,然后内核就会查找到加载的RX8010驱动,将地址传入,再由驱动程序与实际芯片进行通信,如果通信正常则完成设备的注册,生成设备文件/dev/rtc1。

2024-11-14 10:24:50 943

原创 【全志T113】RTC时钟芯片PCF8563移植驱动流程记录

硬件部门交付的主板上外挂了一颗RTC时钟芯片PCF8563,我需要实现pcf8563的驱动、外部rtc同步到系统、开机自动同步时间等工作。这类时钟芯片大多数是通过i2c通讯和soc进行连接,而且linux内核自带了pcf8563的驱动,如果顺利的话,开发起来是非常顺利的。但是由于不熟悉流程,所以踩了很多坑,写下来作为记录供后人参考。

2024-11-14 09:16:25 1385

原创 Qt生成随机数详细指南(更现代化的QRandomGenerator类)

Qt提供了强大的随机数生成功能,主要通过QRandomGenerator和QRandomGenerator64类来实现。这些类不仅提供了生成整数和浮点数随机数的方法,还支持生成指定范围内的随机数。虽然旧的qrand()函数仍然可以使用,但高版本已经弃用,不再推荐。

2024-11-11 14:09:36 1391

原创 QJson-趟过的各种坑(先坑后用法)

rapidjson是腾讯的开源json解析框架,用c++实现。由于全部代码仅用header file实现,所以很容易集成到项目中。rapidjson的性能也非常出色。

2024-11-09 17:29:33 528

原创 Ubuntu中以root身份运行Qt创建的项目

使用Qt开发项目时遇到了一个问题,项目要调用串口时会需要root权限,而当我们使用桌面启动Qt creator使用的是用户身份,在debug或run项目时会出现权限不够的状况。可以在终端直接找到项目的bin文件以sudo权限运行,但是太过繁琐,不能每次都这样去调试。

2024-11-09 16:00:33 591

原创 【Qt问题】解决 Cannot retrieve debugging output

本文介绍了在Qt开发过程中遇到的’Cannot retrieve debugging output’问题及其解决方法。该问题可能由于同时运行了两个Qt软件导致,解决方案包括关闭其中一个Qt实例或确保项目在单个Qt环境中打开。这时需要打开一个选项:工具->选项->构建和运行->default for “Run in terminal”:由disabled改为enabled。

2024-11-07 17:02:59 584

原创 Qt QQueue 安全的多线程队列、阻塞队列

public://唤醒等待队列中的一个线程(来自wait)T take()private:这个 BlockingQueue类使用QMutex和QWaitCondition来保证线程安全,并实现了put、take、isEmpty和size等方法。其中,put方法用于往队列中插入元素,take方法用于从队列中取出元素,isEmpty方法用于判断队列是否为空,size方法用于获取队列中元素的数量。

2024-11-06 16:31:18 802

原创 QtRO(Qt Remote Objects)分布式对象远程通信

Qt Remote Objects(QRO)是Qt提供的一种用于实现远程对象通信的机制。QtRO支持两种类型的通信:RPC(远程过程调用)和LPC(本地进程通信)。RPC(远程过程调用)包括以下几种类型:基于HTTP协议的RPC:例如Dubbo、Thrift等。基于二进制协议的RPC:例如GRPC、Hetty等。基于TCP协议的RPC:例如RMI、Remoting等。LPC包括基于共享内存的通信和基于消息传递的通信。总的来说,QtRO类似于平时的socket通信、串口通信、信号槽通信。

2024-11-05 19:40:55 673

原创 QT5串口多线程--派生类加moveToThread

之前讲过继承QThread,在虚函数run()中实现线程里的工作。这是qt4.6之前的方法,目前官方推荐的方法,是继承QObject类,再用方法moveToThread来将QObject派生类移动到新线程中去,这样QObject派生类定义的信号和槽的事件响应行为,都会发生在新的线程中。这个方法非常简单。下面还是以串口通讯作为例子,这次不用窗口,用控制台的方式。

2024-11-05 15:15:43 810

原创 Qt 彻底搞懂 SUBDIRS 的作用

本文主要介绍 qmake 的SUBDIRS变量在多项目工程中的应用。当Qt项目规模比较小的时候,我们用一个工程就可以将所有源码文件组织起来,而不影响编译效率。但是随着项目规模的增加,只用一个工程组织所有的文件就不合适了,这时可以考虑将项目按照功能拆分成多个子工程,而SUBDIRS就是用来将多个子工程组织在一起的qmake变量。每个Qt工程文件中都有一个TEMPLATE变量,Qt通过该变量的值决定如何构建工程。TEMPLATE常用的类型有三种,见下表。

2024-11-04 12:02:17 898

原创 SDK设计心得之接口设计

嗯,感觉良好,然后有一天,有一个应用只接入第二个平台而不接入第一个平台,我们第一次懵逼了,但是当时偷懒了,没有根本解决这个问题,而是选择虽然不接入第一个平台,也去第一个平台配置这个字段~~~这就已经很傻了,还不赶紧改,第二波就来了,第一个平台忽然调整了那个配置字段,弃用了,换了新的字段来标示,同时值也变化了(他们做了兼容,可以同时支持新旧字段),但是第二个平台就瞬间跪了,只能二选一,用老的值,新版本有问题,用新的值,老版本有问题,瞬间煞笔了~~好吧,在举个实际的例子,发现所有的经验都是血泪史,要哭了啊。

2024-11-04 11:52:46 846

原创 Qt中的动态链接库编程(Q_DECL_IMPORT、Q_DECL_EXPORT)

生成Test项目,输出Test.exe。在IAnimal接口中,我们定义了三个纯虚函数Eat()、Run()和 Sleep(),表示吃、跑和睡眠的动作,这是抽象的,因为不同的动物有不同的吃相和睡眠姿态,而世间的动物何止千千万——无所谓,让这些具体动物的不同 表现交给IAnimal插件的编写者发挥吧——这就是接口的魅力,加上插件的思想,整个应用程序就变成开放的,可扩展的了!COM是一个很成功的例子,只要符合COM的规范,我们就能编写出很好的DLL来,然而COM是微软私生的,要想跨平台,我们还得另找它路。

2024-11-04 11:45:48 1044

原创 什么是C++模块化系统?C++20的模块化系统

C++20引入的模块化系统是一种新的代码组织和编译机制,它旨在替代传统的头文件机制,提供更好的代码组织、更快的编译速度和更强的封装性。通过减少冗余的头文件解析和宏定义传播,模块可以显著减少编译时间。模块提供了更好的封装,减少了不必要的依赖暴露。模块可以更清晰地表达模块间的依赖关系,提高代码的可维护性。C++20的模块化系统通过引入模块声明和导入,提供了一种替代传统头文件机制的现代化解决方案。模块化系统不仅减少了编译时间,增强了代码的封装性,还改善了代码的组织和可维护性。

2024-11-02 09:18:58 1090

原创 C++接口:构建模块化与可扩展的软件架构

在C++中,接口通常指的是一组纯虚函数,这些函数定义了一个类必须实现的行为。接口本身不提供任何实现,它的主要目的是定义一个契约,任何实现该接口的类都必须遵守这个契约。提供一种方式来定义类之间的协议。促进代码的模块化和解耦。支持多态,使得代码更加灵活和可扩展。

2024-11-02 09:09:53 703

原创 SOLIDWORKS CAM数据无法恢复,因为已检测到轻化零件

SolidWorks保存时一直提示“SOLIDWORKS CAM数据无法恢复,因为已检测到轻化零件。解决方法:打开插件选项卡,取消勾选“SolidWorks CAM 2018”即可。

2024-10-31 14:18:18 816

原创 C++编程法则 静态成员函数和非静态成员函数之间的相互调用

其生命期和类对象是异步的,(而且静态语意说明即使没有类实体的存在,其静态数据成员的实体也是存的)这个时候对象的生命期还没有开始,如果你要到类中去初始化类静态数据成员,让静态数据成员的初始化依赖于类的实体,,那怎么满足前述静态语意呢?但是在有些情况下只能使用静态成员函数,比如类内绑定自身成员函数作为回调函数,这种情况在开启多线程时很常见,如果不想将回调定义为全局那只能定义为类静态了,为了避免过度破坏封装类中应当尽量不要让类静态成原函数调用类成员。能在类中初始化的成员只有一种,那就是静态常量成员。

2024-10-29 08:26:12 1053

原创 ubuntu18.04下载国内镜像及安装事项

Debian是一种自由的操作系统,它基于Linux内核和GNU项目的软件。Debian的目标是提供一个稳定、安全、高效和易于使用的系统,适用于各种硬件平台和应用场景。Debian的特点包括:丰富的软件包:Debian拥有超过60000个软件包,涵盖了各个领域,如办公、教育、游戏、编程、科学、多媒体等。用户可以通过apt工具方便地安装和更新软件包。多架构支持:Debian支持多种处理器架构,如x86、x86_64、arm、mips、ppc等。用户可以根据自己的硬件选择合适的版本。

2024-10-28 08:47:14 1673

原创 QT获取本机所有IP地址以及修改本机IP(注意区分Windows和Linux环境)

它提供了获取本地系统中所有网络接口的信息的能力,并允许访问与这些接口相关的属性,比如IP地址、硬件地址、接口名称等。上面代码中Qt::CaseSensitivity 为枚举类型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的灵敏度,例如,查看设备上所有网络接口的状态、检测网络连接问题、获取接口相关信息等。每个 QNetworkInterface 对象包含接口的属性,如硬件地址、接口名称、标志(如是否为环回、是否可用、是否为无线等)。

2024-10-21 19:34:13 957

原创 Ubuntu16.04安装openssl库

1.首先去openssl官网下载源码www.openssl.org/source/(我下载的是openssl-1.1.1f版本)2.把源码包移动到进usr/local目录下(要在root权限下进行)5.进入目录cd /usr/local/openssl-1.1.1f。4.压缩tar xfz openssl-1.1.1f.tar.gz。7.测试openssl是否安装成功openssl version。3.进入usr/local目录 cd /usr/local。再次查看openssl版本,成功。

2024-10-19 19:23:10 541

原创 嵌入式Linux开发板配置静态IP

修改interfaces配置文件,普通用户interfaces文件权限只可读,首先切换到root权限。文件里添加如下信息,对应于以太网接口配置的网口信息,键盘按Esc,输入:wq 保存退出即可。

2024-10-15 11:46:19 289

原创 嵌入式C语言之结构体封装函数

由于函数指针的定义和使用都在结构体内部,因此修改或调整代码时,只需要修改结构体中的函数指针定义或调用方式,而不需要修改其他部分的代码,从而使得代码更加健壮、易于维护和修改。这种方法可以将代码的复杂性分解到不同的模块中,降低了代码的耦合性,提高了代码的可读性和可维护性。更好的隐藏实现细节:结构体封装函数使得函数的实现细节被封装在结构体内部,只有结构体暴露给外部的函数指针,实现了良好的封装和信息隐藏。值得注意的是,在实际应用中,我们需要根据实际情况修改函数的实现,以及结构体中的成员变量和函数指针的数量和类型。

2024-10-14 15:30:29 851

原创 【嵌入式C语言】crc32校验的c语言实现

一种的多项式也有很多种变化,输入输出方式也有区别,有一些初始值是0,有一些初始值是0xFFFFFFFF,有一些直接返回,有一些异或返回,因此,CRC校验很难用一个代码兼容全部,只能根据具体项目修改相关参数。对于不同类型的文件所使用的多项式以及算法不同,对于不同的生成多项式所生成的crc32表不同,不同的算法也会产生不同的结果。生成多项式采用0xEDB88320的时候,生成的crc32Table的算法如下。CRC算法查表法很常见,但表是怎么来的,看了上面的代码应该就可以清楚了。查表法CRC32校验算法。

2024-10-14 13:29:31 1383

原创 VMware导入vmdk文件(亲测有效)

硬件兼容性:默认选择最新的行,因为和本地安装的vmware版本有关,这里演示的版本是:VMware® Workstation 17 Pro。根据机器的内存选择虚拟机分配的内存,建议20GB及以上,如果机器内存不够32G,那么虚拟机就分配机器内存的60%根据cpu的数量和每个cpu的内核数选择,建议cpu的数量为机器cpu数量的50%新建虚拟机向导,点击浏览按钮,选择后缀为vmdk的文件,然后点击下一步。修改虚拟机的名称,不修改的点击下一步。网络类型默认选择NAT,点击下一步。点击开启此虚拟机,流程完毕。

2024-10-12 13:52:57 1857

原创 Solidworks斜接法兰快速绘制钣金箱体

Solidworks斜接法兰快速绘制钣金箱体Chapter1 Solidworks斜接法兰快速绘制钣金箱体Chapter1 Solidworks斜接法兰快速绘制钣金箱体

2024-09-30 16:52:14 355

原创 Altium Designer软件使用记录05-PCB叠层设计

正片就是平常用在走线的信号层,既走线的地方是铜线,用Polygon Pour进行大块敷铜填充。

2024-09-13 09:58:56 1534

原创 Altium Designer常用操作备忘笔记

Altium Designer版本:AD22.11。

2024-09-13 09:05:35 695

原创 Altium Designer18集成库的创建及安装

很多用过立创EDA的小伙伴都会被他们里面自带的库深深吸引着,同时操作也十分方便。本文将交给大家如何迁移一个已经在立创画好的工程完完全全的“拷贝”到AD。一、准备工具1.立创EDA(专业版)一定要专业版,专业版比标准版功能多了不少,并且专业版跟标准版的工程不互通!注意:Altium Designer和SOLIDWORKS 最好是同版本的。即Altium Designer19对应SOLIDWORKS 2019或SOLIDWORKS

2024-09-12 09:34:26 1916

QT5串口多线程-派生类加moveToThread

QT5串口多线程--派生类加moveToThread

2024-11-05

max31865驱动代码,stm32

max31865驱动代码,stm32

2023-12-14

AD7124-STM32-ADI官网例程

AD7124-STM32-ADI官网例程

2023-12-02

SolidWorks所有系统快捷键合集

SolidWorks所有系统快捷键合集

2023-11-22

test-toolbutton测试代码

test-toolbutton测试代码

2023-11-03

icoformat安装ico插件(使其支持ico存储格式)

ps手机计算机图标教程,手绘设计精美手机APP软件图标的PS教程

2023-11-01

Qt-AES加密库,密钥长度: AES-128 AES-192 AES-256

Qt-AES加密库

2023-05-10

Book_pImpl.zip

C++的Pimpl惯用法演示

2022-05-20

QTcpServer运行在子线程

QTcpServer运行在子线程

2022-05-17

qt与JavaScript交互

qt与JavaScript交互

2022-05-03

allegro快捷键,增加自定义部分

allegro快捷键,增加自定义部分

2022-04-06

js_test2(用QJSEngine相关类实现).zip

Qt实现JavaScript与C++混合编程

2022-03-01

js_test.zip

Qt实现JavaScript与C++混合编程

2022-03-01

tcp_server.c

tcp_server.c

2022-02-16

ec200s 4G模块调试工具

个人编写,win10平台,请先打开串口,再发送指令到4g模块

2022-02-15

FreeRTOSv202112.00.zip

FreeRTOS+ libraries implement addon functionality for the FreeRTOS kernel. Unlike the FreeRTOS core libraries, FreeRTOS+ libraries have a dependency on the FreeRTOS RTOS kernel.

2022-01-04

W5500IO模块尺寸图.pdf

W5500IO模块尺寸图.pdf

2021-12-23

W5500IO原理图-集成.pdf

W5500IO原理图-集成.pdf

2021-12-23

libmodbus-3.1.6(win10_vs2017_x64编译后).zip

libmodbus-3.1.6(win10_vs2017_x64编译后).zip

2021-12-22

libmodbus-3.1.6(win10_vs2017_x64编译后).zip

libmodbus-3.1.6(win10_vs2017_x64编译后).zip

2021-12-22

cJSON(STM32CubeMX5.3.0).rar

cJSON test example based on stm32f103ze using MDK5.25 and STM32CubeMX5.3.0

2021-10-25

freemodbus_v1.6.0_port(stm32f103).zip

freemodbus_v1.6.0_port(stm32f103).zip

2021-10-23

netassist网络调试助手修正版V4.3.zip

调试助手

2021-03-20

空空如也

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

TA关注的人

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