【迅为iTop4412学习笔记】10.了解物理地址和虚拟地址

声明

以下都是我刚开始看驱动视频的个人强行解读,如果有误请指出,共同进步。

本节目标

  1. 了解物理地址和虚拟地址,MMU是关键

  在之前我们对linux驱动已经有了一个大概印象,而编写的代码也都是学习性质的编写,在本节之后就开始逐渐深入。

  首先我们要用到的就是迅为提供的开发板的原理图,他的位置是 iTOP-4412精英版光盘资料\01_PCB_SCH_DATASHEET下的iTOP4412_MAIN_CLASICS_V3_2_20180205文件夹下,而怎么去看这些就看迅为的视频即可。

  对于用过单片机的人来说,这一节应该是比较好理解的。

  我们以LED为例,一步步的查找硬件是如何连接,最终找到GPL2_0就是迅为开发板4412芯片接LED的管脚

  所以我们要编写驱动,最终还是要操控GPL2_0的寄存器,打开4412芯片的datasheet搜GPL2CON就能找到他的硬件地址。

  那是不是我们直接操控他的硬件地址就行了呢?不是。

  我们要谨记,单片机和linux是不一样的。如果把linux当单片机去使,他就只是一个单片机,没有系统层面的思想,这样是没有灵魂的!

  单片机我们是怎么玩的?

  我们知道程序其实都是操作CPU的寄存器。程序就是告诉CPU,你的哪个寄存器要怎么做。

对于linux来说

  linux是个系统,也是一个平台,做事要讲究,我们不能什么直接操作寄存器。对于物理地址,linux都把他封装起来了,不直接开放给我们操作。我们程序想操作,要经过linux的允许。

  对于单片机和ARM Linux的区别是什么。百度一搜就知道多了一个cache缓存和mmu内存管理单元。

引入内存概念

  关于CPU大家应该都知道,他的速度是非常快的,而硬盘则是非常慢的。所以CPU直接读硬盘的程序,那着急死了。

  因此我们引入了内存,他的速度介于CPU和硬盘之间作为一个中转站,这样大家就会都好受一点了。

引入cache缓存概念

  虽然引入了内存,但这个对于CPU来说这个速度还是太慢了,所以在CPU和内存直接又引入了一个cache缓存,他的速度介于CPU和内存之间。

  这下成了,CPU -> cache -> 内存 -> 硬盘,有这么多的缓存介质,才OK,至于为什么不都换成cache或者内存,速度这么快,emmm…只能说太贵了。

这下速度够快了,linux还是觉得差了点。

引入MMU内存管理单元的概念

  我们随便说一台电脑的配置,什么i7的CPU(随便举个例子,缓存是几M),8G的内存,1T的硬盘。

  速度是够了,但是问题在于大家的大小不一样啊,我要是有个10G的程序,8G内存那不是装不下?难道就运行不了了?

  所以linux引入了一个虚拟内存概念

  此时MMU出现了,他不存数据,而是建立一个映射的“表格”,他保存了虚拟地址和物理地址的映射关系。当你操作这些虚拟地址的时候,MMU就会找到他的物理地址去调用它。

  什么是虚拟地址?对于一个32位的CPU,他能表示的最大寻址空间是2^32=4GB,也就是虚拟内存有4G。即便我们用的1G的内存条,那么跑3G的程序也是没问题的,他会挪用一部分硬盘来当内存使。你这个3G的程序跑是能跑,只是会卡(毕竟硬盘速度很慢)。

  至于具体是怎么实现的,我也只是大致了解个概念,这些东西以后再深究吧…

收尾

  对于上系统来说,东西虽然看起来好像变复杂了,但是复杂的同时,也能让他能做的事变多了。而且这些复杂的东西不需要你全部完成,很多东西都是自动的(不然要系统干啥)。
  对于编写驱动来说,只需要操作虚拟地址即可。只要想操作的虚拟地址能对应上我们遥操作的那个物理地址,中间是怎么实现的自然有芯片厂家来做,他们会提供这个地址是如何映射的,我们只管看芯片手册,使用映射好的虚拟地址即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值