前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >独立编址,统一编址,IO端口,IO内存,冯·诺伊曼,哈佛结构

独立编址,统一编址,IO端口,IO内存,冯·诺伊曼,哈佛结构

作者头像
全栈程序员站长
发布2022-09-27 12:56:15
9030
发布2022-09-27 12:56:15
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

独立编址,统一编址: I/O地址空间与内存地址空间编址方式是否统一?例如51为统一编址,I/O和存储器总计64K地址空间;X86为独立编址,分为I/O地址空间和存储器地址空间。 IO空间,内存空间

X86:支持内存空间,IO空间,独立编址。 ARM,MIPS,PowerPC只支持内存空间,即统一编址。

IO端口和IO内存:对于X86系统区别很大,例如,网卡接口,可以连接在IO的这一组地址总线上,也可以连接在内存的这一组地址总线上,就可分别出现IO端口和IO内存的区别。

IO端口:当一个寄存器或内存位于IO空间时,称之为IO端口。

IO端口的操作:申请,访问,释放

申请:struct resource * __request_region(struct resource *parent, resource_size_t start, resource_size_t n, const char *name, int flags)

申请完以后,可以在/proc/ioports下面看到端口的占用情况。

访问:static inline int inb(unsigned long i) //读字节端口(8位) static inline void outb(char c, unsigned long i)//写字节端口(8位)其余访问16位,32位IO端口的函数为:inw,outw,inl,outl。

IO内存:当一个寄存器或内存位于内存空间时,称之为IO内存。

IO内存的操作:申请,映射,访问,释放

申请:request_mem_region(start, n, name)//start:申请的起始地址,n:申请的长度,name:申请使用区域的名字。

申请完以后,同样可以在/proc/iomem中查看iomem的使用情况。

映射:由于linux系统中不能直接使用物理地址,必须使用虚拟虚拟地址,所以对IO内存的操作,必须有一个映射的过程。

映射函数:ioremap(cookie, size)//cookie:物理地址,size :映射大小。

访问:访问IO内存,最好不要直接用*addr直接赋值的方式来完成,在某些情况下易出错,推荐使用内核已经提供的函数来完成。内核提供的函数有:ioread8,iowrite8,ioread16,iowrite16,ioread32,iowrite32等函数。而老版本的内核中也提供了例如:readb,writeb,readw,writew,readl,writel等函数

释放:iounmap()和release_mem_region()

冯·诺伊曼,哈佛结构: 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储 器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的 PIC16芯片的程序指令是14位宽度,而数据是8位宽度。 目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公 司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11,51单片机也属于哈佛结构 冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。 目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了上面提到的英特尔公司的8086,英特尔公司的其他中央处理器、安谋公司的ARM7、MIPS公司的MIPS处理器也采用了冯·诺伊曼结构。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188517.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档