我是靠谱客的博主 典雅饼干,最近开发中收集的这篇文章主要介绍SoC学习篇—Linux 系统搭建一、制作.dtb与.rbf文件二、启动操作系统内核三、内核编译,生成zImage四、编译根文件系统五、制作SD卡镜像,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

SoC学习篇—Linux 系统搭建

  • 一、制作.dtb与.rbf文件
    • 1、编译硬件工程
    • 2、文件制作
  • 二、启动操作系统内核
    • 1、编译uboot
    • 2、生成preloader-mkpimage.bin文件
    • 3、生成u-boot.scr文件
    • 4、整合文件
  • 三、内核编译,生成zImage
    • 1、切换4.9版本
    • 2、指定交叉编译工具链路径
    • 3、修改内核为出厂设置
    • 4、修改自己的内核配置
    • 5、编译内核
    • 6、查看生成文件
  • 四、编译根文件系统
    • 1、切换版本到【2015.08】
    • 2、清空编译信息
    • 3、配置buildroot
    • 4、文件复制
    • 5、编译根文件系统
  • 五、制作SD卡镜像
    • 1、文件整合
    • 2、制作512M的虚空镜像
      • 1、磁盘分区
      • 2、分区格式化
      • 3、写入文件到镜像

一、制作.dtb与.rbf文件

1、编译硬件工程

打开黄金参考工程
在这里插入图片描述
全编译硬件工程
在这里插入图片描述
等待编译完成;编译结果
在这里插入图片描述

2、文件制作

打开【SoC EDS command shell】,进入工程所在目录
在这里插入图片描述
制作二进制格式的设备树文件【.dtb】

make dtb

在这里插入图片描述
查看生成的设备树文件【复制到桌面】
在这里插入图片描述
制作【.rbf文件,复制到桌面】
在这里插入图片描述
至此,文件制作完成。

二、启动操作系统内核

1、编译uboot

删除工程目录下【software】中的两个文件夹【没有就跳过此操作】
在这里插入图片描述
进入【software】目录,配置环境变量

export PATH=/bin:$PATH

