53
TUNA Board Tutorial 漢陽大學校 수정일: 2015년 1월 16일

TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

TUNA Board Tutorial

漢陽大學校

수정일: 2015년 1월 16일

Page 2: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

OutlineOutline

툴체인 설치 및 환경 설정

U-Boot 빌드

Linux 커널 빌드

뉴메모리 에뮬레이션 테스트

Android 빌드

2

Page 3: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

툴 체인 설치 및 환경 설정

3

Page 4: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Xilinx Toolchain 다운로드Xilinx Toolchain 다운로드

4

Download

http://www.wiki.xilinx.com/Install+Xilinx+Tools에서 툴체인 다운로드

Page 5: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Xilinx Toolchain 설치Xilinx Toolchain 설치

툴체인 설치

5

Page 6: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Xilinx Toolchain 설치Xilinx Toolchain 설치

6

Page 7: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Xilinx Toolchain 설치Xilinx Toolchain 설치

7

Page 8: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Xilinx Toolchain 환경 설정Xilinx Toolchain 환경 설정

크로스 컴파일 환경설정 $ export CROSS_COMPILE=arm-xilinx-linux-gnueabi- $ source /opt/Xilinx/SDK/2014.4 settings64.sh

설치한 toolchain에 따라 경로는 다를 수 있음 ex) Xiline ISE toolchain 사용시

$ source /opt/Xilinx/14.7/ISE_DS/settings32(64).sh

8

Page 9: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

부트 파일 빌드

9

Page 10: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Git을 이용하여 소스코드 다운로드 U-boot : $ git clone git://git.xilinx.com/u-boot-xlnx.git Linux Kernel : $ git clone git://git.xilinx.com/linux-xlnx.git

소스코드 다운로드소스코드 다운로드

10

<U-boot>

<Linux Kernel>

Page 11: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

U-Boot 빌드U-Boot 빌드

To build U-Boot for zc702/zc706 execute: $ make zynq_zc70x_config $ make

완료

11

U-boot 이미지

Page 12: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

U-Boot 이미지 생성U-Boot 이미지 생성

“mkimage” command not found – U-boot image will not be built $ apt-get install uboot-mkimage

12

Page 13: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

BOOT.bin 파일 생성BOOT.bin 파일 생성

BOOT.bin 파일 생성시 필요한 파일 FSBL.elf 파일 (First Step Boot Loader)

$ wget http://dmclab.hanyang.ac.kr/wikidata/download/FSBL.elf

system_top.bit 파일 (비트스트림) $ wget http://dmclab.hanyang.ac.kr/wikidata/download/system_top.bit

u-boot.elf 파일 (u-boot) u-boot 파일의 이름을 u-boot.elf로 변경

BOOT.bin 파일 생성 bootimage.bif 파일 생성

$ bootgen -image bootimage.bif -w on -o i BOOT.bin

13

Page 14: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Linux 커널 빌드

14

Page 15: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

리눅스 커널 이미지 생성리눅스 커널 이미지 생성

리눅스 커널 Configuration $ make ARCH=arm xilinx_zynq_defconfig

$ make ARCH=arm menuconfig

리눅스 커널 빌드 $ make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage

15

Page 16: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

리눅스 커널 이미지 생성리눅스 커널 이미지 생성

arch/arm/boot 디렉토리에 uImage 생성

16

Page 17: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Device Tree Blob 생성Device Tree Blob 생성

리눅스 커널 arch/arm/boot/dts에 zynq-zc706.dts 파일이 존재

Device Tree 생성 $ make ARCH=arm zynq-zc706.dtb

arch/arm/boot/dts에 zynq-zc706.dtb 파일 생성

17

메모리 크기 조절

Page 18: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

램디스크 이미지 생성램디스크 이미지 생성

램디스크 이미지 다운로드 $ wget http://www.wiki.xilinx.com/file/view/arm_ramdisk.image.gz

419243558/arm_ramdisk_image.gz

램디스크 이미지 생성 $ mkimage -A arm -T ramdisk -C gzip -d arm_ramdisk.image.gz

uramdisk.image.gz

18

Page 19: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

부트파일 복사부트파일 복사

microSD에 부팅에 필요한 파일들을 복사 BOOT.bin uImage uramdisk.image.gz devicetree.dtb

