自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vscode 小结

vscode日常使用小结

2022-11-01 21:27:10 1077 1

原创 koroFileHeader 插件

VS Code 在虚拟机 Ubantu 中使用 koroFileHeader 插件,按照【配置字段】去设置 settings.json出现 快捷键不能使用的问题描述系统原因解决办法描述VS Code 在虚拟机 Ubantu 中使用 koroFileHeader 插件,按照【配置字段】去设置 settings.json出现 快捷键不能使用的问题。但是当不使用 【配置字段】去设置的时候快捷键是可以使用的。系统 虚拟机的Ubantu 16.04原因 因为不支持如下部分: // 一次匹配多种文件后

2021-08-14 21:25:58 234

原创 设置 Linux 的 LD_LIBRARY_PATH 变量

设置 Linux 的 LD_LIBRARY_PATH 变量  在今天的项目中,使用本地Ubantu对项目进行编译的时候出现:error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory。  但是在使用 find 去对 libmpc.so.3 库进行查找,发现库又是存在的。一开始没有反应过来是什么原因。后来来明白,可能是没有找到库的路径。因此,设置 L

2021-05-06 20:47:18 13847

原创 日常快捷键

编辑技巧window10 快捷技巧window10 快捷技巧 w + i 快速打开 win10电脑设置 w + 数字键 可以快速打开任务栏中的第几个程序  w + 空格键 可视化快速切换输入法  w + 方向上/下 可使窗口最大化或最小化  w + E 快速打开资源管理器  w + D 快速回到桌面/也可以快速恢复  w + V 打开剪贴板,可以找到历史复制内容  c + w + D 新的电脑桌面  w + s + s 电脑自带区域截图  Win + w 手写键盘或全屏截图  Wi

2021-04-16 20:09:39 96

原创 在Uboot中升级 Uboot

在Uboot中升级 Uboot参考博客原理操作指令升级到SD卡升级到EMMC参考博客https://www.cnblogs.com/wenhao-Web/p/13210090.html原理其中的原理很简单,就是从内存RAM中调用方法,向SD卡或者是EMMC 进行写操作即可。注意:1.SD卡/EMMC的前两个扇区保存着分区表,分区需要从0开始计数,所以,应该从序号分区2开始写。 2.此处更新的是 u-boot.imx文件,而不是u-boot.bin文件。原因是因为 u-boot.imx文件是 前

2021-04-07 16:25:15 1244

原创 Uboot启动logo修改

Uboot启动logo修改使用Uboot版本修改Uboot启动logo需要的操作Uboot显示logo详解Uboot显示logo的详细流程使用Uboot版本2016.03.10修改Uboot启动logo需要的操作(1).修改tools目录下的Makefile文件的如下部分:# Use board logo and fallback to vendorifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)LOGO_BMP= $(src

2021-04-04 21:14:49 816

原创 进程/线程切换究竟需要多少开销?

进程/线程切换究竟需要多少开销?在此的数据只是提供一个大概的数值,以用于估算:测试系统调用的时候,最低值是200ns平均每次上下文切换耗时3.5us左右每次线程切换开销大约是3.8us左右从上下文切换的耗时上来看,Linux线程(轻量级进程)其实和进程差别不太大,上下文切换的开销大约是2.7-5.48us左右.详细情况可转到如下区查看: https://my.oschina.net/u/3077716/blog/4695862...

2021-03-26 15:42:54 1146

原创 关于 MFC写入到txt文件中出现乱码问题

关于 MFC写入到txt文件中出现乱码问题同时实现如下3点:(1)添加头文件 #include “locale.h”,(2)再代码的开头添加 setlocale(LC_CTYPE, “chs”); ,(3)再输出的末尾添加上 空格使之输出不乱码比如:...

2021-03-19 19:37:11 1376

原创 更换Linux启动logo的总结

Linux logo更换关于 Linux logo 替换没有改变的问题有如下两点猜想待验证:1.自己制作的 .ppm的 文件有大于LCD 分辨率的可能。所以把自己制作的 .ppm 的文件减小,或者再思考试一下。2.前面 会告诉删除 logo_linux_clut224.o 和 logo_linux_clut224.c 这两个文件,然后替换 logo_linux_clut224.ppm 文件。但是,还有一个 logo_linux_clut224.ppm.pume 的这个文件的日期一直没变过。可以把这个

2021-03-19 15:25:58 281

原创 Linux 网络

Linux 网络嵌入式下的网络硬件接口嵌入式网络硬件分为两部分:MAC 和 PHY,通过看数据手册来判断一款 SOC 是否支持网络,如果一款芯片数据手册说自己支持网络,一般都是说的这款 SOC 内置 MAC,MAC 类似 I2C 控制器、SPI 控制器一样的外设。但是光有 MAC还不能直接驱动网络,还需要另外一个芯片:PHY,因此对于内置 MAC 的 SOC,其外部必须搭配一个 PHY 芯片。1、SOC 内部没有网络 MAC 外设既然没有内部 MAC,那么可以找个外置的 MAC 芯

