BCMShell简介
BCMShell是Broadcom公司对于ASIC的SDK命令解释器。利用该工具可以对ASIC所有的寄存器和内存进行读写操作,还可以利用脚本在ASIC上搭建各种复杂的网络环境。
BCMShell的几种模式
BCMshell模式
拿到Broadcom源码后,根据OS上的kernel版本选择对应的内核头文件编译SDK,之后会得到几个文件
1 | bcm.user bcm.user.dbg linux-bcm-knet.ko linux-kernel-bde.ko linux-user-bde.ko netserve |
参考SDK包运行环境中的auto_load_user.sh
,安装对应驱动,启动bcm.user
即可进入BCMShell命令行,提示如下:
1 | BCM.0> |
exit
退回到shell。
如果OS是SONiC,执行bcmsh
也可进入,通过bcmcmd cmd
可以在shell下在BCMShell中执行命令。
回退到shell模式
在BCMShell模式中通过命令shell
可以进入shell里面执行命令,应该是将bcmshell放到后台运行,在shell中exit即可再次回到bcmshell。
1 | BCM.0> |
cint模式
在BCMShell模式中通过命令cint
可以进入到C interpreter模式,可以在里面执行C函数,如gearbox的一些操作可以在里面完成,exit;
回退道bcmshell。
1 | BCM.0> |
BCMShell的一些特点
- 不区分大小写
- 支持缩写
?
可以显示所有命令。以PortStat
为例:PortStat和portstat等效,缩写规则是大写字母是可缩写项,PortStat可缩写为ps
命令说明
BCMShell命令可以分为五类:
- 帮助命令
- show命令
- 低级命令:对寄存器/RAM进行读写的命令
- 端口命令:与端口相关的命令
- 芯片MAC学习,通信协议相关的命令
帮助命令
总共有五种帮助命令使用方法,使用一种即可cmd + ?
,如:
1 | BCM.0> ps ? |
show命令
常用show命令如下:
1 | show c 查看ASIC各个端口收发包情况,可以加子命令过滤 |
低级命令
低级命令的作用主要是对寄存器和RAM进行读写。
对寄存器进行读写
寄存器类别 | 含义 |
---|---|
PCIC | PCI配置寄存器 |
PCIM | PCI内存映射寄存器 |
SOC | 交换芯片寄存器与内存 |
PHY | PHY寄存器 |
寄存器常用命令如下:
1 | getreg 获取寄存器的值 |
对内存表进行读写
内存表读操作: dump
内存表写操作: write
端口命令
端口命令主要是端口设置PORT
命令和端口显示PortStat
命令。举例如下:
设置xe0 loopback:
1 | BCM.0> port xe0 lb=phy |
高级命令
高级命令可以对协议等复杂功能进行设置,如ACL,OAM等。
1 | l2 show 显示mac地址表 |