移植uboot2019.10到tiny4412开发板(二)

宿主机 : 虚拟机 Ubuntu 16.04
目标板[底板]: Tiny4412SDK
目标板[核心板]: Tiny4412
U-BOOT版本: 2019.10
交叉编译器: gcc-arm-none-eabi-9-2020-q2-update

从网上下载代码到虚拟机,编译代码出现:
root@ubuntu:/home/uboot/source2017.03/u-boot-2019.10# make menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/mconf.o
YACC scripts/kconfig/zconf.tab.c
/bin/sh: 1: bison: not found
make[1]: *** [scripts/kconfig/zconf.tab.c] Error 127
make: *** [menuconfig] Error 2
解决方法:
root@ubuntu:/home/uboot/source2017.03/u-boot-2019.10# sudo apt-get install bison
root@ubuntu:/home/uboot/source2017.03/u-boot-2019.10# sudo apt-get install flex

1.修改arch/arm/mach-exynos/Kconfig文件
config TARGET_TINY4412
bool “Exynos4412 Tiny4412 board”
select SUPPORT_SPL
source “board/samsung/tiny4412/Kconfig”

2.创建tiny4412板级文件
cp board/samsung/origen/ board/samsung/tiny4412/
cd board/samsung/tiny4412/tools/
mv mkorigenspl.c mktiny4412spl.c
cd board/samsung/tiny4412/
mv origen.c tiny4412.c
3. 将origen改为tiny4412
修改文件board/samsung/tiny4412/Makefile
修改文件board/samsung/tiny4412/Kconfig
修改文件board/samsung/tiny4412/MAINTAINERS

4.复制tiny4412头文件 cp include/configs/origen.h include/configs/tiny4412.h
修改文件include/configs/tiny4412.h

5.复制文件tiny4412默认配置文件
configs/origen_defconfig configs/tiny4412_defconfig
修改tiny4412_defconfig

6.修改文件scripts/config_whitelist.txt

7.先复制文件 cp arch/arm/dts/exynos4210-origen.dts arch/arm/dts/exynos4412-tiny4412.dts
修改exynos4412-tiny4412.dts文件
修改文件arch/arm/dts/Makefile

8.Soc级别的修改
路径 arch/arm/mach-exynos/ 中都是关于exynos系列芯片的代码,时钟的修改,DRAM的开启等都在这里。
不过这里提供的仅为通用的代码。对于特定的exynos4412芯片,我在这个目录下复制添加如下文件:
cd arch/arm/mach-exynos/
cp clock_init_exynos4.c clock_init_exynos4412.c
cp dmc_init_exynos4.c dmc_init_exynos4412.c
cp exynos4_setup.h exynos4412_setup.h

