自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 crash工具分析dma设备内存踩踏(二)

kernel panic、dma设备内存踩踏、crash工具

2023-10-14 13:33:42 788 2

原创 crash工具分析dma设备内存踩踏(一)

kernel panic、dma设备内存踩踏、crash工具

2023-10-07 13:51:47 661

原创 memset(addr , 0 , size) 导致Bus error问题分析

memset 0 失败

2023-07-09 20:42:31 1286 4

原创 udev mdev热插拔配置说明

mdev是busybox提供的一个工具,用在嵌入式系统中,相当于简化版的udev,作用是在系统启动和热插拔或动态加载驱动程序时,自动创建设备节点。文件系统中的/dev目录下的设备节点都是由mdev创建的。在加载驱动过程中,根据驱动程序,在/dev下自动创建设备节点。

2023-04-24 09:53:34 595

原创 Crash分析gpu非法访问地址问题

crash, kernel panic

2023-04-20 13:35:49 929

原创 Crash工具介绍和常见命令使用

本文主要介绍crash工具的使用以及常用的命令。crash工具,常用来分析内核的coredump以及应用的coredump,功能非常强大。

2023-04-19 20:46:24 4522 1

原创 Ftrace分析cpu idle被周期唤醒原因

Linux/tick/idle/sched

2023-01-31 20:40:41 771

原创 USB协议概念学习

USB协议概念

2022-11-25 18:38:30 2418

原创 Linux sysrq使用

Sysrq被称为”魔术组合键”, 是内建于Linux内核的调试工具。只要内核没有完全锁住(还可以响应中断),不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息。...

2022-06-17 11:14:13 3676

原创 关于GCC编译优化讨论

1.简介2. 验证demo3.解决方法探讨1.简介关于这个问题的讨论,其实是在工作中遇到了相关情况,特地写了一个demo来佐证一下自己的想法以及提出一些解决方法。在编写代码或者针对OS进行优化时,GCC的相关优化选项是我们经常使用到的,毕竟通过编译器来进行代码优化比人力来说,还是挺香的。但这种机器优化行为,一方面,有可能破坏了我们对原本程序的设计流程,导致最终结果大相径庭。另一方面,也考验着我们的coding能力和对编译器的了解。下面就通过以下demo来说明一下。2. 验证demo/***.

2022-05-19 16:01:51 445

原创 qemu arm虚拟机联网

1.介绍2. 互联环境搭建2.1 准备宿主机环境2.2 准备qemu环境3. qemu虚拟机挂载samba文件系统1.介绍通过qemu模拟arm虚拟机,但由于arm虚拟机只要ramfs,有时保存文件非常不方便,因此希望windows跟vmwarre Linux虚拟机一样,可以联网,这样就可以互联互通,方便调试。联网方式:windows<----桥接---->vmware linux<----桥接---->qemu arm linux2. 互联环境搭建2..

2022-03-26 10:32:49 3146

原创 USB学习记录一

1.USB简介随着计算机飞速发展,对外围接口也产生了一定要求,如小型化、高传输速度、抗干扰能力强等,老版本计算机的并行接口、RS232接口、RS485接口、ISA接口等由于存在诸多缺陷,如体型庞大、功能单一、不支持热插拔、连接数量少等,已经逐渐被淘汰了。为了满足计算机小型化需求,USB总线接口协议在1994年11月,由Compap、Digital Equipment、IBM、Intel、Microsoft、NEC、Norrhern Telecom共7家巨头提出。由于USB接口的小巧、即插即用、良好的兼容

2022-02-23 18:27:30 609 2

原创 Linux实时性评估和测量

Linux实时性评估和测量1. 名词介绍实时性操作系统:是保证在一定时间限制内完成特定功能的操作系统,实时操作系统有硬实时和软实时区分。硬实时要求在规定的时间内必须完成,软实时表示只要按照任务优先级,尽可能地完成操作即可。1.2 Linux非实时说明根据实时操作系统的要求,高优先级的任务必须在可测量的时间内完成,但由于Linux 中断、软中断、spin lock等存在,导致抢占被关闭,当触发高优先级任务时,如果抢占被关闭了,会导致处理高优先级的任务时间变得不可测量,因此无法满足实时操作系统要求,如下

2022-02-10 10:44:29 3265 2

原创 ARMv8Uboot中断设计说明

ARMv8Uboot中断设计说明1. 背景介绍因为客户需求,需要在uboot实现定时器功能,且不能阻塞,因此需要在Uboot支持中断功能,为了方便拓展,对uboot中断系统进行了类似linux系统的分层设计,本文主要介绍Uboot中断的设计思路,以及后续对这个子系统改进的方向。2. Uboot中断设计2.1 Uboot中断框架Uboot的中断框架如图所示:各个层次说明如下:driver层:中断的使用者,负责各自使用的中断的request、enable、disable和free中断管理及接口

2021-12-18 11:11:33 1672 3

原创 ARMv8 Uboot支持MMU和Cache说明

ARM64 Uboot MMU Cache

2021-12-13 14:30:33 2587 5

原创 kmalloc使用不当导致内存分配失败问题

#1. 介绍本文记录分析驱动模块kmalloc接口的flags参数使用不当,导致分配内存失败的问题,主要记录了分析过程和给出的解决方法。#1.1 背景介绍在对spi nand flash进行读写老化,因此在用户态通过rwcheck工具对flash进行读写老化,在读写老化过程中,高概率出现内核oom现象,具体板级信息说明如下:内存大小:128MCPU:双核A7#2. log分析在读写测试时,oom log如下所示:remove : /mnt/UDISK/rwcheck.tmp.36 ...

2021-05-15 23:56:00 2821 2

原创 kmalloc最大能申请多少内存?

1. 概述本文主要分析kmalloc接口申请内存的大小情况,用于记录kmalloc分配内存的过程。内核版本:Linux 4.92.分析记录针对kmalloc最大能申请多少内存,网上众说纷纭,意见各不相同,因此最终决定自己针对源码分析,记录如下:首先看kmalloc()函数实现,在include/linux/slab.h中,代码如下:#ifdef CONFIG_SLAB/* * The largest kmalloc size supported by the SLAB allocators

2021-03-02 23:50:43 3911 1

原创 ION内存管理器介绍

ION与CMA学习1. ION介绍ION是google在Android4.0为了解决内存碎片化管理而引入的通用内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc),虚拟地址连续但物理地址不连续内存(vmalloc),IOMMU等。2. ION框架[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0CxQF3tE-1609049784161)(./figures/framework.png)]名词解释:ion clien

2020-12-27 14:55:31 5709

原创 dts展开为platform_device结构过程分析

dts节点展开为platform_device结构过程分析1.概述本文主要是记录学习Linux解析dts的代码分析,以便进行后续回顾。平台:ARM Vexpress内核版本:linux-4.92.dts节点展开为platform_device结构过程分析自从ARM引入的dts之后,bsp驱动代码产生了非常之大的变化,像在linux-2.6.32这些版本的platform驱动中,会存在大...

2020-04-21 23:46:17 1864

原创 linux内核current宏介绍

1.概述本文主要介绍linux current宏在arm和arm64上的实现内核版本:Linux 5.32.current在arm和arm64上的实现在linux 内核中,有一个current宏,通过该宏,可以获取当前进程的task_struct数据结构。在arm上,就是利用了内核栈特性来实现的,记录如下:首先,如果没有在arch/xxx/include/asm/目录下没有定义该宏,则该...

2020-03-14 15:13:45 5411 3

原创 struct page的flags成员和常用函数说明

1.概述本文主要解析struct page的flags成员中相关bit的含义以及其重要的标志位说明,简单说明一下Linux内核常见的PageXXX()/SetPageXXX()/ClearPageXXX()函数的作用和实现。内核版本:linux-4.92.struct page结构struct page { /* 第一个双字大小的区块 */ unsigned long flags; ...

