自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ascend的专栏

纸上得来终觉浅,绝知此事要躬行

  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

转载 linux内存寻址---物理地址、线性地址、虚拟地址。逻辑地址(二)

CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步(如下图):首先,将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址,其次,再利用其页式内存管理单元,转换为最终物理地址。      这样做两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所

2013-11-27 01:07:15 735

转载 linux内存寻址---虚拟地址、逻辑地址、线性地址、物理地址(一)

不同的经典书籍中都定义了关于linux内存虚拟地址的几个名词的定义:一般讲地址分为三类: 逻辑地址、物理地址、线性地址  首先说一句话:linux关于内存寻址可以分为几个阶段,首先由分段机制,然后有分页机制。分页机制在段机制之后进行,以完成线性—物理地址的转换过程。段机制把逻辑地址转换为线性址页机制进一步把该线性地址再转换为物理地址程序(进程)的虚拟

2013-11-27 01:06:23 905

转载 Linux字符设备驱动设计知识点

一、设备号设备号又分为:主设备号和次设备号。“主设备号” 用来标示“设备文件”与哪个驱动程序相对应。“次设备号”被驱动程序使用,用来辨别操作的是哪个设备。小结:主设备号用来辨别设备类型,次设备号用来辨别同一类型设备中的具体哪台设备。 1、内核中如何描述设备号?答:用一个 dev_t 类型的变量来描述;其实质为一个 unsigned int 3

2013-11-25 10:11:19 811

转载 Linux中的虚拟地址、物理地址和内存管理方式

Linux中的虚拟地址、物理地址和内存管理方式(一)一、简单介绍下早期的内存实现:(可略过)        1、在早期的计算机中,运行一个程序的特点是:            (1)会把这些程序全都装入内存,            (2)程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。        2、在早起的内存实现方

2013-11-25 09:15:23 2594

转载 GNU C的扩展

Author:tiger-johnTime:2013-08-3(重新修改)mail:jibo.tiger@gmail.comBlog:http://blog.csdn.net/tigerjb/article/details/8299557转载请注明出处!一.  结构体赋值:1、对成员赋值例如结构体[cpp] view plainc

2013-11-25 01:29:35 798

转载 offset宏的讲解

1.offset宏讲解#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)对这个宏的讲解我们大致可以分为以下4步进行讲解:1>( (TYPE *)0 )  0地址强制 "转换" 为 TYPE结构类型的指针;2>((TYPE *)0)->MEMBER   访问TYPE结构中的MEMBER数据成员;

2013-11-25 01:27:31 671

转载 container_of分析

1.container_of宏1> Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。2>接口:container_of(ptr, type, member)  ptr:表示结构体中member的地址 type:表示结构体类型 membe

2013-11-25 01:23:39 566

转载 Linux字符设备驱动之register_chrdev_region()系列

1.内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个char_device_struct 结构,它的定义如下:static struct char_device_struct {struct char_device_struct *next; // 指向散列冲突链表中的下一个元素的指针unsigned int major;

2013-11-25 01:01:37 683

转载 Linux内核访问I/O资源的方法:动态映射(ioremap)和静态映射(map_desc)

内核访问外设I/O资源的方式 我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。  Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。  一、动态映射(ioremap)方式  动态映射方式是

2013-11-25 00:51:24 1319

转载 ioremap和ioport_map

一.基础介绍IO寄存器(内存)有两种地址映射方式,即映射到IO地址空间(portio),映射到内存地址空间(mmio)。在linux-2.6之前,前者使用inb/outb(......)访问,后者通过readb/writeb(......)来访问(访问前必须使用ioremap将IO物理地址映射到虚拟地址)。ioremap函数作用如前所述,就是将IO物理地址映射成虚拟地址,这样r

2013-11-25 00:19:51 2265

转载 container_of 理解

问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr:     the pointer to the member.* @type:     the t

2013-11-24 16:25:07 523

转载 字符设备驱动内核框架小结

最近一直在学习驱动相关知识,但是如果说会用或者简单的会写的话我还不是很满足,我还是想知道它底层是如何实现的。那闲话少说,最近也看了很多大牛的经验总结,然后也就谈谈自己的看法吧~首先还是先列个大纲:1、VFS如何实现;2、字符设备驱动框架;一、VFS(虚拟文件系统)在学习这方面的知识之前先介绍下几个关键的结构体,inode、

2013-11-24 01:36:24 827

转载 struct file 和struct inode

内核使用三种数据结构表示打开的文件:(1)每个进程在进程表中都有一个记录项,记录项包含一张打开的文件描述符表,可将视为矢量,每个描述符占用一项,与每个文件描述符相关联的是:a)文件描述符标志(close_on_exec).b))指向一个文件表项的指针。(2)内核为所用打开文件维持一张文件表,每个文件表项包含:a)文件状态标志(读写等等)b)当前文件偏

