自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Win10系统【CreateFile() Error: 5】问题解决

Win10系统【CreateFile() Error: 5】问题解决当按下键盘Shitf键,然后点击鼠标右键,打开Powershell窗口后,弹出如下错误:CreateFile() Error: 5是Win10系统中出现的权限问题,解决该问题需要将注册表中相关权限给关闭掉,具体操作如下:(1) 按下键盘Win + R组合快捷键,打开后输入命令:regedit, 具体如下图(2) 然后点击确认,打开注册表: regedit,找到如下选项HKEY_LOCAL_MACHINE\Software\Mic

2021-10-31 11:24:02 7895 2

原创 Linux设备驱动基础04之异步通知

一、基础简介使用阻塞/非阻塞方式读写设备驱动时,都需要应用程序主动发起,对于非阻塞方式来说还需通过poll函数不断轮询。这种情况下更好的解决方案是,设备驱动主动向应用程序发出通知,报告自己可以访问,然后应用程序再读写设备驱动。Linux中这种机制叫做异步通知,异步通知的核心是信号,类似硬件中断,信号是软件层次上的软中断。设备驱动可以主动向应用程序发送信号,通知应用程序可以访问,应用程序中需要注册信号的处理函数,并将本进程号告诉内核。在arch/xtensa/include/uapi/asm/signa

2021-06-30 08:57:12 177

原创 Linux设备驱动基础03之阻塞与非阻塞IO

一、基础简介在应用程序中读/写(read/write)设备节点时,比如dev/xxx,需要用到阻塞和非阻塞IO两种设备访问模式,在编写驱动时一定要考虑到阻塞和非阻塞。默认情况下,应用程序对设备驱动的读取方式时阻塞式的。IO是指Input/Output,即应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能立即获取到设备资源,阻塞式IO会将应用程序对应的线程挂起,直至设备资源可以获取为止;非阻塞式IO对应的线程不会挂起,而是要么一直轮询等待,直至设备资源可以使用,要么直接放弃返

2021-06-27 16:46:22 305

原创 Linux设备驱动基础02之中断处理

一、中断处理基础中断系统是一个处理器的重要且基本的组成部分,可以极大提高CPU的执行效率,一般中断系统框架组成如下图:

2021-06-20 16:03:32 651

原创 Linux设备驱动基础01之并发与竞态

一、基础概念Linux是个多任务操作系统,存在多个任务同时访问同一片内存区域的情况,可能会相互覆盖这段内存中的数据,最终造成内存数据混乱,严重的话会导致系统崩溃。驱动开发中要注意对共享资源的保护,需要管理对共享资源的并发访问。Linux系统产生并发访问的几个主要原因: (1)、多线程并发访问, Linux 是多任务系统,在应用程序中多线程访问是最基本的原因。 (2)、抢占式并发访问,从2.6版本开始, Linux内核支持抢占,也就是说调度程序可以在任意时刻调度正在运行的线程,从而运行其他的线程。 (3)

2021-06-18 21:38:14 167

原创 嵌入式Linux开发之第三方库交叉编译

--------------------交叉编译bzip2--------------------需要直接修改Makefile文件如下:CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gccAR=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-g

2021-06-06 21:34:40 2406 6

原创 海思Hi3516DV300之Ubuntu20.04环境搭建和编译

一、环境搭建1、SDK版本为:Hi3516CV500R001C02SPC020/01.software/board/Hi3516CV500_SDK_V2.0.2.0.tgz2、安装相关库:sudo apt install lsb-core lib32stdc++6 u-boot-tools zlib1g-dev liblzo2-dev uuid-dev pkg-config3、修改sh为bash: Ubuntu默认sh为dash,有很多命令不能用,所以需要将默认sh改成bash,使用命令sudo

2021-06-06 18:31:55 1558 1

原创 Ubuntu20.04安装python2和python3及版本配置

Ubuntu 20.04 LTS已经移除Python2,默认安装python3,但是很多时候还是会经常用到python2.7版本,这里首先单独安装python2.7,然后配置python2和python3,以达到手动切换系统默认python版本。第一步:安装python2.7使用命令:sudo apt install python2第二步:配置系统默认python版本(1):显示python代替版本信息:sudo update-alternatives --list python,系统显示错误如

