正点原子 IMX6ULL
本文最后更新于425 天前,其中的信息可能已经过时,如有错误请发送邮件到525382782@qq.com

正点原子 IMX6ULL

学习网站

http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html

学习路径

安装虚拟机可以参考文档【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81。

2025.1.11 虚拟姬如何分配核心数?

我这里就直接参考的一位博主的方法,他通过不同分配方法对比,得出结论如下:

所以,我这里是8核16线程,应该分成1处理器 8核,看懂的话,这里的8核实际上是指的8线程,1*8刚好是8线程。综合我其他看的视频里,这种方法应该是可行的。这里我只分配了一半 ,保证正常运行。

2025.1.19 记录ubuntu网络配置问题

这是我在进行尝试虚拟机桥接模式遇到的问题

虚拟机桥接不上网卡,提示没有未桥接的主机网络适配器,windows下面没有相关网卡(vmnet0)

尝试这位大佬给的方法 记录一下~

https://blog.csdn.net/qq_57704873/article/details/134765089

 按住键盘win+r打开window运行对话框输入services.msc

这四个我应该关掉了

 打开计算机—属性—设备管理器,找到网络适配器一项,看到里面所有VM开头的虚拟机网卡,全部右击卸载

这里感叹号我都卸载本体+驱动

win+r打开window运行对话框输入regedit,打开注册表编辑器,按照下图所示路径,右击VMware Tray删除

这里有点不一样?我没有这个文件?所以我就没管了

卸载VMware 卸载后下载ccleaner工具

全选
难绷,建议先备份再删除,这里我就删除教程里的东西了

现在没出现什么问题,最后也是重新安装成功解决

这里我是参考这篇文章来进行桥接模式的连接的

https://blog.csdn.net/wmjdiidjjisjb/article/details/144587016

这里遇见了一个问题,当我把我家路由器DHCP服务关闭后,出现了一直连接不上网络的情况?不过在我开启后连接上了。

这里介绍一下怎么安全上网,这里不过多解释。

https://blog.csdn.net/qq_39692305/article/details/142094441

2025.2.26 校园网链接问题

关于校园网链接,无线连接暂时失败,由于无法登录认证界面,目前还未找到原因。采用有线连接方式,使用桥接模式发现不能够本机与虚拟机共同使用校园网,大概率是由于桥接模式是共用一张网卡,虚拟机会占用本机的使用,于是换了net模式,发现成功连接上校园网。感谢这两位大佬的教程。我分享一下我的步骤,避免再次出现这种问题。

首先找到VMnet8虚拟网卡和本机网卡,然后选择本机网卡,在共享中打开家庭网络连接

然后在虚拟网卡中查看ip地址,然后回到VMWARE中,手动更改地址

重启一下,即可。

https://blog.csdn.net/weixin_50570038/article/details/143238268

https://zhuanlan.zhihu.com/p/580910152

2025.2.26 总结一下如何使用ubuntu代理

首先需要在clash代理软件中打开局域网

注意端口号的设置

查看ipconfig中的虚拟网卡地址,然后在虚拟机中打开代理设置填入即可。

2025.1.11 关于vmware tool 的作用

这里我在网上浅浅的搜了一下,这是一个用于方便主机与虚拟机之间进行复制粘贴的软件,建议安装

安装教程:https://blog.csdn.net/qq_28938301/article/details/135454210

2025.1.11 怎么用vi编辑器和gcc 运行一个c文件?

首先打开命令行输入 vi hello.h,进入到文件中后,按照c语言的方式写一段打印hello world 的程序如下,具体的如何切换输入模式和退出vim编辑器,记住 :x 是保存退出,按a进入编辑模式。

正常运行是这样的。和其他软件差不多。

2025.1.11 makefile文件

为了方便编译多个文件,我们可以创建一个makefile文件,根据视频代码如下分析:

颜色开头为蓝色的,所指的就是编译这个文件所需要的文件,可以看到其先后顺序是总-分的方式,一步一步告诉计算机执行顺序的,这里是否可以按照分-总的方式呢?还待验证。注意gcc行代码用TAB键空出首行,不这样做可能会报错。最后一行代码清除所有.o文件和main可执行文件,只能在你输入make clean后才会执行,输入make 只会执行前面几行。

