自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分析arm Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP

内核触发panic,出现Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP96000010 实际上是esr寄存器得值在armv8 中不同得el层 有各自得得esr寄存器,内核处于el1层,看esr_el1寄存器得值查看arm v8 手册96000010 对应得含义arm 官方已经告诉...

2020-07-04 14:16:52 7336 1

原创 通过ramdump 分析匿名页导致的TASK_UNINTERRUPTIBLE

在分配内存时长时间处于不可打断得状态,通过crash 工具解析ramdump 查找block 得原因crash> ps -u |grep UN 10457 1 7 ffffffea80bb2f40 UN 6.2 8856372 646112 [email protected] 10515 673 5 ffffffeb71240000 UN 1.4 2069416 146256 azeroth-api-thrprovider 是当前正在使用得任.

2020-06-30 11:51:07 1278

原创 以高通camera 申请ion内存看dma-buf

1 fd 与ion buffer, file绑定 简单总结就是申请一个buffer,再创建一个dmabuf 结构体然后将,然后将dmabuf中得指针指向buffer,dmabuf 再传递给一个匿名的inode,获取到一个file,这样file和dmabuf绑定起来,也就和buffer关联上。然后再从进程中分配一个空闲的fd,将fd 和file囊绑定。这样就能通过fd 快速查找到buffer。file 是个全系统的,他和进程无关,但是fd 是每个进程都是自己独立的,所以再跨进程传输时只需要保证fd ...

2020-06-26 17:57:27 4766

原创 匿名页反向映射得建立

参考链接: https://www.cnblogs.com/tolimit/p/5398552.htmlhttp://www.wowotech.net/memory_management/reverse_mapping.html链接1.匿名页创建建立匿名线性区有两种情况,一种是通过mmap建立私有匿名线性区,另一种是fork时子进程克隆了父进程的匿名线性区,这两种方式有所区别,首先mmap建立私有匿名线性区时,应用层调用mmap时传入的参数fd必须为-1,即不指定映射的文件,参数flags必须有

2020-06-21 22:21:45 398

原创 qcom camera smmu 学习(3)

