自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(250)
  • 收藏
  • 关注

原创 Tensorflow - Dataset 之 repeat(), shuffle(), batch()作用

该文章简要描述了tensorflow 下 DataSet 一些函数的基本操作

2022-02-11 14:08:13 1778

转载 Linux下补丁的介绍及使用

Linux下补丁的介绍及使用

2016-03-21 10:05:42 9070

转载 class_create(),device_create自动创建设备文件结点

class_create(),device_create自动创建设备文件结点

2016-03-15 09:03:16 4314

原创 应用程序和驱动中使用SPI设备的流程

应用程序和驱动中使用SPI设备的流程

2016-03-15 08:54:18 9381

原创 应用程序和驱动的简易交互方式的实现

应用程序和驱动的简易交互方式的实现

2016-03-08 11:16:00 5544

原创 应用程序和驱动中使用I2C的流程

应用程序和驱动中使用I2C的流程编写I2C设备驱动有两种方法。一种是利用系统给我们提供的i2c-dev.c来实现一个i2c适配器的设备文件。然后通过在应用层操作i2c适配器来控制i2c设备。另一种是为i2c设备,独立编写一个设备驱动。注意:在后一种情况下,是不需要使用i2c-dev.c的。前一种方法也就是说只要系统实现了I2C适配器的驱动并生成了设备文件, 那么挂在其上面的I2C设备也可以

2016-03-04 11:35:19 10850

原创 GPIO-KEY的实现原理及使用方法

本文将以imx6q的板子和相应BSP代码来详细描述在linux下, 使用GPIO当做按键的实现原理及使用方法。Linux 内核下的 drivers/input/keyboard/gpio_keys.c实现了一个体系结构无关的GPIO按键驱动,使用此按键驱动,只需在相应的板级支持包中(imx6q的是board-mx6q-sabresd.c)定义相关的数据即可。驱动的实现非常简单,但是较适合于实现

2016-01-22 09:25:36 19598 1

原创 嵌入式系统下对GPIO的简单操作

在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入   Device Drivers  —>  GPIOSupport  —>

2016-01-07 14:21:17 10226

原创 海淘iherb购物最新傻瓜攻略

海淘iherb购物最新傻瓜攻略这篇文档将介绍一个新人如何从美国iherb网站海淘母婴类奶粉,米粉等,保健品类蜂蜜,蜂胶等,及化妆品类,食品杂货类等等, 通过这篇文章的介绍, 我们可以不用出门就像从淘宝上买东西一样买到美国高品质的商品。一、          iHerb介绍       美国iHerb是全美最大的天然保健品网店之一。成立12年以来向世界各地输送天然保健品,拥有600多个著

2013-06-28 16:58:55 9664 1

转载 Linux ifconfig使用及其配置文件

Linux ifconfig使用及其配置文件

2010-08-24 16:31:00 5882 1

原创 diff命令

介绍diff 命令主要用来比较2个文件或目录之间的不同之处, 并生成一个差异文件, 例如, 当你要在配置了内核之后, 你可以用这个命令来查看我们的配置动作实际上修改了哪些CONFIG_项.diff –b  .config.old  .config.new > config_diff.log    上面这条命令就可以生成一个config_diff.log的差异文件, 里面记录了.conf

2010-05-05 14:08:00 4435

转载 重定向解释

在Unix系统中,任何命令,包括Shell本身,默认情况下总是读取来自终端键盘输入的数据,这个数据输入源通常称作标准输入(stdin),其文件描述符为0.默认情况下,命令的处理结果总是输出到用户终端的屏幕上,这个输出目的通常称作标准输出(stdout),其文件描述符为1.另外,在命令的执行期间,如果出现问题,相应的错误信息默认情况下也将输出到用户的终端屏幕上,这个输出目的通常称作标准错误输

2010-05-05 13:15:00 3843

转载 readelf