这里介绍一下makefile的基本语法,它主要由一系列的规则所组成。

这里再更形象生动的做个比喻,他们关系如下

关于makefile还有许多需要掌握的,如下分点介绍:

1.如何使用变量

使用注释,用的是#,使用变量的方法如2、3行所示。$(变量名)

2.如何使用赋值符

前三行不做解释,5、6行代码的作用是打印curname这一字符。这里注意,打印出的结果是zuozhongkai,可知,我们改变了name的值,curname的值也跟着改变了,这是不是$更像c语言中的指针地址的引用?

但更严谨的讲,这里是赋值号的问题,我们再看如下,假如是这种写法的输出是什么?

此时的输出就是zzk了,这里的:=改变了它不再跟着name一起变化了,是真正意义上的赋值。

还有?=和+=等的赋值操作,可能用的不多,这里就自行上网查阅了。

3.如何处理大量的需要编译的文件

首先我们了解一下这串代码

%.o : %.c 这就是处理大批量文件的关键,关于$<这是一个自动化变量,具体参考如下,复杂不做过多解释。

自动化变量表

4.使用make clean注意事项

假如说文件中存在clean文件,要注意添加一行声明如下

为了让计算机知道clean这个是清除指令,而不是生成指令。

5.makefile函数的使用

这里就直接去参考文档吧,太多不好讲(文档名:跟我一起写makefile)

2025.1.12 shell脚本

shell脚本也似乎是学习linux中比较重要的东西,它类似于批处理文件,将想要执行的命令装在一个.sh文件中。

接下来介绍几种交互式类型的脚本

输入单变量,读取单变量,打印单变量的情况
输入多变量,读取多变量,打印多变量的情况

以上两种情况大同小异,可根据具体情况采取不同方式。

这是处理整型变量的方法,shell只支持整型
这里的test的作用是,检测是否有叫做“filename”的文件,后面&&的是满足的情况,打印内容,||是不满足的情况下,打印内容。
这是判断两个输入字符串是否相等的方法,同上。
我们也可以用方括号来替代test,最终输出效果也是一样的,只是要注意要加双引号。
这里的$0~2 指代文件名,第一个参数,第二个参数,$@指所有参数,$#指所有参数的个数。
这是上一段代码的输出结果,可供参考理解。

条件判断,函数,循环

用单个if进行判断
用if else语句进行判断
用if elif else语句
case的使用,要和c语言中的switch case作对照,这里针对的变量是字符型的。4,7,10行的表示方法,表示“a”,“b”,“c”这三个实际判断内容,6,9,12行的”;;”为一段判断程序的结束。

这里的命令的命名方式还是很有意思,竟然用倒着的单词表示结束,像前面的if fi一样。

本人第一次见
函数的使用方法,其中,大部分上面的代码都已经涉及过,这里就不做过多解释。
这是一个传递参数进入自定义函数中的例子
当输入任意字符时,不会跳出循环,也就是一直提醒你输入新的字符,直到你输入了“close”,循环终止。
这是for循环的使用方法,有点类似于for x in range?,当你执行文件,就会自动循环zzk~zzk3这四个变量分别按顺序输出。
这是for循环的另一种用法,比较常见的用法,不做过多解释。

裸机开发

2025.1.15 如何进行文件互传

首先要学会怎么使用vim ,i插入 ,:x保存退出

ftp模式

安装ftp服务(具体看IMX6U驱动开发指南)。

安装
打开
修改28和31行
重启
下载
输入ipconfig查询地址
输入ubuntu 的 ip地址,用户名和密码,选择ftp模式
如果乱码,就要设置其字符集为utf-8,接下来就是愉快的互传时间了。

NFS模式

安装服务
创建一个linux文件夹
创建nfs文件夹
打开文件
输入
重启

SSH服务模式

安装服务完成

2025.1.15 安装ch340驱动

如图所示,安装完成后在设备管理器查看即可

2025.1.15 安装secureCRT 类似于串口调试助手

似乎要收费,后面再看看是否要安装,没关系,大家懂的都懂()

