概述
我们看到的很多固件,都是运行的linux系统,比如基于broadcom芯片的无线路由器。其固件分为三个部分:cfe、kernel、nvram。. t% J- V; ) }- B( q& U# G
cfe为基本的硬件io部分,负责各硬件的沟通和协调运行,类似于主板的bios,在沟通各硬件协调工作的同时,调用nvram的设置信息,启用kernel内核。cfe启动的时候,启用kernel之前会检测一下kernel的校验和,如果发现不对,就会停止启动,同时开始处于等待状态(等待一个完整的kernel内核)。
0 S
kernel为整个固件的内核,也就是真正运行的linux程序,就像台式机的windows,但它不仅是一个系统而且包含了里面所有应用程序,说白了就是我们电脑使用的平台,包含了系统和各种功能程序。4 H# l+ h8 t. M7 I
nvram是我们设置的配置信息,比如我们设置无线路由器的pppoe参数、无线加密密码等等,就是保存在nvram里面,它就是一个设置参数的总览,调用nvram就可以看到全部的设置信息。所谓清空设置恢复到出厂值,就是清除nvram,然后cfe会在重启的时候自动建立出厂值的nvram参数。
搞清楚了三个部分的功能,一些问题就好解决了。0 Q2 u+ m$ {5 D5 D4 W1 A, f
1 ]# e U5 P+ Z
1,是jtag。无论是jtag还是ejtag,它仅仅是一个工具程序,目的是用来重写flashrom。由于jtag的接口限制了传输速率,通常我们只写flashrom的cfe部分,让它来引导无线路由器工作,然后利用cfe启动检测kernel无效就等待的过程,采用tftp上传整个固件文件到flashrom,达到重写固件的目的。
2,对比kernel,改写固件。比如同样硬件配置的机器,其cfe就可以通用,性能的差异就在于kernel部分了,我们就可以通过移植较好性能的kernel部分来达到改变整个固件的目的。比如电信配送的很多无线一体机,配饰很多都完全一样,但界面和功能都不通,就可以采用这种方法来增强性能。
3,对于cfe完好的机器,也可以通过ttl线来写入固件,因为有一些机器是不支持tftp的。
最后
以上就是老迟到煎蛋为你收集整理的linux编写路由器固件,基于linux系统的无线路由器固件组成的全部内容,希望文章能够帮你解决linux编写路由器固件,基于linux系统的无线路由器固件组成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复