SoC学习篇—Linux 系统搭建
一、制作.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_GHRD\software\preloader\uboot-socfpga
C5CB_GHRD\software
C5CB_GHRD\software\preloader
至此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/