里面也有很多种链接方式,包括串口模式

开发板上的拨钮开关的位置如图所示,如果不是这样,调整成这样就行

接着重启一下,就能在软件上看到连接成功的结果

2025.1.16 安装Putty 类似于串口调试助手

和secureCRT差不多,具体看IMX6U开发指南。

2025.1.16 交叉编译器安装

关于linux下自带的gcc编译器是针对x86架构,而我们需要编译的是arm架构的代码,所以我们需要一个能够在x86架构的虚拟机上运行,能够编译arm架构的gcc编译器,接下来介绍的就是linaro家的gcc编译器。

首先在linux文件夹下新建一个tool文件夹,利用前面提到的文件互传,将linaro编译器传入虚拟机中
建立arm文件夹
copy到arm文件夹下进行解压

输入sudo vi/etc/profile

在最后一行输入后保存,重启。
可以输入检查是否安装成功

2025.1.16 vscode

具体看手册,不多讲。

2025.1.16 开发板介绍

这是开发板的整体模样

其中中间最小系统板上,最左边的那块芯片是emc ,存储大,速度快,这块应该是8g大小,flash?。中间下面那块是ddr,512m字节的ddr。接下来用一张图给大家详细介绍底板上的各种接口和功能。

I.MX6U芯片

此为nxp公司出品芯片,cortex-a7架构 ,soc。开发板的芯片为I.MX6ULL型号

2025.1.17 关于I.MX6U的管脚复用

比stm32系列来说,要更复杂一些,需要去IMX6ULL参考手册中查找(第32章)。

2025.1.17 关于I.MX6U的管脚初始化

stm32的初始化流程
内容比较复杂,这里就直接给出步骤了。

qt开发

2025.1.19 什么是qt?

一种c++开发库,主要是用于gui开发

qt官网:https://www.qt.io/

qt5中的新功能,可以看到各种版本的情况:https://doc.qt.io/qt-5/qt-intro.html

qt下载网址:https://download.qt.io/archive/qt/

2025.1.20 安装qt时候遇见的问题

这里使用指令下载qt似乎不行,遇见无权限下载的问题。我就直接下载包互传了。

在qt中文输入法使用时候,似乎没有办法使用IBUS ,经过思索后发现是没有升级ibus,升级之后成功。

2025.1.20 c++基础科普

关于构造函数,我们要理解它一般是类名(),析构函数是~类名(),在实例化类之前会执行一次构造函数,然后在对象生命周期 全部执行完成后才会执行析构函数。构造函数能够简化我们的初始化步骤,让我们编写的代码更简洁。每当我们实例化之前,他都会执行一次。 析构函数就是销毁掉构造函数,字面意思。

在成员函数中,我们可以使用this指针来调用类里面的其他成员

函数重载,在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。相当于我们可以有多个同样类名版本的函数,但是函数的参数不同,导致我们的初始化也不同,但是我们能够区分它们。

关于运算符重载,有点难懂,不过也不是重点,了解就行

虚函数,就是我们继承之后,能够调用新的继承类里面的对象,我们通常在复写的函数的后面添加override来区别,提高可读性。

2025.1.23 QT程序编写

关于新建项目需要注意的点是,我们一开始初学就选择Application(Qt)作为我们初学的一个项目样本(模板),注意qt中文兼容性很差(这里的Qt版本为5.12.9),我们尽量命名和路径都使用英文,这也是我们学习外国软件的时候应该注意的点。

接下来选择qmake作为编译器。再接着就是选择基类,这里选择QMainWindow来进行学习。以下是文档给出的三种基类的介绍,方便大家进行学习参考:

  • QMainWindow:主窗口类,主窗口具有主菜单栏、工具栏和状态栏。类似于一般的应用程序的主窗口。如果您想做个嵌套的窗口程序开发的软件,不妨选择这个 QMainWindow。
  • QWidget:是可视界面类的基类,也就是说QMainWindow类也是由QWidget 继承封装而来。所以 QWidget 要比 QMainWindow 功能少一些。
  • QDialog:对话框类,建立一个对话框界面。比较少使用此项作为基类。一般以 QMainWindow和 QWidget 作为基类的居多。注因为 QWidget 不带窗口标题栏等,嵌入式里最好 QWidget。

