自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux启动之uboot分析

Linux启动之uboot分析uboot是什么?一、补充存储器概念1.存储器种类1.norflash - 是非易失性存储器(也就是掉电保存)2.nandflash - 是非易失性存储器(也就是掉电保存)3.SRAM - 静态随机访问存储器 - Static Random Access Memory4.SDRAM - 同步动态随机存取存储器 - Synchronous Dynamic Random Access Memory5.DDR-Double Data Rate SDRAM(双倍速率 SDRAM)2.存

2023-10-30 20:00:57 468

原创 字符串操作

【代码】字符串操作。

2023-09-09 13:30:20 199

原创 笔试题 门禁打卡

【代码】笔试题 门禁打卡。

2023-09-05 23:05:50 177

原创 ARM 汇编基础知识

ARM 汇编基础知识

2023-09-03 17:55:23 1668

原创 Cortex-A7 架构

I.MX6UL使用的是 Cortex-A7 架构,Cortex-A7 MPcore处理器支持1~4 核,官方描述:“在 28nm工艺下,Cortex-A7可以运行在1.2~1.6GHz,并且单核面积不大于0.45mm2含有浮点单元、NEON和32KB的L1缓存,在典型场景下功耗小于100mW, 这使得它非常适合对功耗要求严格的移动设备,这意味着Cortex-A7在获得与Cortex-A9相似性能的情况下,其功耗更低”支持在一个处理器上选配1~4。

2023-09-03 16:38:47 951

原创 矩阵顺时针旋转90度

【代码】矩阵顺时针旋转90度。

2023-09-02 21:08:40 231

原创 小米大题复习

2023-09-02 21:04:04 65

原创 视频监控系统

【知识拓展】音视频中的推流与拉流_推流拉流_No8g攻城狮的博客-CSDN博客推流:把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。要想用于推流还必须把音视频数据使用传输协议进行封装变成流数据。常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于手机直播这种实时性要求非常高的场景,RTMP也成为手机直播中最常用的流传输协议。

2023-09-02 16:40:11 540

原创 C++内存分区

在C++中主要利用new在堆区开辟内存,利用关键字delete释放内存。的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可;注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放。不同区域存放的数据,赋予不同的生命周期,给我们更加灵活的编程。全局区还包含了常量区, 字符串常量和其他常量也存放在此;由编译器自动分配释放, 存放函数的参数值,局部变量等;的,使其只读的原因是防止程序意外地修改了它的指令;==该区域的数据在程序结束后由操作系统释放==.存放CPU执行的机器指令;

2023-08-30 18:46:38 378

原创 排序算法学习

排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。冒泡排序(Bubble Sort)也是一种简单直观的排序算法。

2023-08-30 18:43:24 718

原创 线程同步概念

因此我们要谨慎使用自旋锁,自旋锁通常用于以下情况:需要保护的代码段执行时间很短,这样就会使得持有锁的线程会很快释放锁,而“自旋”等待的线程也只需等待很短的时间;当一个线程可以修改的变量,其它的线程也可以读取或者修改的时候,这个时候就存在数据一致性的问题,需要对这些线程进行同步操作,确保它们在访问变量的存储内容时不会访问到无效的值。⚫ 当读写锁处于写加锁状态时,在这个锁被解锁之前,所有试图对这个锁进行加锁操作(不管是以读模式加锁还是以写模式加锁)的线程都会被阻塞。⚫ 另一个线程中,条件满足时发出“信号”。

2023-08-30 18:29:29 127

原创 线程基本概念

(如为子线程收尸)。

2023-08-30 18:26:18 75

原创 进程间通信

系统中每个进程都有自己的地址空间,并且相互独立、隔离,每个进程都处于自己的地址空间中。

2023-08-30 18:22:45 48

原创 进程状态与进程关系

Linux 系统下进程通常存在 6 种不同的状态,分为:就绪态、运行态、僵尸态、可中断睡眠状态(浅度睡眠)、不可中断睡眠状态(深度睡眠)以及暂停态。一个新创建的进程会处于就绪态,只要得到CPU就能被执行。它们的关系如图所示。

2023-08-30 18:18:09 107

原创 进程与子进程

