自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 vmwaretools与open-vm-tools都无法使用的解决方法

一、问题描述由于电脑重装系统,把之前存放虚拟机的整个文件夹都搬运过来。使用vmware打开.vmx文件之后一切工作都正常,但是发现vmware-tools无法实现虚拟机和主机之间的复制粘贴等操作了,并且出现vmware-tools启动脚本丢失的错误提示。二、问题解决1、删掉重装网上很多博主说出现这种提示是因为重复安装vmware-tools导致工作路径错误,可以把之前所有的vmware-tools文件都删除。删除vmware-tools或者的方法://...

2022-03-10 00:34:51 2524

原创 Linux系统下的静态库和动态库

一、两种库的定义和差异1、静态库: 静态库是以libxxx.a命名的库文件(也是一种二进制可执行的代码文件),在编译源程序的时候,如果包含了静态库,则会把整个静态库的数据都编译进程序文件。2、动态库: 动态库是以libxxx.so命名的库文件,与静态库不同,如果源程序使用的是动态库,则不会把库的数据编译进程序,而是当程序运行到某个与动态库相关的函数时,再根据动态库留下的标记,进入动态库中寻找资源。3、两者的区别: 由于静态库在编译程序阶段就把...

2021-10-18 21:55:34 512

原创 linux执行程序提示“Bad file descriptor”

一、问题描述 写了一个简单的读写文件程序,提示Bad file descriptor,但是程序会正常生成文件。二、问题分析与解决 使用perror函数,打印出发生错误的地方的信息。 发现是在读文件的时候发生错误,在执行write写文件的时候并无错误提示: 后面发现是打开文件的时候只给了可写权限,程序没有可读权限,才会出现可写,读的时候却报错的情况。 所以即使是提示文件描述符错误,也可能不是因为文件描述符...

2021-10-09 21:33:55 41866

原创 linux使用spi读取传感器数值一直显示0