2013-11-24 01:26:04 725

转载 Linux启动流程简介

一. 内核镜像Izmage被bootloader装载到内存中。zImage的入口代码是自引导程序。包含一些初始化代码。第一条指令在head.S文件中。解压内核,然后调用call_kernel启动vmlinux(解压后在正确位置上的内核)二. vmlinux开始部分的代码对应的文件也叫head.S.这个是体系结构相关的代码,进行页表的初级初始化后打开MMU,跳转到start_kernel函数中去

2013-11-23 23:51:25 566

转载 linux platform 驱动模型分析

一. 概述    platform设备和驱动与linux设备模型密切相关。platform在linux设备模型中,其实就是一种虚拟总线没有对应的硬件结构。它的主要作用就是管理系统的外设资源,比如io内存,中断信号线。现在大多数处理器芯片都是soc,如s3c2440,它包括处理器内核(arm920t)和系统的外设(lcd接口,nandflash接口等)。linux在引入了platform机制之后

2013-11-23 22:28:00 535

转载 Linux驱动中的platform

作者:李智敏,华清远见嵌入式学院上海中心讲师。从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示;驱动用 platform_driver 进行注册。Linux platform driver 机制和传统的dev

2013-11-23 22:26:55 627

转载 实例解析linux内核I2C体系结构(2)

