- 博客(54)
- 资源 (18)
- 收藏
- 关注
原创 Linux内核开发一些系统函数的说明整理
高12位为主设备号,低20位为次设备号,从一个inode中获取主次设备号的函数:unsigned int iminor(struct inode *inode)unsigned int imajor(struct inode *inode)sysfs下的sys目录:bus目录包含系统中所有的总线类型,class目录包含系统中的设备类型(如网卡设备,声卡设备,输入设备等)。设备号:d
2016-10-30 14:34:32 683
转载 Linux内存uncache区域拷贝优化
转自:Linux内存uncache区域拷贝优化https://blog.csdn.net/u011037593/article/details/1150242751.概述内存非cache区域拷贝速度很慢,严重影响了系统性能,因此采用多种方法进行优化,主要有对齐拷贝、批量拷贝、减少循环次数、NEON拷贝方法。2.高级SIMD和浮点寄存器介绍2.NEON指令2.1 VLDRVLDR指令可从内存中将数据加载到扩展寄存器中。VLDR{<c>}{<q>}{.6
2021-10-12 09:33:00 889
转载 Linux设备文件三大结构:inode,file,file_operations
转自:https://www.cnblogs.com/xiaojiang1025/p/6363626.html驱动程序就是向下控制硬件,向上提供接口,这里的向上提供的接口最终对应到应用层有三种方式:设备文件,/proc,/sys,其中最常用的就是使用设备文件,而Linux设备中用的最多的就是字符设备,本文就以字符设备为例来分析创建并打开一个字符设备的文件内部机制。struct inodeLinux中一切皆文件,当我们在Linux中创建一个文件时,就会在相应的文件系统创建一个inode与之对应,文
2021-07-27 18:08:19 698
转载 [差量更新系列2]Xdelta3原理学习笔记
转自:[差量更新系列2]Xdelta3原理学习笔记Xdelta3是一种优秀的、被广泛使用的差量更新算法,它在操作上既有对新文件(targetfile)和旧文件(sourcefile)的差分(differencing)又有对产生的patch包进行压缩(compression),我们将产生patch包的过程统称为加密(encoding),而将合成新文件的过程统称为解密(decoding)。Xdelta3和经典的压缩算法LZ’77一样,也是将source file划分成一个个不相交而又连续的window,然后
2021-04-29 15:06:58 772
转载 进程间通信
转自:https://www.sohu.com/a/412809361_298038进程间通信每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些?03管道如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。$ ps auxf |grepmysql上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出.
2021-03-03 09:36:11 140
转载 ARM SMMU学习笔记
转自:https://blog.csdn.net/yhb1047818384/article/details/1033293241. 什么是SMMU?SMMU(system mmu),是I/O device与总线之间的地址转换桥。它在系统的位置如下图:它与mmu的功能类似,可以实现地址转换,内存属性转换,权限检查等功能。2. 为什么需要SMMU?了解SMMU出现的背景,需要知道系统中的两个概念: DMA和虚拟化。DMA:((Direct Memory Access),直接内存存取, 是一
2020-09-02 16:41:42 406
原创 常用makefile的一些模板
模板一:源文件,.h个在一个文件夹下生成可执行文件:DIR_INC = ./includeDIR_SRC = ./srcDIR_OBJ = ./objDIR_BIN = ./libDIR_PUB = ./pubDLIBS = -O2 -WallSRC = $(wildcard ${DIR_SRC}/*.c) OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC})) TARGET = xxxBIN_TARGET = ${DIR
2020-08-29 15:44:20 112
原创 arm/arm64 linux memcpy优化函数
在uncache区域memcpy时通常很慢,下面是一些优化:arm下的memcpy实现:void my_memcpy(volatile void char *dst, volatile unsigned void *src, int sz){ if (sz & 63) { sz = (sz & -64) + 64; } asm volatile ( "NEONCopyPLD:
2020-06-20 15:44:37 3700 3
原创 petalinux常用命令整理
#source settings.sh#source components/yocto/source/aarch64/environment-setup-aarch64-xilinx-linux#source components/yocto/source/aarch64/layers/core/oe-init-build-env#export PATH=/home/work/pet...
2019-12-08 11:01:15 2486
转载 基于at91sam9x5ek嵌入式系统的内核和文件系统双备份实现
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jackyzjk/article/details/50363740前言:前阵子公司使用的基于at91sam9x5ek的板子出现了好几块系统无法启动的问题,用串口打印显示要不就是文件系统损坏,要不就是内核损坏了,排除了人为误操作的原因几乎就...
2019-12-05 13:29:27 876
转载 linux内核启动过程分析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/linuxweiyh/article/details/83382154Makefile分析kernel的Makefile写法和规则与uboot的Makefile是一样的,甚至Makefile中的很多内容都是一样的。kernel的Ma...
2019-12-05 13:20:56 197
原创 用户空间与内核空间数据交换的方式(1)------debugfs
转自:https://www.cnblogs.com/hoys/archive/2011/04/10/2011124.html内核开发者经常需要向用户空间应用输出一些调试信息,在稳定的系统中可能根本不需要这些调试信息,但是在开发过程中,为了搞清楚内核的行为,调试信息非常必要,printk可能是用的最多的,但它并不是最好的,调试信息只是在开发中用于调试,而printk将一直输出,因此开发完毕后需...
2018-10-26 14:13:03 202
转载 嵌入式设备使用GDB及coredump文件查找崩溃问题
转自:https://blog.csdn.net/anychenp/article/details/79636556?utm_source=blogxgwz0背景:1.运行目标为MIPS机器,FLASH及RAM资源都非常紧张,无法运行带调试信息的程序2.程序有一定概率崩溃,从表现上难以分析目标:直接定位到崩溃目标代码说明:1、2在运行环境中操作,3、4在编译环境中操作...
2018-10-26 10:39:35 3084
原创 交叉编译liquid-dsp
一. 修改config.h文件的内容 config.h 里重新把malloc定义为rpl_malloc,realloc定义为rpl_realloc。这两个函数在系统里面都没有,导致后面编出来的库会找不到这两个函数运行的时候就出错了。但是malloc和realloc在标准库里有,就需要手动修改好了。 把HAVE_MALLOC和HAVE_REALLOC都改为1, 把定义去掉。二. 交叉编...
2018-08-08 09:13:30 989
转载 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
问题描述:用VS2013写好一个程序,在本机上运行一切正常。但是如果直接把exe文件放到另一台机器上用,则会出现:Windows XP:不是一个正常的win32程序Window 7:缺少msvcp120.dll能否有一种方法,把程序运行所需要的环境一并打包,使之可以在任何Windows计算机上使用? 为了方便说明,我们新建一个简单的控制台应用项目,直接如图: 非常简单,一个使用了C++标准库的控...
2018-03-28 17:14:20 326
转载 linux软中断机制分析
转自:点击打开链接软中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。http://alloysystem.blog.chinaunix.netAndy.yx.deng#gmail.com(#->@)1. 为什么要软中断编写驱动的时候,一个中断产生之后,内核在...
2018-03-22 16:56:50 527
转载 ARM体系结构(二)
转自:点击打开链接RM体系结构第二篇,主要理解CPU的内存接口,ARM启动过程。内存映射S5PV210属于Cortex-A8架构,有32位地址线和32位数据线,所以CPU的地址空间为4G,但是由于使用了统一编址,外设占用了一部分地址空间,实际供内存使用的地址空间将小于4G,那么对于这个4G的地址空间的分配,就是内存映射,或者说叫地址映射,下图是S5PV210的内存映射分布图,来自于用户手册: 内存...
2018-03-22 15:08:39 346
转载 ARM体系结构(一)
转自:点击打开链接ARM体系结构第一篇,主要是一些概念性的东西,需要仔细理解。可编程器的编程特点和原理 在固定频率的时钟控制下有节奏的运行可以通过总线获取外部存储中的二进制指令,从而解码执行这些二进制指令是CPU设计的时候决定的,由CPU的设计者定义,这就是CPU汇编指令集CPU的指令集 指令集就是ARM汇编指令集汇编语言相对C等高级语言比较复杂,且移植性差,不适合较大型的项目,但是汇编语言效率高...
2018-03-22 15:07:11 202
转载 Linux DMA Engine framework(3)_dma controller驱动
1. 前言本文将从provider的角度,介绍怎样在linux kernel dmaengine的框架下,编写dma controller驱动。2. dma controller驱动的软件框架设备驱动的本质是描述并抽象硬件,然后为consumer提供操作硬件的友好接口。dma controller驱动也不例外,它要做的事情无外乎是:1)抽象并控制DMA控制器。2)管理DMA channel(可以是...
2018-03-15 17:04:32 1098
转载 Linux设备驱动子系统第二弹 - SD卡
转自:Linux设备驱动子系统第二弹 - SD卡1. 总论2. 主控制器3. 协议层4. 块设备1. 总论 1.1 概念MMC - MultiMedia CardSD - Secure Digital Card1.2 分类按存储大小,普通SD卡(2GB,按体积大小,普通SD卡,mini-SD卡,micro-SD卡(TF卡)1.3 速度
2017-12-14 14:01:57 439
转载 BootLoader启动过程分析
一、 Boot Loader的概念和功能1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方式
2017-12-07 16:29:57 307
转载 ubuntu 16.04软件中心升级软件异常导致无桌面
转自:百度经验新安装的Ubuntu 16.04,登录系统一切正常。然后根据提示打开软件中心升级软件,然后软件中心没有任何提示,也不知道升级成功与否。重启系统之后,桌面消失,一片空白,也无法进行操作。本文特对此问题给出解决方案。工具/原料 ubuntu 16.04 LTS 桌面版 virtualbox 虚拟机 方法/步骤 1. 出现问题之前 安装好系统之后,成功启动系统,根据软件中心
2017-12-06 17:39:22 570
转载 V4L2源代码之旅十:videobuf主要结构体
转自:http://www.cnblogs.com/ronnydm/p/5815977.html1. vb2_mem_ops/** * struct vb2_mem_ops - memory handling/memory allocator operations * @alloc: allocate video memory and, optionally, a
2017-11-16 16:47:17 964
转载 V4L2源代码之旅九:videobuf
转自:http://www.cnblogs.com/ronnydm/p/5796928.html 关于videobuf,即V4L2如何实现高性能的和用户空间的Buffer交互,这部分内容应该是V4L2中最难以理解的部分了。 看文档:kernel/Documentation/video4linux/videobuf. videobuf的功能是V4L2 driver和u
2017-11-16 16:46:16 896
转载 V4L2源代码之旅八:ioctl
转自:http://www.cnblogs.com/ronnydm/p/5796821.html我们从代码的角度看看,如何调用到我们设定的ioctl。1. 我们在驱动程序中,分配了结构体struct video_device,并做了设定,然后调用video_register_device进行注册。在video_device的设置中,存在ioctl的设置。/* kerne
2017-11-10 11:19:47 973
转载 V4L2源代码之旅七:controls
转自:http://www.cnblogs.com/ronnydm/p/5787182.html通过上两篇文章,我们已经成功的建立了/dev/video0这个字符设备,此时,在UserSpace就可以打开该设备,完成相应的调用。 总结如何使用V4L2架构建立我们自己的设备驱动,其实就是以下3个结构体的设置及注册: 1. struct v4l2_device
2017-11-10 11:18:27 1091 1
转载 V4L2源代码之旅六:源码追踪
转自:http://www.cnblogs.com/ronnydm/p/5785265.html1. v4l2_device_register/* kernel/drivers/media/video/v4l2-device.c */int v4l2_device_register(struct device *dev, struct v4l2_device *v4l2_de
2017-11-10 11:16:38 1886
转载 V4L2源代码之旅五:V4L2的起点和终点
转自:http://www.cnblogs.com/ronnydm/p/5768899.html一. 思路 不管V4L2如何封装,始终是一个Driver,那么Driver必然会提供对User空间的file_operations,所以file_operations是线索起点。 终点就是V4L2可以正确调用到我们注册的关于Sensor和ISP的操作接口.二. 起
2017-11-10 11:16:21 1014
转载 V4L2源代码之旅四:struct video_device
转自:http://www.cnblogs.com/ronnydm/p/5781042.html在/dev下被创建的真正的设备节点是使用video_device结构体(v4l2-dev.h)。这个结构体同时也可以动态分配或嵌入到一个更大的结构体。动态分配: struct video_device *vdev = video_device_alloc();
2017-11-10 11:13:29 2409
转载 V4L2源代码之旅三:I2C sub-device drivers
转载:http://www.cnblogs.com/ronnydm/p/5780042.htmlv4l2-common.h 对一个I2C驱动添加v4l2_subdev支持的建议方式是将v4l2_subdev嵌入到每一个I2C设备实例的state struct。如果设备非常简单,可以直接创建v4l2_subdev。典型的state struct类似如下:stru
2017-11-10 11:12:11 884
转载 V4L2源代码之旅二:V4L2 sub-device userspace API
转自:http://www.cnblogs.com/ronnydm/p/5779584.html 除了通过v4l2_subdev_ops结构体暴露kernel API,V4L2 sub-devices也可以被用户空间应用直接控制。 v4l-subdevX的设备节点可以在/dev下被创建来直接访问sub-devices。如果一个sub-device支持用户空间直接配置,
2017-11-10 11:09:31 1504
转载 V4L2源代码之旅一:struct v4l2_device
转自:http://www.cnblogs.com/ronnydm/p/5771221.html一. 文档位置:linux-3.08/Documentation/video4linux/v4l2-framework.txt二.翻译总结: V4L2驱动程序往往是很复杂的,其原因是硬件的复杂性:大多数设备有多个IC,从而导出多个设备节点/dev,并且创建了non-V4L2设备
2017-11-10 11:08:01 1233
转载 V4L2源代码之旅一:struct v4l2_subdev
转自:http://www.cnblogs.com/ronnydm/p/5774263.html大多数的驱动程序需要和sub-devices通信。这些设备可以完成各种任务,但是通常是处理音频或视频的muxing,encoding,decoding。webcams通常子设备是:sensor和camera controllers。通常,他们是I2C设备。为了给这些sub-devices提供一致
2017-11-10 11:02:57 3147
转载 Camera V4L2 架构分析
转自:点击打开链接V4L2相关代码位于linux-3.4/drivers/media/video目录中。v4l2-dev.c文件提供设备节点实现与用户层数据交流,设备节点在/dev/目录下以video0、video1等名字出现。注册字符设备的语句如下:[java] view plain copy/* Part
2017-11-10 10:24:44 1421
转载 spi驱动框架全面分析,从master驱动到设备驱动
转自:http://blog.csdn.net/lizuobin2/article/details/51735963内核版本:linux2.6.32.2 硬件资源:s3c2440参考: 韦东山SPI视频教程内容概括: 1、I2C 驱动框架回顾 2、SPI 框架简单介绍 3、master 驱动框架 3.1 驱动侧
2017-09-27 13:53:46 406
转载 Linux设备驱动子系统第一弹 - I2C
转自:http://blog.csdn.net/qianjin0703/article/details/58948691. Overview2. Data Structure3. Adapter4. I2C-core5. Slave Device 1. Overview 1.1 Definition I2C
2017-09-06 13:43:33 424
原创 petalinux 17.2安装流程-基于Ubuntu系统
1. #安装petalinux时出现警告,提示No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution,需要安装下面3个库apt-get install tftpd tftp openbsd-inetdgedit /etc/i
2017-08-17 14:35:05 1118
转载 安装Sublime Text 3插件的方法
http://www.cnsecer.com/460.html安装Sublime Text 3插件的方法:朋友们,小站活着不容易,全靠广告费养着了,如果本文对你有帮助。麻烦动下手点下页面的广告吧,谢谢!直接安装安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages)。使用
2017-04-20 22:53:59 413
CSI-MIPI--Camera-Serial-Interface-2-(CSI-2)
2017-11-07
PC搭建Vxworks开发环境
2017-05-17
机器人入门技术,掌握机器人的基本原理
2011-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人