关于其他设置,默认或自行搜索判断。

qDebug()可以用于打印,位于<Qdebug>头文件中

主要是学习怎么初始化变量,使用构造函数和析构函数。

qt的文件类型

有.pro文件,.h文件,.cpp文件,.ui文件,header文件夹下是头文件,sources文件夹下是源文件,forms文件夹下是ui见面文件。这里的.pro有点像系统文件,告诉计算机要用哪些文件,以及在什么样的条件和环境下。(这里说的可能不准确,只是笼统的举例,更形象的表达方法告诉这个文件是什么)

以下是pro文件里面的部分分析

注意这是规则平台的声明。
如果我们想修改目标文件的名字就得这样改,可以在debug文件中找到我们的可执行文件已经变成我们想要的命名。
按理来说这里只是又生成了main文件,原来的12还存在,看来清除按键只能删除掉除可执行脚本以外的文件。
图中重新构建下方的就是清除文件

2025.1.26 qt程序启动流程

这里先科普一下关于c++的成员列表初始化,在第36期介绍

https://www.bilibili.com/video/BV1Dk4y1j7oj?spm_id_from=333.788.videopod.episodes&vd_source=76ade2ce34afb4a4ca4675a38f3b8941&p=37

这是mywindow.cpp文件,第7行是初始化变量的方式,注意其初始化顺序,11行16行时打印方式,17行是释放删除方式。
这是mywindow.h文件,主要是13行的宏定义,构造函数,析构函数,指针的使用。
主要的都在图上,不做过多说明
可以在想要使用的函数上右键快速生成定义

qt creater的使用方式

常见的快捷键

qt编程规范

这里就简单截图了

qt信号槽

图中就是,因为和plc博途仿真很像,我就不多说明了。
这是第二种方式编辑
当我们想要自己写函数执行 要右键->转到槽,选择一个需要的信号来源,然后qt会自动生成跳转到我们要写的函数位置

这里的槽其实就是函数啦~信号也是。

这个文件只有在编译过后才会出现
上面是信号与槽关联的函数
在帮助一栏可以找到我们要寻找的函数,记住是在索引一栏中
这是代码写出按下按钮关闭窗口的方法。
我们可以这样新建一个信号槽

其他就省略了,不重要不讲,可以去看视频,太详细了反而啰嗦。

2025.1.28 隐示转换

编译的时候会把你的参数自动转换的意思。类似我图下这个例子。

2025.1.28 如何自定义一个信号槽

首先要创建信号和槽的.c和.h文件,知道他们所继承的类,他们继承的是qobject类

这是我们定义好的一个叫school的类文件,应该是这样的。注意,这里的signals是qt里面信号的关键字。

这里的explicit就是我前面提到的防止隐示转换的方法。

这是我们写好的一个头文件,注意,slot的意思是槽。
然后,在mainwindow头文件中,对我们定义的类的引入与声明。注意我这里没有截图完整,应该还要引入我们才建立的头文件。

这里多嘴一句,mainwindow是构造函数。

在源文件中,我们实例化我们定义好的类。对其进行连接。然后使用emit指令发送信号出去。
注意,信号可以不用定义,而槽是需要我们定义的,也就是我们想要实现的功能。
这是应该出现的结果。

更多详细的可见 qt开发指南文档88页左右。

2025.1.29 为什么要设置父对象和其设置的两种方法

我们看这里,首先我们在widget构造函数里声明了parent的对象,然后再在其继承函数中传入我们声明的对象,指针和数组一样,都是我们内存上的一块区域,我们声明就是告诉计算机我要使用这一块区域。
这是两种方式设置我们的父类。这里再多嘴一句,如果想手动删除new关键字创建的对象,要使用delete删除。

对象树机制,qt中我们可以利用这一机制来自动删除掉我们用new新建的对象,这个机制的具体内容就是我们在父类delete之前(不知道怎么讲),会先把子类先delete掉。代码如下:

也就是这一行将我们的父类和子类进行关联

2025.1.29 如何添加图片文件和样式表