1.修改文件arch/arm/mach-exynos/include/mach/clock.h
2.修改文件arch/arm/mach-exynos/clock_init_exynos4412.c
exynos4412芯片时钟的配置
3.修改文件arch/arm/mach-exynos/dmc_init_exynos4412.c
4.修改文件arch/arm/mach-exynos/exynos4412_setup.h
5.修改文件arch/arm/mach-exynos/Makefile
6.修改文件arch/arm/mach-exynos/lowlevel_init.c
7.修改文件arch/arm/mach-exynos/spl_boot.c
编译报错:make tiny4412_defconfig
make

  1. /usr/local/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-ld.bfd: common/built-in.o: in function putc': /home/uboot/u-boot-2019.10/common/console.c:509: undefined reference toprintch’
    /usr/local/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-ld.bfd: common/built-in.o: in function puts': /home/uboot/u-boot-2019.10/common/console.c:559: undefined reference toprintch’
    make: *** [u-boot] Error 1
    解决办法:
    在.config中将CONFIG_DEBUG_UART去掉
    2./usr/local/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-ld.bfd: arch/arm/mach-exynos/built-in.o: in function do_lowlevel_init': /home/uboot/u-boot-2019.10/arch/arm/mach-exynos/lowlevel_init.c:217: undefined reference tosystem_clock_init’
    /usr/local/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-ld.bfd: /home/uboot/u-boot-2019.10/arch/arm/mach-exynos/lowlevel_init.c:225: undefined reference to `mem_ctrl_init’
    make[1]: *** [spl/u-boot-spl] Error 1
    make: *** [spl/u-boot-spl] Error
    自己在makefile中有问题:obj- ( C O N F I G E X Y N O S 4210 ) + = d m c i n i t e x y n o s 4412. o c l o c k i n i t e x y n o s 4412. o o b j − (CONFIG_EXYNOS4210)+= dmc_init_exynos4412.o clock_init_exynos4412.o obj- (CONFIGEXYNOS4210)+=dmcinitexynos4412.oclockinitexynos4412.oobj(CONFIG_EXYNOS4412)+= dmc_init_exynos4412.o clock_init_exynos4412.o

3.arch/arm/mach-exynos/spl_boot.c: In function ‘copy_uboot_to_ram’:
arch/arm/mach-exynos/spl_boot.c:226:12: error: ‘UBOOT_START_OFFSET’ undeclared (first use in this function); did you mean ‘BL2_START_OFFSET’?
226 | offset = UBOOT_START_OFFSET;
| ^~~~~~~~~~~~~~~~~~
| BL2_START_OFFSET
arch/arm/mach-exynos/spl_boot.c:226:12: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/mach-exynos/spl_boot.c:227:10: error: ‘UBOOT_SIZE_BLOC_COUNT’ undeclared (first use in this function); did you mean ‘BL2_SIZE_BLOC_COUNT’?
227 | size = UBOOT_SIZE_BLOC_COUNT;
| ^~~~~~~~~~~~~~~~~~~~~
| BL2_SIZE_BLOC_COUNT
解决办法:
在tiny4412.h最后面加上
/* U-Boot copy size from boot Media to DRAM.*/
#define COPY_UBOOT_SIZE 0xC8000 //800KB
#define UBOOT_START_OFFSET ((RESERVE_BLOCK_SIZE + BL1_SIZE + BL2_SIZE) /512)
#define UBOOT_SIZE_BLOC_COUNT (COPY_UBOOT_SIZE /512)

代码路径:root@ubuntu:/home/uboot/u-boot-2019.10/

将可执行程序拷贝到sd卡上
root@ubuntu:/home/uboot/u-boot-2019.10/sd_fuse# make
gcc -o mkbl2 V310-EVT1-mkbl2.c
gcc -o sd_fdisk sd_fdisk.c
root@ubuntu:/home/uboot/u-boot-2019.10/sd_fuse/tiny4412# sudo./sd_fusing.sh /dev/sdb
在这里插入图片描述

将sd卡插入开发板可启动,打印信息如下:
U-Boot 2019.10 (Feb 16 2021 - 22:46:48 +0800) for TINY4412
CPU: Exynos4412 @ 1.4 GHz
Model: Insignal Tiny4412 evaluation board based on Exynos4412
DRAM: 1 GiB
WARNING: Caches not enabled
MMC: SAMSUNG SDHCI: 0
Loading Environment from MMC… MMC: no card present
*** Warning - No block device, using default environment

Hit any key to stop autoboot: 0
MMC: no card present
MMC: no card present
Wrong Image Format for bootm command
ERROR: can’t get kernel image!
TINY4412 #

后续等再有空在继续移植

参考博客:https://blog.csdn.net/lgc1990/article/details/109160426

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rockchip RK3566是一款由Rockchip推出的高性能应用处理器,其集成了四核ARM Cortex-A55 CPU和ARM Mali-G52 GPU。在移植U-Boot 2023.04时,我们需要考虑以下几个方面的工作: 1. 了解RK3566芯片的硬件架构和技术规格,包括处理器核心、内存控制器、外设接口等。这将有助于理解U-Boot如何与硬件交互,并进行相应的配置。 2. 下载并准备U-Boot 2023.04的源代码。在Rockchip官方网站或开源社区中可以找到最新的U-Boot源代码。将其下载并解压到开发机上。 3. 设置交叉编译环境。因为U-Boot是一个跨平台的项目,所以需要配置适合RK3566的交叉编译器,确保能够正确编译U-Boot源代码。 4. 配置U-Boot。根据RK3566的硬件架构和技术规格,需要进行相应的配置,包括处理器、内存、外设等设置。这些设置在U-Boot的配置文件中进行,可以根据需求进行修改。 5. 编译U-Boot。在配置好U-Boot后,使用交叉编译器编译U-Boot源代码。编译完成后,将生成的U-Boot进制文件烧录到RK3566的启动设备上,如eMMC或SD卡。 6. 测试U-Boot。将准备好的启动设备插入RK3566开发板中,根据开发板的启动方式,进入U-Boot命令行界面。在命令行界面中可以进行各种操作和调试,如加载内核、启动操作系统等。 7. 调试和优化。在移植和测试U-Boot过程中,可能会出现一些问题和不稳定的情况。需要通过调试和优化来解决这些问题,确保U-Boot的正常运行和稳定性。 总之,移植U-Boot 2023.04到Rockchip RK3566需要了解芯片的硬件架构和技术规格,配置和编译U-Boot源代码,进行测试和调试。这样可以确保U-Boot能够与RK3566正常交互,并为后续的操作系统加载和启动提供基础支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值