自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 652

转载 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 794

转载 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 607

转载 【驱动】linux下I2C驱动架构全面分析

转自:https://mp.csdn.net/mp_blog/creation/editor

2021-07-13 15:06:09 141

转载 [差量更新系列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 563

转载 进程间通信

转自:https://www.sohu.com/a/412809361_298038进程间通信每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些?03管道如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。$ ps auxf |grepmysql上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出.

2021-03-03 09:36:11 113

转载 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 322

原创 常用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 88

原创 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 3428 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 1856

转载 基于at91sam9x5ek嵌入式系统的内核和文件系统双备份实现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jackyzjk/article/details/50363740前言:前阵子公司使用的基于at91sam9x5ek的板子出现了好几块系统无法启动的问题,用串口打印显示要不就是文件系统损坏,要不就是内核损坏了,排除了人为误操作的原因几乎就...

2019-12-05 13:29:27 619

转载 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 164

原创 用户空间与内核空间数据交换的方式(1)------debugfs

转自:https://www.cnblogs.com/hoys/archive/2011/04/10/2011124.html内核开发者经常需要向用户空间应用输出一些调试信息,在稳定的系统中可能根本不需要这些调试信息,但是在开发过程中,为了搞清楚内核的行为,调试信息非常必要,printk可能是用的最多的,但它并不是最好的,调试信息只是在开发中用于调试,而printk将一直输出,因此开发完毕后需...

2018-10-26 14:13:03 167

转载 嵌入式设备使用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 2810

原创 交叉编译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 882

转载 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件

问题描述:用VS2013写好一个程序,在本机上运行一切正常。但是如果直接把exe文件放到另一台机器上用,则会出现:Windows XP:不是一个正常的win32程序Window 7:缺少msvcp120.dll能否有一种方法,把程序运行所需要的环境一并打包,使之可以在任何Windows计算机上使用?  为了方便说明,我们新建一个简单的控制台应用项目,直接如图: 非常简单,一个使用了C++标准库的控...

2018-03-28 17:14:20 304

转载 linux软中断机制分析

转自:点击打开链接软中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。http://alloysystem.blog.chinaunix.netAndy.yx.deng#gmail.com(#-&gt;@)1. 为什么要软中断编写驱动的时候,一个中断产生之后,内核在...

2018-03-22 16:56:50 503

转载 ARM体系结构(二)

转自:点击打开链接RM体系结构第二篇,主要理解CPU的内存接口,ARM启动过程。内存映射S5PV210属于Cortex-A8架构,有32位地址线和32位数据线,所以CPU的地址空间为4G,但是由于使用了统一编址,外设占用了一部分地址空间,实际供内存使用的地址空间将小于4G,那么对于这个4G的地址空间的分配,就是内存映射,或者说叫地址映射,下图是S5PV210的内存映射分布图,来自于用户手册: 内存...

2018-03-22 15:08:39 308

转载 ARM体系结构(一)

转自:点击打开链接ARM体系结构第一篇,主要是一些概念性的东西,需要仔细理解。可编程器的编程特点和原理 在固定频率的时钟控制下有节奏的运行可以通过总线获取外部存储中的二进制指令,从而解码执行这些二进制指令是CPU设计的时候决定的,由CPU的设计者定义,这就是CPU汇编指令集CPU的指令集 指令集就是ARM汇编指令集汇编语言相对C等高级语言比较复杂,且移植性差,不适合较大型的项目,但是汇编语言效率高...

2018-03-22 15:07:11 177

转载 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 1053

转载 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 346

转载 BootLoader启动过程分析

一、    Boot Loader的概念和功能1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方式

2017-12-07 16:29:57 278

转载 ubuntu 16.04软件中心升级软件异常导致无桌面

转自:百度经验新安装的Ubuntu 16.04,登录系统一切正常。然后根据提示打开软件中心升级软件,然后软件中心没有任何提示,也不知道升级成功与否。重启系统之后,桌面消失,一片空白,也无法进行操作。本文特对此问题给出解决方案。工具/原料 ubuntu 16.04 LTS 桌面版 virtualbox 虚拟机 方法/步骤 1. 出现问题之前 安装好系统之后,成功启动系统,根据软件中心

2017-12-06 17:39:22 543

转载 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 919

转载 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 813

转载 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 870

转载 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 925 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 1818

转载 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 908

转载 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 2347

转载 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 843

转载 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 1455

转载 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 1170

转载 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 3024

转载 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 1361

转载 和菜鸟一起学linux之V4L2摄像头应用流程

和菜鸟一起学linux之V4L2摄像头应用流程

2017-10-27 16:17:37 1519

转载 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 359

转载 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 399

原创 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 1023

转载 安装Sublime Text 3插件的方法

http://www.cnsecer.com/460.html安装Sublime Text 3插件的方法:朋友们,小站活着不容易,全靠广告费养着了,如果本文对你有帮助。麻烦动下手点下页面的广告吧,谢谢!直接安装安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages)。使用

2017-04-20 22:53:59 393

petalinux开发指导

petalinux使用详细文档,从安装到开发流程的全过程,是入门学习的指导文档。

2019-01-13

北斗-全球卫星导航系统(GNSS)接收机数据差分数据格式(一)

北斗-全球卫星导航系统(GNSS)接收机数据差分数据格式,行业标准文档,有很好的参考价值,值得收藏和下载。

2017-11-07

CSI-MIPI--Camera-Serial-Interface-2-(CSI-2)

MIPI-CSI部分的英文原文文档,内容丰富详细,从概念,原理,传输形式,到数据结构都做了详尽说明,是研究MIPI不可或缺的手册之一。

2017-11-07

Visual C++ 2013入门经典- 第7版

c++开发的入门手册

2017-05-17

Linux 的多线程编程的高效开发经验

本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验, 用以改善 Linux 多线程编程的习惯和避免其中的开发 陷阱。

2017-05-17

1553B总线控制器异步通讯仿真软件设计

详细介绍了1553B总线控制器实现异步通讯软件设计方案

2017-05-17

PC搭建Vxworks开发环境

在使用Vxworks时,在VMware上固然是一种好方法,但是对于WindML和键盘鼠标的支持却不够完美,这时使用身边的台式机进行VxWorks的开发就非常有必要了。

2017-05-17

Linux驱动工程师

这里是自己整理的Linux驱动开发工程师的面试题,比较的经典,值得学习,特别适合参加Linux驱动开发工程师的面试者。

2013-03-31

bootloader启动过程分析

本文详细讲解了bootloader启动过程,对深入理解bootloader和对自己写bootloader有很大帮助。

2013-03-31

linux经典面试题

linux经典面试题,适合应聘嵌入式开发工程师的应聘者使用,也可以作为复习资料。

2013-03-31

楼宇智能化专业介绍

楼宇智能化专业介绍,新的一门专业,楼宇控制,与物联网练习也很大,大家可以看看啊。

2012-04-06

物联网与智能建筑紧密结合渗透安防领域

物联网与智能建筑紧密结合渗透安防领域,了解一些物联网最新科技前沿的知识。

2012-04-06

89机交通控制灯的设计与实现-毕业设计.zip

89机交通控制灯的设计与实现-毕业设计,包括完整的电路图与源程序代码。

2012-04-06

单片机开发与应用技术个人赛赛点解析.ppt

单片机开发与应用技术个人赛赛点解析.ppt ,学习单片机的好东西。

2012-04-06

模拟电子技术基础(第三版)童诗白.pdf

模拟电子技术基础(第三版)童诗白.pdf ,学习模拟电子技术很好的资料!

2012-04-06

51单片机C语言程序设计100例

这里面有详细的89C51的程序和Proteus仿真,各种样例应有尽有。

2011-07-26

AT89C51单片机音乐盒

通过单片机来控制扬声器的发音,来完成一首首美妙的音乐

2011-07-26

机器人入门技术,掌握机器人的基本原理

你是否想象过让一个智能机器人成为三代同堂家庭中一员的场景?或许在科幻电影中出现过:主人不在家,机器人作为“保安”在家中巡逻,一旦发现有陌生人闯入或煤气泄漏,它会拨打主人电话或自动报警;主人或“熟悉的朋友”来到家中,机器人主动上前打招呼、问候;平时,善解人意的机器人可以与退休在家的老人聊天,为他们读报,甚至担当起家庭医生的角色,帮他们做日常的身体指标检查,将诊断结果实时传输到医院;孩子放学回家,知识渊博的机器人又变成了“家庭教师”,教英语、讲故事,通晓古今中外的机器人对各种知识问题有问必答;机器人还是全家人的快乐宠儿,它可以随时为大家表演唱歌、跳舞。

2011-02-19

空空如也

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

TA关注的人

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