自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 riscv 启动流程分析

文章目录riscv Linux 目录分布内核第一个运行的地方——head.S内核运行的第一个C文件——init/main.csetup_arch()parse_dtb()setup_initial_init_mm()early_ioremap_setup()jump_label_init()parse_early_param()efi_init()paging_init()misc_mem_init()init_resources()sbi_init()kasan_init()setup_smp()risc

2022-05-08 19:53:20 4115

原创 关于Linux内核抢占调度

文章目录抢占调度和非抢占调度如何避免进程被抢占抢占调度和非抢占调度如何避免进程被抢占void preempt_count_add(int val) 用于增加当前进程的引用计数,这样可以避免当前进程被抢占与之对应的是void preempt_count_sub(int val)用来当前进程的引用计数,这样当引用计数为0时,当前进程就可以被抢占.这两个函数是一对的,一般一起使用其使用的例程如下:#define __irq_enter() \ do { \ account_

2021-10-07 23:07:10 893

原创 文件系统只读方案

文章目录1、问题现象2、具体方案2.1 分区方案2.2 分区后的烧写情况2.3 对文件系统的修改2.4 关于之前挂载后拔卡无法删除相应目录的分析2.4.1 问题分析2.4.2 解决方案测试情况1、问题现象示教器在测试过程中丢失了根文件系统下的usr目录,出现了严重的无法正常启动的问题。具体为什么丢失该目录,原因未能查到,解决方案是除了用户目录以外,将根文件系统的权限设置为只读,保证根文件系统的安全性。2、具体方案2.1 分区方案增加用户目录分区,将根文件系统分为两部分,一部分为系统组使用,设置为

2021-10-07 11:07:28 1794

原创 C/C++文件字符串解析

文章目录目的C++打开文件C++读取字符串字符串处理目的我们需要解析DNS配置文件,该文件有时第一行、第二行是DNS地址,有时第三、第四行是DNS地址,并且格式不是完全固定,我们如何从该文件中获取到正确的DNS地址呢?//第一种sjdfaljflnamespace 192.168.1.2namespace 192.168.1.3//第二种namespace 192.168.1.2namespace 192.168.1.3//第三种sjdfaljflnamespace 192.168.

2021-07-25 01:21:08 2523 3

原创 写shell脚本必备知识

文章目录写脚本必备知识一、条件测试1、测试文件状态2、测试字符串3、测试数值4、关于expr的用法二、控制流结构1、流控制2、循环三、向脚本传递参数1、如何传入参数2、shift的用法四、总结写脚本必备知识一、条件测试条件测试是在写脚本中必不可少的知识,通过各类条件的检测,才可以写出if,eles等分支结构,做出一个通用性较高的脚本。条件测试有对文件状态、字符串、数字进行检测。条件测试有两种表示方式1、test condition2、[ condition ]常用第二种方式,便于和if等分支

2021-05-17 18:28:55 1023

原创 git使用研究报告

文章目录git使用研究报告一、分支介绍二、分支配合Source Insight使用修改uboot1、通过切换分支进行版本切换流程2、通过切换分支进行代码切换所遇到的问题三、分支的合并1、分支在服务器端进行合并2、分支在本地进行合并四、分支上传服务器1、分支提交准则2、关于上传时更新代码的思考五、git版本控制1、通过分支进行版本的控制2、通过log进行版本控制六、git常用的几种撤销操作1、撤销提交2、撤销暂存3、撤销对文件的修改七、关于reset与checkout的详细分析1、git的三个容器与一个库2、

2021-05-16 22:09:30 769

原创 字符设备驱动

文章目录一、针对LED驱动与VirtualDisk驱动的分析1 LED驱动编写1.1 头文件及宏定义1.2 安装与卸载函数1.3 构建file_operations结构体1.4 函数实现2 应用程序测试二、VirtualDisk字符设备驱动分析1 驱动编写2 与led驱动的区别2.1 关于内存申请的不同2.2 关于操作函数实现的不同3 对于VirtualDisk的应用测试一、针对LED驱动与VirtualDisk驱动的分析1 LED驱动编写1.1 头文件及宏定义LED的驱动编写首先进行将一系列头文件

2021-05-16 21:41:36 153