readelf 负责显示ELF文件的信息Usage: readelf elf-file(s) Display information about the contents of ELF format files Options are:  -a --all        全部       Equivalent to: -h -l -S -s -r -d -V -A -I  -h --file

2009-09-21 16:22:00 4321

转载 S3C2410 LCD 驱动程序移植及GUI程序编写

S3C2410 LCD 驱动程序移植及GUI程序编写1. 为了不让大家觉枯燥,让朋友们更好的理解,我以一个实例来叙述 S3C2410 下一个驱动程序的编写(本文的初始化源码以华恒公司提供的 s3c2410fb.c 为基础)及简单的 GUI程序的编写。  2. 拿到一块 LCD,首先要将 LCD的各个控制线与 S3C2410 的 LCD控制信号相接,当然,电源也一定要接入了,否则不亮可别

2009-09-15 09:53:00 6128 2

原创 2410下寄存器地址虚实映射的实现

2410下寄存器地址虚实映射的实现我们知道在我们的驱动里面一般操作的寄存器的地址都是虚拟地址, 然而一般在cpu的datasheet里描述的寄存器的地址都是物理地址, 那linux内核是如何把我们驱动中指定操作的虚拟地址转换成正真可寻址并操作的物理地址的呢? 这篇文档以s3c2410为例, 将详细的描述这么一个实现流程。       S3c2410使用的是arm920T的核,它支持MMU,

2009-09-11 10:06:00 8026 1

原创 2410下clock源码分析

 2410下clock源码分析Author:aaron   这篇文章主要使用2.6.22下2410方面关于clock的源码来进行简单的分析, 希望通过这篇文档能对系统中的clock的使用问题有个了解.    写这篇文档除了参考了源码外, 还要参考2410的datasheet, 毕竟代码都是按照spec来写的嘛.我们先来看下2410下各种clock是如何产生的:   

2009-05-22 11:05:00 5961

