[U-boot][itop4412]u-boot-2017.11移植(一)

上一节:README分析
Platform:itop4412
U-boot:u-boot-2017.11
###2018/11/9###
因是第一次进行移植,有很多问题,目前只是实现了串口的输出,是否可以引导uImage还未知,我的知识储备还是不够,所有如果有更好的资源,也请留言指导下,谢谢!
我会继续研究下去~~
###2018/11/7###
有的文件可能不需要加,也不是很懂;
可以优先移植linux;
我的linux是3.0的,不支持uimage,移植u-boot后无法引导kernel img
###2018/10/26###
最近在看uboot,开发板提供的是较早前的uboot版本,然后借鉴网上的一些教程,摸着石头过河
参考的文章

下面的资料都是有续集的
基于tiny4412的u-boot移植(一)
iTop-4412精英版的u-boot-2017.11移植教程
基于iTop-4412的U-Boot 2017移植
移植u-boot-2014.4到S5PV210/TQ210(完整)

Makefile文件交叉编译环境

在Makefile中添加交叉编译环境,方便后续编译:
CROSS_COMPILE = arm-linux-gnueabi- (根据情况修改编译器名字)
在编译时遇到的问题

Error: You must add new CONFIG options using Kconfig
The following new ad-hoc CONFIG options were detected:
CONFIG_ITOP4412
Please add these via Kconfig instead. Find a suitable Kconfig
file and add a ‘config’ or ‘menuconfig’ option.
Makefile:871: recipe for target ‘all’ failed
make: *** [all] Error 1

找打871行左右,对下面代码进行注释,就可以正常编译了

quiet_cmd_cfgcheck = CFGCHK  $2
cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
<span>		</span>$(srctree)/scripts/config_whitelist.txt $(srctree)

创建board文件

在board文件夹下找到你的芯片厂家和架构类似的芯片,然后进行复制粘贴,修改相应内容就很简单了;如果没有,先找找网上是否有dalao进行了移植,可以借鉴借鉴
也可以通过找到arch文件夹下对应芯片厂家文件夹下的Kconfig文件,如:

arch/arm/mach-exynos/Kconfig
搜索:4412
可以找到多个板子,根据需要选择一个
我需要支持SPL,选择board\samsung\origen

  1. 在board下创建板级文件
    因itop4412和board\samsung\origen芯片一样,并支持SPL;
    复制一份,然后现将对应的名字进行修改
    cp -r origen/ itop4412/
    cd itop4412/
    mv origen.c itop4412.c
    mv tools/mkorigenspl.c tools/mkitop4412spl.c
    
    将Kconfig、MAINTAINERS、Makefile中的origen替换为itop4412,注意大小写;
    itop4412.c不用修改
FileDescription
xxx.c板级基础.c文件
Kconfig在内核配置时候,作为配置选项
MAINTAINERS包含一些我们可能需要修改的文件
Makefile编译的文件
tools/mkitop4412spl.c输出u-boot-spl.bin,等同BL2.bin,详情:doc/README.SPL
  1. mkxxxspl.c
    这个非常重要的,用于spl.bin文件的生成,等同于BL2+chacksum

    关于tools/mkitop4412spl.c,根据提供的mkbl2.c文件进行修改,加入checksum,忽略signature

创建<board.h>文件

修改include/configs/<board.h>
SPL的链接地址 CONFIG_SPL_TEXT_BASE,它的值是0x02023400
U-boot的链接地址 CONFIG_SYS_TEXT_BASE,它的值是0x43e00000

#define CONFIG_SYS_TEXT_BASE		0x43E00000
#define CONFIG_SPL_TEXT_BASE		0x02023400 /* 0x02021410 */

SD卡的布局

创建configs文件

  1. 通过命令:make menuconfig进行配置,最好保存到configs/xxx_defconfig下,方便下次修改编译
  2. 通过复制configs/origen_defconfig为itop4412_defconfig;然后进行相应的修改
CONFIG_SPL_SERIAL_SUPPORT=y
CONFIG_DEBUG_UART=y
CONFIG_SD_BOOT=y
CONFIG_BOOTDELAY=5
# 串口的设置
CONFIG_DEBUG_UART_S5P=y
#uart2 地址:0x13820000
CONFIG_DEBUG_UART_BASE=0x13820000
CONFIG_DEBUG_UART_CLOCK=100000000

创建ARCH文件

这里包含了系统时钟初始化内存初始化以及串口初始化

  1. 修改arch/arm/mach-exynos/Kconfig
    仿照origen加入以下代码,主要用于make menuconfig
    config TARGET_ITOP4412
       bool "Exynos4412 iTop-4412 board"
       select SUPPORT_SPL
    
    source "board/samsung/itop4412/Kconfig"
    
  2. 设备树(感觉好像不加也没事,不懂。。)
    2.1修改arch/arm/dts/Makefile,用于编译设备树修改arch/arm/dts/Makefile,用于编译设备树
    exynos4412-tiny4412.dtb 	(在上一个程序后面加入 "\")
    
    2.2 修改arch/arm/dts/exynos4412-itop4412.dts,使用uart2作为终端,需要修改对应的地址138x0000
    这个还能加其他的,串口为主要,具体再研究
    /dts-v1/;
    #include "exynos4412.dtsi"
    
    / {
        model = "ITOP4412 based on Exynos4412";
        compatible = "samsung,itop4412", "samsung,exynos4412";
    
        chosen {
            stdout-path = "serial2:115200n8";
        };
    
        aliases {
            serial2 = "/serial@13820000";//0:13800000;1:13810000...
            console = "/serial@13820000";
        };
    
        serial2:serial@13820000 {
            status = "okay";
        };
    };
    
  3. 修改arch/arm/include/asm/mach-types.h,增加tiny4412的machine ID
    #define MACH_TYPE_ITOP4412	           5115 	(根据文件情况,在最后添加ID)
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值