iommu_dma_alloc_iova 已经成功获取到了虚拟地址,iommu_map_sg 将把虚拟地址和物理散列表中的物理地址进行映射。 iommu_map_sg 在4.19 以后的内核这个接口已经删除了 size_t iommu_map_sg(struct iommu_domain *domain, unsigned long iova, struct scatterlist *sg, unsigned in...

2020-05-30 23:22:32 1028

原创 qcom camera smmu 学习(2)

上一篇中提到了cam_smmu_alloc_iova 通过从已经构建好的内存池中获取虚拟地址然后调用iommu_map_sg 去建立映射关系。 dma_buf_map_attachment 建立映射关系时也需要获取虚拟地址。虚拟地址的其实地址,大小也是在设备树中设置好的,需要一个地方从设备树中读取然后保存起来,在使用的时候从其中去分配。1.获取虚拟地址初始化的流程: of_dma_configure->arch_setup_dma_ops→arm_iommu_setup_dma_ops→

2020-05-30 23:19:38 1559

原创 android native c++ 打印调用栈

编译文件中加入:LOCAL_SHARED_LIBRARIES += libutilscallstack源代码中加入:#include <utils/CallStack.h>android::CallStack cs("test");

2020-05-30 23:02:31 528

原创 qcom camera smmu学习(1)

camera 有很多isp 中包含了ife ipe bps 等需要使用smmu 1.分配内存并映射到smmu(1)分配内存 分配内存在内核中使用的函数是 cam_mem_mgr_alloc_and_map,主要是通过dma_buf 分配一个内存并且将获得fd 映射到smmu。分配内存使用cam_mem_util_get_dma_buf_fd 分配,主要调用一下三个函数: ion_alloc ,dma_buf_fd,dma_buf_get 第一个函数是ion 分配, 后面...

2020-05-30 22:42:20 3139 1

原创 linux 读写信号量学习

文章从《奔跑吧linux内核》中参考加上自己的理解linux 读写信号量, 奔跑吧linux 内核的作者使用 十进制来解释 count 数值的变化,发现这样非常好理解。rw_semaphore 我之前一直没有从代码理解如何实现的。只知道理论上是可以多个读者去读,如果有写者就不能去读。最近看这块代码代码实现上是在等待队列中如果有写者,把写者之前的读者唤醒,写者还是在等待队列中。如果等待队列中...

2019-12-31 21:48:04 1463

原创 android 看门狗引起crash分析

文章参考:https://blog.csdn.net/juS3Ve/article/details/79428049在进入橙屏ramdump 后在高通平台高通有专门的脚本配合crash 工具去解析dump 出来的bin 文件。 在解析bin 文件之前必须先转被好vmlinux 文件,也就是内核的符号表。解析完成后会在out 文件夹里生成一些信息。这些信息会在一个html 网页中被统计进来。...

2019-12-27 17:44:57 1457

原创 android bionic memcpy 汇编源码解析

代码位置bionic/memcpy_base.S宏定义:#define dstin x0#define src x1#define count x2#define dst x3#define srcend x4#define dstend x5#define A_l x6#define A_lw w6#define A_h x7#define A_hw w7#de...

2019-12-24 16:23:33 1030

原创 arm smmu 学习(1)

文章linux 4.14 代码分析smmu 流程linux 在驱动找到对应的设备后会执行driver_probe_device 函数,具体dev和drv 匹配参考文章链接driver_probe_device->really_probe->dma_configure->of_dma_configureint of_dma_configure(struct devic...

2019-12-19 14:28:31 4361

原创 sylixos pci

1.pci基地址获取pci的基地址在x86平台是通过acpi获得的,acpi全称是(Advanced Configuration and Power Management Interface)高级配置和电源管理接口,在ACPI规范文档3.0中 https://download.csdn.net/download/smartzhen2003/981664可以看到如下图可以看到...

2019-12-14 15:51:50 507

转载 高通gpu信息获取

查看高通的gpu 和cpu的实时状态,高通的Snapdragon Profiler 工具是个不错的选择,可以实时查看相关的信息。也可以通过命令查看。在/sys/class/kgsl/kgsl-3d0 目录下可以看到高通gpu的信息里面的信息太多,很多节也不知道代表啥意思,在power文件下如下:autosuspend_delay_ms runtime_active_time run...

2019-09-13 23:00:13 4738 1

原创 android ion --system heap(个人理解,不确定完全对)

android 在linux 4.12 内核对ion驱动的api 进行了修改,原来的一部分ioctl命令已经不存在了。谷歌的ion 我个人觉的还是挺大的,system heap 内存分配的方式,其他的还有使用cma 分配等,不同的分配方式会调用linux不同的接口。这篇文章值只写下自己对system heap 的个人理解。ion相关代码在内核kernel\msm-4.14\drivers\st...

2019-08-11 21:59:11 4950 2

原创 android opengl 图像同步fence创建

链接:链接

2019-07-21 17:06:54 390

原创 android camera 拍照流程图

原图下载链接:链接 ,包含了svg格式的图,放大后不会看不清楚。图是通过puml软件画的拍照时序图:拍照返回时序图

2019-07-21 12:15:39 1357

原创 高通camx clock配置

在内核msm-4.14/arch/arm64/boot/dts/qcom存放这高通的内核设备树的配置文件。其中其中 *--camera.dtsi为camera 相关的配置。如下图:sdmmagpie-camera.dtsi 是sm7150,以此文件为例首先查看jpeg 相关设置这里可以看到高通的clock 配置分等级的 jpeg只设置了一个等级说明不会降低频率。 cloc...

2019-06-30 22:38:30 1785 2

原创 SylixOS 任务调度源代码分析

在SylixOS 中退出中断和内核都会系统调度任务,任务调度底层切换上下文,底层实现参考链接在SyliOS默认优先级是0-255,数值越小优先级越高。在SylixOS 任务就绪队列是通过位图的方式去查找,如果当前优先级有任务则对应的位图位就会变成1。在查找到最后优先级后,从对应链表中取出任务控制块tcb,对比是否比当前任务优先级高,决定是否切换任务。在arm中支持硬件实现前导零计数,所以能...

2019-04-18 22:31:43 855

转载 图解slub

在蜗窝科技上看到的讲的非常好,图文并茂:链接:图解slub

2019-04-13 23:59:31 570

转载 Cache基本原理之:结构

原文章链接地址:链接Cache entries数据在主存和缓存之间以固定大小的”块(block)”为单位传递,也就是每次从main memory读取的最小数据的单元。每个块的大小可能是4,8,16 Bytes或其他值,不同的CPU不尽相同,目前的x86 CPU cache line基本都是64 bytes。通常,人们更习惯称之为cache行,或者cache line。根据前一篇文章的描述,...

2019-04-11 10:31:57 1445

原创 SylixOS armv8 任务切换

SylixOS 在进入中断退出,进入内核退出时会进行任务切换。分为两种情况讨论:1.中断退出时任务切换在SylixOS 中无论是同步异常还是异步异常都会首先将系统寄存器保存到系统异常栈中,然后获取当前任务的tcb控制块,最后将保存到异常堆栈中的系统上下文寄存器保存到任务控制tcb中。在SylixOS 中EXC_SAVE_VOLATILE是定义成了一个宏,所以不会进入函数,LR被改变的问题(...

2019-04-11 10:22:12 496

转载 以太网PHY寄存器分析

链接地址:以太网PHY寄存器分析

2019-04-10 11:28:32 1106

原创 SylixOS armv8 原子操作

在SylixOS 中 armv8 原子操作分为32位和64位。首先介绍32位#define ATOMIC_OP_RETURN(op, c_op, asm_op) \static LW_INLINE INT archAtomic##op (INT i, atomic_t *v) \{...

2019-04-10 10:19:49 1015

转载 SylixOS 网络文件系统 nfs 的使用

SylixOS 支持网络文件系统 nfs,在开发阶段,当工程文件相当多并修改频繁时,使用 nfs 可以免去频繁下载这些工程文件的麻烦,从而提高开发效率,下面介绍 nfs 的使用方法。确保 SylixOS 编译了 nfs 组件默认情况 SylixOS 开启了 nfs 的支持,但 nfs 可以裁减,查看 sylixos-base/libsylixos/config/fs/fs_cfg.h 文件...

2019-04-08 15:04:47 536 1

转载 gcc中设置特定代码块的优化级别

今天碰到一个gcc优化相关的问题,为了让一个页变成脏页(页表中dirty位被置上),需要执行下面这段代码:1 uint32_t *page; 2 // ... 3 page[0] = page[0]; 最后一行代码很有可能被gcc优化掉,因为这段代码看起来没有任何实际的作用。那么如何防止gcc对这段代码做优化呢?设置gcc编译时优化级别为-O0肯定是不合适的,...

2019-04-03 10:08:49 1418

原创 SylixOS arm64 自旋锁

SylixOS 下自旋锁结构体,使用union , SLD_uiLock 和 SLD_usSvcNow, SLDQ_usTicket共用空间SLD_uiLock 代表了 是否上锁, SLD_usTicket 是当前自己编号,每次加锁后这个值会加1.依次递增。 SLDQ_usSvcNow 代表了目前正在锁的编号。 加入此时有四个加锁 SCL_usTicket 每次加锁都会递增加1。SLD...

2019-04-02 14:55:23 445

原创 SylixOS 缺页异常

在arm64 中mmu访问错误会触发同步异常在同步异常向量表中填入同步异常处理函数,同步异常函数会调用系统的archSyncExcHandle函数,可以看到此函数的第一个参数x0 是当前当前任务的TCB。x1 是ESR_EL1 的值,根据armv8手册此寄存器包含了一些异常的信息。,特别是此寄存器中的EC 包含了同步错误的类型根据不同类型的错误,采取不同的处理措施。/...

2019-04-01 16:40:41 496

原创 SylixOS 内存管理源代码分析--vmmMalloc.c

vmmMalloc.c文件内容是内核对外提供API函数,前面文章分析的各种函数都是最后汇集到这里,对外提供系统功能。API_VmmMallocAlign此函数是分配一个对齐的物理页面和虚拟页面并将其映射。/******************************************************************************************...

2019-03-18 20:16:37 563

原创 SylixOS 内存管理-通过地址反查页面控制块-vmmArea.c

在vmm文件夹中的vmmArea.c文件是实现页表控制块反查功能。通过给定的地址(虚拟或者物理)可以查找到对应页面控制块LW_VMM_PAGE。 系统是通过哈希红黑树来实现这个功能的。首先在zone包含了一个哈希表。通过哈希索引值找到对应的红黑树根。也zone页面管理类似,页面关系是通过哈希表插到对应的链表头。有几个比较重要的结构体。LW_VMM_AREA 是一个非常重要的结构,它包含了一个哈希表...

2019-03-18 14:55:03 284

原创 SylixOS 内存管理源代码分析--phyPage.c

phyPage.c是对物理页面管理相关的内容。在SylixOS中虚拟页面和物理页面都是使用相同的数据结构管理,下文使用vmpage代表这个结构体,如下图在物理页面中不管存在zone数组,还有一个内核内存信息的数组,用来保存代码段和数据段的大小。/**********************************************************************...

2019-03-18 01:11:06 407

原创 SylixOS 内存管理源代码分析--pageTable.c

此文件内函数基本和映射相关。会调用mmu操作集函数,操作集函数参考https://blog.csdn.net/qq_28637193/article/details/88546354,因为不同体系结构mmu操作函数集不同,这里是以arm64为例__vmmLibVirtualToPhysical此函数来查找虚拟地址映射的物理地址。/***************************...

2019-03-17 21:48:58 440

原创 SylixOS 内存管理源代码分析--pageLib.c

SylixOS 系统中内存相关的代码放在SylixOS/kernel/vmm文件夹中,pagelib.c 主要是实现了页面的分配和回收。页面分配是以页面控制块进行管理的,配合哈希表。以下先是对每个文件的源代码分析,然后最后分析调用关系。首先看下载SylixOS 内存管理常用的结构体pageLib.c 文件是管理页分配,相关的。LW_VMM_ZONE 是区域zone 的结构体...

2019-03-17 19:58:12 604

原创 SylixOS 启动时mmu 初始化

armv8 mmu 操作函数集已经介绍了操作函数集。SylixOS在启动时会调用__vmmLibPrimaryInit函数进行页表的初始化。/*********************************************************************************************************** 函数名称: __vmmLibPri...

2019-03-15 12:53:27 496

原创 SylixOS armv8 mmu

armv8 mmu 支持4K,16K,64K分页,在SylixOS目前实现了4K和6K分页。根据查看代码SylixOS目前使用的是Non-secure EL1、stage 1 translation、VA和PA的地址宽度都是48个bit。所以分析代码不包含arm提供的其他功能。代码位于SylixOS/arch/arm64/mm/mmu 文件夹。在SylixOS封装了mmu操作函数集,这...

2019-03-14 23:07:57 1222

原创 uboot 使用fdt命令查看设备树

首先驱动设备树的地址,如果使用tftp下载,可以在tftp下载时指定地址。如果是存在nand flash可以将设备树读到指定内存位置。fdt addr 0xc00000fdt addr 命令指令地址, 0xc00000是我的设备树在内存中的地址。使用fdt header 命令可以查看设备树的头部信息。使用fdt print 命令可以查看全部的设备树信息。如果在fdt...

2019-03-13 10:39:01 9372

原创 SylixOS arm64 异常向量表

在VBAR_ELx寄存器中存放着异常向量基地址;/*********************************************************************************************************; 关中断并设置异常向量表;**************************************************...

2019-03-12 01:04:35 402

原创 allwinner h6 armv8 SylixOS 启动分析

在SylixOS为了让代码统一,针对不同的体系结构汇编文件差别,声明了统一的宏。如下是arm64 在内核的头文件中声明:#define EXPORT_LABEL(label) .global label#define IMPORT_LABEL(label) .extern label#define FUNC_LABEL(func) func:...

2019-03-10 21:44:38 1893

原创 SylixOS allwinner h6 链接脚本

/********************************************************************************************************* 包含配置文件*********************************************************************************...

2019-03-08 15:06:31 567

原创 编译nanopi neo 或者M1 uboot 启动SylixOS系统

在全志网站查到2017年3月 uboot 加入了对nanopi 网络支持,所以要2017年3月后的uboot才能通过网络启动SylixOS系统。下载源码uboot git 仓库 :http://git.denx.de/sunix MainLine uboot :http://linux-sunxi.org/Mainline_U-Bootnanopi allwinner 提供相关链接...

2019-03-08 10:51:54 727

android camera 拍照流程图

Android camera拍照流程图,里面分为三个文件文件夹,第一个是创建buffer同步 fence,第二个是拍照流程,第三个是拍照返回.

2019-07-21

armv8 体系结构手_a53手册_arm_boot_code_armasm_user_guide

DUI0801C_armasm_user_guide.pdf 是armasm 汇编官方用户指导手册, DDI0487D_a_armv8_arm.pdf 是armv8A 体系结构手册,DDI0500J_cortex_a53_trm.pdf 是A53 核手册。DAI0527A_baremetal_boot_code_for_ARMv8_A_processors.pdf 是官方armv8-a启动代码。如果想知道如何启动一个系统可以参考:https://blog.csdn.net/qq_28637193/article/details/88351892

2019-04-10

SylixOS IO接口open函数到设备分析

SylixOS IO接口open函数到设备分析。设备是从根文件系统查找

2018-12-25

SylixOS can驱动框架分析

SylixOS can驱动框架分分析。

2018-12-24

SylixOS操作系统Makefile解析

sylixos 操纵系统 makefile 内容自己分析。内容不全。

2018-12-24

青软实训嵌入式通产智能机器人源码

在青软实训实训通产智能的送餐机器写的控制机器人的,使用了ros框架,代码写的很烂,有的在网上抄的注释不全,希望以后实训时候能参考

2017-10-01

linux知识点--思维导图文件(xmind原件)

linux 编程的知识点,进程,管道,网络等等

2017-06-09

python基础教程第二版修订版(高清)

分为两个压缩包,第二个http://download.csdn.net/detail/qq_28637193/9861695

2017-06-06

python基础教程第二版修订版(有书签,压缩包第二部分)

python基础教程第二版修订版,压缩包第二部分,可以直接百度云下载链接:http://pan.baidu.com/s/1mhGXiqO 密码:pjsj

2017-06-05

python基础教程第二版修订版(有书签)

python 基础教程第二版修订版,是修订版。高清,有书签,由于太大分为两次上传,把两个压缩包一起解压

2017-06-05

基于tinymini210实现远程温度监控系统

qt写的开发板服务器端实现读取AD值,使用代码要交叉编译才能到开发板运行,开发板系统是linux,注意开发板是tinymini210 ,安卓写的客户端和C#写的电脑客户端实现接受数据和绘制图,并控制led灯

2016-12-19

Opengl ES3..x游戏开发(上卷)源码2

和1 合起来就是全部的代码

2016-11-29

Opengl ES3..x游戏开发(上卷)源码1

Opengl Es3.x游戏开发上卷源码 这是一部分因为上传限制

2016-11-29

Android用opengl es3.0写的地月星系

参考opengl es3.0游戏开发一书绘制了地球和月球 使用矩阵移动旋转和纹理等开发环境是Android studio2.1.3

2016-11-15

Android上opengl es3.0实现一个旋转的三角形(Android studio2.1.3)

在Android用opengl es3.0写的,由于模拟器不支持opengl es3.0 所以调试时用真机

2016-11-13

ok6410开发板写的密码锁

用qt写的,里面包含qt源码和驱动的源码 实现一个密码锁然后把数据发给服务器同时可以接受服务器的命令开锁或者上锁

2016-09-29

glew,glfw实现opengl代码

里面包含画一个三角形,着色器,纹理,摄像机,键盘控制移动,鼠标控制移动,光照等等,在shader文件夹中的read告诉着色器和那个cpp,和头文件一起使用

2016-09-11

用glew,glfw实现最新的opengl3.3绘制三角代码

里面的main.cpp文件实现的是创建一个窗口,triangle.cpp文件时用索引时挥着的是一个四方形,不用索引画图是个三角形。用的是glew和glfw,所以使用之前你需要配置下环境,在vs的项目属性中添加文件里的include到头文件,lib到库的连接。或者百度glew和glfw的配置

2016-09-01

qt实现的一个简单的计算器

实现了一个单位转换和普通加减乘除的一个计算器

2016-09-01

qt写的简单的tcp服务器程序代码windows运行

qt写的一个tcp服务端程序代码

2016-08-29

qt写的tcp客户端程序实现简单的接受发送数据

用qt写的一个简单的tcp客户端

2016-08-29

opngl使用的glew头的文件和库

opengl需要使用的glew的头文件和库,这是windows版本

2016-08-29

opengl使用的glfw的库和头文件

opengl之前大多使用glu,对配置glfw需要对应的库,这是从官网下载windos版本32位的(64位系统我使用可以)这里是包含了头文件和库,里面包含vs2010,vs2012,2013,2015使用的。

2016-08-29

qml写的Android摄像头程序

用qt qml 写的安卓摄像头程序,可以调用前后摄像头,同时加入了开机启动画面和图标

2016-08-23

铁轨(桟)

从A车站到B车站,通过C车站中转,检测是否能否按照顺序输出到B,利用了数据结构的桟知识

2015-12-23

空空如也

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

TA关注的人

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