- Android Looper 和 Handler 分析
- Android MediaScanner 详尽分析
- Android 深入浅出之 Binder 机制
- 第一部分 AudioTrack 分析
- 第二部分 AudioFlinger 分析
- Android 深入浅出之 Audio 第三部分 Audio Policy
- Android 深入浅出之 Zygote
- Android 深入浅出之 Surface
- Linux Kernel 系列一 开篇和 Kernel 启动概要
- Linux Kernel 系列二 用户空间的初始化
- Linux Kernel 系列三 Kernel 编译和链接中的 linker script 语法详解
- 第五章 深入理解常见类
- linux kernel 系列四 嵌入式系统中的文件系统以及 MTD
- 随笔之 Android 平台上的进程调度探讨
- Android 4.0 External 下功能库说明
- 随笔之 Android 不吐不快
- Android Rom 移植知识普及
- 深入理解 Android 系列书籍的规划路线图
- Android 4.1 初识 - 7月12号
- Android 4.1 初识 - 7月13号
- Android 4.1 Surface 系统变化说明
- Android BSP 成长计划随笔之虚拟设备搭建和 input 系统
- 深入理解 Android 写作背后的故事
- 随笔之 GoldFish Kernel 启动过程中 arm 汇编分析
- Android Project Butter 分析
- Android Says Bonjour
- MTP in Android
- DRM in Android
- Tieto 公司 Android 多窗口解决方案展示
- 深入理解 SELinux SEAndroid 之二
- 深入理解 SELinux SEAndroid(最后部分)
- 前言
- 附录
- 第一章 准备工作
- 第二章 深入理解 Netd
- 第三章 Wi-Fi 基础知识
- 第四章 深入理解 wpa_supplicant
- 第五章 深入理解 WifiService
- 第六章 深入理解 wi-Fi Simple Configuration
- 第七章 深入理解 Wi-Fi P2P
- 第八章 深入理解 NFC
- 第九章 深入理解 GPS
- Google I/O 2014 之 Android 面面观
- 深入理解 Android 之 Java Security 第一部分
- 深入理解 Android 之 Java Security 第二部分(Final)
- 深入理解 Android 之设备加密 Device Encryption
- 第一章 阅读前的准备工作
- 第二章 深入理解 JNI
- 第三章 深入理解 init
- 第四章 深入理解 Zygote
- 第五章 深入理解常见类
- 第六章 深入理解 Binder
- 第七章 深入理解 Audio 系统
- 第八章 深入理解 Surface 系统
- 第九章 深入理解 Vold 和 Rild
- 第十章 深入理解 MediaScanner
- 第一章 开发环境部署
- 第二章 深入理解 Java Binder 和 MessageQueue
- 第三章 深入理解 SystemServer
- 第四章 深入理解 PackageManagerService
- 第五章 深入理解 PowerManagerService
- 第六章 深入理解 ActivityManagerService
- 第七章 深入理解 ContentProvider
- 第八章 深入理解 ContentService 和 AccountManagerService
- 第一章 开发环境部署
- 第二章 深入理解 Java Binder 和 MessageQueue
- 第三章 深入理解 AudioService
- 第四章 深入理解 WindowManagerService
- 第五章 深入理解 Android 输入系统
- 第六章 深入理解控件(ViewRoot)系统
- 第七章 深入理解 SystemUI
- 第八章 深入理解 Android 壁纸
- 边缘设备、系统及计算杂谈(16)——Apache 学习
- 边缘设备、系统及计算杂谈(17)——Ansible 学习
- ZFS 和 LVM
- Android 4.2 蓝牙介绍
- 了解一下 Android 10 中的 APEX
- 关于 Android 学习的三个终极问题
- 深入理解 Android 之 AOP
- Android 系统性能调优工具介绍
- 深入理解 SELinux SEAndroid(第一部分)
- Android Wi-Fi Display(Miracast)介绍
- 深入理解 Android 之 Gradle
附录
附录的内容来自笔者和吴劲良先生的几份讨论邮件,此处略有修改。
[-->笔者发给吴劲良先生的邮件]
吴兄:
我有几个问题想和你深层次讨论下,就是关于这本书的定位:
我先说说我的看法:
1)对于初学者(就是完全没有wifi,nfc,gps经验的人),这本书肯定是入门书,但是它的难度比普通意义上认为的入门书难。
2)对于中级学者,这些人定位在1-2年或者那些有过实际改bug的经验,但是缺乏全局理解的人,那么这本书也合适。不过,可能有部分内容对他们来说比较简单。另外,关于NFC和GPS的知识,从我们统计的情况来看,NFC和GPS的问题非常少。从面试情况来看,对NFC芯片的datasheet的了解(GPS应该是没有这方面公开的资料)也很重要。不过本书没有考虑NFC,GPS以及Wi-Fi HAL层的内容。一方面我感觉Wi-Fi驱动层和协议结合非常紧密,有点钻研精神的读者在本书基础上,再加上一些驱动经验就可以搞定。而NFC HAL层未来发展趋势可能会和wpa_supplicant一样,即不会出现NXP,Broadcom这样太过特定的内容。GPS一般不太可能让外人看到驱动的代码了吧?我专门看过QC开源项目Codeaurora[①]中GPS的HAL代码。它是C/S架构的,只有Client端内容,而且都是简单的发些命令,然后接收回复,没有核心的东西。
3)对于高级学者,例如那些经验和理论知识都比较到位的人,那这本书唯一的优势可能就是当做参考书来看了,不过内容相对会浅显点。
另外,昨天和Eva沟通后,觉得本书没有太多实际经验,确实如此。我自己定位这本书还是想打通整个知识面,实际经验的话,需要理论联系实践。现在很多工程师只有实践,没有理论,或者理论关注较少。另一方面,如果专门讲实践,这种书反而价值不高,因为可操作性太低。它不像网管类的书籍,一步一步跟着做就行了。
这是我对本书定位的一些看法,吴兄,你能否从一线工程师,培养新人等多个方面讲下你的感受么?不足之处也提出来哈。
最后,写完这本书后,我感觉在Wi-Fi、NFC和GPS这几块,核心都是芯片厂商做好了,我们唯一可做的就是改改bug,攒足实战经验,似乎可发挥的地方非常少(NFC CE模式还有很多发挥空间,尤其是安全交付解决方案之类的)。吴兄,对这个问题又怎么看呢?
诚挚欢迎吴兄的金玉良言!
Br
邓凡平
[-->吴劲良先生的回复]
邓兄:
1)正如邓兄说提到,这本书对不同知识深度的学者而言,会有各自的收获,可引初学者入门,可给中级学者问题分析的线索,可给高级学者一个知识思索的机会(对比自己的理解和补充下知识),书就起抛砖引玉的作用,不同的读者收中收获多少还得看个人,多思考的读者还可以从书中学习到邓兄分析问题的思路、会反思如何提升自己的搜索的技巧。
2)这本书是理论分析为主,没具体问题的解答,但是我觉得够了。这不是一本Q&A的书,WiFi、NFC、GPS这三大部分,Android涉及的主干支知识都有,读者可以做选择性的深入分析,各个人对知识点的追求都不一样,很难满足所有人的需求,就个人而言,我会对android Wi-Fi的休眠策略、Location的网络定位感兴趣,这跟实际工作遇到的问题相关。
3)“NFC和GPS问题非常少”,这会跟功能模块是否被广泛使用和应用的广度有关,被使用多了可能会暴露多些问题,应用场景多也会促使功能的开发,自然会引出新问题。GPS HAL的代码各厂家都不提供,Broadcom、MTK、RDA均只是提供so,有可能是涉及到核心技术,估计是一些Command的实现,GPS一般是UART接口,UART只负责上层与模组的数据通讯。
4)对于负责无线模组的新人,我对他们工作的安排是:先做功能的验证测试,让他从测试中加深对功能点的理解,知道哪些点是容易出问题;然后会给一些已经调试ok的模组让其单独去调试,目的是熟悉调试一个模块需要做哪些工作;最后会渐渐的让其承担一些实际任务。学习的安排是:学习NL802.11,USB、SDIO、UART和I2C等模组接口驱动的分析,然后会从内核往Android学习,如:Wi-Fi driver->netd->wpa_supplicant->HAL->framework,Android会安排一些核心知识点的学习,主要是理清工作的机制。最终是希望新人在头脑有有一幅Android网络结构图,并能将其画出来。
5)由于需要先确保相关的外围模组能配合主控使用,这也决定平常无线工作的重点会在模组的移植调试上,涉及的内核驱动的调试较多,现在android做得越来越完善,大问题很少,小问题还是有,但解起来还好(Android4.4上Wi-Fi目前测试出原生代码有几个bug,较严重的一个是在关闭Wi-Fi时没关闭supplicant创建的socket,每次打开Wi-Fi时又创建,socket打开个数累积超过65536时,后续操作将失败)。
6)无线模块Wi-Fi、BT、NFC和GPS,核心的技术是在芯片厂,而且是在芯片设计中,driver的编写只是其中的很小一部分,即使是相对复杂的Wi-Fi Driver,投入两三个人,花两个月的时间把driver写出来是完全没问题。这个我也认同发挥的地方很少,除非是从应用角度去开发新的功能或做一些功能创新。但从工作的角度看,要把这些无线模块支持好,也不是不容易,调一款新的Wi-Fi就像在弄一个小系统,需要把系统调稳,没有bug并可以达到量产的标准,这往往会耗上一两个月的时间。虽然发挥的地方是少,但当前看这方便的技术人员的需求还是挺大的。
Br.
吴劲良
[①]https://www.codeaurora.org/,上面可下载高通参考设计(QC Reference Design)的代码。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论