rk3308b使用tftp启动内核和设备树,使用nfs文件系统,并且安装ubuntu16.04(一)

如果有问题,请加QQ群 891339868 进行交流

我使用的是firefly的rk3308b的板子,RK官方提供的sdk里面默认不支持使用tftp启动内核和设备树,这样在调试内核和设备树的时候,很不方便,所以找了个空闲时间,对uboot进行了修改,使用tftp启动内核和设备树,并且挂载nfs文件系统,同时安装ubuntu16.04,具体流程如下:
       一、清空板子的flash,烧录RK官方的预bootloader(miniloader.bin)、trust.bin和默认的环境变量文件parameter.txt。这些都不需要做任何修改,直接用官方提供的文件就行。
       二、修改官方的uboot,对uboot的修改主要有以下几个内容:
       1、使能板子的网卡驱动,打开uboot的网络功能
       firefly的rk3308b板子支持双网卡,一个是自带的mac,外加了一个phy,型号是rtl8201f,一个是usb转phy,这里我使用自带mac+phy的网卡。
       网卡的驱动分了两部分,一个是mac的驱动,一个是phy的驱动,官方的uboot支持,配置一下就行了:
       首先要是能uboot里面的驱动模型,具体的路径为Device Drivers  --->[*] Enable Driver Model for Ethernet drivers:

       其次使能rk3308b的mac的驱动,具体的路径为:Device Drivers  --->[*] Network device support  --->[*]   Rockchip Synopsys Designware Ethernet MAC:
       

       接着使能rk3308b的phy的驱动,具体的路径为:Device Drivers  --->-*- Ethernet PHY (physical media interface) support  --->[*]   Realtek Ethernet PHYs support:

      接着使能产生随机mac地址,要不然网卡不能使用,具体的路径为-*- Networking support  ---> [*]   Random ethaddr if unset:      

      接着要修改环境变量的存储方式,我这里使用的是EMMC,所以要设置为MMC,要不然设置的ip地址不能保存,具体的路径为Environment  --->Select the location of the environment (Environment in an MMC device)  ---> (X) Environment in an MMC device:

      最后根据电路图修改uboot的设备树里面关于网口的描述,如下图所示:

      可以看到使用的是rk3308-evb-debug-uart4.dts这个设备树文件,其实和rk3308b相关的文件就这么几个:

        在这里主要是要修改rk3308.dtsi对网卡的配置描述,主要是在rk3308.dtsi这里面:

这里面大部分都不需要修改,使用默认的就行,真是pinctrl-0这个字段要根据实际使用的情况进行修改,从rk3308b的技术手册可以查到,它有两组rmii接口,如下图所示:

一组是GPIO1的PB5-PC5的功能4(设备树描述功能是从0 开始,所以是3),另外一组是GPIO4的PA0-PA5和PB4-PB7的功能3

       firefly的rk3308b开发板使用的是第二组gpio。

      在rk3308-evb-debug-uart4.dts这个文件里面使能一下mac就ok了,如下图所示:

       修改过设备树后,要禁止uboot使用kernel设备树,在RK的sdk里面,为了提高uboot的兼容性,bootloader的第二阶段,默认使用了kernel的设备树,这样的话就可以实现一种uboot配置,可以适配同一型号芯片的多种板卡,提高uboot的兼容性。我在这里禁止了这一功能,以上的设备树配置就可以生效了,具体的配置路径为:ARM architecture  --->[ ] Using dtb from Kernel/resource for U-Boot

       到此,uboot的网卡就可以工作了,需要在环境变量中配置一下本机ip和serverip,来看一下实际效果:

       
       2、增加uboot从tftp服务器启动内核、设备树的命令

             先看一下RK的sdk里面uboot关于芯片的配置,主要是在uboot/include/configs/这个文件夹里面的,和rk3308相关的主要有以下几个文件:rockchip-common.h、rk3308_common.h、evb_rk3308.h,如下图所示:

             从字面意思就可以猜出来,rockchip-common.h是rk处理器通用的配置,rk3308_common.h是rk3308处理器通用的配置,evb_rk3308.h是板级的配置,先来看一下这个板级配置:

           第13行配置主要是记录uboot环境变量的位置,第26行配置是配置uboot的启动命令,RKIMG_BOOTCOMMAND在rockchip-common.h文件里面定义,如下图所示:

            第159行的“boot_android ${devtype} ${devnum};”是rk官方的安卓分区格式的启动模式,目前是ROCKCHIP官方主流启动模式,第160行的“bootrk”是rk官方的早期启动模式,第162行的“run distro_bootcmd”是一种通用的启动方式,没有仔细研究,重点说一下第161行的"boot_tftp"命令,这个命令是我自己增加的,目的是自动使用tftp命令从宿主机下载内核和设备树数据,并启动的命令。具体的添加流程如下:

          (1)、在uboot/cmd/这个文件夹里面添加boot_tftp.c,文件内容如下图所示:


          (二)、在uboot/cmd/Makefile文件里面增加编译链接该文件的配置,如下图所示:


       

        (三)、在uboot/cmd/Kconfig文件里面增加选中该命令的选项,如下图所示:

           (四)、uboot中选中boot_tftp命令,禁止boot_android和bootrk命令,如下图所示:

配置到此,uboot启动后,就可以自动从tftp服务器启动了。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值