前言
基于开源Litex去Boot Linux
一、Litex安装
这里不赘述,建议安装Linux环境下Litex环境,具体可按照官方步骤安装。
二、Config配置、构建SOC
1.配置文件
首先进入如下目录(忽略我进入了root权限,在user权限下操作):
可以看到该目录下两个文件夹:platforms、targets
- platforms:该文件夹下存放着所有开发板的约束文件。
- targets:该文件夹下存放着构建对应开发板SOC的脚本文件。
我们本次使用Nexys4 DDR开发板,相对应的platforms和targets中文件为digilent_nexys4ddr.py,下图:
soc的配置可以手动修改脚本文件,将对应外设配置为True;也可以在命令行进行配置。
因为后续Boot Linux,需要将dts、镜像文件等加载至内存,通常有三种启动方式:
- 串口输入(不太建议,速度相当慢)
- SD卡写入(最主流的做法)
- Ethernet写入(相较于串口稍微快一点)
因为这次没有准备SD卡,所以我们采用Ethernet输入,直接修改脚本文件,如下图:
仅构建SOC最小系统+Ethernet:Core、DDR、Ethernet。
2.构建SOC
使用的Xilinx芯片,所以需要预先安装好Vivado,Litex会调用Vivado进行综合。
Core选用Vexriscv-smp,可以git下面这个工程更方便构建Linux
https://github.com/litex-hub/linux-on-litex-vexriscv
进入主目录下,运行如下命令:
/make.py --board=Nexys4DDR --build
运行结束后,会在build目录下生成nexysddr文件夹,里面存放着dts、bitstream等文件
3.烧录Bit,启动Bios
两种方法烧录:
- 在Ubuntu中安装FpgaProgrammer,直接烧录
- 利用Vivado烧录Bit
成功烧录后,打开串口可以打印如下界面:
4.Ethernet启动Linux
启动顺序:串口 – SD card – Ethernet,我们本次采用Ethernet加载镜像文件。
首先下载tftp,并将所需文件存放至本地文件夹中,fpga地址192.168.1.50,driver中主机地址配置为192.168.1.100,所以需要将本地主机设置为同一地址。
在Bios界面输入help,查看如何通过Ethernet启动。
可以看到可以在Bios界面通过输入netboot从主机启动。
等待Opensbi引导完毕,Linux可以正常启动。
总结
以上是使用Litex boot Linux简单说明,Litex功能十分强大,可以去深入学习。
没有回复内容