- 博客(856)
- 资源 (26)
- 问答 (1)
- 收藏
- 关注
原创 Visual Studio已更新为17.14+集成deepseek实现高效编程
使用 Copilot 实现重构旨提高你在此应用场景中的工作效率,具体体现在让你能够借助 GitHub Copilot 自动实现或在方法中添加重要功能。遇到仅包含 NotImplementedException 引发的空方法时,可以在该 throw 行上选择灯泡 (CTRL+.),然后选择“使用 Copilot 实现”重构****,而 Copilot 将根据现有代码库、方法名称等填写方法的所有内容。利用此功能,可节省宝贵的时间和精力,让你能够更专注于编码,减少用于文档的时间。打开vs2022-工具-选项。
2025-05-18 17:19:02
1275
4
原创 STM32 | FreeRTOS 递归信号量
拥有互斥量的任务必须调用API函数xSemaphoreGiveRecursive()将拥有的递归互斥量全部释放后,该信号量才真正被释放。比如,一个任务成功获取同一个互斥量5次,那么这个任务要将这个互斥量释放5次之后,其它任务才能获取到它。互斥量的使用比较单一,因为它是信号量的一种,并且它是以锁的形式存在。在初始化的时候,互斥量处于开锁的状态,而被任务持有的时候则立刻转为闭锁的状态。如果创建成功则返回一个递归互斥量句柄,用于访问创建的递归互斥量。使能递归互斥量,详细文件在FreeRTOS.h。
2025-05-17 15:28:08
431
原创 STM32 | FreeRTOS 互斥信号量
互斥信号量是一种特殊的二值信号量,用于实现对临界资源的独占式处理。与普通信号量不同,互斥信号量支持所有权、递归访问和防止优先级翻转的特性。互斥信号量的状态只有开锁或闭锁两种,任务持有互斥信号量时处于闭锁状态,释放后则开锁。FreeRTOS中的互斥信号量通过优先级继承机制降低优先级翻转的影响,即当高优先级任务申请被低优先级任务占用的资源时,系统会临时提升低优先级任务的优先级,以减少高优先级任务的阻塞时间。互斥信号量适用于多任务环境下对临界资源的保护,确保资源的独占访问,但不能在中断服务函数中使用。
2025-05-17 15:24:03
896
原创 STM32 | FreeRTOS 事件标志组
但是它与信号量不同的是,事件的发送操作是不可累计的,而信号量的释放动作是可累计的。而任务2对事件3与事件5感兴趣(逻辑与),当且仅当事件3与事件5都发生的时候,任务2才会被唤醒,如果只有一个其中一个事件发生,那么任务还是会继续等待事件发生。在某些场合,可能需要多个时间发生了才能进行下一步操作,比如一些危险机器的启动,需要检查各项指标,当指标不达标的时候,无法启动,但是检查各个指标的时候,不能一下子检测完毕啊,所以,需要事件来做统一的等待,当所有的事件都完成了,那么机器才允许启动,这只是事件的其中一个应用。
2025-05-17 15:17:57
687
原创 STM32 | FreeRTOS 消息队列
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将被阻塞,用户还可以指定阻塞的任务时间 xTicksToWait,在这段时间中,如果队列为空,该任务将保持阻塞状态以等待队列数据有效。3. 在获取队列中的消息时候,我们必须要定义一个存储读取数据的地方,并且该数 据区域大小不小于消息大小,否则,很可能引发地址非法的错误。
2025-05-17 15:10:30
677
原创 STM32 | 软件定时器
软件定时器是通过程序模拟的定时器,能够由单个硬件定时器模拟出多个软件定时器,解决了硬件资源限制的问题。然而,软件定时器在运行和维护时会消耗CPU资源,且精度低于硬件定时器,常用于简单的定时控制,如喂狗、控灯等。在Linux、μC/OS、FreeRTOS等操作系统中,软件定时器的实现原理相似:通过硬件定时器产生时钟节拍,程序定期扫描所有运行中的软件定时器,比较其到期时间与全局时钟标记,判断是否到期并执行回调函数。配置软件定时器时,需设置优先级、队列长度和任务堆栈大小。FreeRTOS中,软件定时器的创建、启动
2025-05-17 14:23:42
872
原创 Linux | Uboot-Logo 修改文档(第十七天)
将准备好的“.bmp”格式的图片拷贝到 uboot 的“/tools/logos”目录下,作者拷贝的文件为将图片名称修改为“freescale.bmp”。使用命令“tar -xvf uboot-imx-rel_imx_4.1.15_2.1.0_ga_20200323.tar.gz ”解压 uboot。要修改 uboot 配置的屏幕信息,使用命令“vi ./board/freescale/mx6ul_topeet/mx6ul_topeet.c”。将最后一个的值修改为“qn_enable”,如下图所示。
2025-05-11 21:54:50
293
原创 Qt还有希望吗
😬市场竞争压力不小跨平台框架竞争激烈,Flutter、React Native、Electron 等来势汹汹,不过 Qt 凭借性能和资源控制优势,还能稳住阵脚。开源协议和商业化策略可能是个坑,LGPL 和商业双许可模式,要是公司调整授权策略,比如限制开源版本功能,社区可不答应。🌌2025 年 Qt 价值预测乐观来看,若 Qt 持续优化对新兴技术支持,保持开源社区活跃,在嵌入式、汽车和工业领域价值飙升,有望成智能设备开发首选框架。商业公司战略调整,Qt 母公司决策,像定价、功能优先级,直接影响市场地位。
2025-05-07 21:57:30
3020
3
原创 Linux | 修改开机进度条修改文档(第十六天)
前提配置环境变量,Yocto 环境的交叉编译器是之前通过 yocto 获取的即 fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh。“source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi”,添加编译器。将文件系统打包,注意打包的路径要写对,然后烧写,启动。
2025-05-01 14:05:55
143
原创 “Everything“工具 是 Windows 上文件名搜索引擎神奇
搜索文件类型,请在搜索框输入扩展名, 例如,搜索 mp3 文件,输入 *.mp3 即可。UAC 警告可以通过以标准用户运行 "Everything" 和安装 "Everything" 服务或不使用 NTFS 索引来避免。不像 Windows 内置搜索,"Everything" 默认显示电脑上每个文件和文件夹 (就如其名 "Everything")。可以,"Everything" 可以通过搜索函数 content: 来搜索文件内容。免费,"Everything" 是一款免费软件。
2025-05-01 12:31:08
1297
原创 Linux | Mfgtools 修改单独只烧写 Uboot,内核,文件系统
2. 打开“Profiles\Linux\OS Firmware\ucl2.xml 文件,修改此文件。图 3 是修改 NAND 的板子,如果您想。就把下面图一的代码注释掉,其余的不要动。,就注释掉下面图二的代码,其余的不要动。就注释掉下面图三的代码,其余的不要动。图 1 是修改 NAND 的板子。图 2 是修改 EMMC 的板子。是修改 EMMC 的板子,如果您想。是修改 EMMC 的板子,如果您想。就把下图的代码注释掉,其余的不要动。图 6 是修改 NAND 的板子。图 7 是修改 EMMC 的板子。
2025-04-26 19:54:00
190
原创 Linux | I.MX6ULL 文件系统
如果用户的文件系统非我们的出厂版本,请参考之前烧写章节重新烧写出厂文件系统。这里我们注意,商业级核心板的“/dev/mmcblk1p1”设备是 emmc 为内核设备树提供的单独分区。我们在测试 qt 程序时经常会用到 U 盘 TF 卡拷贝程序,yocto 系统在使用这些设备时会自动挂载,非常方便。用户可以在文件系统启动之后,通过控制台命令来实现背光调整,参考命令如下。首先启动开发板,我们将 U 盘插入 USB 接口会有如下图打印信息。具体的值,用户可以根据自己的需求进行更改。”查看对应分区挂载的目录。
2025-04-20 18:17:24
84
原创 Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT
01Yocto 文件系统默认支持了 QT,那么我们要怎么在 Yocto 文件系统来运行我们的 QT 程序呢?本章节我们就来学习上在 yocto 文件系统+Ubuntu 环境来开发 QT 程序。注意,开发环境是基于“qtcreator-3.5.1”(Ubuntu16.04.6),库文件是Qt5.5.102(1)首先我们将“qt-opensource-linux-x64-5.5.1.run”通过 SSH 工具传到 ubuntu 上/root 目录上,如下图。
2025-04-19 19:55:12
183
原创 Linux | I.MX6ULL 内核的编译(13)
在编译 Uboot 和内核源码之前,我们需要安装三个第三库他们分别是:lzop、libncurses5-dev、u-boot-tools。我们可以根据上表的提示,将对应的镜像拷贝到 Windows 系统下,然后使用 MFGTools 烧写工具烧写到开发板运行。本章我们就来学习一下如何将 NXP 官方提供的 Linux 内核移植到【苏电子】 i.MX6UL 终结者开发板上。,我们根据核心板的类型,将对应的镜像文件整理成下表所示。从上图可以看到生成了十几个设备树文件,因为苏电子的。包移植到我们自己的平台上。
2025-04-18 15:41:45
184
原创 Linux | I.MX6ULL Uboot 编译(12)
然后就可以将其烧录到i.mx6ull开发板。更多内容查看i.MX6ULL合集。将这个文件拖到ubuntu16。
2025-04-18 15:21:32
69
原创 Linux | I.MX6ULL外设功能验证(11)
然后我们使用 CAN1 作为数据发送端,我们在调试串口终端输入“cansend can16A0#11.22.33.44.55.66.77.88”命令,发送数据,其中的 6A0 是帧 ID,#后面的是数据,共 8 个字节。从上图我们可以看到 CAN1 发送数据以后,后台运行的 CAN0 接收程序收到了 CAN0 的数据,并显示出来,接收到的数据和发送的数据内容一致。i.MX6ULL 开发板的 OTG 接口,可以用作烧写的接口,同时在系统启动之后,可以用作 host 模式,可以当做 USB 来使用。
2025-04-10 21:57:23
126
原创 Linux | I.MX6ULL开发板固件烧录所需文件详述(9)
商业级的核心板,它的存储是 EMMC 的,EMMC 的存储是类似于正方形的芯片,旁边是 NAND FLASH的一个封装,因为我们这里要兼容 NAND FLASH ,这里是一个兼容的设计。
2025-04-05 21:15:37
168
原创 Linux | I.MX6ULL内核及文件系统源码结构(7)
支持 Busybox(1.29.0)、buildroot(2019.02.9)、Ubuntu(16.04.6)这四种文件系统。支持 EMMC,NAND FLASH;版本:2016.03。支持环境变量修改保存。USB HOST驱动。Sil9022A驱动。
2025-04-02 21:38:36
353
原创 Linux | I.MX6ULL 终结者底板原理图讲解完(6)
上图中的 U37 是光环境传感器 AP3216C,该芯片可以感应周围光线的强弱,接近距离和红外强度,使用的是 I2C 的接口,I2C1_SCL 和 I2C1_SDA 分别连接到 i.MX6ULL 的 UART4_TX_DATA、UART4_RX_DATA 这两个。我们使用 I2C 来访问它。从上图可以看到红外接收模块(U38)使用的是 HS0038B 模块,该模块的原理很简单,使用 3.3V 供电,数据输出引脚 UART2_RXD 连接到 i.MX6ULL 的 UART2_RX_DATA 引脚上面了。
2025-04-01 21:14:48
190
原创 Linux | I.MX6ULL 终结者底板原理图讲解(5)
开发板采用标准的 TF 卡插座,采用 USDHC 驱动,SD1_DATA0、SD1_DATA1、SD1_DATA2、SD1_DATA3 是4位数据总线,分别连接到i.MX6ULL的SD1_DATA0~SD1_DATA03引脚上面。CH340G的工作电压支持 3.3V、5V,甚至是 3V,从上图可以看到我们给 CH340G 的电压是 5V,并且是 Mini USB 接口提供的 5V 电源,与开发板上的电源是独立的,只要我们接上 USB 线 CH340G 就会上电。其中上面的 LED1 是系统电源指示灯。
2025-03-31 21:05:47
279
原创 Linux | I.MX6ULL 终结者底板原理图讲解(4)
从上图我们可以看到 RS485 实际上是串口通过一个 485 协议转换芯片(SP3485EN)转换出来的,由于SP3485EN 这个芯片是半双工的(收发不能同时进行),所以需要一个收发方向的控制引脚(SP3485EN 芯片的 2、3 引脚),一般这两个收发方向控制的引脚会连接到 CPU 处理器,软件除了要操作串口的收发,还需要控制这两个引脚的状态,这样会增加软件的工作量。因此我们可以使用专门的复位芯片,它能够排除瞬间的干扰,又可以防止系统在启动和关闭期间的误操作,保证系统的稳定。
2025-03-30 20:07:36
315
原创 Linux | I.MX6ULL 终结者底板板载资源介绍(3)
开发板通过一个 20pin 的连接器(J47)引出了两路 TTL(3.3V)的串口,同时引出了 5V,3.3V,1.8V电源,可以很方便的给外接模块提供电源,通过此接口可以连接【007】的 GPS 模块,用户也可以连接自己的其它串口设备(需要 3.3v TTL 的串口设备)。开发板板载了一路 Mini USB 接口(J49),该接口是通过板载的 USB 转串口芯片 CH340(U59)引出的,它可以实现 TTL 串口和 USB 接口之间的数据转换,我们通过该接口可以在电脑上看到开发板的调试串口打。
2025-03-30 12:06:29
160
原创 如何学习Python编程?
阅读Python编程书籍,如《Python编程:从入门到实践》、《流畅的Python》等,这些书籍通常包含理论和实践项目,有助于加深理解。:利用在线资源进行学习,例如Python官方网站、Codecademy、Coursera、edX等平台提供了大量的Python课程和教程。:通过练习来巩固所学知识,可以从小型项目开始,比如计算器、简单的游戏、数据处理任务等。:首先,理解Python的基本概念和语法,如变量、数据类型、运算符、条件语句、循环、函数等。:在完成项目或练习后,向他人展示你的代码并寻求反馈。
2025-03-29 21:30:41
438
原创 Linux | i.MX6ULL 终结者学习指南(1)
比如 VMware, Ubuntu 系统安装包,SecureCRT,SSH 文件传输工具,网络调试助手等等)02_NAND FLASH 核心板 (支持 NAND FLASH 核心板的 Uboot 镜像)(保存的是 Busybox,Buildroot,Yocto,Ubuntu 四种文件系统源码)(Busybox,Buildroot,Yocto,Ubuntu 文件系统的镜像)(保存的是开发板的 Uboot,Linux,以及各种文件系统的镜像)
2025-03-28 21:10:36
136
原创 Linux | 交叉编译器的安装和使用(ARM)
使用 file 命令来看下,这里显示的架构是 arm ,说明我们这个可执行文件是在开发板上运行的而不是在 X86 上运行的,可以看到,使用 gcc 编译器编译出来的可执行文件,它的架构是 X86 的,所以我们使用 gcc编译器编译完的可执行程序只能在 X86 的 ubuntu 上运行,不能在 arm 上运行。因为我们使用 ARM 的编译器编译完了之后,是把我们的可执行程序放到开发板上来运行,而不是在 PC 上运行的,这个过程大家可以把它理解成交叉,然后再和我们的编译器结合起来就叫做交叉编译器。
2025-03-23 11:08:11
588
原创 Linux | 安装 Samba将ubuntu 的存储空间指定为windows 上的一个磁盘
使用 samba 我们也可以实现 win 和 ubuntu 互传文件,经常和 tftp 软件搭配着来用,比如说我们要拷贝的文件在 ubuntu 上的路径比较深比较长,我们就可以使用 tftp 软件来实行,如果说这个路径不深,就在我们的根目录下或者家目录下,我们就可以直接使用 samba 来传,这两个软件并不是互相排斥的,tftp 软件是我们开发必备的软件,而 samba 是提升我们开发体验的软件这两个软件是互相配合的。但是有一个细节要注意,我们共享的 samba 目录,这个目录一定要真实存在。
2025-03-22 22:11:37
574
原创 Linux | ubuntu安装 SSH 软件及测试工具
在使用 ssh 之前,我们需要检查下我们的网络环境,我们要看一下,windows 电脑能不能能和虚拟机ubuntu 他们俩的网络是可以互相 ping 通的,我们来查看下,首先要打开 windows 的 cmd 工具,我们来看下 windows 的 ip 是多少,查看 windows 的 IP 使用的是。最后一步,我们要重启下 ssh 的服务,然后在终端输入“/etc/init.d/ssh restart”命令,重新启动 ssh服务然后输入密码,点击授权.pwd=xufw 提取码: xufw。
2025-03-22 20:36:58
491
原创 Linux | 安装 VMware Tool 工具
一般都是放第三方程序的,所以我们在 opt 文件夹下操作,这里要执行 sudo 以管理员的身份来执行,我们文件夹的名字叫 vmtool 是作者自己起的,然后把这个压缩包解压到我们创建的 vmtool 这个文件夹里面。解压成功后,作者进到根目录下 vmtool 这个文件夹下,然后就可以看到解压生成的文件了,我们进到这个文件夹,以 .pl 为结尾的就是我们的安装文件,我们来运行下这个文件,运行这个安装文件我们也要。接下来我们安装 VMware Tool ,在安装之前我们先对虚拟机进行设置,点击编辑虚拟机设置
2025-03-22 12:10:30
321
原创 Linux | gcc编译篇
如果我们不使用 -o 参数指定我们生成文件的名称,直接输入 gcc hello.c 编译完会得到一个 a.out 文件,执行这个 a.out 的结构和执行 hello 是一样的。,编译器会对头文件或者宏定义进行展开,或者条件编译的选择我们可以使用 -E 参数得到预处理文件。:使用 -static 参数就是静态链接,因为程序里面包含了需要的库,所以体积比较大,-c 参数 可以把 hello.s 文件编译成 hello.o 文件。-S 参数 将 hello.i 文件编译成 hello.s 文件。
2025-03-19 21:28:16
643
原创 C++实现的数据结构示例,涵盖链表、数组、树和图
每个实现都遵循数据结构的核心原理,同时保持了代码的简洁性和可读性。可以根据具体需求在这些基础实现上添加更多功能或进行优化。
2025-03-18 20:12:45
331
原创 gcc 有多强大?
GCC(GNU Compiler Collection)是开源编译器领域的标杆工具之一,其强大之处体现在多个层面,从底层硬件支持到高级语言特性,再到生态系统的完备性。
2025-03-18 20:07:58
984
原创 嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?
就好比我们的虚拟机是一台独立的机器,和我们这个局域网下的任何机器都没有关系,当然和我们的主机也没有关系,这个我们一般不用。它是运行在操作系统上面,通过调用操作系统的资源去工作,是最终的业务逻辑,比如我们。功能的时候,一定要用桥接模式,用别的模式都是不行的,这里直接选桥接模式是没有问题的。就好比,把虚拟机和电脑主机都连接到了同一个局域网下,在这个局域网下,然后设置处理器,因为作者的电脑是四核的,所以我直接把这儿设置成。但是在这个局域网下的另外的主机是不能访问我们的虚拟机的。的一个特点,它不像其他操作系统。
2025-03-17 21:26:32
705
原创 Qt | 网络编程+面试题
QNetworkInterface 是 Qt 框架中的一个类,用于获取和操作网络接口(网卡)的信息。通过这个类,开发者可以访问本地计算机上所有网络接口的详细信息,包括接口名称、索引、MAC 地址、IP 地址等。这个类对于需要进行网络配置或监控的应用程序非常有用。QDeadlineTimer 是 Qt 框架中的一个类,用于处理定时器操作,特别适用于需要在某个时间点前完成操作的场景。数据报文通常用于 UDP(用户数据报协议)通信,它是一种无连接的协议,允许应用程序发送独立的数据报文而无需建立持久的通信链路。
2025-03-16 11:40:15
176
嵌入式PC端虚拟串口端口生成及串口调试工具.rar
2023-08-08
SQLite是数据库,在Qt中实现,用于存储用户信息
2023-06-24
QT EventFilterQChartsQDataStreamQDir
2023-02-19
基于数据结构商品购物系统 项目.zip
2022-05-01
第三天-队列与栈的逻辑与单向循环链表.zip
2022-05-01
内核链表代码111.zip
2022-05-01
第六天-内核链表及二叉树.zip
2022-05-01
第七天-二叉树与排序算法.zip
2022-05-01
第四天-双向循环链表.zip
2022-04-25
第一天-数据结构概念及顺序表.zip
2022-04-23
第二天-单向链表.zip
2022-04-23
QT软件工具使用.zip
2022-04-23
QT中项目第二个.zip
2022-04-23
10.QT项目第一个.zip
2022-04-23
RFID射频识别你了解多少,开车刷卡,蓝牙刷卡,门禁卡等等,代码实现编写,A,B命令字带你掌握
2022-04-17
JLINK使用驱动下载,ST-LINK驱动及教程,STM32F4串口下载软件(FLYMCU),ST-LINK官方驱动.zip
2022-04-05
led驱动-各种版本的mplayer-arm+linux-gnueabi-5.4.0.tar.xz+Qt-Embedded-5.
2022-04-05
考过CSDN C1有什么好处?
2022-04-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人