1.fork()创建子进程一个现有的进程可以调用 fork()函数创建一个新的进程,调用 fork()函数的进程称为父进程,由 fork()函数创建出来的进程被称为子进程(child process)。(使用该函数需要包含头文件<unistd.h>)2.创建的子进程为新的独立的进程,与父进程地位相等。但父子进程之间也有些相同点,子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符。对于程序来说,子进程和父进程,在内存中只存在一份代码段数据。

2023-08-30 18:14:20 220

原创 程序与进程

进程是一个动态过程,而非静态文件,它是程序的一次运行过程,当应用程序被加载到内存中运行之后它就称为了一个进程,当程序运行结束后也就意味着进程终止,这就是进程的一个生命周期。2.进程号:Linux 系统下的每一个进程都有一个进程号(processID,简称 PID),进程号是一个正数,用于唯一标识系统中的某一个进程。Linux 系统下,应用程序运行在一个虚拟地址空间中,所以程序中读写的内存地址对应也是虚拟地址,来实现,加载器是操作系统中的程序,当执行程序时,加载器负责将此应用程序加载内存中去执行。

2023-08-30 18:11:03 367

原创 linux中memset作用,为什么要用memset

定义了数组arr,包含100个元素,如果你写成int arr[100]=0;这种情况的初始化,有两种方法,一种是一个一个的初始化,如for(int i=0;所谓“初始化”,当然是指将你定义的变量或申请的空间赋予你所期望的值,例如语句int i=0;各参数解释如下:arr是数组的首地址,0就是要讲这些地址的内容赋值为0,sizeof(int)求出int类型的长度,乘以100就表示arr数组的整个长度。当然,如果用malloc分配的内存,一般只能使用memset来初始化了,用第一种初始化方法明显不合适。

2023-08-30 18:08:48 91

原创 用户ID(UID)和用户组ID(GID)

7.在 Linux 系统下,可以使用 getuid 和 getgid 两个系统调用分别用于获取当前进程的用户 ID 和用户组ID,这里说的进程的用户 ID 和用户组 ID 指的就是进程的实际用户 ID 和实际组 ID。6.Linux中可以通过chown指令来改变文件得所有者,chown是一个系统调用。2.Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID),这与文件有拥有者和拥有群组两种属性相对应。

2023-08-30 18:07:00 879

原创 MISC杂项驱动

正点原子驱动开发学习之MISC杂项驱动实验

2023-08-30 18:01:20 88

原创 Linux Input子系统

正点原子Linux驱动开发学习笔记之input子系统

2023-08-30 17:49:56 502

原创 LCD驱动

正点原子Linux驱动笔记

2023-08-30 17:24:31 96

原创 DWA算法学习

局部路径规划算法仿真

2023-08-30 17:13:57 2068

原创 最长重复子串

笔试题

2023-08-30 16:54:44 30

原创 USB驱动概念学习

正点原子Linux驱动学习

2023-08-29 14:05:39 171

原创 Linux音频了解

