由于烧写驱动一直有问题,于是询问客服,结果问我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_reg93 | 0x174 | 0x2 | 0 | write | 31 | 0 | 0x0000000FD |
| muxctrl_reg51 | 0xcc | 0x1 | 0 | write | 31 | 0 | 0x0000000FD |
| PERI_CRG51 | 0xcc | 0x2 | 0 | write | 1 | 2 | 0x0000100D |
网卡修改的寄存器
大概是这三个修改好后,就可以generate binfile然后使用命令进行编译。
然后编译进去失败了
第二次
修改源码(修改时钟频率)
找higmacv300文件夹下的ctrl.c文件中的
void higmac_sys_init(void)
将
v |= PHY_CLK_25M ;
改为
v |= PHY_CLK_50M ;
重新编译烧录,就ping通了!!!(ping之前应关闭windows防火墙,否则会失败。)


Comments NOTHING