自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 资源 (10)
  • 收藏
  • 关注

原创 匿名页面缺页中断

【代码】匿名页面缺页中断。

2023-09-04 21:05:23 63

原创 linux 缺页中断处理流程

并填充这个这个结构体。这个函数处理缺页中断 ,

2023-08-28 22:19:14 194 1

原创 do_page_fault 函数分析

代码路径:arch/arm64/mm/fault.c。

2023-08-24 22:30:41 128 1

原创 ARM64 架构异常处理

使用ARMv8 架构中的访问实效寄存器 – 综合信息寄存器 ESR。代码路经:arch/arm64/kernel/entry.S。bit(25) IL 表示同步异常指令的指令长度。从上面代码可以看出,我们发生数据异常是调用到。对于异常,程序会跳转到el1_sync函数。bit(31-26) EC 表示异常类型。调用到了do_mem_abort 函数。bit(24-0) 具体的异常指令编码。bit(63-32) 保留。

2023-08-24 22:29:39 132 1

原创 页面分配和释放函数

释放内存页面的核心功能是把页面添加到伙伴系统中适当的free_area链表.在释放内存块的时候,会查询相邻内存块是否空闲,如果也是空闲的就会将当前块继续加到更加高一阶的空闲链表free_area中(页面合并),一直到可能合并的内存块都完成合并.get_page_from_freelist 尝试分配物理页面,如果分配失败了.使用__alloc_pages_slowpath,进入慢速分配路径。

2023-04-29 16:04:48 48

原创 linux 伙伴系统

什么叫做伙伴,需要满足三个条件1 page sieze 相等2 地址是连续的3 必须是同一个大块里面分配出来的。

2023-04-19 23:09:15 136

原创 进程页表映射例子

连接:http://sources.buildroot.net/devmem2.c。

2023-04-13 22:42:19 38

原创 映射用户进程页表

【代码】映射内核页表到用户空间。

2023-04-12 22:32:15 80

原创 内核页表映射

【代码】内核页表映射。

2023-04-11 23:03:05 62 1

原创 内存的初始化

表示在 node 0 上面初始化了262144个页262144*4k = 1048576k = 1024M = 1G。set_pageblock_migratetype:设置页块(pageblock)的迁移类型。get_pageblock_migratetype:获取页块(pageblock)迁移类型。mem_map 存放的是struct page本身,所以需要花费大量的页来存储。页帧号(pfn page frame number )到页(page)迁移类型的最小单位是pageblock!

2023-04-10 23:08:21 51

原创 alloc_pages函数分析

所以分析的实现需要分析这个函数.

2023-04-05 23:10:51 142

原创 linux 物理页面分配

用来分配2的order次幂个连续的物理页面,返回第一个物理页面的page数据结构.需要小于MAX_ORDER,默认是1111返回分配内存空间的虚地址,从这个函数不会使用内核的高端地址.

2023-04-05 00:05:57 70

原创 mutex_lock 函数分析

path:kernel/locking/mutex.cfunction source code:void __sched mutex_lock(struct mutex *lock){ might_sleep(); if (!__mutex_trylock_fast(lock)) __mutex_lock_slowpath(lock);}EXPORT_...

2022-04-10 11:03:00 37

原创 编译内核时: [-Warray-bounds]

完整报错:warning: 'memset' offset [17, 48] from the object at 'r6' is out of the bounds of referenced subobject 'rtmsg_dst' with type 'struct in6_addr' at offset 0 [-Warray-bounds]导致编译终止。解决方法1: 找到对应函数...

2021-05-03 00:55:00 28

原创 make 4.2.1 Installing to target 报错

报错内容:2021-05-01T16:21:46 WARNING: 'makeinfo' is missing on your system.2021-05-01T16:21:46 You should only need it if you modified a '.texi' file, or2021-05-01T16:21:46 any other file indirectly aff...

2021-05-01 16:59:00 13

原创 scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory

rk3399skd编译kernel 报错:scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory 21 | #include <openssl/bio.h> | 原因是没有安装 libssl-dev解决方法:  sudo apt-get in...

2021-04-25 22:03:00 135

原创 C++ 异常处理

1、使用 try catch 语句处理C++ 中的异常 2、使用throw 关键字抛出异常 3、同一个try语句可以跟上多个catch 语句 4、异常处理 不进行类型转换代码示例:void demo1(){ try { throw 0;// throw 'c';// throw "abc"; } catch...

2020-10-28 00:06:00 12

原创 Qt发送事件与自定义事件

发送事件 主要函数: bool QCoreApplication::sendEvent ( QObject *receiver, QEvent * event ) void QCoreApplication::postEvent ( QObject *receiver, QEvent * event ) sendEvent :阻塞型发送事件,在发送事件时直接调用Event函数(能够在堆 ...

2020-03-20 23:31:00 10

原创 Qt文本流和数据流

Qt文件类型分为文本文件(内容是可以读的文本字符)与数据文件(二进制数据)。  注:对于电脑来说所有的文件都是二进制数据。QFile直接支持文本文件与数据文件的读写。 QTextStream text(&file); QDataStream text(&file);...

2020-02-21 00:20:00 8

原创 Qt文件操作

Qt中IO操作的处理方式:  ——Qt通过统一的接口简化了 文件 与 外部设备 的操作方式  ——Qt中的文件可以看成 一种特殊的外部设备  ——Qt中的文件操作 与外部设备操作相同IO操作中接口函数:  ——bool open(OpenMode mode) 打开设备  ——QByteArrary read(qint64 maxSize) ...

2020-02-20 17:03:00 8

原创 Qt 布局管理器

布局管理器:  ——提供相关类对界面组件进行布局管理  ——能够自动排列窗口的组件界面  ——窗口变化后自动更新组件的大小QBoxLayout布局管理器(可以相互嵌套)  ——以水平或者垂直的方式进行管理界面组件  ——垂直方式QVBoxLayout    ——水平方式QHBoxLayout测试代码:/*布局管理器*/ layout1->addWidget(&a...

2020-02-11 17:53:00 11

原创 Qt 标准对话框

Qt提供了一些可以复用的对话框类型,这些对话框类型全部继承与QDialo类。  Qt中标准对话框遵循相同的使用方法:  //定义对话框对象  DialogType dlg(this);  //设置对话框属性  dlg.setPrpertyXXX(value);  if(dlg.exec() == DialogType::value)  {  //获取对话框数据  Type ...

2020-02-09 01:09:00 11

原创 Qt 对话框QDailog及其类型

学习目的:  Qt 对话框QDialog 学习。  对话框是与用户进行简短交互的顶层窗口   QDailog是Qt中所有对话框的基类  QDailog继承于QWidget是一种容器类型的组件  —— QDialog作为专用的交互窗口而存在——QDialog不能作为子部件嵌入其它容器中——QDialog其实就是定制了窗口样式的特殊QWidget实验:QDialog与QWidget...

2020-02-05 16:31:00 21

原创 Qt 对象间的父子关系

Qt对象间可以存在父子关系:  ——每个对象都保存有它所有子对象的指针  ——每个对象都有一个其父对象的指针 当指定Qt对象的父对象时:  ——其父对象会在自己的子对象链表中加入该对象的指针  ——该子对象会保存其父对象的指针  实验代码:  1、通过创建三个QObject 对象 p c1 c2  2、p 作为c1 c2的父对象  3、打印c1 c2 的地址  4、打印...

2020-02-04 17:16:00 12

原创 Qt 信号与槽

Qt信号模型:  Qt封装了具体操作系统的消息机制  Qt遵循进店的GUI消息驱动事件模型 Qt中系统消息概念:  信号(Signal)——由操作系统产生的消息  槽(Slot)——程序中的消息处理函数  链接(Connect)——将系统消息绑定到信息处理函数信号与槽 核心函数 QObject::connect 函数  bool connect(const QObject...

2020-02-02 21:08:00 13

原创 Qt 计算器界面实现

学习目的:  QWidget QPushbutton QLineEdit使用。  通过Qt 代码实现一个计算器界面。QWidget窗口组件:  QWidget类继承自 QObject 类和QPaintDevice类  QObject 是所有 支持Qt对象模型 的基类  QPaintDevice Qt中所有 可绘制组件 的基类  QWidget能够绘制自己 和处理 用户的输...

2020-02-01 18:43:00 10

原创 C++ 多态、虚函数(virtual 关键字)、静态联编、动态联编

函数重写:(在子类中重写父类中的函数)  父类中被重写的函数 依然会继承 给子类。  子类中重写的函数将覆盖父类中的函数。  通过作用域分辨符 :: 可以访问到父类中的函数。  例如:#include <iostream>#include <string>using namespace std;class parent{ publ...

2019-11-08 21:05:00 13

原创 C++ 类类型转换函数explicit 关键字

标准数据之间会进行 隐式类型安全转换。  转换规则:  隐式类型转换的问题:  #include <iostream>#include <string>using namespace std;int main(){ short s = 'a'; unsigned int ui = 1000; int i = -2000;...

2019-10-30 23:14:00 10

原创 c++ 智能指针

在使用指针的时候容易产生内存泄漏(在申请后没有释放)  -动态申请堆空间,用完不归还。这样就导致越来越多的堆空间不能够被使用到。  -C++语言中没有垃圾回收的机制  -指针无法控制所指堆空间的声明周期(但是类的构析函数可以)。 例如如下代码:#include <iostream>using namespace std;class testPointer{...

2019-10-29 22:18:00 9

原创 C++ 数组操作符重载、函数对象分析、赋值操作符

string类型访问单个字符  #include <iostream>#include <string>#include <sstream>using namespace std;//访问 string单个字符int main(){ string s = "1a2b3a4c"; int n = 0; ...

2019-10-23 23:14:00 11

原创 C++ 标准库字符串类使用

标准库中的字符串类  C++语言直接支持C语言所有概念。  C++中没有原生的字符串类型。由于C++中没有原生的字符串类型,C++标准库提供了string类型。  1、string 直接支持字符串链接  2、字符串大小比较    /*实验 字符串排序 拼接*/    #include <iostream>#include <string>#inclu...

2019-10-18 00:12:00 6

原创 C++ 友元(friend关键字)、类中的重载、操作符重载(operator关键字)

C++ 中友元的用法:  1、在类中使用friend关键字声明  2、类的友元可以是其它类或者具体函数  3、友元不是类的一部分  4、友元不受类中访问级别的限制  5、友元可以直接访问具体类中的所有成员。友元声明使用格式:  class class_name() { int x; int y; public: ...

2019-10-16 21:58:00 25

原创 C++ 二阶构造模式

1、如何判断构造函数的执行结果?  构造函数没有返回值,所以不能通过返回值来判断是构造函数是否构造成功。  如果给构造函数强行加入一个返回值,用来表示是否构造成功。这样确实能够反映出构造的结果,但是不够优雅,有点呆。2、在构造函数中执return 会发生什么?  当构造函数中执行return后构造函数直接返回,后面的程序将不能被执行到。这样将产生一个“半成品对象”。3、构造函数执行结束...

2019-10-14 23:45:00 12

原创 C++ 对象构造顺序、构析函数、临时对象。

对象的构造顺序:1、对于局部对象,构造顺序是根据程序执行流进行构造,从上到下。#include <stdio.h>class Test{ int mi; public: Test() { printf("Test()\n"); } Test(int v) { printf("Test(...

2019-10-12 22:17:00 10

原创 C++ 初始化列表

C++中提供了初始化列表对成员变量进行初始化。  语法规则:class_name::class_name()          m1(v1),m2(v2,v3),m3(v3)        {          .......        }注意:  成员的初始化顺序,与成员的声明顺序相同。  成员的初始化顺序与初始化列表的位置无关。  初始化列表比构造函数先执行。测试代码...

2019-10-12 12:57:00 9

原创 C++ 对象的构造

在类里面成员函数的初始值是多少了?(取决于创建对象的位置,是在堆、栈、还是在静态存储区中创建。)  例如:  #include <stdio.h>class Test{ private: int i; int j; public : int get_i(void) {return i;} int get_j(void)...

2019-10-10 23:21:00 18

原创 C++ 类学习笔记 :: 作用域限定符

类与封装的概念:1、类:  类的实现、类的使用。  当使用类的时候,不需要关心实现的细节。当创建类的时候,才需要考虑到内部具体的实现细节。2、类的封装:  成员变量,C++用于表示属性的变量。  成员函数,C++中用于表示类的行为的函数。3、pubic、private关键字。(使得变量和函数有了访问权限)  pubic:成员变量和成员函数。可以在类的外部被访问。  privat...

2019-10-08 23:08:00 17

原创 C++新型强制类型转换。

  C++强制类型转换分为4个不同的类型。  1、static_cast    -用作基本类型转换。    -不能用于基本类型指针转换。    -可以用于有继承关系对象之间的转换和类指针之间的转换。#include <stdio.h>void static_cast_demo(void){ int i = 0x12345; char c = 'c';...

2019-10-07 13:38:00 6

原创 C++ new、delete、namespace关键字。

C++ 中的动态内存分配:  C++与C语言分配内存关键字不同,C语言中的动态内存分配是通过 malloc(分配内存) 与 free(释放内存)完成。C++使用new(分配内存) delete(释放内存)。  C++与C语言分配内存方式不同,C语言是以字节进行内存分配,C++是以类型进行内存分配。  C++申请内存方法:    变量申请内存:type *name = new typ...

2019-10-07 10:15:00 11

原创 C++ 调用C语言、extern "C"、__cplusplus关键字

——C++编译器完全兼容C语言的编译方式。(但是得有源代码)——C++编译器会优先使用C++的编译方式进行编译——extern "C" 关键字能够强制C++编译器进行C方式的编译  学习目标:实现C语言与C++之间的互相调用       学习 extern "C" {} 关键字       学习 __cplusplus标准宏实验一、通过C++调用C编译器编译出来的   .o  文件 ...

2019-09-28 22:29:00 11

sd-fuse_rk3399.tar.gz

方便下载

2021-04-25

ubuntu-base-18.04.4-base-armhf.tar.gz

方便下载,ubuntu-base-16.04.6-base-armhf.tar。无修改,官网下载过来的。

2020-08-06

ubuntu-base-16.04.6-base-armhf.tar.gz

ubuntu-base-16.04.6-base-armhf.tar,方便下载。由于下载太慢了,所以上传过来。

2020-08-06

USB HOST.zip

使用ST官网库+Fat文件系统实现U盘读写。文件操作

2019-06-27

STM32F103 USART+DMA

通过STM32的DMA功能,实现通过DMA传输串口数据,从而减小CPU在接收串口数据上的消耗。

2019-02-18

STM32F103 ADC+DMA

使用STM32F103自带ADC完成4路ADC采样,工作在连续采样模式下,使用DMA传输

2019-02-11

c#串口实现源码

c#实现串口功能。希望有帮助。

2018-11-17

STM32f103rc驱动pcf8563

STM32f103rc驱动pcf8563。IIC+逻辑,能够正常读取芯片数据。解析数据。直接输出。

2018-11-06

STM32F103 TIM1650驱动

TIM1650芯片驱动,测试单片机型号:stm32f103rc。亲测可以使用。

2018-11-06

STM32F103+MC20GRPS源码

STM32+MC20GPS源码亲测可以使用,具有项目应用。使用芯片STM32F103RC

2018-11-06

空空如也

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

TA关注的人

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