snd_pcm_readi/snd_pcm_writei 适用于交错模式(interleaved)读/写数据,如果用户设置的访问类型并不是交错模式,而是非交错模式(non interleaved),此时便不可再使用 snd_pcm_readi/snd_pcm_writei 进行读写操作了,而需要使用 snd_pcm_readn 和 snd_pcm_writen 进行读写。snd_pcm_open 函数会打开参数 name 所指定的设备,实例化 snd_pcm_t 对象,并将对象的指针(也。

2023-08-29 13:41:35 629

原创 Linux串口驱动

正点原子Linux驱动学习

2023-08-29 13:29:41 744

原创 Syntax error: end of file unexpected (expecting “then“)

solve:

2023-08-20 14:20:20 190

原创 快速排序算法理解

【代码】快速排序算法理解。

2023-08-09 15:56:14 37

原创 C++ pair的基本用法总结(转载)

pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。原文链接:https://blog.csdn.net/sevenjoin/article/details/81937695。3,pair对象的操作。

2023-08-03 16:31:09 251

原创 C++stoi、stol、stoll 函数用法

stoull:string型变量转换为unsigned long long型变量。stoll: string型变量转换为long long型变量(常用)stoul:string型变量转换为unsigned long型变量。stold:string型变量转换为long double型变量。stod: string型变量转换为double型变量(常用)C++11标准 ,使用g++编译时需要添加-std=c++11。stol: string型变量转换为long型变量。

2023-08-03 13:54:53 424

原创 Linux网络编程实战

2.C/S架构(一个客户端和一个服务器),BS架构(多对一)4.IP地址是十进制字符类型,要转换成32进制无符号整型。1.这里可以通过man手册来辅助使用scoket接口。3.字节序的转换 网络字节序统一使用大端字节序。

2023-07-24 20:30:48 81

原创 网络基础知识

网络模型,TCP/IP概念

2023-07-24 15:16:18 99

原创 Linux网络驱动学习

正点原子LInux驱动学习之网络驱动

2023-07-17 16:20:23 1365

原创 数据结构--链表

初始化链表就是为链表的每一个节点申请内存,并将分配next指针。需要定义链表的头结点,这里用dummyHead作为链表头节点。如此循环添加就好了,注意链表的大小,按需申请内存。首先为需要添加的节点申请内存并赋值。3.链表添加节点,删除节点。单链表、双链表、环形链表。

2023-07-08 10:23:44 52 1

原创 关于struct file 结构下 private_data 数据结构的作用

(设备结构体)( private_data 其实是用来保存自定义设备结构体的地址的。自定义结构体的地址被保存在private_data后,可以在read ,write 等驱动函数中被传递和调用自定义设备结构体中的成员)。文档上说明该成员是系统调用时保存状态信息非常有用的资源。struct file代表一个打开的文件描述符,它不是专门给驱动程序使用的,它由内核在 open时创建,并传递给在文件上操作的任何函数,直到最后关闭。当文件的所有实例都关闭之后,内核释放这个数据结构。,或者比较悲剧的被用户忽略。

2023-07-06 23:06:01 343 1

原创 Linux块设备驱动开发学习

前面说了,真正的数据就保存在 bio 里面,所以我们需要从 request_queue 中取出一个一个的 request,然后再从每个 request 里面取出 bio,最后根据 bio 的描述将数据写入到块设备,或者从块设备中读取数据。(块设备物理存储单元)。但是对于机械硬盘这样带有磁头的设备,读取不同的盘面或者磁道里面的数据,磁头都需要进行移动,因此对于机械硬盘而言,将那些杂乱的访问按照一定的顺序进行排列可以有效提高磁盘性能,linux 里面针对不同的存储设备实现了不同的 I/O 调度算法.

2023-07-04 20:23:33 492

原创 正点原子AP3216驱动开发学习

description : 读取AP3216C的数据,读取原始数据,包括ALS,PS和IR, 注意!if(buf[4] & 0x40) /* IR_OF位为1,则数据无效。if(buf[0] & 0X80) /* IR_OF位为1,则数据无效。@return : 读取的字节数,如果为负值,表示读取失败。/* 要写入的数据缓冲区。@param - buf : 返回给用户空间的数据缓冲区。

2023-07-04 16:50:49 100

原创 安装ncurses遇见 in definition of macro ‘mouse_trafo’

解决办法:找到include/curses.h的1631行删除改行。

2023-06-15 20:04:39 160

原创 day13 二叉树(递归+回溯)

思路:分别求出该二叉树得左右子树得高度再求其绝对值之差来判断。而高度是指该节点到叶子节点得最长路径。所以这里选择后序遍历。在遍历得过程中如果有某棵子树得高度差返回为-1,则该树不是平衡二叉树。每次遍历到叶子节点收集完一条路径我们需要往回跑去遍历其它的路径。平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。思路:先统计左子树的左叶子节点之和再统计右子树,最后相加。如何判断是否是左叶子节点?根据叶子节点的父节点判断。需要思考得是递归得单层逻辑以及终止条件。以下题目均采用递归方法。

2023-04-09 17:17:08 33

原创 day12 二叉树

因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。节点为空的情况有:(注意我们比较的其实不是左孩子和右孩子,所以如下我称之为左节点右节点)此时才进入单层递归的逻辑,单层递归的逻辑就是处理 左右节点都不为空,且数值相同的情况。比较二叉树外侧是否对称:传入的是左节点的左孩子,右节点的右孩子。左节点为空,右节点不为空,不对称,return false。比较内测是否对称,传入左节点的右孩子,右节点的左孩子。

2023-04-03 21:28:28 30

空空如也

空空如也

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

TA关注的人

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