RK3308-uboot分析

一、uboot中的链接器脚本u-boot.lds分析:

.text :    //代码段
        {
                *(.__image_copy_start)  //u-boot将自己copy到RAM,此为需要copy的程序的start
                *(.vectors)
                CPUDIR/start.o (.text*)  // /arch/arm/cpu/armv8/start.S
                *(.text*)   //其他的代码段放在这里,即start.S/vector.S之后
        }

这里可以看出 /arch/arm/cpu/armv7/start.S为uboot的入口地址, /arch/arm/cpu/armv8/这个目录怎么得到的呢?首先进到u-boot根目录找到config.mk(这才是真正的Makefile),该文件中有如下声明:

			 ARCH := $(CONFIG_SYS_ARCH:"%"=%)
			CPU := $(CONFIG_SYS_CPU:"%"=%)
			ifdef CONFIG_SPL_BUILD
			ifdef CONFIG_TEGRA
			CPU := arm720t
			endif
			endif
			BOARD := $(CONFIG_SYS_BOARD:"%"=%)
			ifneq ($(CONFIG_SYS_VENDOR),)
			VENDOR := $(CONFIG_SYS_VENDOR:"%"=%)
			endif
			ifneq ($(CONFIG_SYS_SOC),)
			SOC := $(CONFIG_SYS_SOC:"%"=%)
			endif    
			CPUDIR=arch/$(ARCH)/cpu$(if $(CPU),/$(CPU),)

像CONFIG_SYS_ARCH、CONFIG_SYS_CPU等等这些宏是在哪里定义的呢,也在u-boot顶层目录中有一个叫u-boot.cfg的文件,里面定义了很多宏,我们列举上面需要用到的:

		#define CONFIG_SYS_ARCH "arm"
		#define CONFIG_SYS_CPU "armv8"
		#define CONFIG_SYS_BOARD "evb_rk3308"
		#define CONFIG_SYS_VENDOR "rockchip"
		#define CONFIG_SYS_SOC "rockchip"
		所以上面start.S的路径就是:arch/arm/cpu/armv8/start.S

二、下面分析dts文件:
在u-boot顶级目录下一个dts文件目录,打开文件目录下的Makefile,内容如下

DEVICE_TREE ?= $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%)
	ifeq ($(DEVICE_TREE),)
	DEVICE_TREE := unset
	endif
	ARCH_PATH := arch/$(ARCH)/dts
	dtb_depends := arch-dtbs	
	ifneq ($(EXT_DTB),)
	DTB := $(EXT_DTB)
	else
	DTB := $(ARCH_PATH)/$(DEVICE_TREE).dtb
	dtb_depends += $(DTB:.dtb=.dts)
	endif

根据上面的u-boot.cfg找到CONFIG_DEFAULT_DEVICE_TRE宏定义如下:
#define CONFIG_DEFAULT_DEVICE_TREE “rk3308-evb”
所以该sdk用的dts为rk3308-evb.dts

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值