본문으로 바로가기

[RISC-V] RISC-V 설치 및 Hello RISC-V 실행

category SoC/RISC-V 2018. 8. 19. 15:49
반응형


1. 본 글은 개인적으로 RISC-V 프로세서를 스터디 하면서 습득한 내용을 정리한 것입니다.  

2. 정확히 이해를 하고 기술하는 글이 아니기 때문에 잘못된 내용이 전달 될 수도 있습니다. 

3. 수정 사항 및 질문은 언제든지 환영입니다.



RISC-V 프로세서를 논문 및 기고문 수준에서 대강 살펴 본지는 꽤 되었지만 (키워드 검색 수준) 몇년 전에 SoC 개발 업무로 직무을 변경하여 앞으로 엔지니어 생활을 하면서 다시 프로세서 개발 할 일은 없을 것이라고 생각하고 큰 관심을 두지 않았습니다. 하지만 새롭게 이직한 곳이 프로세서 개발 팀이다 보니 자연스럽게 RISC-V에 다시 관심을 가지게 되었고 많이 부족하지만 스터디를 시작하게 되었습니다. 앞으로 스터디를 진행하면서 내용을 정리하고, 새로운 것을 알게 될 때 마다 보완해 나갈 계획입니다.



1. RISC-V 환경    

아무런 생각 없이 OS는 RISC-V 개발 환경과 호환이 가장 좋은 ubunt로 결정 하였으며, RISC-V 에서 가장 유명한 Rocket Chip를 타겟으로 잡았습니다. 처음부터 환경 설치 과정에서 힘을 빼기 싫었고, Quick Instructions 을 따라하면 큰 어려움이 없는 것 같습니다. (말은 이렇게 해도 환경 변수를 잘못 선언하여 엉뚱한 곳에 설치된 경험이 있습니다. ㅠㅠ)


Repository URL: https://github.com/freechipsproject/rocket-chip

주의사항: Install Necessary Dependencies 를 꼭 먼저 확인 하세요. 


아래 그림은 UC Berkeley 의 CS250 EECS 실습 노트에서 발췌한 그림으로, RISC-V의 환경에 대한 설명이 한눈에 잘 설명 되어 있습니다. 그림에서 보면 gcc toolcahin(1), 명령어셋 시뮬레이터(4), Cycle-Accurate C Emulator(6), RTL 시뮬레이션 환경(5, 7) 까지 S/W부터 H/W까지 모든 것이 잘 갖추어져 있는 것을 확인 할 수 있으며, S/W 엔지니어도 4, 6을 이용하여 RISC-V 의 명령어와 프로세서의 동작을 분석 할 수 있을 것같습니다.(아직 해보지 않아서 모릅니다.) (개인적으로 가장 관심 있는 부분은 Chisel(2) 을 이용한 verilog 추출 및 해당 코드의 합성 결과입니다.)





2. Hello RISC-V 실행

이제 RISC-V를 설치 하였으니 프로그램 언어를 배울 때 가장 처음에 해 보는 것 처럼 Hello RISC-V 를 출력해 봐야겠지요? 간단히 hello.c 코드를 아래와 같이 준비해 봅니다. 


hello.c

#include <stdio.h>

int main ()
{
    printf ("\n");
    printf ("HELLO RISC-V !! \n");
    printf ("\n");
}


해당 코드를 다음과 같이 컴파일 합니다. 

 

myskan@ubuntu:$ riscv32-unknown-elf-gcc -o hello.o hello.c


명령어셋 시뮬레이터와 Proxy Kernel (RISC-V ELF를 호스트 할 수 있는 응용프로그램 환경)을 이용하여 위에서 준비한 코드를 실행해 보겠습니다. RISC-V의 명령어셋 시뮬레이터는 spike 이며 아래와 같이 실행합니다. 


myskan@ubuntu:$ spike pk hello.o

HELLO RISC-V !! 



다음으로는 spike에 대하여 좀 더 살펴 보도록 하겠습니다.   

반응형

'SoC > RISC-V' 카테고리의 다른 글

RISC-V에 대한 ARM의 대응  (0) 2019.10.14
RISC-V 의 전망  (2) 2019.01.23
[RISC-V] Chisel Tutorial  (0) 2018.09.16
[RISC-V] C Emulator 수행 및 Waveform 생성  (0) 2018.09.07
[RISC-V] spike 다루기  (0) 2018.08.28