2021-05-30 23:06:26 13326 12

原创 Ubuntu20.04安装VLC及海康、大华、宇视RTSP的URL格式

可以在Ubuntu Software中直接搜索VLC安装,但是虚拟机中打开Ubuntu Software经常卡死,如下图所示,所以不推荐在这安装打开网址:https://www.videolan.org/vlc/download-ubuntu.html 可以看到命令行安装方式: sudo snap install vlc如上图最后显示:vlc 3.0.12.1 from VideoLan installed 则说明VLC安装完成,直接搜索VLC如下图所示点击打开VLC,完成安装.

2021-02-27 12:20:13 1596

原创 Windows10在线安装Qt5.15和Qt6全系列

一、前言自从Qt 5.15版本(为LTS长期支持版)和Qt6全系列,对于个人非商业版本,也就是开源版本,Qt不再提供已经制作好的三种操作系统下的离线安装包,需要安装Qt有两种选择:1、下载编译源码:比如qt-everywhere-src-5.15.2.zip,但是编译过程繁琐,需严格遵循编译步骤,且花费数小时不等的时间。2、在线联网安装:使用清华源或者其它方法代理直连,安装步骤相对简单,所以推荐在线安装的方式。二、在线安装Qt5.15.2版本步骤:操作系统为Windows10 64bit

2021-02-22 14:19:20 12256 6

原创 C++中typedef和typename关键字的使用

一、在C中使用typedef关键字:是为了给内建类型或用户自定义数据类型定义符号名称,typedef是由编译器执行解释的,比如:typedef unsigned char Name; typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id;} Book;这样之后标识符Name可以作为类型unsigned char的缩写,Book可以

2021-01-15 14:40:41 590

原创 RV1108芯片Camera模块CIF和ISP的区别

一、RV1108芯片内部CIF和ISP框架图如下所示:二、RV1108芯片CIF(Camera Interface)能接收来自Camera或CCIR656编码器输出的数据,然后将数据通过AXI总线传输至DDR,支持DVP接口的RAW和YUV数据格式,CIF主要配置如下: (1)支持YUV422、8/10/12bit RAW/Y 数据格式输入 (2)支持UYVY/VYUY/YUYV/YVYU 配置 (3)支持1/2/4 路 CVBS (4)支持YUV422/420 输出...

2021-01-12 13:40:15 3323

原创 Buildroot使用总结与添加本地APP到项目

芯片平台:瑞芯微RV1126系统架构:uboot+kernel+buildroot==================================================================================================================Buildroot是Linux平台上一个构建嵌入式Linux系统的框架,整个Buildroot是由Makefile脚本和Kconfig配置文件构成。可以和编译Linux内核一样,通过buil

2020-12-15 16:12:58 2715 1

原创 shell脚本首行#!/bin/sh和#!/bin/bash的含义与区别

在Linux中编写shell脚本时,在文本首行需要输入#!/bin/sh或者#!/bin/bash,这两个比较常见,还有其他的比如#!/bin/dash等,含义和区别如下:一、含义:定义使用哪种shell解释器来解释该shell脚本#!/bin/sh表示该脚本使用/bin/sh来解释执行,#!/bin/bash表示该脚本使用/bin/bash来解释执行。每个脚本开头都使用"#!",#!实际上是一个2字节魔法数字,指定一个文件类型的特殊标记,在这种情况下,指的就是一个可执行的脚本。在#!之后,接一

2020-12-10 18:16:35 5271 1

原创 Ubuntu16.04启动后进入GNU GRUB Version 2.02

关闭Ubuntu虚拟机时,由于Windows10莫名卡住,磁盘写入异常,导致Ubuntu虚拟机非正常关闭,再次启动Ubuntu虚拟机时总是进入GNU GRUB界面,却不能正常启动并进入Ubuntu系统,现象如下图所示:修复的方法:选择第一项*Ubuntu点击Enter键,等待自检完毕,打印信息中有如下一行,明确表明不能启动Ubuntu的原因:/dev/sda1: UNEXPECTE...

2020-04-08 14:48:46 14728 6

空空如也

空空如也

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

TA关注的人

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