4412 u-boot移植

上一篇 启动流程
移植的u-boot从sd卡启动 主板是4412
编译环境及源码版本: Ubuntu 16 u-boot -2020-01.tar.bz2
因为4412 是armv7架构 我们找一个类似板级复制

tar xvf u-boot -2020-01.tar.bz2 //解压
cd u-boot -2020-01.tar.bz2/
cp board/samsung/origen/ board/samsung/wqj4412/ -r
mv board/samsung/wqj4412/origen.c board/samsung/wqj4412/wqj4412.c
接着修改u-boot-2020.01/board/samsung/wqj4412/tools/mkorigenspl.c 将其改为mkwqj4412spl.c
然后修改 u-boot-2020.01/board/samsung/wqj4412/里面的文件内容orign全部改为wqj4412
上面的配置文件需要下面这些 我们继续复制类似板级
cp include/configs/origen.h include/configs/wqj4412.h
cp configs/origen_defconfig configs/wqj4412_defconfig
cp arch/arm/dts/exynos4412-odroid.dts arch/arm/dts/exynos4412-wqj4412.dts

由于添加了板级 我们需要在makefile中给添加进去
在arch/arm/dts/Makefile 添加
exynos4210-trats.dtb
exynos4412-trats2.dtb
exynos4412-wqj4412.dtb
exynos4412-odroid.dtb
启动内核需要添加id
修改arch/arm/include/asm/mach-types.h,增加wqj4412的 ID
#define MACH_TYPE_NASM25 5112
#define MACH_TYPE_TOMATO 5113
#define MACH_TYPE_OMAP3_MRC3D 5114
#define MACH_TYPE_WQJ4412 5115
接着修改可视化的配置选项
修改arch/arm/mach-exynos/Kconfig
添加
config TARGET_WQJ4412
bool “Exynos4412 Wqj4412 board”
select SUPPORT_SPL

然后底部添加路径
source "board/samsung/wqj4412/Kconfig"
记住复制里面的文件origen  改为wqj4412
添加白名单 /u-boot-2020.01/scripts/config_whitelist.txt
CONFIG_WQJ4412 

然后编译 make distclean
make wqj4412_defconfig
进入make menuconfig
选的 wqj4412board
make
出现警告 不用管它。
此时已经生成了u-boot.bin 还有spl,不过还不能用 结合Uboot启动过程 还需要修改代码。
未完待续。。。。。。
修改源码spl生成校验 board/samsung/wqj4412/tools/mkwqj4412spl.c

修改成这个
#define IMG_SIZE		(14*1024) //16*1024 
#define SPL_HEADER_SIZE		0 //16
第二处 去掉
#if 0
	for (i = 0; i < IMG_SIZE - SPL_HEADER_SIZE; i++)
		checksum += buffer[i+16];

	*(unsigned long *)buffer ^= 0x1f;
	*(unsigned long *)(buffer+4) ^= checksum;

	for (i = 1; i < SPL_HEADER_SIZE; i++)
		buffer[i] ^= buffer[i-1];
#endif
添加  因为14k-4处校验
	for (i = 0; i < IMG_SIZE - 4; i++)
		checksum += (unsigned char)buffer[i];

	*(unsigned int *)&buffer[i] = checksum;

添加点灯程序 在start.s

	.globl	save_boot_params_ret
	.globl	led_on
#ifdef CONFIG_ARMV7_LPAE
	.global	switch_to_hypervisor_ret
#endif
led_on:
	ldr     r0, =0x11000100     @ GPMl2_0
    ldr     r1, =0x00000001      @ Configurate GPM4_0<A1>GPM4_1<A2>GPM4_2<A2>GPM4_3 output
    str     r1, [r0]
    mov     r1, #0x01            @ light All led on
    ldr     r0, =0x11000104      @ GPM4DAT Register
    str     r1, [r0]
	
	ldr     r0, =0x11000060     @ GPMk1_1
    ldr     r1, =0x00000010      @ Configurate GPM4_0<A1>GPM4_1<A2>GPM4_2<A2>GPM4_3 output
    str     r1, [r0]
    mov     r1, #0x02            @ light All led on
    ldr     r0, =0x11000064      @ GPM4DAT Register
    str     r1, [r0]
	
    mov     pc,   lr
reset:
	bl   led_on

编译生成代码
cat E4412_N.bl1.bin wqj4412-spl.bin u-boot.bin > u-boot-wqj-4412.bin
dd iflag=dsync oflag=dsync if=u-boot-wqj-4412.bin of=$1 seek=1
烧写进入sd卡 发现两个小灯已经亮了 说明bl2已经被加载成功
灯刚亮然后就灭 是因为没有供电锁存。
修改Power.c power.h



static uint32_t exynos4_get_reset_status(void)
{
	#ifdef CONFIG_WQJ4412
		struct exynos4x12_power *power =
			(struct exynos4x12_power *)samsung_get_base_power();
	#else
		struct exynos4_power *power =
			(struct exynos4_power *)samsung_get_base_power();
	#endif

		return power->inform1;
}
static void exynos4x12_set_ps_hold_ctrl(void)
{
	struct exynos4x12_power *power =
		(struct exynos4x12_power *)samsung_get_base_power();

	/* Set PS-Hold high */
	  setbits_le32(&power->ps_hold_control,EXYNOS_PS_HOLD_CONTROL_DATA_HIGH);
	  writel(0x3, (unsigned int *)0x11000c08);
}

/*
 * Set ps_hold data driving value high
 * This enables the machine to stay powered on
 * after the initial power-on condition goes away
 * (e.g. power button).
 */
void set_ps_hold_ctrl(void)
{
	
	
	
	#ifdef CONFIG_WQJ4412
	if (cpu_is_exynos4())
		exynos4x12_set_ps_hold_ctrl();
    #else
	 if (cpu_is_exynos5())
		exynos5_set_ps_hold_ctrl();
	#endif
}

另外power.h添加结构体struct exynos4x12_power

修改include/configs / wqj4412.h

#define CONFIG_WQJ4412 1 /* working with ORIGEN*/ 改成这个 然后编译
报错
此时修改exynos4_setup.h 将其#ifdef CONFIG_WQJ4412 改成这个
编译
在这里插入图片描述

出现这个
修改makefile 将其屏蔽掉 然后编译 烧写 发现灯可以常亮
下一节uboot移植二
内核移植

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值