概述
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
生成板机支持包【software目录下】
bsp-editor.exe
选择如示
打开后界面如示,点击OK
点击生成bps
查看生成文件
点击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文件
复制文件到镜像
生成文件
至此,镜像制作完成。
将此镜像用Windows烧录,可以测试登录成功。有关烧录具体验证,可参考:
SoC学习篇—实现hello FPGA打印
最后
以上就是典雅饼干为你收集整理的SoC学习篇—Linux 系统搭建一、制作.dtb与.rbf文件二、启动操作系统内核三、内核编译,生成zImage四、编译根文件系统五、制作SD卡镜像的全部内容,希望文章能够帮你解决SoC学习篇—Linux 系统搭建一、制作.dtb与.rbf文件二、启动操作系统内核三、内核编译,生成zImage四、编译根文件系统五、制作SD卡镜像所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复