![在这里插入图片描述](https://img-blog.csdnimg.cn/d94f7d0cb4bd4420a16325c6232d23d3.png
生成板机支持包【software目录下】

bsp-editor.exe

在这里插入图片描述
选择如示
在这里插入图片描述
打开后界面如示,点击OK
在这里插入图片描述
点击生成bps
在这里插入图片描述
查看生成文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/d65f00b585bb4bf59ea41086816d2eb5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bCP5oCq4Ly7,size_20,color_FFFFFF,t_70,g_se,x_16

点击Exit,回到指令栏

编译uboot【回到黄金工程目录下】【编译需要约30min】
在这里插入图片描述
出现类似错误,一直【make uboot】即可
在这里插入图片描述
编译结果【此界面为成功编译】
在这里插入图片描述
可以看到生成文件
在这里插入图片描述
将文件【u-boot-sol.bin】文件复制到【preloader】目录下
在这里插入图片描述

2、生成preloader-mkpimage.bin文件

在【preloader】目录下运行指令

mkpimage -hv 0 -o preloader.img u-boot-spl.bin

在这里插入图片描述
生成文件
在这里插入图片描述
生成对应【.bin】文件

make

在这里插入图片描述
生成文件
在这里插入图片描述

3、生成u-boot.scr文件

在【software】目录下创建【boot.script】文件

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;

文件如示
在这里插入图片描述
使用指令,生成文件

mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Boot Script Name" -d boot.script u-boot.scr

在这里插入图片描述
查看生成文件
在这里插入图片描述

4、整合文件

将上述文件整合到一个文件夹(方便找到)
文件路径

C5CB_GHRDsoftwarepreloaderuboot-socfpga
C5CB_GHRDsoftware
C5CB_GHRDsoftwarepreloader

在这里插入图片描述
至此uboot文件制作完成。

三、内核编译,生成zImage

此版块为Ubuntu操作

1、切换4.9版本

进入内核目录

cd linux-socfpga

方式一:
在这里插入图片描述
方式二:
在这里插入图片描述
列出所有分支版本

git tag -l

在这里插入图片描述
版本切换

git checkout rel_socfpga-4.9.78-ltsi_18.02.01_pr

在这里插入图片描述
如示则正常
在这里插入图片描述

2、指定交叉编译工具链路径

指令如下

export CROSS_COMPILE=/home/z/WORK/inside_core/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-

在这里插入图片描述

3、修改内核为出厂设置

指令如下

make ARCH=arm socfpga_defconfig

在这里插入图片描述

4、修改自己的内核配置

指令如下

make ARCH=arm menuconfig

在这里插入图片描述
遇到错误
在这里插入图片描述
解决方法【终端最大化】,成功进入配置界面
在这里插入图片描述

修改配置操作说明:
y:选中;n:取消选中;
回车进入选项

选择支持大存储空间设备选项
在这里插入图片描述
选中最大存储空间
在这里插入图片描述

5、编译内核

指令

make ARCH=arm LOCALVERSION=zImage

在这里插入图片描述
编译完成
在这里插入图片描述

6、查看生成文件

指令

ls arch/arm/boot/

在这里插入图片描述
至此内核编译完成。

四、编译根文件系统

解压文件
解压buildboot;交叉编译工具链
在这里插入图片描述

1、切换版本到【2015.08】

该版本支持linaro的4.9-2014.09的交叉编译器

cd buildroot/
git checkout 2015.08

在这里插入图片描述

2、清空编译信息

make clean

在这里插入图片描述

3、配置buildroot

cd ..//退回上级目录
make -C buildroot ARCH=arm BR2_TOOLCHAIN_EXTERNAL_PATH=/home/z/WORK/inside_core/gcc-linux-gnueabihf-4.9-2014.09_linux menuconfig

①配置Target Options:
按图示操作即可
配置一:
在这里插入图片描述
在这里插入图片描述
配置二:
在这里插入图片描述
在这里插入图片描述
配置三:
在这里插入图片描述
在这里插入图片描述
配置四:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②配置Toolchain:
配置一:
在这里插入图片描述
在这里插入图片描述
配置二:
在这里插入图片描述
配置三:
在这里插入图片描述
其他选项保持默认。
③配置System Configuration
设置主机用户名和密码
在这里插入图片描述
在这里插入图片描述
④配置Kernel
在这里插入图片描述
⑤配置Target packages
在这里插入图片描述
在这里插入图片描述
⑥配置ssh
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
⑦配置busybox【保存退出】

make -C buildroot busybox-menuconfig

在这里插入图片描述
进入如示界面
在这里插入图片描述
在这里插入图片描述

4、文件复制

注意看方框文件路径【原本样式】
在这里插入图片描述
复制后
在这里插入图片描述
再次配置,回到【inside_core】目录下

make -C buildroot busybox-menuconfig

配置完成
在这里插入图片描述

5、编译根文件系统

下载文件

make -C buildroot BR2_TOOLCHAIN_EXTERNAL_PATH=/home/z/WORK/inside_core/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux all

在这里插入图片描述
查看生成文件

ls buildroot/output/images/

在这里插入图片描述

五、制作SD卡镜像

1、文件整合

将内核、文件系统以及uboot和硬件配置放到镜像里面

硬件文件:黄金工程【soc_system.dtb/rbf】
uboot:【/software/u-boot.scr;software/spl-bsp/preloader-mkpimage.bin;software/u-boot-socfpga/u-boot-img】
内核:linux-socfpga/arch/arm/boot/zImage
文件系统:【buildroot/output/images/rootfs.tar】

整合在一起,拖到Ubuntu里面去
在这里插入图片描述
一个完整的soc板上系统分为3个区,分区以及保存文件如下:
在这里插入图片描述

2、制作512M的虚空镜像

1、磁盘分区

在文件夹里面打开终端【鼠标右键,终端打开】

sudo dd if=/dev/zero of=sdcard.img bs=512M count=1

在这里插入图片描述
获取loop device设备名

sudo losetup --show -f sdcard.img

在这里插入图片描述
对sdcard.img进行分区

sudo fdisk /dev/loop0

在这里插入图片描述
在sdcard.img创建分区,用于存储preloader.img,配置信息如下:
在这里插入图片描述
转换分区类型为“a2”
在这里插入图片描述
创建分区2,存储Linux root文件,配置信息如下:
在这里插入图片描述
创建分区1,存储启动文件,配置信息如下:
在这里插入图片描述
转换分区1类型为FAT
在这里插入图片描述
输入指令p;查看sdcard.img分区信息
在这里插入图片描述
输入w;退出分区操作【无视警告信息】
在这里插入图片描述
输入指令让分区生效

sudo partprobe /dev/loop0

在这里插入图片描述
查看镜像分区
在这里插入图片描述
分区信息
在这里插入图片描述

2、分区格式化

格式化分区1位FAT文件系统

sudo mkfs -t vfat /dev/loop0p1

在这里插入图片描述
格式化分区2为ext4文件系统

sudo mkfs.ext4 /dev/loop0p2

在这里插入图片描述

3、写入文件到镜像

将【preloader-mkpimage.bin】和【u-boot.img】写入分区3:

sudo dd if=preloader-mkpimage.bin of=/dev/loop0p3 bs=64k seek=0

在这里插入图片描述

sudo dd if=u-boot.img of=/dev/loop0p3 bs=64k seek=4

在这里插入图片描述
查看分区
在这里插入图片描述
写入分区2文件系统
在这里插入图片描述
解压文件系统到分区2
在这里插入图片描述

sudo tar -xf/home/z/mine/rootfs.tar -C ./

在这里插入图片描述
写入分区1文件
在这里插入图片描述
复制文件到镜像
在这里插入图片描述
在这里插入图片描述
生成文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/8edfb223e90d44b5ba6c6cdefc685da8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bCP5oCq4Ly7,size_20,color_FFFFFF,t_70,g_se,x_16

至此,镜像制作完成。
将此镜像用Windows烧录,可以测试登录成功。有关烧录具体验证,可参考:
SoC学习篇—实现hello FPGA打印

最后

以上就是典雅饼干为你收集整理的SoC学习篇—Linux 系统搭建一、制作.dtb与.rbf文件二、启动操作系统内核三、内核编译,生成zImage四、编译根文件系统五、制作SD卡镜像的全部内容,希望文章能够帮你解决SoC学习篇—Linux 系统搭建一、制作.dtb与.rbf文件二、启动操作系统内核三、内核编译,生成zImage四、编译根文件系统五、制作SD卡镜像所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部