当前位置: 首页 > news >正文

从软件的角度看待PCI和PCIE(一)

1.最容易访问的设备是什么?

是内存!
要读写内存,知道它的地址就可以了,不需要什么驱动程序;

volatile unsigned int *p = 0xffff8811;
unsigned int val;
*p = val;
val = *p;

在这里插入图片描述

只有内存能这样简单、方便的使用吗?
不是的,所有的“ram-like”接口设备都可以这样操作;
什么叫“ram-like”接口?

  • 要发出地址:有地址线
  • 要读写地址:有数据线
    在这里插入图片描述
    由上图可知,cpu访问某个设备,数据线,地址线,读写信号线都是共用的,怎样保证cpu在访问某个设备的时候其他设备不会来干扰我呢?这里就引入了一个新的设备——内存控制器。
    在这里插入图片描述
    cpu发出地址addr,会先到达内存控制器,内存控制器会判断属于哪一个设备的地址范围,如果是在flash的范围,内存控制器就会选中flash的片选信号cs1,没有被选中的就不会访问。
    对内存来说可以直接读写,但是对flash来说,要发一些命令,先擦除它,解锁它,才能写。对GPIO来说,是去操作他的寄存器;读写寄存器,输出输入寄存器等。

在这里插入图片描述
对于cpu来说可以发出命令直接控制emmc控制器,但不能直接访问emmc flash。要访问emmc flash就要编写复杂的驱动程序,因为emmc falsh的和cpu是隔离开的。如果cpu发出的地址可以直接到达emmc flash这不就简单多了,这就是PCI的做法!

在这里插入图片描述
我们只需要关心红线左边就可以了,就像访问内存一样访问PCI/PCIe设备。

http://www.lryc.cn/news/24154.html

相关文章:

  • DSP_TMS320F28377D_ADC学习笔记
  • springcloud3 Nacos中namespace和group,dataId的联系
  • [YOLO] yolo理解博客笔记
  • 清华源pip安装Python第三方包
  • python线程池【ThreadPoolExecutor()】批量获取博客园标题数据
  • LearnOpenGL-入门-8.坐标系统
  • windows10使用wsl2安装docker
  • Javascript的API基本内容(六)
  • 电压放大器和电流放大器的区别是什么意思
  • cast提前!最简单有效的神经网络优化方法,没有之一!
  • LeetCode刷题——动态规划(C/C++)
  • 车载智能终端TBOX
  • 技术分担产品之忧(上):挑选有业务专家潜力的人
  • UVa 12569 Planning mobile robot on Tree (EASY Version) 树上机器人规划(简单版) BFS 二进制
  • intel的集成显卡(intel(r) uhd graphics) 配置stable diffusion
  • 【数据库的基础知识(2)】
  • Docker部署实战
  • RestTemplate 相关使用
  • 新手小白亚马逊注册最全教程在此
  • 二分查找重复情况 找最左边或最右边的位置下标
  • 智慧扫码点餐系统源码
  • 分布式环境并发场景下,如何操作抢红包(或者减少库存)
  • 明星的孩子也在做的感统训练,真的有用吗?
  • 守护进程与TCP通讯
  • 在线文本翻译能力新增14个直译模型,打造以中文为轴心语言的翻译系统
  • CVE-2022-42889 Apache Commons Text 漏洞
  • 20- widedeep及函数式构建模型 (TensorFlow系列) (深度学习)
  • 大家一起做测试的,凭什么你现在拿20k,我却还只有10k?...
  • >>数据管理:DAMA简介「考试和续期」
  • React的生命周期详细讲解