原创 输入子系统研究

文章目录输入子系统驱动分析输入子系统整体分析多个层面之间的联系初始化过程handler、handle从何而来事件处理流程验证处理事件是调用的evdev中的handler关于open函数的研究输入子系统驱动分析之前分析触摸屏驱动仅仅从触摸屏驱动层面进行的分析,没有结合输入子系统进行分析,分析不够全面,这里首先对输入子系统进行一定程度的分析,然后结合输入子系统,对触摸屏驱动进行进一步的分析。输入子系统整体分析经过查询一系列的资料,对输入子系统有了一定的概念,首先讲一下关于输入子系统存在的作用。输入子系

2021-05-16 21:26:24 230

原创 触摸屏驱动分析

文章目录触摸屏驱动触摸屏驱动分析ti_tsc_init函数和ti_tsc_exit函数tscadc_resume函数tscadc_resume函数寄存器使用情况tscadc_suspend函数tscadc_remove函数tscadc_probe函数tscadc_interrupt中断处理函数中断函数中的寄存器使用情况触摸屏驱动触摸屏驱动分析触摸屏驱动的主要函数如下:tscadc_readl()tscadc_writel()tsc_setp_config()tsc_idle_config()

2021-05-16 21:22:45 736

原创 UBOOT阶段cache研究

文章目录uboot enable cache可行性研究1、为何uboot开始要关闭mmu与cache1.1 关于MMU1.1.1、MMU简单用法1.1.2 、MMU的地址转换法1.1.3 、关闭MMU原因1.2 、关于cache1.2.1、cache的用法1.2.2、关闭cache的原因2、是否可以打开cache3、是否需要在uboot阶段将cache与内存同步3.1、cache的两种策略3.1.1、 Write-Through3.1.2、 Write-Back3.2、uboot执行的策略以及是否需要cac

2021-05-16 21:11:56 1460

原创 内核调试工具ftrace

文章目录1、ftrace基本介绍2、基本用法2.1、实例演示2.2、结构展示1、ftrace基本介绍ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析。最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程。如今 ftrace 已经成为一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能。2、基本用法首先编译内核,使内核支持ftrace。通过以上配置,使得内核支持ftr

2021-05-16 21:06:42 6669

原创 MMU研究

文章目录1、MMU基本功能2、TTB与TLB2.1、TTB2.2、TLB3、Cache1、MMU基本功能MMU全称Memory Management Unit,负责虚拟地址到物理地址的映射,并且提供硬件机制的内存访问权限检查。下图只是简化过的MMU寻址的通用转换过程,是使用二级页表的转换过程,具体在转换过程中会更加复杂,在转换过程中内存通过CP15寄存器C3(域访问控制)、描述符的域(domain)、CP15寄存器的C1的R/S/A位、描述符的AP位等联合作用决定是否可读写。2、TTB与TLB2.

2021-05-16 21:03:40 537

原创 PRU驱动分析

文章目录1、PRU-ICSS硬件分析2、PRU-ICSS功能3、如何使用PRU4、PRU相关驱动研究4.1、pruss.c4.4.1、PRU寄存器地址及功能4.4.2、PRUSS结构体4.4.2.1、private_data4.4.2.2、pruss_mem_region4.2、pruss_intc.c4.3、pru_rproc.c4.3.1、remoteproc core与i2c core进行对比4.4、prueth.c1、PRU-ICSS硬件分析PRU-ICSS全称:Programmable Rea

2021-05-16 21:02:11 2408

原创 UBOOT设备树研究

文章目录1、介绍2、设备树的获取与设置3、uboot如何获取dtb4、uboot设备树接口1、介绍uboot的设备树可以在uboot运行过程中进行一些配置,uboot可以根据配置,选择不同的设备树,这种方式在已经在armLinux kernel中和pc端已经应用了一段时间了。fdt非常的易用,通过节点和属性进行设备的配置,通过分层的进行设备的管理。当有好几种不同的板子的时候,可以使用同一套源码,仅修改一下设备树就可以完成对板级硬件的匹配。2、设备树的获取与设置设备树可以通过kernel源码进行获取

2021-05-16 20:56:39 6879 3