복사가 완료된 microSD를 TUNA보드에 삽입

19

Page 20: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

터미널 설정

20

Page 21: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

터미널 장치 드라이버 설치터미널 장치 드라이버 설치

윈도우에서 가상 머신 사용시 호스트 OS에 USB-to-UART 드라이버(CP210x_VCP) 설치 다운로드 :

http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx

21

Page 22: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

드라이버 설치 확인드라이버 설치 확인

가상머신에 USB 연결 후, /dev/ttyUSB0 확인

22

Page 23: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

터미널 환경 설정터미널 환경 설정

Minicom 환경 설정 $ apt-get install minicom $ minicom –s Serial port setup

23

Page 24: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

터미널 실행터미널 실행

저장 후 minicom 실행

24

Page 25: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

뉴메모리 에뮬레이션 테스트

25

Page 26: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

TUNA 보드 Latency 조절 기능TUNA 보드 Latency 조절 기능

TUNA 보드 2GB의 PL-DRAM 영역에 대하여 read/write latency 조절가능

메모리 입출력에 지연 부가

read/write 각각 16단계(0~15)의 latency level 제공 각 latency 레벨에 따른 latency 차이는 RTL 수정을 통해 가능

Default setting read latency offset = 50ns write latency offset =100ns

RTL은 bit-stream파일로 제공

26

Page 27: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

TUNA Board 에서 NVRAM Latency 조절 방법TUNA Board 에서 NVRAM Latency 조절 방법

Git에서 NVRAM Latency를 조절하는 소스코드 다운로드 $ git clone https://github.com/ESOS-Lab/HEAPO.git HEAPO_ARM_3.15 디렉토리에 latency_controller.c 확인

latency_controller 빌드 $ export CROSS_COMPILE=arm-xilinx-linux-gnueabi- $ source /opt/Xilinx/SDK/2014.4/settings64.sh $ arm-xilinx-linux-gnueabi-gcc -o latency_controller latency_controller.c

latency_controller 사용법 latency 실행 파일을 TUNA보드에서 실행 latency_controller [READ LATENCY] [WRITE LATENCY]

0~15 사이의 정수값을 인자로 입력 사용예)

현재는 재변경시 reboot 필요

27

Page 28: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

memtest 모듈: Read 및 Write Testmemtest 모듈: Read 및 Write Test

memtest 모듈 linux kernel 모듈의 모듈 초기화 코드에서 latency 측정 PL-DRAM영역을 디바이스 메모리로 접근 ioremap_nocache()를 이용하여 메모리 매핑 설정 후 입출력 시간 측정 ARM PMU(Performance Monitoring Unit)를 이용해 시간 측정

memtest 모듈 환경 설정 dts 설정에서 메모리 영역은 0x0 ~ 0x40000000으로 설정

memtest 모듈 빌드 Makefile의 커널 소스 경로 및 크로스컴파일러 경로 설정 후, make로 빌드

28

$ wget http://dmclab.hanyang.ac.kr/wikidata/download/memtest.tar$ tar xvf memtest.tar$ vi Makefile$ make

$ wget http://dmclab.hanyang.ac.kr/wikidata/download/memtest.tar$ tar xvf memtest.tar$ vi Makefile$ make

Page 29: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

memtest 모듈 실행memtest 모듈 실행

memtest 모듈 실행 TUNA보드에서 memtest.ko 모듈 로드

테스트 항목 단일 load/store 인스트럭션 수행 시간: 각 10회씩 수행

ldrb/strb: 1-byte load/store ldrh/strh: 2-byte load/store ldr/str: 4-byte load/store

32-byte(캐시라인 단위) load/store: 8 X (ldr/str)

stride size 변화에 따른 latency 측정 stride size: 4byte ~ 16Kbyte loop 횟수: 1,000,000

29

zynq> insmod memtest.kozynq> insmod memtest.ko

Page 30: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

HEAPO를 이용한 read latency 측정HEAPO를 이용한 read latency 측정

HEAPO 뉴메모리 사업단에서 개발한 persistent heap layer

TUNA Ported-HEAPO PL-DRAM 영역(0x40000000~0xC0000000)을 ZONE_NVRAM으로 지정 HEAPO를 이용한 모든 메모리 할당은 PL-DRAM에 할당

30

Page 31: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

