LiteX
FemtoRV는 LiteX와 함께 사용할 수 있습니다.
LiteX는 SoC를 만들기 위한 사용하기 쉬운 프레임워크입니다.
- 다양한 FPGA 보드를 지원합니다
- SDRAM, HDMI, SD 카드, SATA 등 다양한 장치를 위한 게이트웨어가 포함되어 있습니다.
- 기본적인 소프트웨어 지원(BIOS)을 제공합니다
- 일부 코어(VexRiscV)에서는 Linux까지 실행할 수 있습니다(단, FemtoRV에서는 불가능합니다)
이 파일의 나머지 부분에서는 LiteX와 그 의존성을 설치하는 방법을 설명합니다.
오픈 소스 FPGA 개발 툴체인 설치
시작하기 전에 오픈 소스 FPGA 개발 툴체인(Yosys, NextPNR 등)을 설치해야 합니다. 설치 방법은 여기에 나와 있습니다.
LiteX 설치
LiteX 웹사이트의 설치 안내를 따르십시오
요약
$ mkdir LiteX
$ cd LiteX
$ wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
$ chmod +x litex_setup.py
$ ./litex_setup.py --init --install --user
$ pip3 install meson ninja
$ sudo ./litex_setup.py --gcc=riscv
합성
합성 방법은 보유한 보드에 따라 다릅니다.
SoC에 연결하기
터미널 에뮬레이터를 실행하십시오. LiteX에 포함된 터미널
에뮬레이터(lxterm)를 사용할 수 있습니다. 보드가 어느
포트(/dev/ttyUSBnnn 중 하나)에 연결되었는지 확인해야
합니다. 보드를 연결한 직후 $dmesg를 실행하십시오(또는 여러
값을 시도해 보십시오). ttyUSB0이라고 가정하면 다음을
실행하십시오:
$litex_term /dev/ttyUSB0
그런 다음 <enter>를 누르십시오.
litex> 프롬프트가 표시됩니다.
- 짐작하셨겠지만, 사용 가능한 명령을 보려면
litex> help를 실행하십시오. litex> sdram_test를 실행해 보십시오. 모든 것이 정상이라면Memtest OK가 출력됩니다.- 종료하려면
<ctrl><\>를 누르십시오
FemtoRV 변형
LiteX는 가장 작은 femtorv-quark(RV32I)부터 FPU를 갖춘 가장 큰 femtorv-petitbateau(RV32IMFC+irq)까지 FemtoRV의 모든 변형을 사용할 수 있습니다.
| 변형 | 명령어 집합 |
|---|---|
| quark | RV32I |
| electron | RV32IM |
| intermissum | RV32IM+irq |
| gracilis | RV32IMC+irq |
| petitbateau | RV32IMFC+irq |
$ python3 -m litex_boards.targets.radiona_ulx3s --cpu-type=femtorv --cpu-variant=petitbateau --build --load --device LFE5U-85F --sdram-module AS4C32M16
소프트웨어
이제 SoC에 소프트웨어를 컴파일하고 설치할 차례입니다.
장치용 RiscV 소프트웨어 컴파일하기
LiteX 데모는 여기를 참고하십시오.
$ cd <LiteX installation directory>
$ litex_bare_metal_demo --build-path build/radiona_ulx3s/
장치로 소프트웨어 보내기
다음과 같이 lxterm을 사용하여 장치로 바이너리를 보낼 수 있습니다.
$lxterm --kernel <software.bin> --speed 115200 /dev/ttyUSB0
참고 - LiteX 치트코드와 파일
LiteX의 동작 방식을 더 알고 싶다면 소스 코드를 읽어 보는 것이 좋습니다! 몇 가지 중요한 링크와 파일은 다음과 같습니다.
- 시뮬레이션:
litex_sim --cpu-type=femtorv --with-sdram - ULX3S 핀:
litex-boards/litex_boards/platforms/radiona_ulx3s.py - ULX3S:
litex-boards/litex_boards/targets/radiona_ulx3s.py - femtorv:
litex/litex/soc/cores/cpu/femtorv/core.py - bios:
litex/litex/soc/software/bios/main.c - 프레임버퍼:
litex/litex/soc/cores/video.py - wishbone-utils