原创 UBOOT阶段实现网络命令通信

文章目录1、对ping命令分析1.1、基本流程1.2、arp响应1.3、arp接收以及发送ICMP1.4、接收ICMP2、添加新命令get_netcmd2.1、为什么添加该命令2.2、如何开始命令、如何结束命令2.3、如何解析收到的数据1、对ping命令分析1.1、基本流程uboot中存在命令ping,在uboot当中运行该命令,通过wireshark进行抓包,可以直观的看到以下内容。TI的IP为172.16.89.4VM的IP为172.16.89.21、TI发送广播,寻求IP为172.16

2021-05-16 20:47:04 1443

原创 基于C++(QT)的车牌识别实现——车牌框选

拟采用的技术路线本次设计计划以最快的速度实现一个清晰车牌的识别,后续再增加识别精确度,故采取以下技术路线本篇文章主要讲述图像二值化的实现。打开图像->二值化->边沿检测->包络检测->提取轮廓->车牌识别车牌框选方案首先实现关于直线的检测,通过直线的检测最后判断是否能够相交组成矩形,然后选出最可能是车牌的矩形。直线检测采用“Hough直线检测”的方案。在前期我们已经采集到了以下图形,后续就是取出图形中的直线。在取出直线过程中,首先进行边沿点的取出,我们将边沿的颜色设

2021-04-27 23:12:22 2330 5

原创 基于C++(QT)的车牌识别实现——腐蚀与膨胀

文章目录拟采用的技术路线腐蚀的实现膨胀的实现拟采用的技术路线本次设计计划以最快的速度实现一个清晰车牌的识别,后续再增加识别精确度,故采取以下技术路线本篇文章主要讲述图像二值化的实现。打开图像->二值化->边沿检测->包络检测->提取轮廓->车牌识别腐蚀的实现二值化完成之后,需要进行边沿检测,边沿检测之前需要对一些无用的点进行腐蚀,将无用的噪点给删除掉。删除的原理则是通过8邻域取色素,进行处理。以下实现了腐蚀功能,具体原理是通过窗口进行扫描,每一个点都会检测附近是否

2021-04-26 23:15:14 1344

原创 基于C++(QT)的车牌识别实现——二值化处理

