
arm 开发
文章平均质量分 93
yhc1991
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
device_create() class_create()
前面章节“class 类 class_create class_destroy”了解了 class_create使用,这章节中介绍device_create device_destroy使用,并通过这两章节内容 自动建立备文件节点========================================================================转载 2017-11-25 15:41:52 · 498 阅读 · 0 评论 -
Linux下读写FLASH驱动——MTD设备分析
最近在学习驱动读写flash的代码部分。经历了可笑的过程:开始我知道flash用通过spi口来读写。所以就到了driver/spi 下面看相关代码。发现有个spidev.c里面有read/write/ioctl等函数。而且还有一个davinci_spi_master.以为调用spi驱动的时候会首先调用到这里,于是就想怎么在上层应用里将spidev.c里open调用到就可以了。最后修改了一些地方就在转载 2014-11-14 14:42:11 · 983 阅读 · 0 评论 -
内核零内存拷贝策略
Linux驱动和用户程序之间内存零拷贝实现转载 2014-05-30 09:40:33 · 2078 阅读 · 0 评论 -
linux下混杂设备驱动
设备驱动程序中的注册函数原创 2014-05-29 15:23:42 · 655 阅读 · 0 评论 -
内核与用户空间的内存共享(测试通过)
Make:obj-m := k_mem.oKDIR := /lib/modules/3.2.18/buildPWD := $(shell pwd)default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modulesclean: $(RM) -rf .*.cmd *.mod.c *.o *.ko .tmp* Module.s转载 2014-05-29 10:58:58 · 950 阅读 · 0 评论 -
通过proc fs获取设备状态
驱动程序加载(insmod)之后,通过什么样的手段来观测设备的运行状况呢?通常可以在file_operation对应的各个函数里面用printk(内核态常用的打印函数)打印出需要了解的调试信息。如果仔细留意的话可以发现在嵌入式系统的文件系统目录下通常会有proc目录,在该目录下可以通过cat interrupt去了解ARM嵌入式系统中ARM处理器中断的情况,通过cat devices可以了解dev转载 2014-06-12 09:58:40 · 619 阅读 · 0 评论 -
与内存映射相关的宏
三. 内核对页表的设置CPU做出映射的前提是操作系统要为其准备好内核页表,而对于页表的设置,内核在系统启动的初期和系统初始化完成后都分别进行了设置。3.1 与内存映射相关的几个宏这几个宏把无符号整数转换成对应的类型 #define __pte(x) ((pte_t) { (x) } ) #define __pmd(x)转载 2014-06-12 10:42:26 · 611 阅读 · 0 评论 -
linux 公社资料
免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com原创 2014-07-02 11:10:27 · 547 阅读 · 0 评论 -
Linux下使用交叉编译工具ltib开发powerpc(mpc83xx)
Linux下使用交叉编译工具开发powerpc(mpc83xx)写在前面 符号'##'后面语句均为注释 需要做的操作命令以 '$' 或 '#'开头,且都位于一行的开始 以下绝大部分操作是针对于我们的开发主机(PC),其他是针对于开发板(MPC8349itx) 对于主机上的操作,所说目录路径是相对于/usr/local/mpc8转载 2014-05-27 14:43:51 · 1458 阅读 · 1 评论 -
页表及内存映射
用户空间:0x00000000~0xbfffffff内核空间:0xc0000000~0xffffffff内核前896M线性空间:0xc0000000~0xc0037fff 从多少M计算出其对应的地址:3M = 3*1024 = 3072K3072 / 4 = 768 即3M占用768个页框768D = 300H转载 2014-06-06 17:08:14 · 2951 阅读 · 0 评论 -
关于驱动开发中mmap函数的实现
在编写设备驱动程序的时候,如果要想把设备内存映射到用户空间,那需要我们实现mmap,通过看ldd3上面的介绍,对实现mmap有了一点了解.书上介绍主要是利用int remap_pfn_range(struct vm_area_struct *vma, unsigned long virt_addr,unsigned long pfn, unsigned long size,pgprot_t p转载 2014-06-06 17:18:42 · 658 阅读 · 0 评论 -
内核与用户空间共享内存之mmap
一、用到的API与数据结构先看用户空间使用的API#include sys/mman.h>void *mmap(void *start, //映射的范围首地址,通常设NULL,让系统自动选地址,映射成功后返回该地址 size_t length, //映射的范围的大小 int prot, //映射区的保护属性 P转载 2014-05-29 16:54:49 · 1140 阅读 · 0 评论 -
用户空间和内核空间通讯之【proc文件系统】
今天我们介绍另一种用户内核空间通信的方法:proc文件系统。proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失。proc文件系统最开始的设计主要是为满足内核向用户态进程报告其状态而设计,并没有为输入做规定和说明。随着发展,现在的proc文件系统已经演变成一个“用户-内核”空间半双工的通信方式了(虽然目前已经开始有点混乱了,但某些早期开转载 2014-06-06 10:07:09 · 828 阅读 · 0 评论 -
PCI 中的base address register
PCI设备有很好的可配置型和易操作性,这很大方面要归功于其地址空间的可动态分配的特性。而动态分配地址空间就是依赖于BAR(base address register)实现的。BAR是PCI配置空间中从0x10 到 0x24的6个register,用来定义PCI需要的配置空间大小以及配置PCI设备占用的地址空间。每个PCI设备在BAR中描述自己需要占用多少地址空间,bios通过所有设转载 2014-05-21 16:43:06 · 3204 阅读 · 0 评论 -
uboot分析之第一阶段源码
这两天在分析uboot,昨天分析完了makefile之后,今天分析了第一阶段的源码,故而分享之。新手望各位指教开始先插一下,uboot移植的思路:1首先来确定UBOOT的每一步动作,以及这个动作所使用的文件,函数等等2再来确定哪一个动作需要修改的3一般CPU都是ARM920T所以主要修改的是板级函数,在board文件夹下下来进行分析:分析的前转载 2014-05-14 08:45:16 · 700 阅读 · 0 评论 -
SPIflash
http://blog.chinaunix.net/uid-25445243-id-4026974.html转载 2014-11-13 20:57:02 · 1297 阅读 · 0 评论 -
驱动字符设备的基础
在linux2.6内核中使用cdev结构体描述一个字符设备,cdev结构体定义如下:struct cdev { struct kobject kobj;//内嵌的kobject对象 struct module *owner;//所属模块 const struct file_operations *ops;//指向文件操作结构体指针 struct list_head list;转载 2014-11-03 09:38:35 · 557 阅读 · 0 评论 -
Linux内核中实现保留内存的方法
Linux中保留内存(Reserved memory)是指把系统中的一部分内存保留起来,内核不会为它建立页表,一般的应用程序无法访问到这段内存。在板卡调试、内存测试和设备DAM调试的过程中,可以运用这种办法,先验证系统在只有低端内存的情况下能否顺利启动;此外,服务器和存储系统的环境下,也可以用这种方法从大量系统内存中保留出一部分,留给特殊用途使用或者模拟诸如NVDIMM等设备。因此,有必要对Res转载 2017-11-05 09:31:04 · 14184 阅读 · 0 评论 -
Linux下直接读写物理地址内存
虚拟 转 物理地址 virt_to_phys( *addr );物理 转 虚拟地址 phys_to_virt( *addr );-------------------------------------------------Linux内核里提供的/dev/mem驱动,为我们读写内存物理地址,提供了一个渠道。下面讲述2种利用mem设备文件进行物理地址读写的方法,一种是设备驱动的转载 2017-10-29 21:50:18 · 1472 阅读 · 0 评论 -
I2C总线的仲裁机制
在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I 2C总线上的仲裁。I2C总线上的仲裁分两部分:SCL线的同步和SDA线的仲裁。1 SCL线的同步(时钟同步转载 2015-09-08 10:34:49 · 772 阅读 · 0 评论 -
I2C-pcf8563
linux 2.6.35.2 ——MX28添加pcf8563驱动pcf8563硬件连接到核心板引出的I2C1引脚上。修改内核源码包,添加i2c下pcf8563的驱动。通过终端命令hwclock可以操作pcf8563时钟芯片的读写,验证pcf8563驱动是否移植成功。移植i2c驱动,参考i2c驱动模型,主要涉及了以下4个源文件:rtc-pcf8563.c(时钟芯片驱动)、i2c_co原创 2015-06-04 09:29:49 · 2434 阅读 · 0 评论 -
Linux设备之I2C
在内核中已经提供I2C子系统,在linux系统中,I2C驱动结构如下图所示:其中从上图可以I2C由三大部分组成:1、I2C核心:I2C核心提供了总线驱动和设备驱动的注册、注销的方法,I2C通信方法,与具体适配器无关的代码以及检测设备地址的代码等。2、I2C总线驱动:对I2C硬件体系结构中适配器的实现,控制I2C总线驱动的代码,控制I2C适配器以主控方式产生开始位,停转载 2015-06-03 17:19:19 · 672 阅读 · 0 评论 -
Android/Linux驱动开发之使用dev_dbg调试设备驱动
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8789807,作者:gqb6661、最近在写I2C下EEPROM的驱动程序,但发现使用i2c_new_probed_device函数无法枚举到设备,于是想调试该函数(位于driver/i2c/i2c-core.c内),看到其中有些调试信息如下:转载 2015-05-13 13:40:53 · 520 阅读 · 0 评论 -
Unknown symbol gpio_direction_input解决方法
内核对gpio_direction_input导出声明如下:EXPORT_SYMBOL_GPL(gpio_direction_input);gpiolib中gpio方法导出也是使用EXPORT_SYMBOL_GPL因此,驱动如果要使用gpiolib中导出的方法,必须使用GPL授权,否则加载驱动时,就会出现“Unknown symbol gpio_xxx”MODULE转载 2015-04-14 10:58:15 · 1676 阅读 · 0 评论 -
STM32 SPI DMA 的使用
一是想总结一下SPI总线的特点与注意点,二是总结一下SPI DMA的使用一、SPI信号线说明 通常SPI通过4个引脚与外部器件相连:MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。SCK:串口时钟,作为主设备的输出,从设备的输入NSS:从设备选择。这是一转载 2015-04-22 16:13:50 · 3517 阅读 · 0 评论 -
blog
xiaobai.blog.chinaunix.net转载 2015-01-21 14:04:30 · 532 阅读 · 0 评论 -
setup_irq与request_irq的区别
题记: 前两天在做i.mx28硬件定时器的驱动,参考了BSP里带的,使用TIMER0作为系统时钟的注册代码,发现其注册时钟中断的函数使用的是setup_irq,而非常用的request_irq,觉得有些奇怪,今天网上搜了一下,大概了解了一下原因。其实,request_irq最终调用的中断注册函数也是setup_irq,只是request_irq函数中还使用了kmalloc,而kmall转载 2014-12-11 09:38:38 · 694 阅读 · 0 评论 -
ARM+Linux下看门狗应用
笔者在设计ARM+Linux的产品中,使用了看门狗ADM706。这款IC的定时间隔为1.6s。由于使用ARM9的内核,操作系统为Linux。整个系统完全启动时间较长,超出了看门狗的喂狗时间门限。因此在CPU能完全启动开始喂狗前,看门狗又给出了复位信号,导致CPU重启。由于成本的原因,此款看门狗IC的定时复位间隔时间已经定死,不能由CPU设置。我们无法通过更改看门狗的喂狗间隔时间来满足CPU的启动要转载 2014-12-01 17:17:11 · 1987 阅读 · 0 评论 -
OTP (One Time Programmable)的介绍
随着嵌入式应用的越来越广泛,产品的安全也显得越来越重要。一方面是为了保护硬件设计,另外一方面也是为了产品本身的安全,防止被HACKED.在嵌入式系统当中,所有的代码和系统数据都是被存储在FLASH芯片内部的。FLASH芯片的特点是可多次擦写,而且掉电数据不会丢失。为了保护FLASH中的数据,越来越多的FLASH厂商在FLASH内部提供了一种特殊的寄存器:OTP寄存器。OTP=ONE TIM转载 2014-11-24 16:28:31 · 5720 阅读 · 1 评论 -
Linux内核代码中的__setup的用途
在Linux内核代码中经常会看到__setup,如下所示: __setup("nfsroot=", nfs_root_setup); 这是一个宏,它的定义在include/linux/init.h #define __setup(str, fn) __setup_param(str, fn, fn, 0) 我们这里暂不管__se转载 2014-11-27 10:39:39 · 771 阅读 · 0 评论 -
/usr/bin/ld: cannot find : No such file or directory解决
linux gcc编程时可能出现下面的错误:/usr/bin/ld: cannot find : No such file or directory cannot find后面什么都没有,很有可能是因为命令中间多了个空格符导致(一般在逗号后面),请仔细检查;有的话则可能是缺少某种类型的库,选择安装后即可,如下(无mysql库导致,apt-get install libmysql转载 2014-11-25 17:05:11 · 16087 阅读 · 0 评论 -
有关IO端口和IO内存的区别
外设IO寄存器地址独立编址的CPU,这时应该称外设IO寄存器为IO端口,访问IO寄存器可通过ioport_map将其映射 到虚拟地址空间,但实际上这是给开发人员制造的一个“假象”,并没有映射到内核虚拟地址,仅仅是为了可以使用和IO内存一样的接口访问IO寄存器;也可以 直接使用in/out指令访问IO寄存器。 例如:Intel x86平台普通使用了名为内存映射(MMIO)的技转载 2014-05-19 10:50:54 · 583 阅读 · 0 评论 -
IO端口与IO内存
从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示器……对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄存器(也称为端口),转载 2014-05-16 11:25:51 · 1074 阅读 · 0 评论 -
mmap详解
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域转载 2014-05-08 15:21:56 · 591 阅读 · 0 评论 -
开发板的lcd 显示
http://hi.baidu.com/guoggn/blog/item/018ed7f28932261eb07ec59a.html转】S3c2410 LCD驱动学习心得2010-07-26 14:51转载自 583893280最终编辑 guoggn一 实验内容简要描述1.实验目的学会驱动程序的编写方法,配置S3C2410的LC转载 2012-06-30 12:32:34 · 5000 阅读 · 0 评论 -
QT整理
ftp://ftp.qt.nokia.com/qt/source/http://www.eefocus.com/PSOCPSOC/blog/2012-03/218929_cc943.html原创 2012-07-11 21:36:46 · 579 阅读 · 0 评论 -
对于开发板上运行的程序缺少动态库文件的解决error while loading shared libraries
最近在用开发板做图像采集,当程序运行到开发板上时提示:error while loading shared libraries libjpeg.so.62.查看后发现linux下有此文件,但是按照大部分的解决 方法是将linux下的该文件直接cp到文件系统的/lib中,但尝试后仍失败。最后发现所需 的libjpeg.so.62必须是编译程序时交叉编译器目录下的,所以又将原创 2012-07-09 16:37:32 · 3196 阅读 · 0 评论 -
JPEG的交叉编译
JPEG的交叉编译(转) JPEG的交叉编译[参考别人的做了][假设你的交叉编译工具安装在/usr/arm目录下的]step1:下载并解压jpeg源代码包step2:#cd ./jpeg-6b#./configure --prefix=/usr/arm/arm-linux --exec-prefix=/usr/arm/转载 2012-07-09 16:01:24 · 1594 阅读 · 0 评论 -
servfox解析
搞了一段时间的嵌入式网络视频采集与传输,基本上在服务器端采集视频用的是servfox程序包,它可以用arm-linux-gcc编译后移植到开发板上,我现在一直在做这方面的工作,用的是S3C2410的板子,这个开源程序十分不错,觉得有必要深入理解和学习一下它的源程序,网上一般没有对它的详细说明,只是简单介绍了它怎么用的,就如我当初刚开始学习嵌入式时一样看不懂这个程序,现在对其各个代码作个详细的解释,转载 2012-06-18 10:18:59 · 609 阅读 · 0 评论 -
servfox和spcaview的使用
Kernel version :2.6.22.6Crosstool :arm-linux-gcc-3.4.1Board :FL2440 System :Ubuntu 10.10Source :servfox.rar, spcaview-20061208.rar, SDL-1.2.13.rar/***********转载 2012-06-18 22:11:44 · 917 阅读 · 0 评论