2021-03-14 09:50:21 501

原创 Linux 块设备

Linux 块设备 块设备驱动要远比字符设备驱动复杂得多,不同类型的存储设备又对应不同的驱动子系统 块设备是针对存储设备的,比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等。 因此块设备驱动其实就是这些存储设备驱动,块设备驱动相比字符设备驱动的主要区别如下: ①、块设备只能以块为单位进行读写访问,块是 linux 虚拟文件系统(VFS)基本的数据传输单位。 ②、块设备在结构上是可以进行随机访问的,对于这些设备的读写都是按块

2021-03-13 11:49:58 1736

原创 Linux 多点电容触摸

Linux 多点电容触摸电容触摸屏驱动其实就是以下几种 linux 驱动框架的组合:①、 IIC 设备驱动,因为电容触摸 IC 基本都是 IIC 接口的,因此大框架就是 IIC 设备驱动。②、通过中断引脚(INT)向 linux 内核上报触摸信息,因此需要用到 linux 中断驱动框架。坐标的上报在中断服务函数中完成。③、触摸屏的坐标信息、屏幕按下和抬起信息都属于 linux 的 input 子系统,因此向 linux 内核上报触摸屏坐标信息就得使用 input 子系统。只是,我们得

2021-03-11 13:58:42 293

原创 Linux RS232/485

Linux RS232/485/GPSRS232、 RS485 以及 GPS 模块接口通通连接到了 I.MX6U 的 UART3 接口上,因此这些外设最终都归结为 UART3 的串口驱动。Linux 下 UART 驱动框架Linux 也提供了串口驱动框架,只需要按照相应的串口框架编写驱动程序即可。串口驱动没有什么主机端和设备端之分,就只有一个串口驱动,而且这个驱动也已经由 NXP 官方已经编写好了,我们真正要做的就是在设备树中添加所要使用的串口节点信息。当系统启动以后串口驱动和

2021-03-11 13:50:10 291

原创 Linux SPI

Linux SPILinux内核也将 SPI 驱动分为两部分:①、 SPI 总线驱动, SPI 总线驱动就是 SOC 的 SPI 控制器驱动,也叫做 SPI 适配器驱动。②、 SPI 设备驱动, SPI 设备驱动就是针对具体的 SPI 设备而编写的驱动。SPI主机驱动Linux 内核使用 spi_master 表示 SPI 主机驱动, spi_master 是个结构体,定义在 include/linux/spi/spi.h 文件SPI 主机驱动的核心就是申请 spi_mast

2021-03-11 13:45:29 248

原创 Linux I2C

Linux I2CLinux内核将 I2C 驱动分为两部分:①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。对于 I2C 而言,不需要虚拟出一条总线,直接使用 I2C总线即可。I2C 总线驱动重点是 I2C 适配器(也就是 SOC 的 I2C 接口控制器)驱动,这里要用到两个重要的数据结构: i2c_adapter 和i2c_algori

2021-03-10 16:05:25 222

原创 Linux RTC

Linux RTCLinux 内核将 RTC 设备抽象为 rtc_device 结构体因此 RTC 设备驱动就是申请并初始化rtc_device最后将 rtc_device 注册到 Linux 内核里面此结构体定义在 include/linux/rtc.h 文件rtc_class_ops为 RTC 设备的最底层操作函数集合,包括从 RTC 设备中读取时间、向 RTC 设备写入新的时间值等rtc_class_ops 中的这些函数只是最底层的 RTC 设备操作函数,并不是提供给应用层的file_o

2021-03-09 19:57:29 118

原创 Linux LCD

Linux LCDLinux LCD驱动就是构建fb_info结构体,并向系统注册 fb_infode过程。在 fb_info结构体中,主要关注如下几个参数.var 当前可变参数fix 当前固定参数fbops 帧缓冲操作函数集screen_base 虚拟内存基地址(屏幕显存)screen_size 虚拟内存大小(屏幕现存大小)pseudo_palette 伪16位调色板LCD的一些其他的功能,如PWM来调节背光等。其关联的节点是 :backlight。I.MX6ULL 的

2021-03-09 15:33:35 117

原创 Linux Input子系统

Linux Input子系统1.按键、鼠标、键盘、触摸屏等都属于输入(input)设备, Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。2.输入设备本质上还是字符设备,只是在此基础上套上了 input 框架.1.用户只需要负责上报输入事件,比如按键值、坐标等信息.2.input 核心层负责处理这些事件。3.input 就是输入的意思,因此 input 子系统就是管理输入的子系统,和 pinctrl 和 gpio 子系统一样,都是 Linux 内核针对某一类设备

