DE10_Standard开发板的学习过程(更改设备树)

1、下载镜像

镜像可以去友晶官网下载镜像下载地址,有两个镜像,一个是lxde一个是console控制台的,两个的Linux内核都是4.5的。这个去github上面下载,网址如下https://github.com/terasic/linux-socfpga选择Branch: socfpga-4.5
以后如果自己的需要添加自己的驱动,可以重新编译上面的内核就好,内核的编译可以按照rocketboard官网来做,官网是默认用他们的配置来编译,你可以根据自己的需求来编译。

2、设备树和preloader等改动

在光盘下面有一个工程,/Demonstration/SoC_FPGA/DE10_Standard_GHRD,下面的这个soc_system_board_info.xml,hps_common_board_info.xml删掉,然后这个工程Demonstration/SoC_FPGA/ControlPanel/Quartus下面拷贝soc_system_board_info.xml,hps_common_board_info.xml他们去替换。因为镜像系统是基于这个工程Demonstration/SoC_FPGA/ControlPanel/Quartus来做的。
可以好好看这个文档DE10-Standard_User_manual.pdf,里面有一些细节需要注意一下。上面都弄好之后就可以开始按下面的步骤来做了。

//1、cd到编译好的工程目录下,我是用windows编译,然后拷贝到Linux上面去的。
//2、然后替换好上面提到这两文件soc_system_board_info.xml,hps_common_board_info.xml
//如下流程
~/intelFPGA/16.1/embedded/embedded_command_shell.sh
cd output_files
//这一步按照比较重要,bitstream_compression=on这个参数一定要添加,要不然
//出现altera loaded:failed with error code -4
/home/you/intelFPGA/16.1/quartus/bin/quartus_cpf -c DE10_Standard_GHRD.sof -o bitstream_compression=on soc_system.rbf
cd ..
bsp-editor & //默认按照rocketboard官网就好
cd software/spl_bsp/
make
cd ../../
//这一步当中是soc_system.dtb而不是socfpga.dtb因为,我没有改动u-boot.scr所以也默认用这个soc_system.dtb名字
sopc2dts --input soc_system.sopcinfo --output soc_system.dtb --type dtb --board soc_system_board_info.xml --board hps_common_board_info.xml --bridge-removal all --clocks
//产生头文件.h
 sopc-create-header-files soc_system.sopcinfo 

//上面步骤完成以后
把soc_system.dtb soc_system.rbf preloader-mkpimage.bin 拷贝到sd卡的相应分区就好
sudo dd if=preloader-mkpimage.bin of=/dev/sdb3 bs=64k seek=0

3、制作镜像可能常用的指令

//.sopcinfo文件生成dts文件
 sopc2dts --input soc_system.sopcinfo --output new_soc_system.dts --board soc_system_board_info.xml --board hps_common_board_info.xml
//.sopcinfo文件生成dtb文件
sopc2dts --input soc_system.sopcinfo --output soc_system.dtb --type dtb --board soc_system_board_info.xml --board hps_common_board_info.xml --bridge-removal all --clocks
//用dts文件生成dtb
 dtc -I dts -O dtb -o socfpga.dtb new_soc_system.dts //dts to dtb
 //用dtb文件生成dts
 dtc -I dtb -O dts -o soc_system.dts soc_system.dtb  //dtb dts
 
  • 1、查看.img镜像文件的内容
    可以参考这个链接linux系统中如何打开察看img文件内容
    在这里插入图片描述

  • 2、制作.img镜像
    可以参考这个链接Altera FPGA SoC搭建步骤这个链接中可以知道如何编译文件系统还有Linux内核,还有u-boot等,但是好像现在altera的镜像都用Linux Angstrom管理文件系统。
    分区3是A2类型的分区是无文件系统分区
    在这里插入图片描述

制作完成之后用如下命令让它生效

//让它生效
sudo partprobe /dev/loopX
// 格式化分区1,成为FAT文件系统:
sudo mkfs –t vfat /dev/loopXp1
//格式化分区2,成为ext4文件系统: 
sudo mkfs.ext4 /dev/loopXp2
//preloader写入分区3:
sudo dd if=software/spl_bsp/preloader-mkpimage.bin of=/dev/loopXp3 bs=64k seek=0
// 挂载分区1(FAT文件系统),并将拷入之前生成的"u-boot.img", "u-boot.scr"和FPGA的烧写文件"soc_system.rbf".
mkdir temp_mount
sudo mount /dev/loopXp1 ./temp_mount
sudo cp software/u-boot-socfpga/u-boot.img software/u-boot.scr soc_system.dtb soc_system.rbf temp_mount
sync
sudo umount temp_mount

关于loop设备的挂载和卸载

//可以使是.iso或是.img文件
sudo mount   -t   xxxx.iso   -o   loop   /dev/loop0   //loop设备路径
//查看loop设备
losetup -a
//卸载loop设备
losetup -d /dev/loop1
  • 3、制作镜像,根据rocket官网步骤来走
sudo ~/make_sdimage.py  \
  -f \
  -P preloader-mkpimage.bin,u-boot-cyclone5.img,num=3,format=raw,size=10M,type=A2  \
  -P rootfs/*,num=2,format=ext3,size=1500M  \
  -P zImage,u-boot.scr,soc_system.rbf,socfpga.dtb,num=1,format=vfat,size=500M  \
  -s 2G  \
  -n sd_card_image_cyclone5.img

总结

如果qsys的东西没有改变,那么只要更新.rbf文件就可以。

问题

1、自己的写的ip核挂载在qsys中的总线上面,在生成设备树的时候,出现unkown现象没有解决。
2、QSYS中自己添加官网的一些IP,生成设备树的时候,出现not support也没有解决

上面的问题归根就是不会改动soc_system_board_info.xml,hps_common_board_info.xml这个两个文件,有哪位网友会改动的可以下面留言一下,嘻嘻。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章