0. 환경설정
리눅스의 config option에 CONFIG_USB_SERIAL과 CONFIG_USB_SERIAL_CYPRESS_M8 이 y 로 되어있어야 한다. m 으로 되어있다면 y로 바꿔주고 리눅스를 재컴파일하자. 내 리눅스 배포판은 우분투 14.04-4 이다. 커널은 3.18.30을 올렸다.
Vivado 2016-2 설치
로켓칩 설치
위 github 의 quick instructions 를 따라해보자.
1. Quick instructions
1) $ make fetch-images
2) $ make fetch-riscv-linux
3) SD카드에 이미지 카피
$ make load-sd SD=path_to_mounted_sdcard
나의 경우 $ make load-sd SD=/media/jsim/6910-C05B
4) minicom 실행
미니컴이 없다면 apt-get 으로 설치한다.
$ dmesg | grep tty
ttyACM0 가 있음을 확인
$ sudo minicom -s
serial port setup에서 A를 눌러서 Serial Device 이름을 /dev/ttyACM0 로 바꿔준다. serial port setup이 안보인다면 Ctrl-A Z 를 눌러서 커맨드 창을 불러와서 O를 누른다.
5) SD카드를 빼서 보드에 끼고 전원을 올린다.
시리얼 포트로 통신한다.
6) 부팅 시키기
zynq-uboot> boot
id 와 password는 root / root 이다.
7) fesvr-zynq 프로그램으로 소프트코어에서 프로그램을 돌릴 수 있다.
./fesvr-zynq pk hello
8) Mounting the SD Card on the Board
root@zynq:~# mkdir /sdcard
root@zynq:~# mount /dev/mmcblk0p1 /sdcard
할 일을 끝냈으면 unmount 한다.
root@zynq:~# umount /sdcard
Building Everthing from scratch
먼저 JDK와 SBT가 필요하다.
JDK 는 알아서 다운로드, SBT는 다음과 같이 다운로드한다.
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt
아래 포스트는 무시할 것. 쓰다가 날라가서 내용이 정확하지 않습니다.
2. Pushing Your Rocket Modifications to the FPGA
1) Setting Up Workspace
rocket 카피가 없다면 다음 명령어로 클론한다.
$ cd [fpga-zynq dir]/zedboard
$ make init-rocket-submodule
쓴게 날라갔다.현재 https://github.com/riscv/riscv-tools#linuxman 에서
3.14.79 linux curl 까지 하고 집에 감.
Configuring the Linux Kernel 부터 해볼 것.
Linux configure 시에
$ make ARCH=riscv menuconfig
/ HTIF 의 다섯번째 옵션 HTIF_RFB 는 n으로 할 것
주의! busybox make menuconfig 시에
CONFIG_STATIC=y
, listed as "Build BusyBox as a static binary (no shared libs)" in BusyBox Settings → Build Options
CONFIG_CROSS_COMPILER_PREFIX=riscv-linux-
, listed as "Cross Compiler prefix" in BusyBox Settings → Build Options --> riscv64-unknown-linux-gnu- 로 바꿀 것.
CONFIG_FEATURE_INSTALLER=y
, listed as "Support --install [-s] to install applet links at runtime" in BusyBox Settings → General Configuration
CONFIG_INIT=y
, listed as "init" in Init utilities
CONFIG_ASH=y
, listed as "ash" in Shells
CONFIG_ASH_JOB_CONTROL=n
, listed as "Ash → Job control" in Shells
CONFIG_MOUNT=y
, listed as "mount" in Linux System Utilities