转: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 架构的更多相关文章

  1. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  2. node服务的监控预警系统架构

    需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...

  3. 如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...

  4. 浅谈 jQuery 核心架构设计

    jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...

  5. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  6. DDD CQRS架构和传统架构的优缺点比较

    明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...

  7. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  8. 谈一下关于CQRS架构如何实现高性能

    CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...

  9. Windows平台分布式架构实践 - 负载均衡

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

随机推荐

  1. Spring-Kafka —— 实现批量消费和手动提交offset

    spring-kafka的官方文档介绍,可以知道自1.1版本之后, @KafkaListener开始支持批量消费,只需要设置batchListener参数为true 把application.yml中 ...

  2. Java泛型(11):潜在类型机制

    泛型的目标之一就是能够编写尽可能广泛应用的代码. 为了实现这一点,我们需要各种途径来放松对我们的代码将要作用的类型所做的限制,同时不丢失静态类型检查的好处.即写出更加泛化的代码. Java泛型看起来是 ...

  3. 前端学习(一) body标签(下)

    今日主要内容: 列表标签 <ul>.<ol>.<dl> 表格标签 <table> 表单标签 <fom> 一.列表标签 列表标签分为三种. 1 ...

  4. [ES6 系列] 你真的了解ES6吗(一)

    前言 无论是我们日常开发还是面试跳坑, ES6 已经变得越来越重要,那么你是否对它足够熟悉呢 ES6 将会是专栏接下来的一个系列,从最基础的概念或者有趣的问题开始逐渐深入,探究 ES6 常用的特性以及 ...

  5. dfs -cogs 5 P服务点设置

    题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=FSXJmiJSg   问题描述为了进一步普及九年义务教育,政府要在某乡镇建立P所希望小学 ...

  6. Linux企业面试题(一)

    一.如何过滤出已知当前目录dongdaxia中的所有一级目录(提示:不包含dongdaxia目录下面目录的子目录及隐藏目录,即只能是一级目录)? 1. 过滤以“d”开头的 2.查看以/结尾的目录 3. ...

  7. Linux就该这么学——初识vim编辑器

    在Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数 初识Vim编辑器 Vim编辑器顾名思义就是用来编写脚本程序的”记事本” Vim编辑器模式 : 命令模式 : 控制光标移动,可对 ...

  8. 并不对劲的复健训练-bzoj5339:loj2578:p4593:[TJOI2018]教科书般的亵渎

    题目大意 题目链接 题解 先将\(a\)排序. \(k\)看上去等于怪的血量连续段的个数,但是要注意当存在\(a_i+1=a_{i+1}\)时,虽然它们之间的连续段为空,但是还要算上:而当\(a_m= ...

  9. hdu 1576

    老生常谈的问题 利用同余的思想 抽象出表达式  bx+9973y=n 然后用bx+9973y=1(题目给出了gcd(b,9973)=1) 求出基础解 y0 bx+9973y=n 的 基础解y=n*y0 ...

  10. 点击导航目录页面滑动到指定div区域

    $(document).on("click", ".navbar-nav li[link]", function() { nav.find('li').remo ...