![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux学习之路
文章平均质量分 80
普通网友
这个作者很懒,什么都没留下…
展开
-
Githubs的使用方法(创建仓库\分支\提交【增删改查】\拉取与合并\管理与clone代码\修改分支等操作)
这一小节主要介绍github的基本使用方法以及每一步的流程和作用。原创 2023-04-18 15:28:03 · 841 阅读 · 1 评论 -
ARM汇编指令(跳转指令)
示例代码7.2.4.2 BL指令示例 1 push {r0, r1} @保存r0,r1 2 cps #0x13 @进入SVC模式,允许其他中断再次进去 3 5 bl system_irqhandler @加载C语言中断处理函数到r2寄存器中 6 7 cps #0x12 @进入IRQ模式 8 pop {r0, r1} 9 str r0, [r1, #0X10] @中断执行完成,写EOIR。这是最简单的跳转指令, B指令会将 PC寄存器的值设置为跳转目标地址, 一旦执行 B指。在汇编中调用 C函数的问题。原创 2023-03-28 21:56:28 · 1260 阅读 · 0 评论 -
Cortex-A7常用汇编指令
本节我们将介绍一些常用的 Cortex-A7汇编指令,如果想系统的了解 Cortex-A7的所有汇编指令请参考《 ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf》的 A4章节。原创 2023-03-27 22:49:23 · 869 阅读 · 0 评论 -
ARM汇编基础
我们在学习 STM32的时候几乎没有用到过汇编,可能在学习 UCOS、 FreeRTOS等 RTOS类操作系统移植的时候可能会接触到一点汇编。但是我们在进行嵌入式 Linux开发的时候是绝对要掌握基本的 ARM汇编,因为 Cortex-A芯片一上电 SP指针还没初始化, C环境还没准备好,所以肯定不能运行 C代码,必须先用汇编语言设置好 C环境,比如初始化 DDR、设置 SP指针等等,当汇编把 C环境设置好了以后才可以运行 C代码。所以 Cortex-A一开始肯定是汇。原创 2023-03-27 22:45:14 · 444 阅读 · 0 评论 -
C++语法规则4(C++面向对象)
在这个 C++基础中,我们的例子非常简单,也十分之易懂,重要的是理解概念,许多 C++的课程都是以 C++的功能甚至是很复杂的算法作讲解,内容复杂且多。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。只要我们理解好上面的 C++的基础,对学习 C++有很大的帮助,不要求对 C++有很深的理解,至少在我们后面学习 Qt 时已经大概了解 Qt 中的 C++语法。设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。原创 2023-03-11 19:33:11 · 318 阅读 · 0 评论 -
C++语法规则3(C++面向对象)
total 为获得的食物总数,然后我们还写一个公开的方法 getFood()在 public 下,通过 getFood()来打印出小狗总共获得了几份食物。然后通过基类的指针来访问 Dog 类对象与 Cat 类的对象的 run()方法,前提是基类的 run()方法必须声明为虚函数,如果不声明为虚函数,基类的指针将访问到基类自己的 run()方法。但是拍照的功能是如何实现的,是怎么通过摄像头取像然后怎么在屏幕上显示的过程,作为用户是不需要知道的。纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。原创 2023-03-11 19:32:36 · 316 阅读 · 0 评论 -
C++语法规则2(C++面向对象)
面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。在 Qt 里大量的使用了这种特性,当 Qt 里的类不满足自己的要求时,我们可以重写这个类,就是通过继承需要重写的类,来实现自己的类的功能。一个类可以派生自多个类,这意味着,它可以从多个基类继承数据原创 2023-03-10 22:00:04 · 545 阅读 · 0 评论 -
C++语法规则1(C++面向对象 )
什么是析构函数?与构造函数相反,在对象结束其生命周期时系统自动执行析构函数。实际上定义类时,编译器会生成一个析构函数。原创 2023-03-10 21:52:10 · 565 阅读 · 0 评论 -
C++基础
C++比 C 语言新增的数据类型是布尔类型(bool)。但是在新的 C 语言标准里已经有布尔类型了,但是在旧的 C 语言标准里是没有布尔类型的,编译器也无法解释布尔类型。在传统的 C 语言里,变量初始化时必须在程序的前面定义在前面,而 C++则是可以随用随定义。C++也可以直接初始化,比如 int x(100);这样就直接赋值 x=100,这些都是 C++特性的好处。这里只说这些常用的新特性,其他特性不做描述或者解释了。2.2 C++的输入输出方式。原创 2023-03-09 22:38:41 · 245 阅读 · 0 评论 -
在 Ubuntu 下编写 C++
C++ (c plus plus)是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的 C,后来在 1983 年更名为 C++。C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。原创 2023-03-09 21:21:39 · 4910 阅读 · 1 评论 -
实战小项目之视频监控(1-2)
前面也给大家提到了,我们可以使用 Nginx 来搭建 RTMP 流媒体服务器,譬如你可以在一台公网 IP 主机上搭建流媒体服务器,当然,笔者并没有这个条件;这里我们选择在开发板上搭建流媒体服务器,并且推流端也是开发板,所以在本章的方案中,开发板既是流媒体服务器、也是推断端。既然要在开发板上搭建流媒体服务器,首先我们需要将 Nginx 移植到开发板上,事实上,我们的板子出厂系统中就已经移植好了 Nginx,并且板子在启动进入系统时会自动启动 Nginx,也就是启动流媒体服务,原创 2023-03-08 19:37:45 · 502 阅读 · 0 评论 -
实战小项目之视频监控(1-1)
本章我们将使用 RTMP 流媒体服务来实现视频监控,RTMP 流媒体服务框架图如下所示:图 34.1.1 流媒体服务推流端负责将视频数据通过 RTMP 流媒体协议传输给 RTMP 流媒体服务器,拉流端可以从流媒体服务器中通过 RTMP 协议获取到视频数据;而流媒体服务器负责接收推流端的视频数据、当有客户端(拉流端)想要获取视频数据时再将其发给相应的客户端。所以从上图可知,要想实现 RTMP 视频监控,必须要有这三部分:推流客户端、拉流客户端以及流媒体服务器。那这些需要我们自己去实现吗?原创 2023-03-08 19:29:26 · 495 阅读 · 0 评论 -
CAN 应用编程实战
本小节我们来编写简单地 CAN 应用程序。在 Linux 系统中,CAN 总线设备作为网络设备被系统进行统一管理。在控制台下,CAN 总线的配置和以太网的配置使用相同的命令。原创 2023-03-07 20:35:30 · 1065 阅读 · 0 评论 -
SocketCan 应用编程
由于 Linux 系统将 CAN 设备作为网络设备进行管理,因此在 CAN 总线应用开发方面,Linux 提供了SocketCAN 应用编程接口,使得 CAN 总线通信近似于和以太网的通信,应用程序开发接口更加通用,也更加灵活。SocketCAN 中大部分的数据结构和函数在头文件 linux/can.h 中进行了定义,所以,在我们的应用程序中一定要包含头文件。原创 2023-03-07 19:25:52 · 3110 阅读 · 1 评论 -
CAN 应用编程基础
在学习 CAN 应用编程之前,本小节简单地给大家介绍下 CAN 相关的基础知识。本小节内容参考了由瑞萨电子编写的《CAN 入门教程》CAN 是 Controller Area Network 的缩写(以下称为 CAN),即控制器局域网络,是 ISO 国际标准化的串行通信协议。CAN 总线最初是由德国电气商博世公司开发,其最初动机就是为了解决现代汽车中庞大的电子控制系统之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。原创 2023-03-06 22:58:29 · 1008 阅读 · 0 评论 -
(socket编程实验中遇到的问题)connect error no route to host
上网全是:两台机器进行socket通信时,可能在连接时出现错误:出错原因:server端的防火墙设置了过滤规则解决办法:使用iptables关闭server端的防火墙。原创 2023-03-06 22:27:43 · 1119 阅读 · 0 评论 -
socket 编程实战(编写客户端程序 )
到此,本章的内容就结束了,内容讲得非常浅,目的其实并不是让大家学会网络编程,这个是不可能的,旨在以引导大家入门为主,让大家对 socket 网络编程有一个基本的了解和认识。因为网络编程本就是应用编程中一门比较专业的方向,如果大家将来想从事这方面的工作、或者以后从事了这方面工作,再去找资料好好学习,如果没有这个打算,那就不要去深入研究这个,有了基本的了解、认识就行了。原创 2023-03-06 20:42:55 · 485 阅读 · 0 评论 -
socket 编程实战(编写服务器程序 )
编写服务器程序 ,将字符串 src 转换为二进制地址,参数 af 必须是 AF_INET 或 AF_INET6,AF_INET 表示待转换的 Ipv4地址,AF_INET6 表示待转换的是 Ipv6 地址;点分十进制字符串和二进制地址之间的转换函数主要有:inet_aton、inet_addr、inet_ntoa、inet_ntop、inet_pton 这五个,在我们的应用程序中使用它们需要包含头文件、以及。原创 2023-03-05 21:40:47 · 614 阅读 · 0 评论 -
socket 编程基础
套接字(socket)是 Linux 下的一种进程间通信机制(socket IPC),在前面的内容中已经给大家提到过,使用 socket IPC 可以使得在不同主机上的应用程序之间进行通信(网络通信),当然也可以是同一台主机上的不同应用程序。socket IPC 通常使用客户端服务器这种模式完成通信,多个客户端可以同时连接到服务器中,与服务器之间完成数据交互。内核向应用层提供了 socket 接口,对于应用程序开发人员来说,我们只需要调用 socket 接口开发自己的应用程序即可!原创 2023-03-05 14:55:35 · 358 阅读 · 0 评论 -
网络基础知识(IP地址、TCP协议/IP协议、UDP协议、三次握手,四次挥手的过程、端口等的概念)
确认序号占 4 字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;UDP 虽然有很多缺点,但也有自己的优点,所以它也有很多的应用场合,因为在如今的网络环境下,UDP 协议传输出现错误的概率是很小的,并且它的实时性是非常好,常用于实时视频的传输,比如直播、网络电话等,因为即使是出现了数据丢失的情况,导致视频卡帧,这也不是什么大不了的事情,所以,UDP协议还是会被应用与对传输速度有要求,并且可以容忍出现差错的数据传输中。:这种状态的含义其实是表示在等待关闭。原创 2023-03-05 11:51:01 · 967 阅读 · 0 评论 -
IP 地址的简介
Internet 依靠 TCP/IP 协议,在全球范围内实现不同硬件结构、不同操作系统、不同网络系统的主机之间的互联。在 Internet 上,每一个节点都依靠唯一的 IP 地址相互区分和相互联系,IP 地址用于标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个 IP 地址(Internet Protocol Address),只有合法的 IP 地址才能接入互联网中并且与其他主机进行网络通信,IP 地址是软件地址,不是硬件地址,硬件 MAC 地址是存储在网卡中的,应用于局域网中寻找目标主原创 2023-03-04 21:06:12 · 980 阅读 · 0 评论 -
TCP/IP 四层/五层模型
事实上,TCP/IP 模型是 OSI 模型的简化版本,我们来看看 OSI 七层模型和 TCP/IP 五层模型之间的对应的关系:所以由上图可知,TCP/IP 五层模型中,将 OSI 七层模型的最上三层(应用层、表示层和会话层)合并为一个层,即应用层,所以 TCP/IP 五层模型包括:应用层、传输层、网络层、数据链路层以及物理层。原创 2023-03-03 23:42:47 · 1346 阅读 · 0 评论 -
网络互连模型:OSI 七层模型
七层模型,亦称 OSI(Open System Interconnection)。OSI 七层参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间网络互联的标准体系,一般称为 OSI 参考模型或七层模型。OSI 七层模型是一个网络互连模型,从上到下依次是:从上可知,网络通信的模型分了很多层,为什么需要分为这么多层次?原因就在于网络是一种非常复杂的通信,需要进行分层,每一层需要去实现不同的功能。下面我们来详细看下 OSI 参考模型中每一层的作用。原创 2023-03-03 23:38:28 · 1019 阅读 · 0 评论 -
tslib全称应该是Touch Screen Library,也就是专门针对触摸屏创建的开源库
tslib全称应该是Touch Screen Library原创 2023-03-01 21:33:04 · 282 阅读 · 0 评论 -
读取/etc/profile时发现错误:
etc/profile:行XX:*****************/etc/profile:行XX:*****************原创 2023-02-28 22:52:55 · 724 阅读 · 0 评论 -
VMware虚拟机安装ubuntu系统在虚拟机中全屏以及主机和虚拟机之间文件的复制
List item今天需要用到了Linux操作系统。在VMware装上linux之后经常面临这样一个问题,那就是很多指令很长,逐字去敲显然费时费力。按照惯例我也查了几种方法,然而要么就是需要安装图形化界面,要么就是只是复制linux命令窗口本身的文字。然而这个问题实际非常简单!依然是我们平时使用的Ctrl+C和Ctrl+V!①首先在windows界面中ctrl+c复制我们想要的内容。原创 2023-02-28 22:44:48 · 1740 阅读 · 0 评论 -
Ubuntu 交叉编译工具链安装
图中有很多种交叉编译器,我们只需要关注这两种: gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf.tar.tar.xz 和 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz,等待解压完成,解压完成以后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linuxgnueabihf”的文件夹,这个文件夹里面就是我们的交叉编译工具链。原创 2023-02-28 19:09:27 · 1933 阅读 · 0 评论 -
How to Kill Linux Process Using Kill, Pkill and Killall
How to Kill Linux Process Using Kill, Pkill and Killall原创 2023-02-27 23:35:18 · 146 阅读 · 0 评论 -
Linux mkdir、tar 和 kill 命令的 4 个有用小技巧
我们一直以常规的方式完成一个任务,直到我们知道有更好的处理方法。作为 Linux 技巧和绝招系列 的后续,我会在这里介绍能在各个方面给你帮助的 4 个小技巧。开始吧!原创 2023-02-27 23:09:45 · 111 阅读 · 0 评论