就是选择qt resource项目,具体看手册。样式表是在ui界面,我也不多讲了。

这里多嘴一句px是像素的意思,pt是字体大小的意思

2025.1.31 qss文件

简单来说,我们可以在qss文件中写我们想要的样式,然后直接读取文件就行

这是一个例子,有点像python读取的方式。

2025.1.31 qwidget类

它是所有用户界面对象的基类

2025.1.31 简单的qt工程推荐

音乐播放器 28讲源码

效果为酷狗音乐的播放按键

2025.1.31 关于如何查找样式表的参数

可以在帮助文档中找stysheet

2025.1.31 关于控件边缘位置的改变方式

图中为具体部位的名称表,margin就是控件边缘(border)以外的区域,padding就是控件边缘(border)以内的区域。

关于颜色可以查rgb表来参考。

2025.1.31 关于各种样式调整

margin&padding(外边距和内边距)调整单个控件

QHBoxLayout(水平、垂直布局)具体就是调整多个空间的布局,大小

QVBoxLayout(垂直布局)类似上面垂直布局

QGridLayout(网格布局)类似上面垂直布局

QSpitter(分裂器)可以改变两个链接窗口之间的大小,类似于wps的文档

QSpacer(隔离弹簧)我理解是调整控件位置用的,弹簧本身是隐藏的

2025.2.1 仿qq登录界面

使用LineEdit,按钮,布局之后,我们再改变lineedit控件的样式。

然后,我们添加Qwidget改变其背景颜色,拟成我们的下划线

改变placeholdertext和echomode,可以显示提示字和隐藏我们输入的密码,如图

可以通过隔离弹簧来控制其位置

2025.2.2 仿照支付界面

用了Qdialog 作对话框

说实话,很多感觉用不上,我就没写多详细。。。。

图中setwindowflag函数用于隐藏边框,setattribute用于设置背景透明。
在对象前面加.可以防止其使用于其子对象
最终效果

2025.2.2 制作滑动窗口

用的是QScrollArea控件

效果

2025.2.6 Qtabwidget效果

如图,可以设置多个切换界面

还可以配合listwidget进行使用

这是配合过后的效果,我们想要隐藏上方的标签,就要设置tab的样式
这是设置过后的效果

如果我们想重新设置其索引对象,如图方式。

接下来介绍一下QlistWidget的详细使用

图中是用代码进行控制内容
如果我们想打印点击索引的内容如图方式

20252.6 Qlistwidget的qq好友列表界面设计

如图

2025.2.6 文本读写(Qfile)

略,可以去看代码,比较简单。

2025.2.6 关于如何提取我们喜欢的颜色rgb值

我们可以使用ps的提色器,就不用再去查表了,很方便。

2025.2.6 关于 qpainter qgraphics qproperty

qpainter 用于绘图形、轮播文字

qgraphics 用于图表

qpropertyanimation 用于属性动画

Q_Property 一个宏定义属性系统

qthread 多线程

2025.2.13 关于qt设计服务端与客户端

参考52~54讲

2025.2.13 关于使用udp协议

关于什么是udp协议

关于单播和广播的区别

特性单播广播
通信方式一对一一对多
目标地址特定IP地址广播地址(如255.255.255.255)
网络资源使用仅发送方和接收方之间所有设备都会接收
应用场景客户端-服务器通信网络发现、服务公告

2025.2.15 使用交叉编译器

使用代码先给权限

chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0_20241230.sh 
当变绿了说明成功
其余可参考手册05【正点原子】I.MX6U 出厂系统Qt交叉编译环境搭建V1.7

qmake生成编译文件makefile

qmake x.pro

qmake删除编译文件

make distclean

开始在项目文件夹编译项目

make -j
//删除用make clean

使用MobaXterm链接开发板,开发板选择emmc启动方式,如图,首先给我们编译文件权限,执行文件,杀死我们的开发板的初始界面

我们也可以使用如图打开rc.local文件。

将图中的QDesktop注释

关于拷贝文件可以参考06【正点原子】I.MX6U开发板文件拷贝及固件更新参考手册V1.2

可以使用如图指令快速拷贝

scp -r 文件夹 用户名@ip 地址:路径