文章目录车牌图片打开图片二值化车牌图片打开第一步就是将车牌图片打开,车牌图片打开使用QT中的标准化窗口QFileDialog::getOpenFileName()打开文件之后,使用QPixmap类进行图片的接收,QPixmap类能够很方便的进行图片的缩放,但是不利于进行单个像素的操作,故在打开过程中,还添加了Qimage私有变量存储像素信息。void MainWindow::slot_open(){ qDebug()<<"slot_openFile"; QString

2021-04-23 23:32:26 1821

原创 OSI七层模型——会话层&表示层&应用层

文章目录OSIOSI简介OSI之会话层功能OSIOSI简介TCP/IP是计算机最基本的一种网络通信协议,TCP/IP协议基于OSI七层模型的设计思想。OSI是国际标准化组织对互联网通信的一种标准框架,方便对互联网通信进行标准化处理。TCP/IP就是在这种标准下的一簇通信协议。以下就是OSI模型的7层。应用层表示层会话层传输层网络层数据链路层物理层OSI之会话层功能...

2021-04-19 22:47:57 2528

原创 常见的排序方法

文章目录常见的排序方法常见的排序方法中文名称最坏时间复杂度最好时间复杂度平均时间复杂度空间复杂度稳定性英文名称选择排序n^2n^2n^21不稳Selection冒泡排序n^2nn^21稳Bubble插入排序n^2nn^21稳Insertion堆排序n(log2)nn(log2)nn(log2)n1不稳Heap希尔排序n^2nn^1.31不稳Shell归并排序n(log2)nn(lo

2021-04-11 10:57:46 75

原创 OSI七层模型——传输层

文章目录OSIOSI简介OSI之传输层功能OSIOSI简介TCP/IP是计算机最基本的一种网络通信协议,TCP/IP协议基于OSI七层模型的设计思想。OSI是国际标准化组织对互联网通信的一种标准框架,方便对互联网通信进行标准化处理。TCP/IP就是在这种标准下的一簇通信协议。以下就是OSI模型的7层。应用层表示层会话层传输层网络层数据链路层物理层OSI之传输层功能供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。传输层的代表协议由

2021-03-14 22:52:40 1647

原创 OSI七层模型——网路层

OSIOSI简介TCP/IP是计算机最基本的一种网络通信协议,TCP/IP协议基于OSI七层模型的设计思想。OSI是国际标准化组织对互联网通信的一种标准框架,方便对互联网通信进行标准化处理。TCP/IP就是在这种标准下的一簇通信协议。以下就是OSI模型的7层。应用层表示层会话层传输层网络层数据链路层物理层OSI之网络层功能为数据包选择路由问:这一层的具体作用是什么?答:这一层主要实现了关于路由器之间相互传输,包括知道IP地址,如何获取MAC

2021-03-14 21:49:36 233

原创 OSI七层模型——物理层&数据链路层

文章目录TCP/IPTCP/IP简介OSI之物理层功能TCP/IPTCP/IP简介TCP/IP是计算机最基本的一种网络通信协议,TCP/IP协议基于OSI七层模型的设计思想。OSI是国际标准化组织对互联网通信的一种标准框架,方便对互联网通信进行标准化处理。TCP/IP就是在这种标准下的一簇通信协议。以下就是OSI模型的7层。应用层表示层会话层传输层网路层数据链路层物理层这四层各自有各自的功能。OSI之物理层功能物理层属于最底层的功能,负责二

2021-03-13 10:45:10 1330 1

原创 tty子系统研究

文章目录1、关于console与tty的区别2、tty到底是什么?3、tty框架4、如何注册入tty子系统5、终端、shell如何运行1、关于console与tty的区别console是控制台,只有一个,tty为终端,可以有好多个,其中系统会指定一个tty作为控制台,控制台可以显示所有系统打印的信息。一般我们调试过程中使用的就是串口作为控制台。这些是在我们在使用的层面进行分析的。在驱动框架层面分析,console和tty具有明显的不同,console和tty是两种框架设计。这中设计主要考虑的是内核空间

2021-02-01 11:48:30 1030 2

原创 串口驱动研究

文章目录串口驱动研究1、串口硬件研究1.1、串口三个模式1.2、普通串口模式研究1.2.1、FIFO management1.2.1.1、FIFO中断模式1.2.1.2、FIFO轮询模式1.2.1.3、FIFO DMA模式1.2.2、 模式选择1.2.3、协议格式1.3、串口编程模型2、串口驱动流程2.1、第一阶段流程2.2、第二阶段流程串口驱动研究1、串口硬件研究1.1、串口三个模式(1)Uart模式普通的串口模式,在普通串口模式下,具有自动请求发送(RTS)、自动清除发送(CTS)等功能,这里

2021-02-01 11:25:52 1320

原创 LCD驱动研究

文章目录LCD驱动研究1、入口函数分析2、probe函数研究3、操作函数f_ops研究4、编写应用程序测试LCD驱动4.1、简单的测试应用4.2、实际绘图应用4.3、重点函数mmap分析4.3.1、mmap第一阶段——用户接口分析4.3.2、mmap第二阶段——驱动函数分析4.3.3、mmap第三阶段——进程发起访问5、关于fb的直接操作LCD驱动研究1、入口函数分析static int __init da8xx_fb_init(void){ return platform_driver_regi

2021-02-01 11:21:11 561

原创 fbmem驱动框架分析

文章目录fbmem驱动框架分析1、与misc驱动框架类比1.1 my_first_cdev的记录1.2、关于misc驱动框架的总结2、fbmem驱动框架2.1提供注册函数2.2、操作函数分析2.2.1、open函数分析open函数究竟做了什么进一步思考2.2.2 fb_read函数2.2.3、fb_write函数2.2.4、fb_ioctl函数2.2.5、 fb_mmap函数3、结合psplash应用分析fbmem驱动框架分析1、与misc驱动框架类比1.1 my_first_cdev的记录从/pr

2021-02-01 11:08:51 755

原创 top命令原理解析

文章目录1、研究目的2、关于proc2.1、关于/proc/[pid]/status2.2、关于/proc/[pid]/stat3、top命令关于cpu占用率的实现4、busybox_top与procps-ng_top的不同5、自写cpu检测测试6、关于代码分析6.1、关于总CPU时间获取6.2、获取进程的CPU时间6.3、通过差值计算进程CPU占用率7、关于进程占用内存的监控7.1、关于内存使用情况的获取1、研究目的根据各个方向对于应用监控系统资源的使用情况。2、关于proc2.1、关于/proc

2021-01-31 14:42:03 5098

原创 关于Linux系统重启过慢问题解决方案

文章目录1、关于网络时钟同步2、关于rng-tools3、如何关闭两项服务3.1、关闭网络时钟同步服务3.2、关闭rng-tools1、关于网络时钟同步systemd 提供了 systemd-timesyncd 客户端,它是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端。与NTP的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。在/etc/systemd/timesyncd.conf 中配置你的(时间)服务器。大多数 Linux 发行版都提供了一个默认

2021-01-31 14:29:03 2165

原创 C语言——进程管理

文章目录进程基本概念进程的属性进程控制相关函数进程创建进程等待进程结束多个进程间的关系进程组时间片分配调度策略和参数优先级设定进程同步线程线程的创建线程结束、挂起、取消互斥进程基本概念进程是具有一定功能的程序关于一个数据集合的一次执行过程。Linux系统支持多个进程同时进行,每个进程属性中的安全信息里都设定有一个优先级,系统根据优先级来决定各个进程从CPU获得的时间片的大小。Linux内核把进程成为任务(task),进程的虚拟地址空间分为用户虚拟地址空间和内核虚拟地址空间,所有进程个共享内核虚拟地址空

2021-01-31 12:26:10 2141

原创 Linux下的C语言编程——流概念与内存管理

文章目录前言数据流概念静态内存与动态内存链表与动态内存结合前言本文重点讲述了在内存管理当中的链表与动态内存的一种用法,在讲述这种用法之前,先讲解了数据流的概念,通过数据流的缓存,实现了连续申请内存,进行链表实现。数据流概念基于流的IO操作与基于文件描述符的IO操作十分类似。对流进行操作的第一步是将其打开,可以调用库函数fopen()函数打开一个流,函数会返回一个FILE结构指针,结构体指针包括所开文件的描述符,为流准备的缓冲区指针、大小等。当执行程序时,三个流会自动打开,分别是标准输入,标准输

2021-01-21 21:30:35 359

原创 Linux串口打印乱码无法控制

文章目录嵌入式开发板调试中的串口问题问题提出给出推论结论验证嵌入式开发板调试中的串口问题问题提出在开发板调试过程中,遇到过一个很奇怪的问题,串口突然疯狂打印乱码,整个console变得无法控制,但是通过telnet进行网络连接后,查看ps,并没有异常的进程。给出推论不断的寻找该原因,完全无法找到。查看.bash_history发现该问题,在history中有执行乱码命令,非常奇怪,因为...

2020-04-24 22:37:31 1187

原创 关于qt5 arm移植心得

文章目录qt移植必备知识./configuremakemake installqt移植必备知识qt库和qmake是编译qt的主要目的,使用qmake编译我们的qt程序,然后将qt程序拷贝到arm平台正常运行,是我们的最终目标。在这个过程中,肯定会遇到各种错误,碰到错误就百度、谷歌,你会发现有时候他们只提供了你所搜索的错误,而不是给你解决错误的思路,并不是所有的错误都是可以搜到答案的,这篇文章将...

2020-04-24 22:24:15 876

原创 github入门

github入门学习github介绍github是一个基于git的代码托管仓库,在这里我们可以获取很多的开源项目,这些经典的开源项目是刚刚入门的coder绝佳学习资料,通过学习github的使用同时可以熟悉git的使用,通过git实现代码管理能够实现非常方便的版本管理,下面我们介绍github的入门操作一、git配置git要想与GitHub实现上传与下载,必须要在Linux系统中开启ssh...

2019-10-27 00:00:57 159

memtester资料.zip

memtester资料.zip

2021-04-26

小兵以太网测试仪Linux版本源码

小兵以太网测试仪Linux版本源码

2021-01-31

空空如也

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

TA关注的人

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