2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > [ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v.04-rc5版本)

[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v.04-rc5版本)

时间:2020-11-07 13:09:54

相关推荐

[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v.04-rc5版本)

🍇博主主页:Systemcall小酒屋

🍇博主简介:Neutionwei,C站嵌入式领域新星创作者之一,一枚热爱开源技术、喜欢分享技术心得的极客,注重简约风格,热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是厦大一位教数学的院士说过的一句话,另外“成就是最好的老师”,技术既要沉淀,也得分享,成就感的正反馈是支持我持续耕耘的动力!

🍇专栏目录:Firefly-RK3399板卡

🍇专栏说明:本专栏主要基于Firefly旗下的RK3399板卡进行入门篇讲述,欢迎订阅,博主会持续更新!

文章目录

一、编译环境二、交叉工具链三、克隆源代码四、编译源代码五、烧录固件

一、编译环境

我的 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具:

$ sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \unzip device-tree-compiler python-pip ncurses-dev python-pyelftools

二、交叉工具链

从 Firefly 仓库克隆交叉工具链并添加到环境变量,这里的 GCC 版本为6.3.1

$ git clone /firefly-linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-.05-x86_64_aarch64-linux-gnu$ export PATH=$PATH:/home/neutionwei/project/gcc-linaro-6.3.1-.05-x86_64_aarch64-linux-gnu/bin

如果需要使用更高版本交叉编译工具链,可以点击以下链接:

/components/toolchain/binaries/

三、克隆源代码

从 GitHub 仓库克隆主线U-Boot:

$ git clone git@:u-boot/u-boot.git

使用git tag命令可以查看版本情况:

$ git tag

把页面翻到最底下,可以看到当前最新版本为v.04-rc5

切换到v.04-rc5分支:

$ git checkout -b v.04-rc5 v.04-rc5

四、编译源代码

在主线 U-Boot 中,ROC-RK3399-PC Plus使用的是roc-pc-rk3399_defconfig配置文件,由于ROC-RK3399-PC Pro是ROC-RK3399-PC Plus硬件迭代版本,因此两者是兼容的。

执行以下命令生成.config

$ make roc-pc-rk3399_defconfig

指定交叉工具链并开始编译:

$ make CROSS_COMPILE=aarch64-linux-gnu-

编译完成后打印了一个警告,意思是说没找到bl31.elf文件!通过查阅doc/README.rockchip文档了解到这个bl31.elf是必须的!

回到u-boot的上一层目录,克隆arm-trusted-firmware

$ git clone git@:ARM-software/arm-trusted-firmware.git

编译 RK3399 的bl31.elf文件:

$ cd arm-trusted-firmware$ make realclean$ make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399

编译后报出一个缺少arm-none-eabi-gcc工具链的错误:

安装该工具链并重新编译:

$ sudo apt-get install gcc-arm-none-eabi$ make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399

编译完成,我们可以看到bl31.elf文件所在目录:

回到 U-Boot 源代码根目录,指定BL31环境变量并重新编译:

$ cd u-boot$ export BL31=/home/neutionwei/project/arm-trusted-firmware/build/rk3399/release/bl31/bl31.elf$ make CROSS_COMPILE=aarch64-linux-gnu-

编译完成:

我们可以看到添加bl31.elf后生成以下三个文件:

五、烧录固件

准备一张 TF卡,TF 卡接上读卡器,执行以下命令查看生成的设备节点:

$ dmesg | tail

我的设备节点是/dev/sdd,分别把idbloader.img烧录到第64扇区与u-boot.itb烧录到16384扇区:

$ sudo dd if=idbloader.img of=/dev/sdd seek=64 conv=notrunc$ sudo dd if=u-boot.itb of=/dev/sdd seek=16384 conv=notrunc

把 TF 卡接入到 ROC-RK3399-PC Pro,接上串口调试,上电可以看到主线U-Boot相关日志。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。