| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 对家庭网络设备行业的理解 -> 正文阅读 |
|
[嵌入式]对家庭网络设备行业的理解 |
本人从事网络设备开发,本文观点限行家庭网络设备的开发,尤其指家用无线路由器(以下行业所指代或以此为出发点)。限于作者水平,必然存在理解的局限,请多包涵和指摘。 一、行业发展的动力主要为802.11协议的发展,即无线局域网的技术进步,推动了行业的向前发展。 一个行业的发展,有赖于市场环境(用户需求,如笔记本、手机)、其它技术的发展(如制造业、供应、有线、接入网络)等共同形成适用的场景,为其发展铺平了道路,但在其繁荣的过程中,一定会有一条主脉络,促使起向发展。 先将无线路由器的主要接入技术进行剖析:802.3与802.11。其代表了以太网和无线的发展。 有线协议的发展有线的802.3由以太网和光纤通信两部分组成; 我们重点看下以太网协议的几个关键里程碑点:
在家庭网络设备上,上行运营商出口带宽的扩大、电脑的普及,促使了家用路由器的发展。在国内铜退光进的发展大趋势很快,以至于很多人都没见过DSL设备,只有在操作系统或路由器配置中见过输入DSL拨号密码和账号,不理解DSL拨号是啥。 虽然以太网发展很快,但在家庭网络设备领域是跟不上的。百兆的以太网就用了十年,再到千兆以太网,又是十年。时至今日,千兆以太网仍是绝对的主流,极少的厂商推出2.5Gbps的家庭网络设备,但这需要上行运营商以及用户的PC的支持,不然仍属于性能的冗余。 如果没有Wifi的发展,那么故事会单调很多。我记得2011年刚毕业到公司,负责开发一个款简单的百兆有线家用路由器,1个WAN口4个LAN口,芯片方案是IC+的,与其说是开发,不如说是改改页面,当时只在UI层做些调整,然后捆包编译,发布版本。虽然过了很多年,但记忆比较深的是,编译出的一百K左右大小的img可以直接升级(所跑的系统应该是芯片厂商自研的),运行在没有MMU的硬件上,其它的都已经被芯片厂商集成了。而做这个开发的只有我的导师和我,当时我导师非常郑重的把这个软件的开发和维护交给我,让我倍感重视。便随着开发经验的增长,我渐渐理解,如果没有技术的更新迭代,那么芯片厂商之下,便不会再有开发工作,只会有模块集成,这点可以参考蓝牙。 无线协议的发展
引《中国联通wifi6技术白皮书》 通过协议发展过程看,这系统的技术迭代,潜在需求是用户对无线网络应用需求,它可以给人们提供不限流量、带宽稳定、方便移动的覆盖网络; 各个芯片厂商、设备制造厂商、wifi联盟、运营商等共同参与,推动了技术的发展,造就了无线网络设备行业的发展。 我们可以假设无线发展假设停止在11n(09年),那么这个行业很难有现在的规模,我大胆猜测,应该就如同刚毕业时,我所做那个有线路由器一般,芯片厂商通过异构CPU将软件集成化,缩短产业链条,降低芯片成本,下游就只剩下模块集成厂商,不会再有大规模的开发。 二、行业的组成用户需求在智能手机发展的年代,人们对流量的需求排山倒海涌来,山寨机年代的3G无法满足,普及的4G流量太贵,一个wifi热点拯救了勤劳大众,以至于运营商的wifi覆盖方案繁荣一时,几年的光影谢幕。现在的手机、笔记本、pad等,都依赖于无线,家用无线已经非常普及,运营商的接入带宽扩大(200Mbps很普遍了,一线城市500M也很平常了),用户需要更稳定、速度快、覆盖广的无线。 技术标准制定Wi-fi商业联盟的推动,IEEE协会的标准化,不得不说wi-fi联盟的非常成功,其能在行业内保证彼此设备的兼容性,运作上非常有借鉴意思。技术组织制定协议的标准,技术指标,这一过程也是与芯片开发的过程交织互动,即要有技术的标准性,又要有技术的可行性,这是一个良性互动。 芯片厂商芯片厂商有高有代,有的引领技术发展,吃第一波红利,有的跟随技术发展,收割市场,这里就不点名了,相信大家都懂。芯片厂商是行业的上游了,其研发芯片,提供软件SDK,就技术而言,其作用是决定性,在一个家用路由器的设备中,芯片厂商提供的主芯片占产品总成本的近50%。受疫情影响,芯片厂商产能下降,原本芯片厂商间的竞争,变成了芯片是香饽饽,这两年的芯片厂商与设备厂商的关系倒转,很有掉头,河东河西。 设备制造商拿到芯片研发产品,制造生产,渠道销售。在这里能做到研、产、销就算把这个环节打通了。笔者处于这环节上的一名普通软件研发。这一环节是行业比较累的环节了,也充分体现了中国制造。但在这里,无论研发、制造、销售,都有其独特的竞争力和专业性,不然以前的美国或台湾的设备厂商,也不会逐一衰落,中国设备厂商占了这个市场的绝对优势,设备厂商的崛起这与中国制造能力、供应链的整合能力相关(低廉的研发就不提了)。曾有一位领导说,看一个行业竞争是否激烈,就看这个行业头部的公司前五名,是否有2家是中国的企业。中国公司没进入网络设备行业前,大家看查看下网络设备的价格,怎一个高字也得,而如今一台家用级别的普通路由器100~200之间,真心是让技术惠及至千家万户。 市场/代理商这一层属于赚品牌、赚渠道、赚差价的钱了,无论国内还是国外,来定制设备进行转销的公司很多。这类客户统称OEM,部分ODM。在市场上,能赚钱就是王道,并无贬低之意,这就是贸易。在他们看来,这个行业无论是技术发展、还是芯片设备制造,最终是要为用户提供有价值的产品,而他们是在为用户获取产品,销售/服务用户,是非常必要的一环。 终端用户价值的实现点,只有产品做得好,用户买单了,才是最终兑现了价值,整个产业链路也是在这个环节上获益,所以说客户是上帝么。终端用户的规模,也决定了这个市场的规模,决定了这个行业的成熟度。这个市场处于增量或是存量,就决定了资本的态度,影响了整个行业。就目前看,中东非还有空白,技术迭代产品在世界范围内都会涉及升级替换,就算到了存量阶段,家庭路由器一个庞大体量的市场,2~3年的产品更换周期,会维持住这个市场的规模,只不过会加大竞争,降低成本(个人认为成本降低就是技术发展的趋势,毕竟投入这么资本和人力,在各个环节都会有积累,就会有进步,体现在效率上)。 三、行业中软件研发本节主要从设备厂商视角出发,从技术角度看问题。回答个人软件技术成长上的一些疑问,提供参考。 直接打开研发层面:利用芯片厂商提供的套片进行开发,软件基于SDK进行开发,因为芯片厂商已经把驱动、kernel版本等提供好了,完全没必要再造轮子了。 对于小公司来说,如果已经做了一个芯片方案,现在想切到另一个方案(厂商不同),基本上是基于SDK做小规模改动; 对于大公司来讲,其会存在一个应用平台,将芯片方案的SDK包在其内部进行开发。 方案选型,公司会基于市场的竞品,公司技术水平(是否有做过此方案),合作关系来决定(疫情期间是特例)。 硬件开发,基于芯片厂商的Demo,做一定的Costdown,一方面对齐芯片厂商Demo的性能、稳定性,一方面发挥公司供应链的优势,最大限度上保证产品的综合最优。尤其是无线的射频、功率。 软件开发,将评估版本的功能需求,将SDK内化到软件平台、或将平台适配SDK版本(取决于大平台或小平台),完成软件功能开发,一定范围内的性能调优。解决软件问题,尤其是性能与稳定性相关。 测试阶段,完成原型机测试、工程样测试、SVT测试、Beta测试等,保证产品质量,发布软件。 关于产品需求为啥略过去了,因为就笔者目前接触过的产品经理来看,更偏向于硬件规格、市场前端,对于软件需求分析、长期规划来讲,能力较弱。如果按原型方法,抄抄竞品尚可,如果提及结构化需求分析方法或面向对象需求分析,那就是盲区了。这是由这个行业或至少是现在这样也能向下走。 研发流程,决定了组织形态,其目的是整合资源,提高效率。 相信看到这里,对于高谈阔论已经看完了,想看点细节,我以一个案例展开。
首先从大的方面,要理解2点1、大部分人对公司经营和管理分不清,不能理解公司大的决策,仅能看到好像对自己有益或有弊。 2、技术是公司发展赢利或工作赚钱中的工具,自身的成长和进步需要有正确的技术态度和不断内驱的初心,方是终身学习持续进步的道路。没有一家公司会以新技术领先为目标,不过是包裹在持续经营之外的装饰。没有一家公司会不需要技术,只是有些技术是成熟的。 其次,底层协议/技术的发展如IPv4已经存在40多年,是底层基础,而IPv6提出距今也已经30多年,单纯名词角度大部分人朗朗上口,但细节角度就需要不断积累,我所见到的开发人员,能掌握TCP/IP卷1基本基础的,为数不多。如TCP的协议状态,如点对点协议发展,如IP协议发展及安全性等,基本很少有能谈出自己的理解,更不必谈技术趋势了。笔者与15年左右接触过BRCM的技术开发团队,印象很深的是他们技术团队(来自中国台湾)的年龄普遍较高,尤其是做IPv6那位,头发全白了,感觉得有50了,他介绍所使用的IPv6协议栈来自于BSD的某个版本,由于开源协议限制(eCos系统,单进程多线程小巧系统),不能使用GPL的模块,实现了一个类似iptable规则的配置工具。从交流了,他们一半不流利的普通话(台湾腔)加一半英语,他们都做了十年二十年技术,这就是一份工作,养家及自己爱好,对技术的发展有自己的见证和理解。 对于网络设备开发涉及C语言基础组成原理、操作系统。很多投入开发的人员,并非大学专业就是计算机,有的甚至是半道参加了某清某见、某嵌的培训班,然后投入开发的。但如果对爱好技术、打算以此为期职业发展的开发人员来讲,那么欠下的基础始终要补上的。如CPU处理一条指令的过程?流水线CPU及加速比?段式内存管理与页式内存管理 ?PV操作?编译过过程有哪些?库的链接过程?结构化设计中,模块设计的原则; 耦合的分类?测试有哪些各类,白盒测试有哪一些......在持续学习、甚至终身学习的过程,不断的完善自己的知识体系结构,记录笔记形成积累。 有些开发人员会问,不就是解决问题么,不就是解决平台中的逻辑问题,分析协议中潜在的错误,开发移植功能么?有必要跟我谈这些么?是啊,大部分情况下,大部分人都是这么想的,我能解决问题,给公司干活不就得了,跟我谈这些没有用的,说不定你解决问题速度还没我快呢。程序员或开发者在当前的大环境中,被定义为青春饭,但这样的导向是不对的,不利于整体的利益和行业的发展; 过于浮躁的态度则决定无法投入更有技术难度的开发,这并不是光光行业格局所决定的。试想下为什么35岁被认为是开发人员的一个坎?随着芯片国产化的趋势展开,需要技术基础扎实的人员投入,这也是很好的机会。 最后,看下软件开发大的过程。软件平台功能开发:这部分是绝大数开发人员所做的,由于产品外部的变化(有限功能集合的重新划分,个人觉得有部分浪费人力,不符合人机交互的黄金三原则),适配特殊的接入环境,新的协议功能开发,用户场景优化。这部分任何大的公司,会有一定的平台或往小了说是成熟的模块来支撑。 无线功性能调试:基于与芯片厂商的分工,保证驱动配置的正确性。在硬件无线射频参数、指标正常的基础上,进行一定的无线调测。无线测试过程中,无线的频宽、信道、功率、天线的方向,始终是指标项的外部调试重点; 而PHY层、MAC层配置,一般由Datasheet指定,如果芯片厂商开放,则可调试空间会大很多; 如果没有,那么只能依赖于芯片厂商,这个是由分工所决定的,芯片厂商的技术能力,也制约了最终产品的能力; 有些新的芯片方案刚好来,本身软、硬都有一定的缺陷,需要设备厂商在产品化过程中,共同解决。根据无线的原理性参数、结合特定的场景,可以调试出符合特定场景的组合参数,如提高ED的阈值、降低接收灵敏度可以提高干扰性能;适当提高识别音频流的队列优先级,降低时延;调整ATF参数,提高接入设备的流量均衡等等。和接入AP点控制、漫游、Easymesh扩展等场景参数,仍然需要大量的测试验证、理论分析验证。某些设备厂商为了提高无线空口竞争,不遵守协议;某些测试仪器发包过程不竞争窗口;这不是好的行为,毕竟2.4G、5G是免费公用的频段,要共存、共用这段资源。wifi性能的提升,也促使网络设备采用了多核CPU结构,淘汰了一些不支持SMP的系统,终极看,应该是Linux一家独大。 转发性能:这部分大多都集成到硬件中,包括了IPv4、IPv6、组播等,做成了硬件加速,不然也达不到理论速率。对于VPN想着的,会有一定的软件加速进行支撑,核心的思路:减小转发路径上的函数,直接在驱动层进行转发。这部分在无线、有线转发最为明显。 硬件HAL层的适配,家庭网络设备的外围设备并不多,不外乎一些GPIO、USB的控制,以及Boot支持、Flash读写支持。 15年左右,一批智能路由兴起,当时OpenWRT如日中天,觉得家庭网络设备不过是硬件而已,软件层面完全没有开发必要,直接OpenWRT充分可定制化,似有要革掉传统设备厂商的命,然几年光景,当时的浪头厂商安在哉。这个行业注定了上下游在充分的配合,软件硬件协作,共同推动发展。可以毫不夸张说,自己编译的Openwrt升级到家用的无线路由器上,大概率导致的结果是变成有线路由器了。无线速率的持续提高,芯片厂商的无线芯片一致性并没有那么高,且设备厂商一般会选择外围FEM,也就导致无线参数的需要每块设备都进行校准,以保证其性能和符合功率标准。设备厂商始终在不遗余力的打磨软件平台,减少冗余工作,提高开发效率。但这一过程,更需要需求分析、架构设计、丰富开发经验的研发人员投入。 关于项目管理、项目流程,涉及范围、进度、成本、质量等等,同时包括软件、硬件、测试、产品、制造、账务等各个领域,又是一大篇幅,无法展开。在这样一个庞大的行业系统中,可能5年也就入个门,10年算是初步认清; 而笔者已在这个行业从事研发10余年,至今仍感觉尚未入门,仍有很多需要学习补充。 希望这个行业持续健康发展,芯片国产化持续稳步进行,待至某一公司能进行行业上下游整合时,产品竞争力会提高、产业效率提升、研发人员回报也会随之提高,惠及的将是一个行业。 四、一些浅薄的建议本未打算写这些内容,因为从我个人职业的观察来看,很难去改变一个人,只能选择合适的人。但我的Manager对我说,非常欣赏我的职业态度,赞同我对技术发展、职业发展的理解,可以话,分享给周围的人。回想个人的成长,也是得到很多大佬的指点、在很多博文中学习,也触发我将此分享出来。 个人对职业的浅薄建议:1、在某一行业内沉下心来,躬身入局。现在技术开发人员,更换工作短则半年,且经常跨行业。我建议(尤其是刚毕业)谨慎选择一个行业,持续的做下去,哪怕是更换工作,跨度不要太大,去真正的融入、喜欢这个行业,踏实的做技术; 提升自己在这个行业的竞争力。 2、持续的自我学习和提升。在大学毕业后,是否有再投入系统的学习?在某一个工作岗位上,游刃有余时,能否再找到差距,自我提升,还是靠更换工作环境,来被动学习。 个人对技术态度浅薄建议:
打牢基础,脚踏实地,头望星空,不忘初心。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:34:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |