搭建FPGA SOC系统(3)编译u-boot

学习主要参考https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide
本次学习需要在Linux系统下进行,Windows下的Embedded_Command_Shell终端不支持。
linux系统版本:unbuntu16.04 64位系统

下载相关工具

交叉编译工具

在这里可以下载交叉编译工具
https://rocketboards.org/foswiki/pub/Documentation/EmbeddedLinuxBeginnerSGuide/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz?t=1648696246
然后在终端配置环境变量

gedit ~/.bashrc 
#在最后写入如下内容:
export CROSS_COMPILE=/{your path}/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-
#完成之后使配置有效
source ~/.bashrc 

u-boot

使用git下载altera提供的u-boot。如果没有git,输入sudo apt-get install git进行安装,之后再执行以下命令。

git clone https://github.com/altera-opensource/u-boot-socfpga.git
cd u-boot-socfpga

之后可以通过下面指令查看版本:

git tag -l rel*
git tag -l ACDS*

这里使用官方提供的早期的版本,因为当前的最新版本不一定兼容前面下载的交叉编译工具。如果想尝试最新版本,最好去下载6.0以后的交叉编译工具。

git checkout rel_socfpga_v2013.01.01_15.09.01_pr

执行以下指令删除相关文件

make mrproper

设置cyclone V系列芯片,并编译:

make socfpga_cyclone5_config
make

此时会提示错误

/bin/bash: /home/dyq2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc: No such file or directory
/bin/bash: /home/dyq2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc: No such file or directory
dirname: missing operand
Try 'dirname --help' for more information.
/bin/bash: /home/dyq2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc: No such file or directory
/bin/bash: /home/dyq2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-ld: No such file or directory
/home/dyq2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc -DDO_DEPS_ONLY \
	-g  -Os   -fno-common -ffixed-r8 -msoft-float  -I/home/dyq2/u-boot-socfpga/board/altera/socfpga -I/home/dyq2/u-boot-socfpga/board/altera/socfpga/sdram -D__KERNEL__ -I/home/dyq2/u-boot-socfpga/include -fno-builtin -ffreestanding -nostdinc -isystem  -pipe  -DCONFIG_ARM -D__ARM__    -march=armv5 -Wall -Wstrict-prototypes       \
	-o lib/asm-offsets.s lib/asm-offsets.c -c -S
/bin/bash: /home/dyq2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc: No such file or directory
Makefile:701: recipe for target 'lib/asm-offsets.s' failed
make: *** [lib/asm-offsets.s] Error 127

参考:
https://blog.csdn.net/x13163303344/article/details/109522684
主要是因为当前系统为64位,没有32位的兼用包。
安装:

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install lib32stdc++6

安装之后重启一下系统,重新设置cyclone V系列芯片再进行make即可完成u-boot编译。
最后会生成一个u-boot.img文件。可以看出,这与前面生成predloader时勾选FAT_SUPPORT有关。

然后把官方给的boot脚本复制过来进行编译:

echo -- Programming FPGA --
fatload mmc 0:1 $fpgadata soc_system.rbf;
fpga load 0 $fpgadata $filesize;
run bridge_enable_handoff;

echo -- Setting Env Variables --
setenv fdtimage soc_system.dtb;
setenv mmcroot /dev/mmcblk0p2;
setenv mmcload 'mmc rescan;${mmcloadcmd} mmc 0:${mmcloadpart} ${loadaddr} ${bootimage};${mmcloadcmd} mmc 0:${mmcloadpart} ${fdtaddr} ${fdtimage};';
setenv mmcboot 'setenv bootargs console=ttyS0,115200 root=${mmcroot} rw rootwait; bootz ${loadaddr} - ${fdtaddr}';

run mmcload;
run mmcboot;

需要先安装一些工具才能编译该脚本:

 sudo apt-get install uboot-mkimage
 sudo apt-get install u-boot-tools
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Boot Script Name" -d boot.script u-boot.scr

最后生成u-boot.scr文件。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值