抠门的 WiFi 芯片厂家,抠门的程序员

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抠门的 WiFi 芯片厂家,抠门的程序员相关的知识,希望对你有一定的参考价值。

无线网卡

下图是常见的无线网卡

使用方法

单单一个无线网卡是无法正常工作的,它必须插在一台主机上,并且这台主机要安装网卡对应的驱动程序,才能让它正常工作。

软硬件剖析

当我还是 WiFi 小白的时候(现在是大白😋),常常想,我手中的这张 USB 无线网卡,我不把它插在电脑上,我直接把它插在手机充电器上,它能工作吗?

答案显然是否定的,接下来我们就一起分析下无线网卡的构造,以及其工作所需要的条件。

传统嵌入式设备硬件结构


CPU 将程序从 FLASH 加载到 RMA 中运行。RAM 和 FLASH 缺一不可,没有 RAM,CPU 直接从 FLASH 读取指令将会严重影响 CPU 效率,甚至有些 FLASH 无法按字节寻址,也就无法满足 CPU 取指令的要求;而没有 FLASH,设备掉电后程序和数据就丢失了,再次开机将无法正常工作,FLASH 存储的一般是这颗芯片的 firmware。

抠门的 WiFi 芯片厂家

从公司角度出发,都追求自家产品能够用最小的成本换取最大的利益,WiFi 芯片厂家也不例外,并且做到了极致。他们思索着,上面的硬件结构中,还能省去什么以节省成本呢?最后被他们想出来了:去掉 FLASH。因为他们知道,WiFi 芯片是不能单独工作的,必须要插在主机上进行工作,那么就砍掉 WiFi 芯片上的 FLASH,让主机帮忙存储 firmware。事实上,现在很多 WiFi 芯片都是这么干的。

BCM43455

我们以树莓派 3B+ 上的 WiFi 芯片 BCM43455 举例,其内部只有 CPU 和 RAM,没有 FLASH。而 WiFi 芯片的 firmware 是存放在主机的磁盘中,由 WiFi 芯片厂家提供,一般和驱动程序一起打包对外发布,甚至有些芯片的 firmware 是存在于驱动内部的。用户需要做的就是下载 WiFi 芯片的 firmware 和驱动程序。对于 BCM43455 而言,它们分别是 brcmfmac43455-sdio.bin、brcmfmac.ko(Linux 环境)。

整个工作流程是这样的,主机安装驱动 brcmfmac.ko,驱动会到指定目录下读取 brcmfmac43455-sdio.bin 文件,并将其传送给 BCM43455,BCM43455 会将其放在自己的 RAM 中去运行。对于 WiFi 芯片而言,这种方式和从自身的 FLASH 中加载 firmware 到 RAM 效果是一样的,所以索性就省掉了自身的 FLASH。而对于主机而言,由于拥有非常大的磁盘空间,存储一个几 MB 大小的 firmware 并不会产生负担。

抠门的程序员

本来还想,这些 WiFi 芯片厂家真是的,一颗 FLASH 都不想多加,还借助人家主机上的磁盘,可真抠门。但转念一想,作为程序员,特别是之前开发单片机程序,自己又何尝不抠门呢?还记得当时写程序时,能用 uint_8 类型的变量,绝不用 uint_16;数组大小能用 10 的,绝不用 15;甚至宁愿牺牲运行效率来降低代码大小,将结构体设置为按字节对齐。编译完程序后时常关注程序大小,生怕哪一天超出了单片机的 FLASH 大小范围。

抠门成就极致

但是,这种抠门并没有不好,反而是这种追求极致的思想,造就了无数不可能。举个例子,
我们都玩过超级玛丽,它有很多关卡,可以玩很久,但是它的大小只有 40KB,这就是程序员抠门所成就的极致。
例如,所有左右对称的图片都只存一半


草垛和云朵使用的是相同的图案,只是要改变下颜色就可以了。(小伙伴们直呼被骗惨了。。。😭)

把过关的音效快进 6 倍就是吃到蘑菇变身时的音效,等等。

正是这些抠门造就了这么多伟大的成就,不是吗?

以上是关于抠门的 WiFi 芯片厂家,抠门的程序员的主要内容,如果未能解决你的问题,请参考以下文章

她/Ruby Silvious 被称为世界上最抠门的艺术家

不是冤家不碰头:贝索斯和马斯克入选福布斯“全球最抠门亿万富豪”榜单

年薪百万的金融人在露富,年薪百万的互联网人在抠门…

Ruby Silvious这个世界上最抠门的女人,能把你身边的每样垃圾,都变成价值连城的艺术品

程序员恋爱基本功

做为一名程序猿你是否有过这样的困惑