ath6kl 架构
转:http://blog.csdn.net/robertsong2004/article/details/38899415
AR600x软件被划分为主机端和目标端软件。主机端软件或驱动程序的代码被提供作为平台/操作系统包括 Linux的参考实现。 当前的Linux驱动程序被称为“ath6kl”或AR600x系列芯片的Legacy驱动程序。目标侧软件或固件在芯片的网络处理器上运行,并存储在目 标存储器中。它是由Atheros进行维护并作为二进制文件发布。
“ath6kl”驱动程序分为以下几个层次,它们共同定义了主机的软件堆栈。 在一般情况下,最高层的函数可能调用相同层或向下一层的其它函数。函数不直接调用更高一层的函数,但上层可以注册下层的回调。该驱动程序组件的简要总结如下。
无线设备驱动
桥接内核和HTC /
WMI层之间的控制和数据路径。在控制路径上,它可以同时处理厂商专有的ioctl和标准的由wireless
extensions定义的ioctl。该层也实现了CFG80211的API,因此提供了对基于nl80211应用程序的支持。
在数据路径上它处理了HTC层和IP协议栈之间的数据。 相关的源代码在在于ath6kl/os/linux 目录下。
无线模块接口 (WMI)
如果无线应用程序必须发送控制信息到AR600x芯片组,它调用WMI来创建消息。
该层解析主机/目标信息协议(WMI协议)和它的源代码是在ath6kl/wmi/ 目录下。 ath6kl
/include/wmi.h和ath6kl/include/wmix.h头文件列出从主机到目标(命令)以及从目标到主机(请求和事件)的所有信
息。
主机/目标机通信 (HTC)
无线设备驱动程序调用HTC来处理消息传输。 HTC不解析消息传输的内容(仅WMI了解控制消息的内容),但它确实明白与AR600x芯片组的消息传递机制。它处理流控制和知道哪些芯片组地址必须读取和写入来传送讯息。 这一层的代码在ath6kl/htc2/目录下。
主机互连框架 (HIF)
HTC 在它需要访问的芯片组地址空间时,调用到HIF层。平台和互联API的每个组合都有对应的HIF实现(例如,面向Linux标准 SDIO/MMC 栈的HIF)。 这一层抽象了寄存器和内存访问的细节,并提供了一个互连无关,平台无关的API(主要)给HTC使用。 这一层的代码在ath6kl/hif/目录下。
物理互连
HIF层依赖于底层的特定互连和特定于平台的软件来驱动某种类型的硬件控制器。互连层起着发现设备的作用,建立一 个适当的地址空间映射并能过该地址空间执行读取/写入,并处理物理连接上的错误管理。对于大多数串行总线,HIF层与一个总线驱动进行交互,该总线驱动提 供了底层的主机总线适配器的抽象。这些总线驱动可以由合作伙伴,操作系统供应商,或Atheros公司来提供。
另外参考对应的 ath10k 组件架构:
ath6kl 架构的更多相关文章
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- DDD CQRS架构和传统架构的优缺点比较
明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- 谈一下关于CQRS架构如何实现高性能
CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...
- Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
随机推荐
- innodb 隔离等级
前一段时间参加了一个国内知名公司的面试,被问及对数据库的了解,自感还不错,可谁知在隔离等级这种基本概念的点翻个船,也不是因为完全不懂,而是本来这里就比较晦涩,加之具体上次看这里的东西时候已经过了一年多 ...
- CentOS7或CentOS8 安装VirtualBox Guest Addon缺少kernel-headers的解决办法
CentOS7或CentOS8 在Oracle VM VirtualBox中安装Guest Addon时,如果缺少kernel-headers和相应的编译库,会提示出错. "kernel h ...
- Quickcocos从安装到打包
Quick-Cocos2dx-Community 是跨平台的游戏引擎,支持时下流行的 Android 移动操作系统.本节将教大家如何在 Windows 上把已经开发好的游戏打包为 Android 上可 ...
- 分类并查集[noi2001 食物链]
题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=pxNJzxVPU 题目有三种动物,A吃B,B吃C,C吃A 即B是A的食物,A是B的天敌, ...
- mysql数据库之事务与存储过程
事务 什么是事务? 事务是指一些SQL语句的集合,这些语句同时执行成功完成某项功能 事务的CAID特性: 原子性:一个事务的执行是整体性的,要么内部所有语句都执行成功,要么一个都别想成功 一致性:事务 ...
- MySQL连接处理方式及最佳并发连接数设置
MySQL连接处理方式及最佳并发连接数设置 mysql是单进程,多线程的架构,通过创建多个线程来服务不同的用户连接,通常情况下,随着用户连接数的增加,mysql内部用于处理用户连接的线程也会同步的增长 ...
- 解决Win7上的连接access数据库的问题
最近做了一个win桌面程序,没有用sql 数据库,而是用access数据库,因为access比sql用起来方便多了,最主要是不要安装sql server,直接放在程序里面,然后创建连接字符就可以了,s ...
- windows环境jar包部署到linux服务器,一键操作(帮助说明)
背景:在上次https://www.cnblogs.com/shexunyu/p/11165282.html发布了第一个版本后,后面增加了相关功能 需求:做下简单的说明文档 下载:https://fi ...
- 「java.util.concurrent并发包」之 ThreadPoolExecutor
一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // T ...
- 题解 P3627 【[APIO2009]抢掠计划】
咕了四个小时整整一晚上 P3627 [APIO2009] 抢掠计划(https://www.luogu.org/problemnew/show/P3627) 不难看出答案即为该有向图的最长链长度(允许 ...