由于烧写驱动一直有问题,于是询问客服,结果问我uboot烧写正确么。。。老师也建议我重新研究一下这个部分,所以又回头重新来过一次。

先收起了安装包执行了sdk.clean文件然后阅读了sdk.unpack文件,发现里面指定了芯片型号,还好3519v101和3516av200都是大小核这部分没有产生错漏。

需要编译uboot时突然想起来需要修改reg_info.bin文件。这次沉下心来认真看了一下里面的xslm文件,里面标签不少,需要配置底层寄存器的值。而且在给的编译uboot的文档中强调

仔细查看了板子上的内存丝印,这个是SEC 925 K4B2G16 46F BYMA 可以查询到是三星的内存颗粒2G是bit所以除以8就是单颗256M的,正反共两片共计512M

背面还有一个小螃蟹的网络芯片,是RTL8201F,使用的RMII协议,所以内存和网口两部分都需要修改。(官方给的例程是2G,RGMII协议。)

这次知道了芯片型号尝试烧录了一次还是无法ping通,所以从头开始修改。

参考网上资料肯定需要改两部分:uboot底层驱动,xlsm文件的引脚配置。

第一次尝试,参考网上的(失败)

/Hi3519AV100_SDK_V2.0.1.0/osdrv/opensource/uboot/u-boot-2016.11/include/configs/hi3519av100.h

76 /*Network configuration*/
77 #define CONFIG_PHY_GIGE
78 #ifdef CONFIG_NET_HIGMACV300
79         #define CONFIG_GMAC_NUMS        1
80         #define CONFIG_HIGMAC_PHY0_ADDR     1
81         #define CONFIG_HIGMAC_PHY0_INTERFACE_MODE       1 /* rgmii 2, rmii 1*/

同时发现了这个文件中存在环境变量可以顺便修改一下

#define CONFIG_BOOTCOMMAND "bootm 0x82000000"
#define CONFIG_BOOTDELAY 1
#define CONFIG_BOOTARGS "mem=96M console=ttyAMA0,115200"
#define CONFIG_NETMASK 255.255.0.0 /* talk on MY local net */
#define CONFIG_IPADDR 192.168.124.75 /* static IP I currently own */
#define CONFIG_SERVERIP 192.168.124.17 /* current IP of tftp server ip */
#define CONFIG_ETHADDR 7C:FE:4E:02:17:4A
#define CONFIG_BOOTFILE "uImage" /* file to load */
#define CONFIG_BAUDRATE 115200

然后修改xlsm文件,该文件需要用宏所以需要使用office(高于2007版本)

multiplex下修改以下寄存器(该部分的定义在/hardware/chip/*.xls文件中,没有在用户手册里)

muxctrl_reg930x1740x20write3100x0000000FD
muxctrl_reg510xcc0x10write3100x0000000FD
PERI_CRG510xcc0x20write120x0000100D

网卡修改的寄存器

 

大概是这三个修改好后,就可以generate binfile然后使用命令进行编译。

然后编译进去失败了

第二次

修改源码(修改时钟频率)

找higmacv300文件夹下的ctrl.c文件中的

void higmac_sys_init(void)

 

v |= PHY_CLK_25M ;

改为

v |= PHY_CLK_50M ;

重新编译烧录,就ping通了!!!(ping之前应关闭windows防火墙,否则会失败。)

此作者没有提供个人介绍。
最后更新于 2020-07-21