海思Hi3519AV100配置uboot百兆网模式

海思Hi3519AV100配置uboot百兆网模式 不会编程的老王 2023-10-19 09:33:42 863
“ 海思hi3519av100的uboot默认的phy模式是rgmii的千兆网模式,在自己的开发环境中,需要rmii的百兆网模式才能进行kernel的烧录等后续系列操作。”

一、编译方式一

# 第一次编译必须先生存 .config 文件才行

# 可根据需要修改 menuconfig 来配置选项

# 执行编译命令,生成 u-boot.bin ,注意,u-boot.bin 并不是可以进行烧录的正确的 uboot 文件,还需要使用 mkboot.sh 脚本来进一步生成真正的可烧录文件

# 关于 DDR 的配置在 reg_info.bin 配置文件中,需要使用正确的 .xlsm 文件来生成,否则会烧录失败,提示 发送帧失败 等错误

root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# pwd
/root/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3519av100_defconfig
#
# configuration written to .config
#
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTLD  scripts/kconfig/mconf
scripts/kconfig/mconf  Kconfig


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# make ARCH=arm CROSS_COMPILE=arm-himix200-linux-
scripts/kconfig/conf  --silentoldconfig Kconfig
  CHK     include/config.h
  UPD     include/config.h
  CFG     u-boot.cfg
  GEN     include/autoconf.mk
...  
...
...
  LD      test/built-in.o
  CC      test/dm/cmd_dm.o
  LD      test/dm/built-in.o
  CC      examples/standalone/stubs.o
  LD      examples/standalone/libstubs.o
  CC      examples/standalone/hello_world.o
  LD      examples/standalone/hello_world
  OBJCOPY examples/standalone/hello_world.srec
  OBJCOPY examples/standalone/hello_world.bin
  LDS     u-boot.lds
  LD      u-boot
  OBJCOPY u-boot.srec
  OBJCOPY u-boot-nodtb.bin
  COPY    u-boot.bin
  SYM     u-boot.sym
./scripts/check-config.sh u-boot.cfg \
        ./scripts/config_whitelist.txt . 1>&2
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11#
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# ls
Kbuild    MAINTAINERS  System.map  board   config.mk  doc      examples  lib   product          test    u-boot-nodtb.bin  u-boot.cfg.configs  u-boot.srec
Kconfig   Makefile     api         cmd     configs    drivers  fs        net   scripts          tools   u-boot.bin        u-boot.lds          u-boot.sym
Licenses  README       arch        common  disk       dts      include   post  snapshot.commit  u-boot  u-boot.cfg        u-boot.map
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# cp u-boot.bin ../../../tools/pc/uboot_tools/
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11# cd ../../../tools/pc/uboot_tools/
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/tools/pc/uboot_tools# ./mkboot.sh reg_info.bin u-boot.real.bin
64+0 records in
64+0 records out
64 bytes copied, 0.000127011 s, 504 kB/s
0+1 records in
1+0 records out
8192 bytes (8.2 kB, 8.0 KiB) copied, 4.1688e-05 s, 197 MB/s
622412+0 records in
622412+0 records out
622412 bytes (622 kB, 608 KiB) copied, 1.0527 s, 591 kB/s
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/tools/pc/uboot_tools# ls -l u-boot.real.bin
-rw-r--r-- 1 root root 630668 Mar 13 13:33 u-boot.real.bin
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/tools/pc/uboot_tools#
root@wzy-VirtualBox:~/hisiSDK/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/tools/pc/uboot_tools#

具体指引详见海思SDK开发包里面的《Hi3519AV100╱Hi3556AV100 U-boot 移植应用开发指南.pdf》

二、编译方式二

还有一种不使用 mkboot.sh 脚本来生成真正可烧录 uboot 的方法。

# Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11
make ARCH=arm CROSS_COMPILE=arm-himix200-linux-
cp ../../../tools/pc/uboot_tools/reg_info.bin .reg
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin

此方法生成的文件默认名字为 u-boot-hi3519av100.bin

# 具体细节可以查看当前目录的 Makefile 
# 和 
# u-boot-2016.11/arch/arm/cpu/armv7/hi3519av100/hw_compressed/ 目录的 Makefile

三、修改代码

一、修改 ./include/configs/hi3519av100.h ,确认 phy 地址和模式


/*Network configuration*/
#define CONFIG_PHY_GIGE
#ifdef CONFIG_NET_HIGMACV300
#define CONFIG_GMAC_NUMS        1
#define CONFIG_HIGMAC_PHY0_ADDR     1
#define CONFIG_HIGMAC_PHY0_INTERFACE_MODE   1 /* rgmii 2, rmii 1*/
#define CONFIG_HIGMAC_DESC_4_WORD
#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN 1
#endif

二、修改寄存器配置文件 Hi3519AV100-DMEB_ONLY_1V8_8L_T-DDR4_2664M_2GB_16bitx2-A53_1500M.xlsm 。

注意,可能有多个寄存器配置xlsm文件,不要修改错了。

易百纳社区

将 0x71 改为 0x72 , RMII_CLK

然后生成新的配置文件 reg_info.bin ,重新编译 uboot

易百纳社区

四、烧录uboot

# 烧录

易百纳社区

“ 到此为止,理论上 uboot 下的网口应该就通了。但是,骚操作来了。此时我的网口并不通,查了一下网口芯片手册,发现我们用的网口芯片是 8211f ,这个网口芯片,额,怎么说呢,就是只支持 rgmii ,不支持 rmii 模式。之前已经测试过,在 rgmii 模式下的千兆,网络仍然不通,所以只能是 rgmii 下的百兆可以通。注意, rmii 下的百兆和 rgmii 下的百兆是不一样的,所以,上面改的 uboot需要全部改回去,重新把 uboot 改为 rgmii 下的百兆就好了”

下面是调试过程。

五、配置8211F网口芯片rgmii下的百兆

# 首先使用 uboot 的 mii 命令来调试,先看一下用法

hisilicon # mii -h
mii - MII utility commands

Usage:
mii device                            - list available devices
mii device <devname>                  - set current device
mii info   <addr>                     - display MII PHY info
mii read   <addr> <reg>               - read  MII PHY <addr> register <reg>
mii write  <addr> <reg> <data>        - write MII PHY <addr> register <reg>
mii modify <addr> <reg> <data> <mask> - modify MII PHY <addr> register <reg>
                                        updating bits identified in <mask>
mii dump   <addr> <reg>               - pretty-print <addr> <reg> (0-5 only)
Addr and/or reg may be ranges, e.g. 2-7.
hisilicon #

这里稍微解释一下, addr 指的是 phy 的地址,我这里 phy 地址是 1 ,所以 addr 是 1 ; reg 就是芯片的寄存器地址,具体可查阅芯片手册,我这里用的是 BMCR 寄存器的地址,为 0 ;data 是需要写入寄存器的值。

# 示例1

易百纳社区

# 示例二

易百纳社区

易百纳社区

此时,使用 mii write 命令来设置好 BMCR 寄存器后,发现仍然 ping 不通,经过检查发现,代码在执行 ping 的时候,代码里面会把 BMCR 寄存器复位一下,所以用 mii 设置的数值根本没有生效,所以只能来修改代码。但是代码有个 ld->initalized 的 flag 来控制只执行一次,很奇怪。由于时间关系,没做深究。代码修改如下:

# 设置寄存器(默认值为 0x1040)。建议 miiphy_reset 函数也要设置一下

易百纳社区


hisilicon # mii write 1 0 0x2100
hisilicon #

# 修改宏定义,去掉千兆定义

易百纳社区

# 至此,重新编译烧录后就可以愉快的 ping 了

易百纳社区

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
不会编程的老王
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区