bcmf[2] 驱动:初始化
本文总结BCM43438的初始化流程,初始化成功的标志是连上WiFi。
参考WICED SDK、NuttX,以及Linux的源码,它们的流程略有不同。Linux的驱动面面俱到;WICED的驱动虽只针对物联网设备,却写得相当冗杂;nuttx的驱动则相当简洁恰好能用。
WICED可从Cypress官网上下载,注册个账号就好了。这份软件架构简直是一切以WICED为中心,有bootloader、dct(Device Configuration Table)、OTA(Over The Air)等自创的元素,如果用它支持的平台如stm32的话,那可以非常迅速地出成果,然而如果要移植到别的CPU架构的话它并不太友好。。
NuttX可从bitbucket/nuttx上git clone一份,或者从SourceForge下载代码包。SourceForge上面的7.24及以前的驱动有问题,我在bitbucket上提交了这份commit。bitbucket在墙内访问相当不稳定。。
Linux可以直接访问Bootlin的Linux Cross Reference。在Linux内核中,博通SDIO接口的网卡驱动是brcmfmac,归类到brcm80211,这是博通官方提供的驱动,需要non-free的固件。b43的驱动是社区通过一些逆向工程实现的,只支持老版的PCIe网卡。。
初始化过程纯粹就是面向过程的代码,因此以下通过罗列它们的流程来进行分析。
固件这玩意儿想必是厂商喜闻乐见的东西——在你编写的程序中安插黑盒子,而你又无可奈何。
阅读全文…