2021-03-03 19:31:54 140 1

原创 Linux misc设备

Linux misc设备1.MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 platform 总线驱动中,实现复杂的驱动2.所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号。3.随着 Linux字符设备驱动的不断增加,设备号变得越来越紧张,尤其是主主设备号, MISC 设备驱动就用于解决此问题。4.MISC 设备会自动创建 cdev,不需要像我们以前那样手动创建,因此采用 MISC 设备驱动可以简化字符设备驱动的编写5.name 就是此 MISC 设备名字,当

2021-03-03 19:28:07 169 1

原创 platform设备驱动

platform设备驱动驱动的分隔与分离是为了实现代码的重用性非常重要在实际的驱动开发中,一般 主机控制器驱动已经由半导体厂家编写好了,而设备驱动一般也有设备器件的厂家编写好了,我们只需要提供设备信息即可,比如 I2C 设备的话提供设备连接到了哪个 I2C 接口上, I2C 的速度是多少等等。相当于将设备信息从设备驱动中剥离开来,驱动使用标准方法去获取到设备信息(比如从设备树中获取到设备信息),然后根据获取到的设备信息来初始化设备。这样就相当于驱动只需要负责驱动,设备只需要设备,想办法将两者进行匹

2021-03-03 19:25:44 209 1

原创 异步通知

异步通知1.使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。2.Linux 提供了异步通知这个机制来驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取或写入数据.3.“信号”为此应运而生,算是在软件层次上对中断的一种模拟.4.驱动可以通过主动向应用程序发送信号的方式来报告自己可以访问了,应用程序获取到信号以后就可以从驱动设备中读取或者写入数据了。整个过程就相当于应用程序收到了驱动发送过

2021-03-03 19:20:51 232 1

原创 Linux阻塞和非阻塞

Linux阻塞和非阻塞等待队列1.等待队列头等待队列头就是一个等待队列的头部,每个访问设备的进程都是一个队列项,当设备不可用的时候就要将这些进程对应的等待队列项添加到等待队列里面1.阻塞访问最大的好处就是当设备文件不可操作的时候进程可以进入休眠态,这样可以将CPU 资源让出来。2.当设备文件可以操作的时候就必须唤醒进程,一般在中断函数里面完成唤醒工作。3.Linux 内核提供了等待队列(wait queue)来实现阻塞进程的唤醒工作,如果我们要在驱动中使用等待队列,必须创建并初始化一个等待

2021-03-03 19:14:39 262 2

原创 Linux中断

Linux中断Linux 内核将中断分为上半部和下半部的主要目的就是实现中断处理函数的快进快出,那些对时间敏感、执行速度块的操作可以放到中断处理函数中,也就是上半部。剩下的所有工作都可以放到下半部去执行,比如在上半部将数据拷贝到内存中,关于数据的具体处理就可以放到下半部去执行。参考点:如果要处理的内容不希望被其他中断打断,那么可以放到上半部。1.如果要处理的任务对时间敏感,可以放到上半部。2.如果要处理的任务与硬件有关,可以放到上半部。3.除了上述三点以外的其他任务,优先考虑放到下半部。

2021-03-03 17:58:55 126 1

原创 Linux内核定时器

Linux内核定时器1.硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后就周期性的产生定时中断,系统使用定时中断来计时。2.中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate)(有的资料也叫系统频率),比如 1000Hz, 100Hz 等等说的就是系统节拍率。3.系统节拍率是可以设置的,单位是 Hz,4.高节拍率和低节拍率的优缺点:1.高节拍率会提高系统时间精度,如果采用 100Hz 的节拍率,时间精度就是 10ms,采用1000Hz 的话时间精度就是 1ms,精度提高

2021-03-02 19:46:04 103

原创 Linux并发与竞争

Linux并发与竞争实现共享资源的互斥访问,也是为了实现共享资源的按照我们预期的方式进行修改。需要保护的不是代码,而是数据!数据!数据!某个线程的局部变量不需要保护,我们要保护的是多个线程都会访问的共享数据。实现Linux并发与竞争的方式:原子操作Linux 内核定义了叫做 atomic_t 的结构体来完成整形数据的原子操作,在使用中用原子变量来代替整形变量,此结构体定义在 include/linux/types.h2.原子操作只能对整形变量或者位进行保护。自旋锁1.自旋锁

2021-03-02 19:40:06 99

原创 pinctrl 和 gpio 子系统

