Linux哪些东西是和硬件相关的

5 篇文章 0 订阅
2 篇文章 0 订阅

Linux哪些东西是和硬件相关的

学习linux内核总感觉搞不清在不同的cpu体系结构上linux到底有哪些是相同的,哪些是不同的,因此在此仔细的想啊想的(看了s3c2440和i386的资料有些感觉,然后就觉得看源码验证之前先自己猜一猜效率很高,脑袋不乱哎)。

1对于硬件的使用。

我一个硬件就挂在那,你怎么也不见得能知道我是干什么的吧?

最最原始的想法是我写一个裸奔程序肯定能够在有硬件原理图,知道硬件配置(哪个地址是哪个设备)那我肯定能操作哪个硬件了。

然后呢,最原始的办法是某个特定的驱动(这里用驱动这个词是想说这个程序是在有系统的环境上运行的O(∩_∩)O~)针对某个特定的板子的配置自己去按硬件地址弄呗。

接下来我会试着分析下几种硬件的识别。首先我们要明白有了硬件原理图,我们就得到了最具体的配置,就有了所有的配置信息。但是呢,如果每个系统都按照每一个硬件去具体配置,非常的麻烦,而且有些板子的硬件配置是相同的或相似的,因此一类板子会共享一些配置信息。

内存这种硬件,不同的板子差别非常的大(大小的差别,在内存空间上的差别)。那是根据板子的原理图在系统编译的时候自己配置呢,还是共享一类配置呢,还是能够写个小程序探测呢?我认为都可以,且倾向于最后一种(如果可能的话----不可能实现的话那就得配置了呗---废话了吗--------这里说的内存就是实际的内存硬件,不包括io硬件的寄存器)。

2完全和cpu体系结构啊之类相关的

如cpu进入低功耗状态,中断进入和退出。他们可能在这个cpu体系结构上要这样,在那个cpu体系结构上要另一种做法。但是呢,他们完全都属于linux对于操作系统一个特色的抽象的一个具体实现(他们表达的是一个相同的概念)。因此,他们可能是和硬件相关的代码。

3和板子的架构相关的(各种总线啊,桥啊的)

在有些资料上面看到过cpu地址引脚上出现的地址叫做xxx地址(忘了叫什么地址了),然后在地址总线上出现的地址可能是叫xxxx的地址。在然后总线上的每一个设备对这些地址进行解读(好像解读方法也不一样  乱啊)。然后还有就是cpu与cpu之间,与内存之间的总线,pci总线,isa总线共存。说了这么多一堆,如果不是硬件上做到了透明的话(cpu的地址就是各种总线上的地址(可能真的不是透明的)),那软件来做呗。然后就跟上面讲的似的,由驱动程序来根据硬件的配置来驱动各种芯片来进行时序的转换什么的。在linux里面提供了两种方法来进行io:io端口和io内存。然后他提供函数给你去读写这些东西。各种总线在一级一级的转换时序。如果是最简单的cpu引脚就是直接连接到硬件的引脚上那么好说,这相当于第0级的总线,直接访问(或者说第0级总线的访问函数里面就是直接访问)如果有其他级别的总线,那一级一级调用驱动读写吧。接口函数就是想Readl()种的,在这种里面在和驱动打交道去(这种函数就是接口,api)。感觉这里的逻辑是,设备挂在什么总线上就要满足什么时序(要么你干嘛来了),总线的驱动可能就是说要在初始化的时候或动态的配置总线桥的各种参数。

Ok,over。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值