一、问题描述 最近在使用飞思卡尔的imx6ull的时候,要用spi协议实现和icm20608六轴传感器的通讯时,发现读取出来的数据都是0(即使读取的是ID寄存器)。二、解决方法1、上论坛查找问题,发现首先是忘记屏蔽掉设备树中冲突的引脚配置pinctrl_ecspi3:icm20608{ fsl,pins=< /* MX6UL_PAD_UART2_TX_DATA__ECSPI3_SS0*/ MX6UL_PAD_UART2_TX_DATA__GPIO1_...

2021-10-04 15:37:34 1761 5

原创 加载linux驱动模块时,终端提示一堆内存错误

一、问题描述 在写好一个linux驱动模块,在开发板上运行的时候,出现以下提示:WARNING: CPU: 0 PID: 100 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x54/0x74()sysfs: cannot create duplicate filename '/class/led_class'Modules linked in: leddriver(O+) [last unloaded: leddriver]CPU: 0 PID: ...

2021-09-18 00:30:18 2865

原创 linux异步通知

一、异步的概念 在使用阻塞或者非阻塞IO时,都是由应用程序询问设备是否空闲。使用异步时,可以由设备驱动通知应用程序,设备变成可用状态。二、操作过程1、应用程序①注册信号处理函数sighandler_t signal(int signum, sighandler_t handler)signum:要设置处理函数的信号。handler :信号的处理函数。返回值:设置成功的话返回信号的前一个处理函数,设置失败的话返回 ...

2021-09-11 21:12:14 194

原创 linux系统下的非阻塞访问和阻塞访问

一、阻塞访问和非阻塞访问的定义及区别 在实际开发过程中,可能遇到对同一个设备驱动进行多次访问的情况,根据访问方式的不同,可以分为阻塞和非阻塞访问,这两种访问的区别体现在设备繁忙时,对于当前进程的处理方式不同。 阻塞访问: 当执行设备操作时,无法获得资源,则将该进程挂起,等到获得可以执行设备操作资源的时候再执行,等待期间处于休眠状态。一般通过等待队列来实现处理的先后顺序。 非阻塞访问:当执行设备操作时,无法获得资源,但...

2021-09-11 15:57:54 606

原创 编译linux驱动提示 bin/sh 权限不足

一、问题描述 在编译之前编译成功的linux驱动时,出现以下错误提示: /bin/sh :..............Permisson denied二、问题解决1、可能是没有给文件足够的权限,用以下命令给可读可写权限:sudo chmod 777 (+文件名)2、给了权限,发现还是不行: 看下是否有module.order这个文件,有的话删掉他就能编译成功了。...

2021-08-30 00:54:29 4630

原创 编译linux驱动时提示很多源码头文件和定义缺失

一、问题描述 在写好驱动程序要编译的时候,出现以下错误提示(中间也有很多类似头文件和定义缺失的提示,篇幅问题没有放上来):make -C /home/lzh/study_1/alientek-alpha/kernel-alientek M=/home/lzh/study_1/study_drivers/1_chardevbase modulesmake[1]: Entering directory '/home/lzh/study_1/alientek-alpha/kernel-a...

2021-08-21 21:39:47 3417 2

原创 ubuntu突然不能联网

一、问题描述

2021-08-16 14:37:23 1922

原创 linux驱动加载失败提示“invaild module format”

一、问题描述1、利用串口给开发板发指令,令其加载驱动,提示如下:提示的信息是版本不一致。2、在ubuntu里面加载,提示如下:3、即使保证了编译的linux源码和开发板运行的源码版本一致,依然不行:这里可以看到版本号都是4.1.15,但是还是提示版本不对。二、问题解决1、在网上查到即使内核版本一致,可能也会因为编译器版本不一致产生错误。2、在开发板查看驱动的编译器版本和Linux系统的驱动版本:发现这里可能是突破口,但是其实arm7对arm6向下兼..

2021-08-16 14:10:20 695 1

原创 uboot联网失败以及uboot重启问题

如果开发板运行linux的时候可以ping通虚拟机,但是运行uboot的时候ping不同,可以参考下面的做法:一、uboot无法ping通局域网内其他设备1、虚拟机和开发板的网络配置虚拟机的网络配置可以参考另外一篇文章:vmware与主机、开发板建立网络连接开发板在进入uboot之后,需要修改下面的环境变量:env default -a;saveenvsetenv ipaddr 192.168.10.50setenv ethaddr 00:04:9f:04:d2:35sete

2021-08-02 00:23:34 3692 5

原创 vmware与主机、开发板建立网络连接

手动设置IPV4地址之后,发现ping不同其他网址,包括其他网站或者局域网内的其他设备都不行,后来把IPV4地址改成自动的就可以ping通其他网站,但是ping不同局域网的其他设备。

2021-08-01 15:40:07 2585 7

原创 C++类和对象特性之继承详解

一、继承的含义由父类(基类)派生出子类(派生类),子类会选择性地继承父类的特性。借此,我们可以减少代码的冗余 提高代码的重用性。二、继承的语法 class 子类: 继承方式 父类名{ //子类新增的数据成员和成员函数 };...

2021-05-18 21:06:49 408

原创 C++运算符重载

一、运算符重载的定义对于编译器内置的类型(如int,double)之类的,我们常用的运算符(如“+”,“==”等),是可以自动识别的。但是如果是我们自己定义的类型,编译器并不知道要如何进行操作,如果我们将这个运算符要怎么用告诉编译器,就可以让运算符达到我们想要的操作效果。这个就是运算符重载的定义。二、运算符重载的语法这里涉及关键字operator。具体的语法与定义一个函数类似,为:返回值类型+operator+要重载的运算符+()示例:int operator+ (student &st

2021-05-15 20:59:42 361

原创 VScode调试出错显示退出代码1

遇到一个很离谱的错误,在编好C++程序后按F5调试,结果跳出如下错误网上查了很久,说的都是json配置文件出错,但之前已经配置成功并且没有修改过。后来发现是程序的问题,如果肯定配置文件没有出错,可以运行一个简单的helloword程序,借此判别是程序问题还是配置文件问题。...

2021-05-11 21:09:06 2590 1

原创 c++友元详解

一、友元的概述友元依靠关键字friend进行声明。friend关键字只出现在声明处 。其他类、类成员函数、全局函数都可声明为友元 友元函数。友元不是类的成员,不带this指针 。友元函数可访问对象任意成员属性,包括私有属性。二、全局函数做友元全局函数作友元的方法:定义一个全局函数,将其在类内声明(前面加上关键字friend),此时该全局函数就成了这个类的友元,可以访问类内的全部属性#include <iostream>#include <string>u

2021-05-10 19:02:37 162

原创 对象模型和this指针

一、对象和成员的存储 系统会给每一个定义了的空对象分配1字节的内存空间,为了标志出改对象在内存中的位置,要是该对象有了一个非静态成员变量,则这个对象的内存为他的非静态成员变量之和。静态成员变量和静态成员函数都不在对象上,因为他们是共享的函数,所以不会储存到某个特定的对象的内存里。非静态成员函数也不在其对象上。...

2021-05-09 21:24:10 88

原创 对象的初始化和清理

一、构造函数和析构函数概述 这两个函数是编译器强制执行的,即使用户没有定义,编译器也会自动运行空的构造函数和析构函数。在对对象进行实例化的时候,会执行构造函数。对该对象进行释放的时候,执行析构函数。构造函数的语法 构造函数函数名和类名相同,没有返回类型,连void都不可以,但可以有参数,可以重载。析构函数的语法 析构函数函数名是在类名前面加”~”组成,没有返回类型,连void都不可以,不能有参数,不能重载.class student {public:student() {

2021-05-07 20:53:35 92 1

原创 C++类和对象特性之封装

一、封装概述C++在定义类的时候,可以通过设置不同的访问权限区分开我们想公布或者想隐藏起来的对象的属性。但是对于那些需要保密的数据,我们有时候需要在该类的外部进行修改,所以我们只能定义一些函数接口实现这些保密属性的读写。并且通过不同的设置,我们可以令某种属性只为可读或者可写状态。这大概就是封装的含义二、三种访问权限 public(全局可访问)在这里设置一些全局可修改的属性,另外对后面两个访问权限下的属性的修改接口也是在这里定义。protected(子类可访问)这里涉及到类和对象的另外一个特性

2021-05-07 19:56:16 67 1

原创 C/C++中的引用解析

一、引用的介绍在C语言和C++中有一种使用别名来控制一块内存的做法,这就是引用的主要功能。但是究其本质,还是指针。二、引用的用法用作变量的别名如图,引用b作为变量a的别名,在这种情况下对a或者b进行操作,得到的都是同样的效果。引用函数作为返回值注意:引用函数作为返回值的时候不要返回局部变量的值!!!三、引用的注意事项使用引用时的初始化2.引用在初始化之后就不能再更改四、引用的本质引用的本质其实还是指针常量,int &b=a在编译器中默认为int* const

2021-04-30 14:06:32 147 1

原创 关于C/C++内存四区的分析

一、内存四大区1、我们把程序执行前后的内存分为四个区: 代码区、全局区、栈区、堆区2、但是有一个疑问,这样分类的意义是什么?例如:因为我们在实际编程的时候,需要根据不同的功能需求,会声明不同类型的变量(如全局变量,局部变量,全局常量,字符串常量等),它们拥有不同的长度、生命周期释放方式等。这样就需要存放在不同的内存区域,这样就能提高程序运行效率,更加灵活地编程。二、内存四区的功能代码区这个区域存放函数体的二进制代码.是由操作系统进行管理的。全局区全局区主要是用来存放全局变量和静态常量

2021-04-30 11:52:33 188 1

原创 关于<iostream>和命名空间

由于刚接触c++,对于#inlcude <iostream>using namespace std这两行经常出现的代码感觉挺懵,通过上网查资料,有了以下了解:一、关于 < iostream>和<iostream.h>作为从C语言过来的人,对于<iostream.h>应该不陌生。它是非标准输入输出流,继承C语言的标准库文件,如果使用它的话,我们在使用cin,cout等函数时可以直接使用而不会报错。而对于前者,它属于标准输入输出流,如果选择它的话,如

2021-04-22 22:05:36 295

原创 关于VScode引用头文件时一直报错的解决方法

一、首先看下配置文件常见的错误原因可能是因为c_cpp_properties.json这个文件并没有配置好,可以参考下列的文件:在这里插入代{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" , "E:\\C++\\mingw6

2021-04-22 21:35:17 11232 2

原创 VScode配置C++环境

一、下载VScode二、在VScode中安装cpptools插件三、下载编译器MinGW下载链接:https://sourceforge.net/projects/mingw-w64/files/下载完将压缩包解压到想要的位置(路径最好不要带有中文!!!)四、配置环境变量在系统搜索栏搜索高级系统设置并打开:找到并新建环境变量,双击path:点击新建并把之前安装mingw的路径加进去(这里的路径是指包括bin文件的)重启VScode,然后按win+R,输入cmd,打开命令行,输入g

2021-04-22 14:21:17 286 3

空空如也

空空如也

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

TA关注的人

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