我们也可以修改路径开机就能运行程序

2025.2.16 学习qt的类和函数

AppMainView::AppMainView(QWidget *parent)
{
    this->setParent(parent);
    this->setGeometry(0, 0, 800, 480);
    this->setMinimumSize(800, 480);

    bgWidget = new QWidget(this);
    bgWidget->setStyleSheet("border-image: url(:/images/bg.png)");

    mySlidePage = new SlidePage(this);
    mySlidePage->resize(this->size());

    for (int i = 0; i < 3; i++) {
        appDemo[i] = new AppDemo();
        mySlidePage->addPage(appDemo[i]);
    }

}

this->setParent(parent)

  • this 是当前 AppMainView 对象。
  • 调用 setParent() 函数,将当前对象的父对象设置为传入的 parent 参数(一个 QWidget* 类型的指针)。

this->setGeometry(0, 0, 800, 480)

  • this 是当前 AppMainView 对象。
  • 调用 setGeometry() 函数,设置当前对象的位置和大小(左上角坐标为 (0, 0),宽度为 800,高度为 480)。

this->setMinimumSize(800, 480)

  • this 是当前 AppMainView 对象。
  • 调用 setMinimumSize() 函数,设置当前对象的最小大小为 800x480

bgWidget = new QWidget(this)

  • this 是当前 AppMainView 对象。
  • 创建一个新的 QWidget 对象 bgWidget,并将其父对象设置为当前 AppMainView 对象(即 this)。

mySlidePage = new SlidePage(this)

  • this 是当前 AppMainView 对象。
  • 创建一个新的 SlidePage 对象 mySlidePage,并将其父对象设置为当前 AppMainView 对象(即 this)。

mySlidePage->resize(this->size())

  • this 是当前 AppMainView 对象。
  • 调用 this->size() 获取当前对象的大小,并将 mySlidePage 的大小设置为与当前对象相同。

上面的部分代码是设置界面的大小,并且根据appdemo和slidepage两个qt文件嵌套实现的。详细见qt03_appmainview.

void AppMainView::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event)
mySlidePage->resize(this->size());
bgWidget->resize(this->size());
}
  1. resizeEvent 的触发时机
    • 当用户手动调整窗口大小,或者通过代码调用 resize() 函数改变窗口大小时,resizeEvent 会被触发。
  2. this->size()
    • this 指向当前 AppMainView 对象。
    • size() 是 QWidget 的成员函数,返回当前窗口的大小(QSize 类型,包含宽度和高度)。
  3. mySlidePage->resize(this->size())
    • mySlidePage 是一个 SlidePage 对象,可能是 AppMainView 中的一个子部件。
    • 通过 resize() 函数,将 mySlidePage 的大小调整为与当前窗口相同。
  4. bgWidget->resize(this->size())
    • bgWidget 是一个 QWidget 对象,可能是 AppMainView 中的背景部件。
    • 通过 resize() 函数,将 bgWidget 的大小调整为与当前窗口相同。

QT setAlignment()和setContentsMargins()函数

https://blog.csdn.net/m0_63893772/article/details/135122753

void setSpacing(int spacing)

https://blog.csdn.net/xie__jin__cheng/article/details/143862085

rgb颜色对照

http://color.liminba.com/c/aaaaaa/

安装虚拟机(按照虚 拟机参考手册V1.3)

虚拟机和主机之间桥接模式配置成功

fliezilla软件

建立Ubuntu系统和Windows11之间的连接,可加载 Ubuntu 和 Windows 的目录,可以实现文件互传。(可行)

win+R中输入虚拟机地址(好像不行,输入用户名后错误)

如果连接成功会出现一个虚拟机的 IP 地址的网络

看到p31页

成功编译uboot 内核 qt

p35

VMWare 网络模式介绍

桥接模式

网络拓扑结构

  • 定义:指用传输介质互连各种设备的物理布局。
  • 示例设备:电脑网卡、网线、虚拟机网卡、WIFI、USB网卡、无线网卡、嵌入式设备网卡等。