2020-02-22 15:44:39 2292

原创 ftrace使用介绍

ftrace使用介绍1.介绍Ftrace是一个专门针对linux kernel内核空间的debug工具,用于帮助开发者在用户空间对内核低延时,内核性能等方面的分析。尽管ftrace最开始设计时主要是为了追踪函数的调用栈,但随着功能的增强,已经演变成一个跟踪框架,支持多种跟踪器,如function、function_graph、wakeup、irq等。另外一个很常用的功能就是事件跟踪,在用户空...

2019-03-20 00:09:04 2876 2

原创 Makefile 利用-MM和sed自动推导依赖关系

在源码中,我们通常都会包含一系列的头文件,当我们通过Makefile来组织这些源文件参加编译时,需要把相应的头文件也要加到Makefile的依赖当中。如在layerControl_wenston.c中包含#include &lt;cdx_log.h&gt;,那么我们就应该存在以下依赖关系:layerControl_wenston.o:layerControl_wenston.c cdx_log....

2018-11-15 23:19:02 926

原创 Linux sysfs学习

1.概述介绍sysfs文件系统,学习如何创建sysfs结点,学习linux设备模型2.简介Sysfs文件系统时linux众多文件系统中的一个,在linux中,每一个文件系统都有其特殊用途,如ext2用于快速读写存储文件;ext3用于记录日志等。Linux设备驱动模型由大量的数据结构和算法组成。这些数据结构之间关系非常复杂,多个数据结构之间通过指针相互关联,构成树状或网状关系。显示这种关系的...

2018-10-13 01:21:17 1065

原创 ARM多核启动分析

ARM多核启动分析#1.概述本文主要是记录学习Linux的多核启动的过程,对学习过程进行总结,以便进行后续回顾。平台:ARM Vexpress内核版本:linux-4.9#2.smp_operations初始化系统启动过程中,Linux kernel提供了smp boot实现的框架,要实现smp boot,先要填充好smp_operations这个结构体,smp_operations结...

2018-09-29 21:20:16 3556

原创 VMware下基于RHEL_6.0虚拟机的samba服务器安装

1.linux2.samba3.服务器

2016-12-07 14:52:07 630

Linux perf user guide

Linux perf user guide

2023-02-22

DDI0487F_a_armv8_arm.pdf

ARM® Architecture Reference Manual ARMv8, for ARMv8-A architecture profile

2020-03-31

空空如也

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

TA关注的人

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