HEAPO 커널 빌드HEAPO 커널 빌드

HEAPO Download git clone https://github.com/ESOS-Lab/HEAPO.git

ARM버전의 HEAPO 리눅스 커널 빌드 $ cd HEAPO/HEAPO_ARM_3.15/linux-xlnx $ make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage arch/arm/boot/ 에 uImage 생성

라이브러리 빌드 $ cd HEAPO/HEAPO_ARM/Library make ./install.sh

microSD의 커널 이미지 교체

31

Page 32: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

HEAPO-based Read Latency 측정HEAPO-based Read Latency 측정

구현 HEAPO library를 이용하여 구현(HEAPO 필요) ARM PMU(Performance Monitoring Unit)를 이용해 시간 측정

다운로드 $ wget http://dmclab.hanyang.ac.kr/wikidata/download/read_test.tar.gz $ tar xvf read_test.tar.gz

빌드 $ arm-xilinx-linux-gnueabi-gcc -O0 -mtune=cortex-a9 -o Read_test –static

Read_test.c v7_pmu.s -L ../../HEAPO/HEAPO_ARM_3.15/Library/ -lpos

실행 사용 $ cd mnt $ insmod user.ko

user mode pmu 활성화

$ ./Read_test32

Page 33: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Android 빌드

33

Page 34: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

준비준비

안드로이드 부팅에 필요한 파일 BOOT.bin uImage devicetree.dtb uramdisk.image.gz

$ wgethttp://dmclab.hanyang.ac.kr/wikidata/download/android/uramdisk.image.gz

init.sh $ wget http://dmclab.hanyang.ac.kr/wikidata/download/android/init.sh

root_fs.tar.gz $ wget http://dmclab.hanyang.ac.kr/wikidata/download/android/root_fs.tar.gz

34

Page 35: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

microSD 파티션 설정microSD 파티션 설정

Android 파티션 Boot partition: FAT32, boot files Root partition: EXT4, Android root file system Storage partition: EXT4, external storage

파티션 설정 모든 microSD 파티션 언마운트 fdisk 실행 (sdb가 microSD라고 가정)

기존 파티션 전부 삭제 (d command)

35

$ fdisk /dev/sdb$ fdisk /dev/sdb

Page 36: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Boot 파티션 생성Boot 파티션 생성

36

Command (m for help): nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p):Using default response pPartition number (1‐4, default 1):Using default value 1First sector (2048‐15523839, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048‐15523839, default 15523839): +1GCommand (m for help): tSelected partition 1Hex code (type L to list codes): cChanged system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p):Using default response pPartition number (1‐4, default 1):Using default value 1First sector (2048‐15523839, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048‐15523839, default 15523839): +1GCommand (m for help): tSelected partition 1Hex code (type L to list codes): cChanged system type of partition 1 to c (W95 FAT32 (LBA))

Page 37: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Root 파티션 생성Root 파티션 생성

37

Command (m for help): nPartition type:p primary (1 primary, 0 extended, 3 free)e extendedSelect (default p):Using default response pPartition number (1‐4, default 2):Using default value 2First sector (2099200‐15523839, default 2099200):Using default value 2099200Last sector, +sectors or +size{K,M,G} (2099200‐15523839, default 15523839): +4GCommand (m for help): tPartition number (1‐4): 2Hex code (type L to list codes): 83

Command (m for help): nPartition type:p primary (1 primary, 0 extended, 3 free)e extendedSelect (default p):Using default response pPartition number (1‐4, default 2):Using default value 2First sector (2099200‐15523839, default 2099200):Using default value 2099200Last sector, +sectors or +size{K,M,G} (2099200‐15523839, default 15523839): +4GCommand (m for help): tPartition number (1‐4): 2Hex code (type L to list codes): 83

Page 38: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

External Storage 파티션 생성External Storage 파티션 생성

38

Command (m for help): nPartition type:p primary (2 primary, 0 extended, 2 free)e extendedSelect (default p):Using default response pPartition number (1‐4, default 3):Using default value 3First sector (10487808‐15523839, default 10487808):Using default value 10487808Last sector, +sectors or +size{K,M,G} (10487808‐15523839, default 15523839):Using default value 15523839Command (m for help): tPartition number (1‐4): 3Hex code (type L to list codes): 83