网段与IP地址

  • IP地址作用:TCP/IP协议通信时,用于标识主机或路由器。
  • IP地址形式:IPv4中,IP地址是一个32位的整数,分为4×8位(如192.168.1.1)。
  • IP地址结构:IP地址 = 网络号 + 主机号。
  • 获取方式:自动获取(DHCP,路由器分配)或手动设置(静态IP)。

网段:同一网段指的是 IP 地址和子网掩码相与得到相同的网络地址。
网络标识 = IP 地址 AND 子网掩码

防火墙

  • 定义:通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
  • 示例:Windows防火墙、局域网络内部防火墙、杀毒软件(如火绒)的拦截功能。
  • ubuntu 执行 sudo ufw disable 关闭防火墙

网络测试

ping 是一种网络诊断工具,格式为 ping IP 地址

搭建方式

2025.1.8 问题 如何给磁盘分区

以u盘分区为例子

用fdisk命令完成,在命令行中输入fdisk -l 列出分区。

这里的/dev/sdb就是u盘,我们对其进行格式化等操作

输入sudo fdisk /dev/sdb,此时会弹出输入m进行帮助,接着输入m。

我们这里需要使用的是

首先用d命令,删除掉分区,接着w命令进行保存。这里如果提醒设备忙,就先输入umount /u盘挂载位置进行删除挂载,然后重复操作。

输入sudo fdisk /dev/sdb(具体根据自行判断),输入n命令,输入p命令

接着输入2048默认即可,我们如何分配1g内存呢,首先1g=1024mb=1024*1024kb=1024*1024*1024b,那么经过换算后就是1073741824字节。这里我们要理解一个扇区的大小为512字节,所以除以之后就是2097152个扇区。这里我们默认是2048开始,所以还要加上2048,也就是2099200。

创建成功画面

default可以直接拿来做下一个分区的开始,依次重复上面的操作即可。

2025.3.28 windows qt编译

注意,需要使用qt自带的命令行工具输入以下指令进行编译,在win自带的命令行中编译会报错。

使用指令

qmake -project //生成pro文件
qmake//生成makefile文件
mingw32-make//生成可执行文件

注意在qmake生成之前 需要在pro文件中添加以下依赖

这是如何编译cpp文件和生成pro文件的方法
在文件中我们能够找到编译好的exe文件
遇到这个问题的解决方案
运行图示

程序图示代码

#include <QApplication>
#include <QLabel>
#include <QLineEdit>
#include <QpushButton>
#include <QHBoxLayout> //水平布局
#include <QVBoxLayout> //垂直布局
#include <QWidget>
int main(int argc,char *argv[])
{
  QApplication app(argc,argv);

  QLabel *infoLabel = new QLabel;
  QLabel *openLabel = new QLabel;
  QLineEdit *cmdLineEdit = new QLineEdit;
  QPushButton *commitButton = new QPushButton;
  QPushButton *cancelButton = new QPushButton;
  QPushButton *browseButton = new QPushButton;

  infoLabel->setText("input cmd:");
  openLabel->setText("open");
  commitButton->setText("commit");
  cancelButton->setText("cancel");
  browseButton->setText("browse");

  QHBoxLayout *cmdLayout = new QHBoxLayout; //水平布局对象
  cmdLayout->addWidget(openLabel);
  cmdLayout->addWidget(cmdLineEdit);

  QHBoxLayout *buttonLayout = new QHBoxLayout;
  buttonLayout->addWidget(commitButton);
  buttonLayout->addWidget(cancelButton);
  buttonLayout->addWidget(browseButton);

  QVBoxLayout *mainLayout = new QVBoxLayout;
  mainLayout->addWidget(infoLabel);
  mainLayout->addLayout(cmdLayout);
  mainLayout->addLayout(buttonLayout);

  QWidget w;
  w.setLayout(mainLayout);
  w.show();
  w.setWindowTitle("running");
  return app.exec();
}

2025.4.1 使用qt的process打开windows文件

效果图

使用QmassageBox的效果

会弹出一个对话框

2025.4.3 理解Qwidget的初始化类继承问题

【QT】如何理解Widget::Widget(QWidget *parent) :QWidget(parent)

https://blog.csdn.net/zsyyugong/article/details/134114629

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
颜文字
Emoji
上一篇
下一篇