原创 s3c2410 DMA驱动源码分析2

 Arch/arm/plat-s3c24xx/dma.c:/* s3c2410_dma_getposition * * returns the current transfer points for the dma source and destination*/int s3c2410_dma_getposition(dmach_t channel, dma_addr_t

2009-04-08 09:56:00 8365

原创 s3c 2410 DMA驱动源码分析1

2410下DMA驱动源码分析Author:aaron     关于2410下的DMA操作模式等信息的介绍请参考我的另外一篇文章 S3C2410:DMA介紹>>, 这里主要以kernel为2.6.22的源码来对2410DMA的驱动源码的做个分析.首先我们由kconfig和makefile来获取DMA方面相关文件(即源码): Arch/arm/plat-s3c24xx/Dma.

2009-04-08 09:54:00 7592

转载 S3C2410:DMA介紹

 S3C2410:DMA介紹之所以要介绍DMA,因为它对性能太重要了!只有活用了DMA,CPU的性能才能上去!S3c2410有四个DMA,每个DMA支持工作方式基本相同,但支持的source Dest可能略有不同,具体见Datasheet。 这里具体DMA CONTROL寄存器(DCON)的配置说明,进而引出DMA的各种工作方式。Atomic transfer:指的是DMA的单次原

2009-04-03 09:23:00 5852

原创 MTD学习报告005

 Drivers/mtd/mtd_blkdevs.c:static int blktrans_open(struct inode *i, struct file *f){       struct mtd_blktrans_dev*dev;       struct mtd_blktrans_ops*tr;       int ret = -ENODEV; 

2009-04-03 09:19:00 5742

原创 MTD学习报告004

 接着看s3c2410_nand_add_partition(), 这是重点, Drivers/mtd/nand/s3c2410.c:static int s3c2410_nand_add_partition(struct s3c2410_nand_info *info,                                  struct s3c2410_nand_mt

2009-03-12 14:55:00 6804

原创 mtd学习报告003

 下面我们就以s3c2410和 nand flash为例来讲解如何在flash上划分分区, 及划分分区后的实现原理. 假设我们要在64M的flash上建立四个分区分别用来做不同的共用, 具体如下:              分区       名称       大小          偏移         1       bootloader    0x00100000     0x

2009-03-12 14:46:00 3417

原创 mtd学习报告002

三 初始化   这里我们先说一下几个重要的全局变量:      /drivers/mtd/mtdcore.c   struct mtd_info *mtd_table[MAX_MTD_DEVICES];   该数组中保存了所有的MTD原始设备,    以学习报告001的编译配置为前提,该部分的初始化主要包括mtd部分的和nand部分的。我们要分析的就是前面提到的几个重要

2009-03-12 14:39:00 3454

原创 Linux下USB suspend/resume源码分析

Linux下USBsuspend/resume源码分析Author:aaron 本文主要从自己开发的一个USB驱动的例子来深入讲解linux内核是如何支持USB设备的休眠和唤醒的, 最近我在为我们公司的一个模块写linux下的驱动, 其中之一就是要支持USB的休眠唤醒问题, 实际上linux内核对USB的这个功能的支持还是比较新的, 也就是最近几年的事. 一  打开/关

2009-02-23 14:56:00 11383

转载 USB传输小节

USB传输小节    首先,要明白两个观点。第一,USB总线上所有的事务(数据流传输)都是由USB Host主动发起,而USB设备永远永远都是只是被动地接收然后处理USB Host发来的各种各样的命令(要求)。第二,中断是USB Host和USB设备之间的信令员,USBHost所有的要求都是通过这个信令员即中断来通知USB设备。 我们可以将整个USB数据通信过程看成是由一个一个

2009-01-06 10:18:00 5354 4

原创 df

名称:df功能:检查文档系统的磁盘空间占用情况。能够利用该命令来获取硬盘被占用了多少空间,现在还剩下多少空间等信息。语法:df [选项]说明:df命令可显示任何文档系统对i节点和磁盘块的使用情况。该命令各个选项的含义如下:-a 显示任何文档系统的磁盘使用情况,包括0块(block)的文档系统,如/proc文档系统。-k 以k字节为单位显示。-

2008-12-22 10:55:00 1655

原创 通用USB设备驱动源码分析

通用USB设备驱动源码分析Author:aaron前段时间写了篇驱动小结>的文章,描述了自己如何为高通的一个usb modem设备写驱动的过程, 最近发现实际上可以使用linux自带的一个叫usbserial的模块作为这个modem的驱动并能良好的工作, 所以写了这片文章来详细的分析下usbserial模块的源码(2.6.16.3).应该来说, 对于那些仅仅是用USB来

2008-12-19 10:06:00 11097 6

转载 tail 命令详解

功能:显示指定文件的后若干行。语法:tail [+ / - num ] [参数] 文件tail命令中各个选项的含义为:+num 从第num行以后开始显示。- num 从距文件尾num行处开始显示。如果省略num参数,系统默认值为10。 l 以文本行为num的计数单位。与参数选项+num或- num选项同时使用时,num表示要显示的文本行行数。c 以字节为num的计数单位。与

2008-11-26 16:00:00 3860

原创 USB MS驱动总结

USB MS驱动总结Author: aaron 1 概述Usb masstorage设备即USB的存储设备如U盘等, 该种设备严格按照USB规范来设计,制造,因此要写该类设备的驱动必须要对USB规范等相关原理熟悉.USB总线规范定义所有USB设备都必须遵守的规则, 而USB设备又有很多种类如存储设备,网络设备,音频设备等, 每一种这样的设备类都有自己的一个规范,

2008-11-19 10:23:00 2837

转载 linux中find命令详解

版权声明本文是zhyfly兄贴在LinuxSir.Org 的一个帖子而整理出来的,如果您对版权有疑问,请在本帖后面跟帖。谢谢;本文的HTML版本由北南南北整理;修改了整篇文档的全角及说明文字中的单词中每个字母空格的问题;为标题加了编号,方便大家阅读;前言:关于find命令由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统

2008-11-06 17:24:00 859

原创 高速串口调试总结

高速串口调试总结最近有个模块项目使用的是Qualcomm 6290的BB, 该芯片的main UART口支持高达4Mbps的速率.由于一般PC上的超级中端等最高仅支持921600的速率, 因此给该UART口测试产生了一些难度.下面就简要描述一下测试的过程.我们的测试想法是先让模块不停的往UART口发字符”U”即01010101的序列,然后通过示波器来测量Tx引脚的电平并读出它的周期

2008-10-10 09:38:00 6396

转载 0欧电阻的作用

0欧电阻的作用1,在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因。­ 2,可以做跳线用,如果某段线路不用,直接不贴该电阻即可(不影响外观)。 3,在匹配电路参数不确定的时候,以0欧姆代替,实际调试的时候,确定参数,再以具体数值的元件代替。 4,想测某部分电路的耗电流的时候,可以去掉0ohm电阻,接上电流表,这样方便测耗电流。 5,在布线时,如果实在布不过去

2008-09-22 10:06:00 1844

转载 devfs、sysfs、udev介绍

devfs、sysfs、udev介绍一、devfslinux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系

2008-09-19 17:05:00 17025 5

原创 如何把自己的驱动编译进内核或模块

linux内核中Kconfig文档的作用2.6内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成

2008-09-18 13:47:00 15222 5

原创 arm linux 下中断流程简要分析--中断处理流程

三 响应中断首先在分析源码之前,让我们了解一些原理性的东西, 我们都知道在处理中断要保存当前现场状态,然后才能处理中断,处理完之后还要把现场状态恢复过来才能返回到被中断的地方继续执行,这里要说明的是在指令跳转到中断向量的地方开始执行之前,CPU帮我们做了哪些事情:    R14_irq = 要执行的下条指令地址 + 4   //这里的下条指令是相对于被中断指令的下条。即返回

2008-09-08 14:14:00 5639 1

原创 ARM 指令集摘要

ARM 指令集摘要简介: ARM指令系统一般有Thumb指令集和ARM指令集。Thumb: 指令集具有灵活、小巧的特点,是16位的ARM:指令集支持ARM核所有的特性,具有高效、快速的特点,是32位的 一 寻址方式a) 寄存器寻址(操作数的值在寄存器中)     mov r1, r2   // r1 = r2b) 立即寻址(操作数在指令中)   mov r1,

2008-09-08 14:07:00 3235 2

原创 arm linux 下中断流程简要分析--注册中断

二 注册中断这部分我们以3sc2410下的watchdog的中断为例来讲解中断的注册及调用过程。drivers/char/watchdog/s3c2410_wdt.c:static int s3c2410wdt_probe(struct platform_device*pdev){……    /*注册中断*/    ret =requ

2008-09-03 17:27:00 4370

原创 arm linux 下中断流程简要分析--初始化

arm linux 下中断流程简要分析author: aaron (cyjtan@163.com)这篇文档准备简要的分析下arm平台上linux下的中断是如何运行的,本文将先分析初始化时的中断是如何建立的,然后以一个例子来注册一个中断,并详细分析中断触发到调用我们自己的中断例程的整个流程。不对之处,欢迎指正!   本文linux2.6.18的源码和s3c2410的CPU及s

2008-09-03 17:03:00 4462 1

转载 linux系统locale的设定

locale是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面:看中文,写中文,与window中文系统的兼容和通信。从实际经验上看来,locale的设定与看中文关系不大,但是与写中文,及window分区的挂载方式有很密切的关系。本人认为就像一个纯英文的Windows能够浏览中文,日文或者意大利文网页一样,你不需要设定

2008-08-28 10:53:00 880

转载 内核中的 likely() 与 unlikely()

在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确:            if(likely(value)) 等价于 if(value)            if(unlikely(value)) 也等价于 if(value)也就是说 likely() 和 unlikely() 从阅读和理解

2008-08-28 10:49:00 1162

空空如也

空空如也

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

TA关注的人

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