天天看点

如何申请并使用 eepromARMtool 工具

  由于种种原因,历时多个工作日,终于拿到了eepromARMtool工具的源代码,并且顺利在产品上使用上了,特此记录一下吧。

eepromARMtool 是什么

  简单来说,eepromARMtool 是 Intel 的一个针对 ARM 平台的基于 libc 库的可独立运行于 Linux 命令行的工具,该工具提供了一种操作 LAN 控制器(可以是I210、I211、82574)的 NVM(非易失性存储器)的途径,包括 iNVM 和 Flash。其功能类似于 x86 平台的 EEUpdate 和 LANConf 工具。

  因为我们 ARM 平台的项目中使用了 PCIe 接口的 LAN 控制器 i210,所以自然需要用到 eepromARMtool 工具,用于写入 MAC 地址等参数到外部 Flash 上。

  当然,即便目标平台是 ARM,但我们仍然可以通过 EEUpdate 等工具在 x86 上写好 Flash,或者是通过额外的烧写器操作来完成这一步骤。只不过考虑成本以及操作的简便性等因素,在 ARM Linux 平台使用 eepromARMtool 来操作应该是比较合适的一种方案了。不幸的是,eepromARMtool 工具并不像 EEUpdate 那样随便获得,所以我们就得向 Intel 申请啦 ~

如何申请 eepromARMtool

  首先我们要注册 Intel 的嵌入式社区(也常称为 Resource & Design Center)账号:

  ​​​https://embedded.communities.intel.com/community/en​​​

  但是我们这样注册的话,得到的是 basic account,也就是基本用户账号,而要申请 eepromARMtool 的话,需要的是 privilege account,也就是特权用户账号。

  因此强烈建议使用企业邮箱进行注册,否则的话,可能会像我第一次申请那样被无情地拒绝!然后,按照套路将 basic 账号 upgrade 为 privilege 账号。在这个升级过程需要填写企业信息,如果您用的是企业邮箱,刚好您所在的企业已经在 Intel 中备案,那么恭喜您应该可以顺利拿到想要的工具或资料,比如 eepromARMtool。刚好我们公司头一次使用 i210 系列控制器 [捂脸],所以需要与 Intel 签订一份公司层面的 CNDA 保密协议,也即 Corporate Non-Disclosure Agreement。

  由于我们是中国的企业,所以后续的操作会由相应的 Intel 中国销售跟进,这里必须表扬一下 Intel 的效率真的很高,服务也十分专业!

  好啦,这部分就说这么多,如果有什么不懂的千万别找我,直接找 Intel 吧!

如何使用 eepromARMtool

编译

  使用交叉编译环境(或者 ARM Linux 上有 gcc 也可以),解压之后,进入 eepromARMtool 目录,可以看到已经提供了 Makefile 文件,所以直接执行:

make      

  执行该命令可能会出现如下类似的警告:

  make: warning: Clock skew detected. Your build may be incomplete

  要消除该警告,可能需要运行类似如下的命令:

make clean
touch -r *
make      

主要功能

  eepromARMtool 提供如下功能:

  (需要注意的是,执行 eepromARMtool 需要 root 权限。)

(1)显示支持的LAN控制器

  显示当前系统上支持的 LAN 控制器列表,并且会以 PCI 总线的顺序进行枚举。显示的信息包括 LAN 控制器的 bus、device 和 function,同时也会显示 LAN 控制器的类型,以及是否包含 iNVM 和 NVM。

  命令格式:

# ./eepromARMtool      
如何申请并使用 eepromARMtool 工具

(2)读NVM

  读取用户指定的NVM中的内容,并将其写到当前目录的一个文件中。

  命令格式:

# ./eepromARMtool –dump –NIC=x      

  字母x代表你要查询的NIC编号。在执行命令的目录下,会生成一个output文件,文件名的格式为​

​<silicon>NIC<x>.otp​

​​。其中​

​<silicon>​

​​是芯片类型(可以是I210、I211、82574),​

​<x>​

​​是上面命令中用户指定的NIC编号,如果当前系统只有一个,则​

​<x>​

​会忽略。

如何申请并使用 eepromARMtool 工具

(3)写NVM。

  将一个指定的image文件编写到一个指定的LAN控制器,NIC编号和image文件名又用户通过命令来提供。

  命令格式:

# ./eepromARMtool –write –NIC=x –f=<filename>      
如何申请并使用 eepromARMtool 工具

  我这里用的文件是上一步导出来的文件,也就是 I210NIC.otp,其部分内容如下图所示,其中前面 3 个字表示的是 MAC 地址。

(4)测试NVM

继续阅读