Command (m for help): nPartition type:p primary (2 primary, 0 extended, 2 free)e extendedSelect (default p):Using default response pPartition number (1‐4, default 3):Using default value 3First sector (10487808‐15523839, default 10487808):Using default value 10487808Last sector, +sectors or +size{K,M,G} (10487808‐15523839, default 15523839):Using default value 15523839Command (m for help): tPartition number (1‐4): 3Hex code (type L to list codes): 83

Page 39: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

파티션 생성 확인 및 저장파티션 생성 확인 및 저장

39

Command (m for help): vPartition 1: previous sectors 2099199 disagrees with total 2098565Partition 2: previous sectors 10487807 disagrees with total 10476633Partitions 3: cylinder 967 greater than maximum 966Partition 3: previous sectors 15523839 disagrees with total 15521165Remaining 2047 unallocated 512‐byte sectorsCommand (m for help): wThe partition table has been altered!Calling ioctl() to re‐read partition table.WARNING: Re‐reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table. The new table will be used atthe next reboot or after you run partprobe(8) or kpartx(8)WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.Syncing disks.

Command (m for help): vPartition 1: previous sectors 2099199 disagrees with total 2098565Partition 2: previous sectors 10487807 disagrees with total 10476633Partitions 3: cylinder 967 greater than maximum 966Partition 3: previous sectors 15523839 disagrees with total 15521165Remaining 2047 unallocated 512‐byte sectorsCommand (m for help): wThe partition table has been altered!Calling ioctl() to re‐read partition table.WARNING: Re‐reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table. The new table will be used atthe next reboot or after you run partprobe(8) or kpartx(8)WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.Syncing disks.

Page 40: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

파티션 포맷파티션 포맷

40

$ partprobe /dev/sdb$ mkfs.vfat ‐F 32 ‐n boot /dev/sdb1$ mkfs.ext4 ‐L root /dev/sdb2$ mkfs.ext4 ‐L root /dev/sdb3

$ partprobe /dev/sdb$ mkfs.vfat ‐F 32 ‐n boot /dev/sdb1$ mkfs.ext4 ‐L root /dev/sdb2$ mkfs.ext4 ‐L root /dev/sdb3

Page 41: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Android용 커널 빌드Android용 커널 빌드

소스 다운

빌드 환경 설정 및 커널 빌드

41

$ git clone git://git.iveia.com/xilinx2/android/kernel/zynq.git$ git clone git://git.iveia.com/xilinx2/android/kernel/zynq.git

$ cd zynq$ export PATH=/opt/Xilinx/14.7/ISE_DS/EDK/gnu/arm/lin/bin:$PATH$ export ARCH=arm$ export CROSS_COMPILE=arm‐xilinx‐linux‐gnueabi‐$ make xilinx_zynq_android_defconfig$ make uImage modules UIMAGE_LOADADDR=0x8000

$ cd zynq$ export PATH=/opt/Xilinx/14.7/ISE_DS/EDK/gnu/arm/lin/bin:$PATH$ export ARCH=arm$ export CROSS_COMPILE=arm‐xilinx‐linux‐gnueabi‐$ make xilinx_zynq_android_defconfig$ make uImage modules UIMAGE_LOADADDR=0x8000

Page 42: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Device Tree 수정Device Tree 수정

/arch/arm/boot/dts/zynq-zc706.dts 파일 수정 qspi0: spi@e000d000 섹션에 status = “disabled”; 추가

42