pinctrl 和 gpio 子系统Linux 驱动讲究驱动分离与分层, pinctrl 和 gpio 子系统就是驱动分离与分层思想下的产物,驱动分离与分层其实就是按照面向对象编程的设计思想而设计的设备驱动框架Linux 内核针对 PIN 的配置推出了 pinctrl 子系统。对于 GPIO的配置推出了 gpio 子系统。pinctrl子系统pinctrl 子系统就是为了解决这个配置方式比较繁琐、而且容易出问题(比如 pin 功能冲突)问题而引入的, pinctrl 子系统主要工作内容如下:

2021-03-02 14:25:48 172

原创 Linux设备树的相关总结

Linux设备树的相关总结设备树结构示意图.dtsi 头文件设备节点设备树中节点命名格式设备树属性标准属性根节点 compatible 属性向节点追加或修改内容设备树结构示意图树的主干就是系统总线,IIC 控制器、GPIO 控制器、SPI 控制器等都是接到系统主线上的分支。IIC 控制器有分为 IIC1 和 IIC2 两种,其中 IIC1 上接了 FT5206 和 AT24C02这两个 IIC 设备,IIC2 上只接了 MPU6050 这个设备。设备树就是用来描述 开发板 以及 CPU。.dtsi

2021-02-28 15:30:07 158

原创 有关Uboot、linux移植过程中,关于Uboot、linux移植的Makefile的自我总结

关于uboot 、linux的Makefile分析经验 a.从顶层的Makefile为起始出发点,进行分析。 b.Makefile主要注意的四个关键要素:(1)目标,(2)依赖, (3)变量, 和 (4)执行命令语句。其中,(1)目标是突破口,可以根据目标出发,进行分析。当遇到的时候再去分析对应的 (2)依赖, (3)变量, 和 (4)执行命令语句 c.关于 Makefile其中的一些 语法、规则、函数等,可以在遇到的时候,进行学习、分析、归纳,总结。 d.问题可以分为两类:(1).是知道不懂,知道

2021-02-21 20:11:39 83

原创 关于使用BCompare 工具同步windows 与Linux 文件夹

关于使用BCompare 工具同步windows 与Linux 文件夹因为在工作中会用到可能编译的环境在 Linux内或者是服务器上,然后在自己windows电脑的本地会保留一部分代码用于修改和验证使用。之后,将修改后的代码进行同步使用的情况。使用这个前提条件是:需要在Linux或者是服务器允许 Ftp访问。然后进行如下操作和配置即可:1.进行如下的设置。2.设置FTP登录的信息:新建,然后选择FTP协议,设置主机的IP、用户名、和端口。3.最后使用如下图的方式进行链接:...

2021-02-14 16:40:19 440

原创 关于Git在克隆远程仓库时候,出现:SSL certificate problem:certificate has expired

关于Git在克隆远程仓库时候,出现:SSL certificate problem:certificate has expired在网上查找方法:(1). 结果是证书过期了,解决方法是: git config –global http.sslVerify false (2).对 Git的安装目录,修改 Git/etc/hosts 文件将最后的 那行 IP 地址,改成自己电脑的 IP 地址。在上面两次方法试过之后,都无效,然后最后找到解决方案:(3) 是因为在 C:/

2021-02-08 21:16:34 1314

转载 程序员实用工具网站

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-09-20 17:43:26 180

转载 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。“Win32Project3.exe”(Win32): 已加载“D:\software\VS2013\VS2013 文档\Win32Project3\Debug\Win32Project3.exe”。已加载符号。“Win32Project3.exe”(Win32): 已加载“C:\Windo...

2019-09-18 19:55:10 4357 3

原创 vs 2017 下载扩展插件更新失败导致 VS2017崩溃的解决办法

前景描述:本人之前的VS 2017是可以用的,后面因为打开一个工程,说是缺少 Microsoft.VisualCpp.MFC.Source,version=14.16.27024 文件,然后,导致工程打开错误,可以查看工程,但是不能编译。之后,本人就按照,VS 2017 的提示去安装这个文件,结果,在下载这个文件的过程就是一个噩梦的开始,下载巨慢,最后在下载的过程中,崩掉了,然后,每次打开VS ...

2019-09-12 17:10:16 4690

原创 Windows与Linux文件互传 的一些总结

在windows与Linux实现 文件 互传在这里采用了两种方法:其一,是用WinSCP软件。其二,采用Samba服务器。在使用这两种方法 的过程 中 ,都遇到了一些小小 的问题,在此总结一下。不管是使用WinSCP软件还是采用Samba服务器来实现windows与Linux实现 文件 互传都需要满足两个前提条。(1)在Windows下可以Ping通Linux。(2)关闭Linux的防火墙。...

2019-05-03 23:05:29 783

原创 名片创作

都说博客对IT人员来说相当于明信片,初来此地,多多指教。

2019-04-21 22:09:09 249

空空如也

空空如也

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

TA关注的人

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