方案选择
SOC方案选择不多,暂时只发现高通和联芯通两家。模块方案较多,基本都是基于高通方案实现的。
想要获取高通原厂的技术支持比较困难,但考虑到产品的稳定性还是选择了高通。
- 高通: https://www.qualcomm.com/products/internet-of-things/networking/wi-fi-networks/qca7005
- 联芯通:https://www.unicomsemi.com/product-item-9.html
开发资料
网上基本找不到关于QCA7005的开发资料是因为这些资料是机密,要获取到官方开发资料流程如下:
- 以企业邮箱注册高通账号
- 按高通邮件提示提供营业执照完成认证
- 签署保密协议(NDA)
- 销售协助申请开发资料
- 下载
固件烧录
QCA7005出厂是没有固件的。
其固件分为两个文件,一个是NVM(即我们常说的固件),一个是PIB(可以理解为配置文件)。
可以选择从host(即主控MCU)启动,但一般会选择外置一颗flash,将固件烧录到flash中。
一种方案是用flash烧录器直接烧录好flash再贴片,但固件在flash中的地址无从得知,一个可行的方案是从已经烧录好的flash中克隆。
另一种方案则是采用官方上位机软件进行烧录。
这里介绍AVitar,一个windows桌面软件。
烧录原理为AVitar将MAC层的包发给host,host将其通过SPI转发给QCA7005,QCA7005再将固件写入flash。
这就需要MCU具备另一个网口,并能将其与QCA7005的SPI进行桥接,这一部分需要软件来实现。
其烧录步骤大致如下:
- 修改PIB中的MAC地址(强制的),并将NVM和PIB发送到QCA7005,这是运行SoftwareLoader的前提;
- 将一个名为SoftwareLoader的NVM发送到QCA7005;
- 再次修改PIB中的MAC地址,并将NVM和PIB发送到QCA7005,此时SoftwareLoader将固件写入flash。
驱动程序
目前host采用MPU+linux系统的结构比较常见,因为官方给出的是linux的驱动程序,且已经被较新版本的linux内核集成,只需编译即可使用。如果使用MCU则需要自己解决驱动问题,甚至是MAC,IPV6,UDP,TCP的手动组包。这存在一定的难度,但确实可以实现。
应用程序
一般是参考一些开源项目
https://github.com/bert-qin/open-plc-utils
https://github.com/Martin-P/OpenV2G