![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ITOP4412学习
文章平均质量分 67
要努力丫!
别浪费美好时光,世界都为你敞亮!
展开
-
嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板
想要把qt工程放到开发板上运行,就需要用到交叉编译。由于qt是跨平台的,所以只需要换个编译器编译一下就可以。以“定时器”的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时候,电脑屏幕很大,但是运行的窗口只有一点点大,开发板也有外接屏幕,如何让运行窗口自动适配开发板的外接屏幕呢?令其占满屏幕显示,而不是一小块。第一步:需要设置一下,先给ui布局,如果不布局,控件就不会随着屏幕的大小的变化而变化。第二步:利用代码来获取屏幕的大小,给widget.cpp文件下添加如下代码#inclu原创 2022-05-08 20:17:44 · 4822 阅读 · 2 评论 -
QT学习---13 制作文件系统镜像及测试遇到的:error: do_inode_allocate_extents: Failed to allocate 1146 blocks
root@ubuntu:/home/topeet/Linux+QtE5.7# make_ext4fs -s -l 314572800 -a root -L linux system.img rootCreating filesystem with parameters: Size: 314572800 Block size: 4096 Blocks per group: 32768 Inodes per group: 6400 Inode size: 256原创 2022-05-08 19:48:56 · 617 阅读 · 0 评论 -
嵌入式学习之QT学习---12交叉编译Qt源码以及编译触摸
原先的gcc版本是4.4.7,编译总失败。编译提示错误:unrecognized command line option “-std=c++11”root@ubuntu:/home/qt/qt_source/qt-everywhere-opensource-src-5.7.0# gcc --versiongcc (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7Copyright (C) 2010 Free Software Foundation, Inc.This is fr原创 2022-05-06 20:25:11 · 1258 阅读 · 1 评论 -
嵌入式学习之QT学习---11 QT系统移植之构建文件系统
在这里学习QT的最终目的是要在嵌入式上使用QT,如果我们想在嵌入式使用QT,那么在开发板上跑的系统就要支持QT,这一部分就开始学习一下制作支持QT的文件系统。第一步:制作最小文件系统,即根文件系统根文件系统的制作使用的是busybox,它是集成和压缩了Linux的很多命令和工具,就像是一个大工具箱。...原创 2022-05-06 18:28:46 · 946 阅读 · 0 评论 -
嵌入式学习之QT学习---10 QT计时器
做"计时器"需要用到两个类:QTime:时间数据类型,仅表示时间,如15:23:13;相当于手表。QTimer:qt的定时类,相当于秒表。设计思路跟之前的设计一样,都是先设计ui界面,然后再实现逻辑功能。第一部分:设计ui界面(1)选择好需要的控件计时器显示时间的窗口用Label来实现,还需要有几个按钮(开始、关闭、重置、打点),还要将时间保存在一个窗口里面(Text Browser)(2)界面布局并编译运行(3)给控件修改名字第二部分:编写逻辑代码(1)包含所用类的头文件(2)原创 2022-05-05 14:48:45 · 3950 阅读 · 1 评论 -
嵌入式学习之QT学习---9 QT网络编程之UDP通信
1、关于UDP的基础信息UDP(user datagram protocol,用户数据报协议)是轻量的、不可靠的、面向数据报(datagram)、无连接的协议,它可以用于对可靠性要求不高的场合。与TCP通信不同,两个程序之间进行UDP通信无需预先建立持久的socket连接,UDP每次发送数据报都需要指定目标地址和端口。 UDP通信相对于TCP通信的实现来说就稍微容易一些了,因为UDP是不需要分客户端和服务器的。只需要用到一个类QUdpSocket。UDP消息传送有单播、广播、组播三种模式。单播(un原创 2022-05-04 16:30:31 · 4119 阅读 · 1 评论 -
嵌入式学习之QT学习---8 QT网络编程之TCP通信
前言: Qt网络模块提供了用于编写TCP/IP客户端和服务器端程序的各种类,如用于TCP通信的QTcpSocket和QTcpServer,用于UDP通信的QUdpSocket,还有用于实现HTTP、FTP等普通网络协议的高级类,如:QNetworkReauest、QNetworkReply等。Qt模块还提供用于网络代理、网络承载管理的类,提供基于安全套接字层(Secure Sockets Layer,SSL)协议的安全网络通信的类。1、浅谈网络编程网络编程有TCP(transmission contro原创 2022-05-04 12:54:00 · 1301 阅读 · 0 评论 -
嵌入式学习之QT学习---7 QT程序打包和部署(打包成可以在windows上执行的软件)
1、什么是打包和部署?因为要把写好的程序发给用户来用,同时有时候写好的重要源码也不方便给别人看,所以要把程序进行打包部署。2、怎么打包和部署?首先要把工程切换到release模式,然后编译。点击左下角第一个图标,将模式从“Debug”模式切换到“Release”模式。release 模式:发布版本,不对源代码进行调试,基本没有调试信息,这样的话,程序也会比较精简。 debug 模式:调试版本,有很多调试信息。其次,找到release模式构建的文件夹,我这里的路径为:D:\qt\qt_demo\原创 2022-05-03 15:24:48 · 1737 阅读 · 0 评论 -
嵌入式学习之QT学习---6 QT上位机开发之串口助手(下)
接着嵌入式QT上位机开发之串口助手(上)来完善一下串口助手的功能,上一篇博客已经实现了自动获取的功能了。首先要在头文件里面包含一下头文件,再定义一个QSerialPort类型的参数;其次打开widget.cpp文件,在这个文件里面也要定义一个QSerialPort类型的参数。修改完成之后,编译运行一下,看是否有报错,无报错,继续接着操作串口。第一步:对串口进行初始化串口的初始化是在“打开”串口的时候进行的,所以就要将“打开”这个操作将窗口初始化关联起来,通过信号和槽来进行关联。回忆一下,进行关联的原创 2022-05-02 21:07:39 · 3356 阅读 · 0 评论 -
嵌入式学习之QT学习---5 QT上位机开发之串口助手(上)
1、qt的三驾马车qt下的串口编程qt下的网络编程qt下操作GPIO2、设计ui界面设计ui界面之前,需要新建一个QT工程,简要再回顾一下创建QT工程的步骤:new project—》application—》Qt widgets application—》写入名字,选择路径—》基类选择“QWidget”。创建好QT工程之后,先编译一下,看会不会报错,不然万一有错误,等到最后全部搞完的时候再去编译,如果有报错,都很难排错。上次我就是基类选错了,最后编译的时候报错,明明每一个环节都没错,直到第原创 2022-05-02 17:29:59 · 2655 阅读 · 0 评论 -
嵌入式学习之QT学习----4 完善界面
这一部分就在嵌入式学习之QT学习—3制作简单的QT界面(如:QQ登录界面)的基础上进一步地完善界面。1、给QT工程添加图片(1)添加图片资源文件选住项目名称-----》点击右键----》添加新文件----》Qt------>QtResource File-----》choose…(路径和名称都不能有中文,此处命名为qq)-----》下一步…-----》完成添加完之后,会在工程文件下看到添加的资源文件夹以及文件。点击新生成的“.qrc”文件,右键“open with”-----》“资源管理器原创 2022-05-01 21:16:13 · 995 阅读 · 0 评论 -
嵌入式学习之QT学习----3 制作简单的QT界面(如:QQ登录界面)
1、创建一个QT工程new project —> Application —> Qt Widgets Application —> choose…(注意不要有中文路径)填写名称(我写的名称为class2)和创建路径(D:\qt\qt_demo\class2) —> 填写类名,这里基类要选择“QWidget”,这样一个QT工程就创建好啦。qt的移植性非常强,一套代码我们不用修改太多,直接通用所有的平台。说明:QMain Window:主窗口类,主窗口具有主菜单栏、工具原创 2022-05-01 17:14:03 · 10219 阅读 · 0 评论 -
嵌入式学习之QT学习 ----2 C++基础
1、什么是c++?c++是c语言的升级版,在c的基础上增加了很多功能,是一种高级语言,常见后缀:cpp,c++,cc 等。一些C语言里面的语法结构对于c++来讲也是适用的,举个例子,循环打印“Hello World!”十次(使用for循环来实现)#include <iostream>using namespace std;class student{public: //成员函数 char name[64]; int age;};int main()原创 2022-04-30 19:48:27 · 1811 阅读 · 0 评论 -
嵌入式学习之QT学习 ----1 QT环境搭建(Windows)
想了又想,之后的设计基于QT系统大概会比较容易一些,就学习一下基础知识吧。1、什么是QT?QT是一个跨平台的、C++、图形用户界面,应用程序开发框架。2、通过学习,将会获得哪些知识?掌握QT环境搭建C++入门掌握使用QT开发windows平台上位机,如:串口调试助手、网络调试助手等掌握发布自己开发的windows上位机掌握在ARM板上移植QT操作系统掌握把QT程序移植到ARM开发板上运行掌握使用QT驱动程序,如:点亮一个LED掌握QT开发手机APP学习远程调试ARM板子上的QT程序原创 2022-04-30 15:51:42 · 1881 阅读 · 0 评论 -
ITOP4412开发板之声卡测试
好久没更博啦,今天来记录一下最近了解到并实践的声卡测试的东西吧。1、itop4412开发板----声卡上图为itop4412开发板精英版,方框处分别是声卡的麦克(MIC)和耳机(PHONE)接口。此外,开发板中的J3为声卡外放的左声道,J4为声卡外放的右声道。2、测试声卡此次的声卡测试是基于安卓系统的(采用的是OTG线烧写),编译好安卓系统的开发板如下图所示。想要完完整整地测试声卡,还需要准备一些工具:麦克风、喇叭、耳机。我准备的工具参数主要如下:耳机:四段式;喇叭:4欧姆,3w(一对)原创 2022-04-24 20:05:15 · 993 阅读 · 2 评论 -
嵌入式系统之linux系统编程---17 管道通信(无名管道、有名管道)
1、一些说明有名管道与无名管道的区别是文件系统里面有没有文件名。在应用层中有“进程a”和“进程b”两个进程,这两个进程在应用层里面是不能直接交流的,它们必须通过内核才能进行通讯;利用管道,进程a往管道里面写数据,进程b从管道中去读数据,这样就实现了进程a和进程b之间的通讯。2、无名管道无名管道只能实现有亲缘关系间的进程通信,比如说父子进程。像上面提到的进程a与进程b,它们之间无亲缘关系,就不能使用无名管道了。(1)pipe函数作用:创建管道头文件#include<unistd.h&g原创 2022-04-11 16:19:32 · 2068 阅读 · 0 评论 -
嵌入式系统之linux系统编程---16 守护进程
1、基本概念孤儿进程—父进程结束以后,子进程还未结束,这个子进程就叫做孤儿进程。但是孤儿进程会被系统的init(pid号为1)进程所领养,此时它的父进程就变为了init进程。僵尸进程—子进程结束以后,父进程还在运行,但是父进程不去释放进程控制块,这个子进程就叫做僵尸进程。守护进程—守护进程运行在后台,不跟任何控制终端关联。2、关于孤儿进程的实例3、关于僵尸进程的示例4.怎么创建一个守护进程?有两个基本要求:a.守护进程必须作为 init 进程的子进程b.守护进程不跟控制终端交互。创建守原创 2022-04-11 10:55:14 · 925 阅读 · 0 评论 -
嵌入式学习之linux系统编程---15 进程控制(ps、kill、孤儿进程、僵尸进程、wait命令)
1、ps和kill命令ps和kill命令的格式ps命令:ps命令可以列出系统中当前运行的那些进程命令格式:ps[参数]命令功能:用来显示当前进程的状态常用参数:auxkill命令kill命令用来杀死进程eg: kill -9(SIGKILL) PID号9号代表的是SIGKILL信号...原创 2022-03-31 21:31:55 · 1266 阅读 · 0 评论 -
嵌入式学习之linux系统编程---14 进程控制(fork、execl命令)
1、fork函数—创建进程的函数fork函数:头文件:#include <unistd.h>函数原型:pid_t fork(void)fork函数的返回值:fork函数的返回值有三种,(1)创建失败,则fork返回一个负值;(2)若创建成功,则在父进程中,fork返回新创建的子进程的pid号;同时,在子进程中,fork函数返回0值。2、fork函数例程要求:让进程a(父进程)去创建新的进程b(子进程)#include <unistd.h>#include <原创 2022-03-30 17:28:57 · 2946 阅读 · 0 评论 -
嵌入式学习之linux系统编程---13 进程基础知识
1、什么是进程?进程指正在运行的程序。何为程序?程序是指保存在存储介质(如:磁盘)上的,经过编译的可执行的二进制文件。(程序是静态的,进程是一个动态的概念;换句话讲,进程就是程序的执行过程)进程也是操作系统分配资源的最小单位。注:打开windows电脑的资源管理器即可看到进程;后台程序又称为“守护进程”2、进程ID每个进程都有一个唯一的标识符,既进程 ID,简称 pid。3、进程间的通信有几种方法?4、进程间的三种基本状态及转换举个例子来理解这三种状态:(1)现在有一个进程,除了cpu原创 2022-03-30 15:36:11 · 172 阅读 · 0 评论 -
嵌入式学习之linux系统编程---12 静态库与动态库
1、什么是库?为什么要使用库?库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率,加快开发速度。2、linux下库的种类linux下库分为两种:静态库与动态库(1)静态库:静态库在程序编译的时候会被链接到目标代码里面(即:编译程序时,静态库中的函数被拷贝到当前的程序中),所以我们的程序就不再需要该静态库了。因此编译出来的体积就比较大,静态库以lib开头,以.a结尾。(2)动态库(共享库):动态库在程序编译的时候不会被链接到目标代码里面,而是在程序运行的时候被载入的,所以在程序运行原创 2022-03-30 12:39:27 · 1560 阅读 · 0 评论 -
嵌入式学习之linux系统编程---11 综合练习二
练习二:在练习一的基础上,利用学到的目录IO的知识,修改练习一的代码,增加以下需求:(1)打印我们需要拷贝的目录下的所有文件名,并拷贝我们需要的文件;(2)通过键盘,输入我们要拷贝的文件的路径和文件名等信息分析:“打印需要拷贝的目录下的所有文件名”使用opendir以及closedir函数可以完成该操作;“拷贝我们需要的文件”这个属于练习一的内容。“通过键盘,输入我们要拷贝的文件的路径和文件名等信息”可以使用c语言中的scanf函数来实现。c代码如下:在这里插入代码片...原创 2022-03-30 10:32:16 · 101 阅读 · 0 评论 -
嵌入式学习之linux系统编程---10 综合练习一
练习一:通过命令行操作,将a.c文件里面的内容写到b.c里面c代码如下:在这里插入代码片练习二:在练习一的基础上,利用学到的目录IO的知识,修改练习一的代码,增加以下需求:(1)打印我们需要拷贝的目录下的所有文件名,并拷贝我们需要的文件;(2)通过键盘,输入我们要拷贝的文件的路径和文件名等信息分析:“打印需要拷贝的目录下的所有文件名”使用opendir以及closedir函数可以完成该操作;“拷贝我们需要的文件”这个属于练习一的内容。“通过键盘,输入我们要拷贝的文件的路径和文件名等信息”可原创 2022-03-29 21:37:45 · 507 阅读 · 0 评论 -
嵌入式学习之Linux系统编程---9 目录IO之readdir函数
1、readdir函数的函数原型#include <dirent.h>struct dirent *readdir(DIR *dirp);对于readdir函数来说,它只有目录流指针这一个参数,这个目录流指针就是使用opendir这个函数大尅的返回值。该函数在man手册的第三页,该函数如果执行成功,则返回的是一个结构体指针,失败则返回的是NULL,读到末尾也是返回NULL。2、readdir函数的应用示例3、思考如果读取的目录下面会有很多个文件(不止一个文件),那么读取出来的结果原创 2022-03-29 20:09:53 · 4495 阅读 · 2 评论 -
嵌入式学习之linux系统编程---8 目录IO之opendir和closedir函数
1、函数原型opendir函数原型#include<sys/types.h>#include<dirent.h>DIR *opendir(const char*name);"DIR opendir(const charname);"代表的是:返回值是目录流指针,如果失败的话返回值是null,成功返回目录流指针。“const char*name”指的是打开的目录以及路径。closedir函数原型#include<sys/types.h>#include&l原创 2022-03-29 16:34:59 · 992 阅读 · 0 评论 -
嵌入式学习之linux系统编程---7 目录IO之mkdir函数
1、目录IO与文件IO的区别目录IO文件IOopendir—打开目录open—打开文件mkdir—创建目录-----------readndir—读目录read—读文件closedir—关闭目录close—关闭文件区别:在之前的博客中提到的文件IO和标准IO都是对文件的操作;而目录IO都是对目录的操作。正如表格中提到的:(1)针对文件IO,若想创建一个文件,可以在打开文件的时候加入“O_CREAT”参数;但是对于目录IO来说,这种方式是无效的,创建目原创 2022-03-24 18:09:22 · 1581 阅读 · 0 评论 -
嵌入式学习之linux系统编程---6 文件IO之lseek函数
1、了解lseek函数若一个矩形代表一个文件,这个矩形由七个小矩形组成,这七个小矩形(从左到右)分别代表该文件的第1,2,3,4,5,6,7个字节。当我们打开文件时,会有一个指针指向这个文件的第一个字节;使用read函数进行读操作,假如读了两个字节,指针就会向后移动两个字节,从“1”的位置移至“3”;当再次执行读操作时此时会从第一个字节开始读还是接着从“3”的位置开始读呢?答案是从指针指向的位置“3”开始读。同样地,写操作碰到这种这种情况也是如此。如果想要移动指针,需要如何移动呢?需要使用lseek函原创 2022-03-23 23:01:00 · 1424 阅读 · 2 评论 -
嵌入式学习之linux系统编程---5 文件IO之write函数
1、write函数的函数原型#include <unistd.h>ssize_t write(int fd,const void *buf,size_t count)ssize_t write(int fd,const void *buf,size_t count) 指的是把count字节的数据从buf指向的缓冲区写到文件描述符为fd的指向的文件中,它实际返回的值是实际写入的个数。ubuntu界面利用man手册可查看write函数的相关信息,该函数的头文件与read、close的头文件原创 2022-03-16 17:02:40 · 2481 阅读 · 0 评论 -
嵌入式学习之linux系统编程---4 文件IO之read函数
1、read函数的函数原型#include <unistd.h>ssize_t read(int fd,void *buf,size_t count)在函数原型中,ssize_t 指的是返回值;fd是要读取的文件的文件描述符;* buf是万能指针,一个任意类型的指针,议案是传进去一个地址;count是要读取的字节个数。同样地,在ubuntu界面输入:man 2 read可以查看read函数的相关信息。该函数的作用是从文件描述符fd所指定的文件中读取“count”字节的大小到“buf”所原创 2022-03-16 11:30:55 · 4172 阅读 · 0 评论 -
嵌入式学习之linux系统编程---3 文件IO之close函数
1、close函数的函数原型#include <unistd.h>;int close(int fd);该函数的作用是:关闭一个文件描述符。fd就是文件描述符。在ubuntu界面输入“man 2 close”即可查看close函数的相关信息,“2”是指close在man手册的第2页。2、思考:close函数里面的fd参数是怎么来的呢?首先,每一个文件都有文件描述符与之对应的;文件描述符是打开文件之后由系统给我们分配的;当我们关闭一个文件时,我们使用的fd是从open这个系统调用里面返原创 2022-03-15 16:07:47 · 2403 阅读 · 0 评论 -
嵌入式函数之linux系统编程---2 文件IO之open函数
1、关于文件描述符对于文件IO来说,一切都是围绕文件描述符来进行的。在linux系统中,所有打开的文件都有一个对应的文件描述符。文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文件描述符。当我们对一个文件作读写操作时,我么使用open函数返回的这个文件描述符会标识该文件,并将其作为参数传递给read或write函数。2、关于文件IO和标准IO3、关于opeh函数的代码:#include <stdio.h>#include <stdlib.h>#原创 2022-03-14 11:00:09 · 1837 阅读 · 0 评论 -
嵌入式学习之linux系统编程----1 了解linux编程并且在ubuntu以及ARM上运行测试程序
1、何为linux系统编程?linux系统编程也称为linux下的高级编程,它介于应用层与驱动层之间。一般来说分为三个层面,分别是:应用层(写一个qt程序或者c程序就属于是应用层面)、驱动层(比如写一个蜂鸣器、led等)以及硬件层(与开发板相关的)。2、linux系统编程基本程序框架先从最简单的程序开始说起(helloworld.c)#include <stdio.h>#include <stdlib.h>int main(void){ printf原创 2022-03-12 16:11:29 · 2754 阅读 · 0 评论 -
嵌入式之linux入门篇
将这些天学习的linux入门知识上传过来,方便之后的巩固。原创 2022-03-10 17:51:51 · 328 阅读 · 0 评论 -
在ubuntu上安装Samba软件--提升开发体验
topeet@ubuntu:~$ sudo apt-get install samba[sudo] topeet 的密码: 正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: attr libaio1 python-crypto python-dnspython python-ldb python-samba python-tdb samba-common samba-common-bin samba-dsdb原创 2022-03-10 16:36:00 · 1020 阅读 · 0 评论 -
ubuntu与windows互ping
今天学习了一下ubuntu与windows如何互ping,于是想要自己动手试一下。先来查看一下windows的IP地址吧。打开cmd.exe,输入命令:ipconfig可查看windows的ip地址进入ubuntu界面topeet@ubuntu:~$ ping 192.168.21.1使用该条语句便可实现ubuntu与windows ping,并出现下面的信息,使用ctrl+c便可停止该行为64 bytes from 192.168.21.1: icmp_seq=16702 ttl=128 t原创 2022-03-10 15:27:40 · 2806 阅读 · 0 评论 -
安装了VMwaretools却无法使用
在很早之前安装了VMwaretools却无法使用,不能实现在windows以及ubuntu互相之间的复制粘贴今天想着彻底解决一下这个问题,进行了一番操作刚开始看到有博主说因为Ubuntu的次怕空间不足了,他腾了足够大的空间之后便可顺利实现Vmwaretools该有的功能啦看一下我自己的剩余空间吧,如下所示,这不空间还是挺大的嘛。怀着半信半疑的态度将磁盘里面没用的压缩包清理了一下,执行了reboot,试了一下是否可正常使用,还是不可以。topeet@ubuntu:~$ df -h文件系统原创 2022-03-09 21:46:45 · 5848 阅读 · 2 评论 -
提高vscode下载速度
进入vscode官网,点击download在上面的压缩包处右键选择“复制下载链接”,重新打开一个标签页,将刚才复制的下载链接中的(https://az764295.vo.msecnd.net/stable/f80445acd5a3dadef24aa209168452a3d97cc326/code_1.64.2-1644445741_amd64.deb)az764295.vo.msecnd.net改为vscode.cdn.azure.cn五秒左右就下载好啦,不用苦苦等待还一直显示网络问题无法下载啦!原创 2022-02-23 15:23:47 · 383 阅读 · 0 评论 -
Qt库的编译配置选项简介
原创 2021-12-20 12:34:20 · 1330 阅读 · 0 评论 -
这篇必须有标题 ----Android4.4.4镜像的编译中遇到的问题
准确地说,最近三天半的时间都在搞这件事情,Android4.4.4的镜像编译可谓是一波三折,怎么说呢,还是挺费内存的(想换电脑.jpg)。起初因为虚拟机内存不足,导致编译失败;再后来,发现物理内存不足,编译再次失败;解决完虚拟机内存和物理内存的问题,又一个问题来了,虚拟机的交换空间不足,kill了进程,编译再次以失败告终。不会吧?那就继续解决存在的问题吧。这是第五次编译了,终于成功了,留下了激动的泪水!用时三个小时以上,由于是昨天回宿舍之前让它开始编译的,开始编译之后就回宿舍啦,所以具体用时不详,以往编译原创 2021-12-18 16:50:56 · 2340 阅读 · 1 评论 -
Ubuntu常见问题之------磁盘空间不足,扩展分区
磁盘分区转载 2021-12-14 12:45:53 · 3119 阅读 · 1 评论