DE0-Nano-SoC (Cyclone V SoC (FPGA))로 베어 메탈 챌린지 (환경 구축 편)

소개



쓰는 사람의 사양은 매우 폰코츠이므로 아마 완수 할 수는 없지만
완수할 수 있는 스펙의 사람들이 있다고 믿고 쓰는 것만의 메모

라고 할까, 여기에 쓰여진 것 를 일본어로 열화 카피하고 있을 뿐.

개요



DE0-Nano-SoC (SoCFPGA)로 베어 메탈하고 싶지 않습니까?
하고 싶다.

그러니까, 해 본 것을 메모하면서 기록해 간다.

할 일



Yocto 프로젝트의 Linux 커널을 부트할 수 있는 환경을 구축한다.

부팅 시퀀스
1. ROM에서 부트 로더를 읽습니다.
2. 부트 로더가 Uboot를로드합니다.
3. Uboot가 커널 로드
4. Linux 커널이 기동해 여러가지 할 수 있게 된다

이 순서의 4번은 베어 메탈 챌린지하고 싶기 때문에, 필요없다.
그래서 Uboot를 빌드하여 커널 대신 자신이 만든 프로그램이 시작되도록합니다.

개발 환경 구축



Ubuntu16.04 LTS상에 구축해 간다.

디렉토리를 만들고 그 안에 들어가
mkdir ~/crossFPGA
cd ~/crossFPGA

리포지토리 업데이트 및 어쩌면 필요한 도구 설치
sudo apt-get update
sudo apt-get install -y build-essential libffi-dev gcc-multilib lib32z1 
sudo apt-get install -y lib32ncurses5 lib32bz2-1.0 libssl-dev git socat
sudo apt-get install -y texinfo gawk chrpath gcc git 

bitbake에 패스를 통과합니다.
git clone -b jethro git://git.yoctoproject.org/poky.git
pushd poky
git clone -b jethro git://github.com/kraj/meta-altera.git
git clone -b jethro git://git.linaro.org/openembedded/meta-linaro.git
popd
PATH="$PATH:~/crossFPGA/poky/bitbake/bin/"

우선 초기화
source poky/oe-init-build-env ./build

하나의 디렉토리가 내려가서 build가 디렉토리에 들어갑니다.
위 명령을 치면~/crossFPGA/build/가 현재 디렉토리가 됩니다.
그리고 다음과 같은 메시지가 나온다.
### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-toolchain-sdk
    adt-installer
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

이것이 안전하게 보이면 CycloneV SoC에 대한 초기 값을 설정합니다.
vi conf/bblayers.conf

기본값은 이런 느낌
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  /home/segfo/crossFPGA/poky/meta-yocto-bsp \
  "
BBLAYERS_NON_REMOVABLE ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  "

meta-altera와
meta-linaro/meta-linaro-toolchain 작성
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  /home/segfo/crossFPGA/poky/meta-yocto-bsp \
  /home/segfo/crossFPGA/poky/meta-altera \
  /home/segfo/crossFPGA/poky/meta-linaro/meta-linaro-toolchain \
  "
BBLAYERS_NON_REMOVABLE ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  "

끝나면 닫고 저장.
또한 local.conf 편집
여기서 Cyclone V 용 linaro 툴체인 설정
vi conf/local.conf

이렇게 한다(추가할 뿐.qemux86에 대해서는 특별히 괴롭히지 않는다)


코피페용
MACHINE = "cyclone5"

ASSUME_PROVIDED 무언가 코멘트 아웃
(자신의 환경에서는 코멘트 아웃이었으므로 아무것도 하지 않았다)

이것을
ASSUME_PROVIDED += "libsdl-native"
이렇게
#ASSUME_PROVIDED += "libsdl-native"

또, 이 기술도 변경한다(패키징할 때의 에러 회피)
PACKAGE_CLASSES ?= "package_rpm"
rpm에서 ipk로 변경
PACKAGE_CLASSES ?= "package_ipk"

다음을 파일 끝에 붙여넣고 끝
(여기에 쓰여진 대로 했다: htps : // 기주 b. 코 m / k 등 j / 메타 - 아 l 테라 )
커널과 파일 시스템을 빌드하는 것처럼 보이지만 커널을 사용하지 않고 괜찮습니다.
PREFERRED_PROVIDER_virtual/kernel = "linux-altera"
PREFERRED_VERSION_linux-altera = "4.3%"
GCCVERSION = "linaro-5.2"
SDKGCCVERSION = "linaro-5.2"
DEFAULTTUNE = "cortexa9hf-neon"

코어 수의 2배로 병렬 빌드를 위한 설정
BB_NUMBER_THREADS = '8'
PARALLEL_MAKE = '-j 8'

그리고는, 하기 커멘드를 두드려 끝날 때까지 기다린다. 길기 때문에 자기 전이나 밥 먹기 전이라든지.
라고 할까 지금 여기 하고 있어, 끝나지 않기 때문에 이 앞의 일은 앞으로 하게 된다
(2017/06/17/23:00 현재)
bitbake virtual/kernel

마지막으로
bitbake core-image-minimal

이상. 뭔가 있으면 추기하려고 생각한다.

좋은 웹페이지 즐겨찾기