......qspi0: spi@e000d000 {

compatible = "xlnx,ps7‐qspi‐1.00.a";status = "disabled";reg = <0xE000D000 0x1000>;interrupts = <0 19 4>;interrupt‐parent = <&gic>;speed‐hz = <200000000>;bus‐num = <1>;

......

......qspi0: spi@e000d000 {

compatible = "xlnx,ps7‐qspi‐1.00.a";status = "disabled";reg = <0xE000D000 0x1000>;interrupts = <0 19 4>;interrupt‐parent = <&gic>;speed‐hz = <200000000>;bus‐num = <1>;

......

Page 43: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Device Tree Blob 생성Device Tree Blob 생성

43

$ scripts/dtc/dtc ‐I dts ‐O dtb ‐o devicetree.dtb \arch/arm/boot/dts/zynq‐zc706.dts$ scripts/dtc/dtc ‐I dts ‐O dtb ‐o devicetree.dtb \arch/arm/boot/dts/zynq‐zc706.dts

Page 44: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Android 소스 다운Android 소스 다운

44

$ curl https://dl‐ssl.google.com/dl/googlesource/git‐repo/repo > ~/bin/repo$ chmod a+x ~/bin/repo$ mkdir ‐p ~/scm/android$ cd ~/scm/android$ repo init ‐u git://git.iveia.com/xilinx2/android/platform/manifest.git ‐b zynq‐android‐2.0$ repo sync$ repo forall ‐c git checkout aosp/aosp/master

$ curl https://dl‐ssl.google.com/dl/googlesource/git‐repo/repo > ~/bin/repo$ chmod a+x ~/bin/repo$ mkdir ‐p ~/scm/android$ cd ~/scm/android$ repo init ‐u git://git.iveia.com/xilinx2/android/platform/manifest.git ‐b zynq‐android‐2.0$ repo sync$ repo forall ‐c git checkout aosp/aosp/master

Page 45: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Android Build 환경 설정Android Build 환경 설정

패키지 설치 및 라이브러리 경로 설정

45

$ sudo apt‐get install git gnupg flex bison gperf build‐essential \zip curl libc6‐dev libncurses5‐dev:i386 x11proto‐core‐dev \libx11‐dev:i386 libreadline6‐dev:i386 libgl1‐mesa‐glx:i386 \libgl1‐mesa‐dev g++‐multilib mingw32 tofrodos \python‐markdown libxml2‐utils xsltproc zlib1g‐dev:i386 \libswitch‐perl

$ sudo ln ‐s /usr/lib/i386‐linux‐gnu/mesa/libGL.so.1 /usr/lib/i386‐linux‐gnu/libGL.so

$ sudo apt‐get install git gnupg flex bison gperf build‐essential \zip curl libc6‐dev libncurses5‐dev:i386 x11proto‐core‐dev \libx11‐dev:i386 libreadline6‐dev:i386 libgl1‐mesa‐glx:i386 \libgl1‐mesa‐dev g++‐multilib mingw32 tofrodos \python‐markdown libxml2‐utils xsltproc zlib1g‐dev:i386 \libswitch‐perl

$ sudo ln ‐s /usr/lib/i386‐linux‐gnu/mesa/libGL.so.1 /usr/lib/i386‐linux‐gnu/libGL.so

Page 46: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Oracle JDK6 다운로드Oracle JDK6 다운로드

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR

46

Page 47: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

JDK 설치JDK 설치

Oracle JDK6 설치

환경 설정

47

$ chmod +x jdk‐6u45‐linux‐*$ mkdir /usr/lib/jvm$ cp jdk‐6u45‐linux‐x64.bin /usr/lib/jvm/$ cd /usr/lib/jvm/$ ./jdk‐6u45‐linux‐x64.bin

$ chmod +x jdk‐6u45‐linux‐*$ mkdir /usr/lib/jvm$ cp jdk‐6u45‐linux‐x64.bin /usr/lib/jvm/$ cd /usr/lib/jvm/$ ./jdk‐6u45‐linux‐x64.bin

$ update‐alternatives ‐‐install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.6.0_45/bin/java" 1 $ update‐alternatives ‐‐install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0_45/bin/javac" 1$ update‐alternatives ‐‐install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.6.0_45/bin/javaws" 1 

$ update‐alternatives ‐‐config java $ update‐alternatives ‐‐config javac$ update‐alternatives ‐‐config javaws

$ update‐alternatives ‐‐install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.6.0_45/bin/java" 1 $ update‐alternatives ‐‐install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0_45/bin/javac" 1$ update‐alternatives ‐‐install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.6.0_45/bin/javaws" 1 

$ update‐alternatives ‐‐config java $ update‐alternatives ‐‐config javac$ update‐alternatives ‐‐config javaws

Page 48: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Android 빌드Android 빌드

48

$ . build/envsetup.sh$ lunch full‐eng$ make ‐j<N>

$ . build/envsetup.sh$ lunch full‐eng$ make ‐j<N>

Page 49: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

Makefile.zynq 생성Makefile.zynq 생성

Makefile.zynq을 다음과 같이 편집

49

OUT_DIR:=out/target/product/genericROOT_IMG:=root.imgROOTFS:=rootfsROOT_DIRS=lib/modules tmp media mnt sdcard.PHONY: dummy$(ROOT_IMG): dummy

rm ‐rf $@sudo rm ‐rf $(ROOTFS)cp ‐r $(OUT_DIR)/root $(ROOTFS)cp ‐r $(OUT_DIR)/system $(ROOTFS)cd $(ROOTFS) && mkdir ‐p $(ROOT_DIRS)sudo chown ‐R root:root $(ROOTFS)sudo genext2fs ‐d $(ROOTFS) ‐b $$((250*1024)) ‐m 0 ‐N 

$$((64*1024)) $(ROOT_IMG)sudo chown $(shell id ‐u):$(shell id ‐g) $(ROOT_IMG)

# Phony target forces the rootfs image file to be rebuilt on each makedummy:

OUT_DIR:=out/target/product/genericROOT_IMG:=root.imgROOTFS:=rootfsROOT_DIRS=lib/modules tmp media mnt sdcard.PHONY: dummy$(ROOT_IMG): dummy

rm ‐rf $@sudo rm ‐rf $(ROOTFS)cp ‐r $(OUT_DIR)/root $(ROOTFS)cp ‐r $(OUT_DIR)/system $(ROOTFS)cd $(ROOTFS) && mkdir ‐p $(ROOT_DIRS)sudo chown ‐R root:root $(ROOTFS)sudo genext2fs ‐d $(ROOTFS) ‐b $$((250*1024)) ‐m 0 ‐N 

$$((64*1024)) $(ROOT_IMG)sudo chown $(shell id ‐u):$(shell id ‐g) $(ROOT_IMG)

# Phony target forces the rootfs image file to be rebuilt on each makedummy:

Page 50: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

root.img 파일 생성root.img 파일 생성

genext2fs 설치

root.img 생성

root.img 마운트 및 복사

50

$ sudo apt‐get install genext2fs$ sudo apt‐get install genext2fs

$ make ‐f Makefile.zynq$ make ‐f Makefile.zynq

$ mkdir tmp1$ mkdir tmp2$ sudo mount ‐t ext4 /dev/sdb2 tmp2$ sudo mount ‐o loop root.img tmp$ sudo cp ‐r tmp1/* tmp2/

$ mkdir tmp1$ mkdir tmp2$ sudo mount ‐t ext4 /dev/sdb2 tmp2$ sudo mount ‐o loop root.img tmp$ sudo cp ‐r tmp1/* tmp2/

Page 51: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

ramdisk 생성ramdisk 생성

ramdisk.image 다운로드 $ wget

http://dmclab.hanyang.ac.kr/wikidata/download/android/ramdisk.image

ramdisk.image 마운트 및 수정

umount 및 uramdisk.image.gz 생성

51

$ sudo mount ‐o loop ramdisk.image tmp$ sudo mount ‐o loop ramdisk.image tmp

$ sudo umount tmp$ gzip ramdisk.image$ mkimage ‐A arm ‐T ramdisk ‐C gzip ‐d ramdisk.image.gz uramdisk.image.gz

$ sudo umount tmp$ gzip ramdisk.image$ mkimage ‐A arm ‐T ramdisk ‐C gzip ‐d ramdisk.image.gz uramdisk.image.gz

Page 52: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

부팅부팅

microSD의 boot파티션에 다음 파일 적재 BOOT.bin: 리눅스 부팅에 사용한것과 동일 uImage: Android용 linux kernel image devicetree.dtb: 수정된 device tree 파일 uramdisk.image.gz init.sh

microSD의 android root partition에 root file system 생성

52

Page 53: TUNA Board Tutorialopennvram.org/wordpress/wp-content/uploads/2015/08/TUNA... · 2016-04-10 · TUNA 보드Latency 조절기능 TUNA 보드 2GB의PL-DRAM 영역에대하여read/write

漢陽大學校

ReferenceReference

http://www.wiki.xilinx.com/Build+Kernel http://www.wiki.xilinx.com/Building+Android+BSP+on+ZC702 http://www.wiki.xilinx.com/Android+4.2.2+On+Zynq+Getting+Started+

Guide http://www.wiki.xilinx.com/Building+Android+4.2.2+BSP+on+ZC702 http://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs

53