作者:刘洪涛,华清远见嵌入式学院讲师。四、在内核里写i2c设备驱动的两种方式前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。(

2013-11-23 21:44:40 592

转载 实例解析linux内核I2C体系结构(1)

一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有:        ●    思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。第一种方法问题(对应第二种方法的好处)

2013-11-23 21:43:28 673

转载 Linux下删除不掉的文件

“为什么有些Linux文件以讨厌的减号("-")开头做文件名,无论如何都删除不掉,这到底为什么?",您可能听过您临桌的新手这样的叫喊过,希望同样的事情不会发生在您的身上,这个非常容易解决,您只要用带路径的方法就可以把他们删除了,假定一个文件名为"-abc",您可以用:  rm ./-abc 或者  rm /home/yaoyao/-abc  命令将其轻松删除,另外您也可以用

2013-11-23 10:38:21 6437

转载 几款代码比较工具

优秀的代码比较工具BeyondCompare软件功能:用于比较和合并源代码Beyond Compare 是一款不可多得的专业级的文件夹和文件对比工具。使用他可以很方便的对比出两个文件夹或者文件的不同之处。并把相差的每一个字节用颜色加以表示,查看方便。并且支持多种规则对比。对软件汉化者来说,这绝对是一款不可多得的工具。该工具有Windows和Linux下两个版本T

2013-11-23 10:06:14 802

转载 or1200下linux的i2c(二)

这段时间开始有点小忙了,但是还是坚持学习一下linux,至于上次记得是基于linux系统自带的i2c-ocores.c文件接口写了简单的测试程序,这次就基于opencores社区上大虾写好的i2c controller总线驱动来做一下分析,这个总线驱动在openrisc-3.1\drivers\i2c\busses目录下~这个总线驱动是基于Richard Herveille编写的i2c-maste

2013-11-21 22:06:21 900

转载 or1200下linux的i2c(一)

这篇blog介绍I2C的学习了,首先要在我们的or1200_soc上添加进来I2C Controller,到opencores社区上面找到i2c_latest.tar.gz这个工程包。        解压得到如下文件目录:        注意啦,这里的i2c_top.v的顶层文件需要自己编写,因为需要在工程的更顶层将i2c_master_top.v里的输入输出信

2013-11-21 22:04:52 815

转载 OpenRisc 驱动之helloworld

引言我觉得ORPSoC的关键在于‘P’,即programmable。SoC的有优势就在于只要是满足总线interface的ip,可以实现plug & work。所以一旦完成前面的工作之后,添加属于自己的ip core到ORPSoC的wishbone总线上,并编写它对应的驱动就成为非常关键的一步。本小节就做一个简单的例子,来说明需要完成的工作步骤及其中遇到的问题和对应的解决方

2013-11-21 15:30:46 874

转载 理解 linux inode

inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔记,尽量保持简单。===================================理解inode作者:阮

2013-11-21 00:36:32 688

转载 file_operations结构体详细分析

第一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块的指针.这个成员用来在它的操作还在被使用时阻止模块被卸载. 几乎所有时间中, 它被简单初始化为 THIS_MODULE, 一个在 中定义的宏.这个宏比较复杂,在进行简单学习操作的时候,一般初始化为THIS_MODULE。loff_t (*llseek) (struct file * fi

2013-11-21 00:03:56 793

转载 ORPSoC boot过程分析

转自http://blog.csdn.net/rill_zhen/article/details/8855743引言之前做了很多工作,能起orpmon,能起linux,能run helloworld。但是这些都可以说是空中楼阁,如果不把CPU的启动过程搞明白,总感觉心里没底似的。所以本小节就看一下ORPSoC在最初上电之后做的一些工作,与大部分介绍启动代码的流程的角度有所不同。

2013-11-20 21:25:47 1145

转载 gedit各种出错

gedit各种出错        相信从ubuntu Gnome桌面环境走过来的人都对gedit很熟悉,但是这么简单的东西也会出错,作者只遇到了第一个问题,其他的拿过来以防万一。不过从这些案例里面可以看出,其实真的不是Gedit的错,而是系统的错。下面让作者意义分析。案例一:症状:        sudo gedit  /boot/grub/grub.cfg

2013-11-20 20:09:33 1555

转载 打印机选购

转自http://wiki.jd.com/knowledge/2023.html选购喷墨打印机主要看什么                                        繁杂的性能规格表,让缺乏专业知识的家庭用户实在是有些挠头。其实对于家庭用户来说,目前市面上在售的喷墨打印机性能都能满足需求,无非比的是性价比,谁不希望以最低的价格买到最高的性能呢?打印机的

2013-11-18 16:13:30 1088

转载 SVN的标准目录结构:trunk、branches、tags

转自http://www.cnblogs.com/RedCandle/archive/2012/06/20/2556623.html我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式。trunk是主

2013-11-18 09:53:48 1103

转载 Linux学习之"exit函数"

转自http://www.cnblogs.com/lq0729/archive/2011/10/24/2222701.html先看下"_exit"和"exit":exit被调用时,将冲刷所有的标准I/O流,关闭所有打开的文件描述符。在传统实现中,同时也将关闭标准I/O流。即表示标准输出FILE对象的相关存储区将被清0。而_exit不会执行这些操作。由于父子进程共享同一地址空间,

2013-11-18 00:17:03 770

转载 Linux下的c编程用到的头文件

转自http://blog.csdn.net/qustdjx/article/details/7588106unistd.hunistd的意思是UnixStandard的意思,里面定义的宏一类的东西都是为了Unix标准服务的(一般来说包括了POSIX的一些常量……unistd是unix 系统标准头文件,用于系统调用,相当于win32中的windows.h。比如用到unistd中的g

2013-11-18 00:10:50 1329

转载 Modelsim 安装破解 unable to checkout a viewer license

转自ModelSimhttp://www.eefocus.com/nightseas/blog/12-03/239859_99372.html作为仿真利器,是做CPLD和FPGA不可或缺的一款软件。在进行仿真之前,先要说说和谐安装的问题。安装软件可以在www.modelsim.com上下载,官方提供了最新的安装包以及许多历史版本,根据需要选择相应版本后,随便填写一下个人信息(这个表格貌似没有任

2013-11-17 15:33:39 48790 8

转载 片上总线Wishbone 学习(十三)总线周期之RMW操作

转自http://blog.csdn.net/ce123_zhouwei/article/details/7013700片上总线Wishbone 学习(十三)总线周期之RMW操作          在操作系统中,有一种重要的进程间的同步机制称作信号量机制。信号量即当前可用资源的计数。信号量是一个用来实现同步的整型或记录型(Record)变量,除了初始化外,对它只能执行等待和释放

2013-11-14 22:19:41 1050

转载 片上总线Wishbone 学习(十二)总线周期之块写操作

转自http://blog.csdn.net/ce123_zhouwei/article/details/6964008片上总线Wishbone 学习(十二)总线周期之块写操作异步周期结束方式         块写操作的例子如图1所示。图1的一次块写操作由五个相互关联的单次写操作完成。          在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()

2013-11-14 22:17:34 1017

转载 片上总线Wishbone 学习(十一)总线周期之块读操作

转自http://blog.csdn.net/ce123_zhouwei/article/details/6963971片上总线Wishbone 学习(十一)总线周期之块读操作异步周期结束方式            块读/写操作每次读/写数据多次。块读/写操作实际上是由顺序进行的多个单次读/写操作组合而成的。在同时存在多个主设备时,块读/写操作非常有用,一个块读写一般是不能

2013-11-14 22:15:32 922

转载 片上总线Wishbone 学习(十)总线周期之单写读操作

转自http://blog.csdn.net/ce123_zhouwei/article/details/6933926片上总线Wishbone 学习(十)总线周期之单写读操作异步周期结束方式             单次写操作如图1所示。      在时钟上升沿0,主设备将地址信号ADR_O()、TGA_O()放到总线上,将数据信号DAT_O()、TGD_

2013-11-14 22:13:44 818

转载 片上总线Wishbone 学习(九)总线周期之单次读操作

转自http://blog.csdn.net/ce123_zhouwei/article/details/6933917片上总线Wishbone 学习(九)总线周期之单次读操作异步周期结束方式       单次读操作每次操作只完成一次读或者写,是最基本的总线操作方式。但是,Wishbone主设备或者从设备也可以不支持单次读/写操作,甚至没有地址和数据总线。    

2013-11-14 22:09:00 809

转载 片上总线Wishbone 学习(八)周期的同步结束和异步结束

转自http://blog.csdn.net/ce123_zhouwei/article/details/6951624片上总线Wishbone 学习(八)周期的同步结束和异步结束         为了实现在给定时钟频率下的最大可能吞吐量,Wishbone采用了周期异步结束方式。这样做的结果是从主设备的STB_O到从设备的ACK_O/ERR_O/RTY_O再到主设备的ACK_I

2013-11-14 22:02:40 801

转载 片上总线Wishbone 学习(七)总线周期之握手协议

转自http://blog.csdn.net/ce123_zhouwei/article/details/6933756片上总线Wishbone 学习(七)总线周期之握手协议        由于在整个总线周期,CYC_O必须始终保持有效,因此,此后我们将在给出的图中忽略该信号,只在必要的时候给出。        握手发生在主设备和从设备之间。握手协议是主设备和从设备在握

2013-11-14 21:55:44 1457

转载 片上总线Wishbone 学习(六)总线周期之操作发起

转自http://blog.csdn.net/ce123_zhouwei/article/details/6933605片上总线Wishbone 学习(六)总线周期之操作发起            一个总线周期由至少一次总线操作构成。操作总是由主设备发起,主设备发起的操作可以是单次读/写、块读/写或者RMW操作。当主设备将CYC_O置为高时,一个总线周期开始。总线周期开始后,当

2013-11-14 21:50:23 891

DE2引脚配置CSV文件

DE2开发板引脚配置信息,可以直接通过quartus ii 软件 assignments->import assignments导入,使用时注意引脚信息的对应关系。

2014-02-17

crc5_verilog

crc5的verilog实现和仿真。文件包括crc5.v和testbench文件crc5.vt以及仿真效果图。

2013-10-06

空空如也

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

TA关注的人

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