Raspberry Pi64bit 모드에서 실시간 OS(TOPPERS/FMP) 실행


실시간 OS를 Raspberry Pi 3의 64비트 모드로 마이그레이션


실시간 OS는 TOPPERS/FMP 코어https://www.toppers.jp를 사용합니다.
Zynq Cortex-A53AArch64를 바탕으로 Raspberry Pi3 Cortex-A53AArch64에 이식합니다.
소스 코드는 아래에 있습니다.
https://github.com/YujiToshinaga/RPi64Toppers

개요

  • TOPPERS/FMP 코어 이식https://www.toppers.jp
  • Raspberry Pi3의 ARMv8AArch64 모드에서 작업
  • 4코어 멀티코어 작동
  • 캐시, MMU는 ON
  • 코어당 ARM Generic Timer
  • Raspberry Pi를 사용하는 Mini UART
  • 이상 레벨 3(EL3)로 안내하고 이상 레벨 1 비안전(EL1NS)으로 커널 동작
  • 우선 순위 하드웨어 기능이 중단되지 않아 소프트웨어 시뮬레이션으로 재현
  • QEMU(에뮬레이터)를 사용하는 무실기 동작도 가능합니다.
    https://qiita.com/toshinaga/items/1af5948b45d62cc20509
    디버깅 용도로 실행 파일을 불러오는 도구도 제공합니다.
    https://qiita.com/toshinaga/items/4b38a2e21f559d273f09
    제한

  • 프로세서 간 중단, 작업 마이그레이션 등 핵심 간 처리 비동작
    AArch64 모드에서는 코어 간 중단을 일으키지 못하는 이유를 알 수 없습니다...(2017/09/11 해결 완료)

  • 중단 우선 순위 개념이 설치되지 않음(2017/09/11 설치됨)
  • 필요한 기재

  • Raspberry Pi3+ 전원 공급 장치
  • microSD 카드 + 카드 리더기
    FAT32 포맷된 microSD 카드를 준비하십시오.
    몇 십 조 정도의 여유가 있으면 충분하다.
  • USB 직렬 변환 케이블
    직렬 콘솔을 통해 통신할 수 있습니다.
    TTL-232R-3V3 사용
  • PC(Windows/Linux 모두 가능)
    구축 및 작업에 사용됩니다.
  • 개발 환경의 구축

  • 컴파일러
    다음은 자유 ARMv8AArch64용 컴파일러입니다.
    https://www.linaro.org/downloads/
    Version이 사용됩니다gcc-linaro-6.3.1-2017.02-xxx_aarch64-elf.
    xxx는 PC 환경에 따라 적합한 것을 선택합니다.
    다운로드 후 적당한 곳으로 펼친 후 다음은path를 통과합니다.<解凍したディレクトリ>/gcc-linaro-6.3.1-2017.02-xxx_aarch64-elf/bin
  • 구성기
    아래에서 설정기를 시작합니다.
    https://www.toppers.jp/cfg-download.html
  • 터미널 애플리케이션
    직렬 콘솔을 통한 통신을 위해 Tera Term, GTKTerm 등을 미리 설치합니다.
  • 기타 도구
    아마 아래는 포장이 필요할 것 같습니다.
    make, perl, git, gcc-core, gcc-g++
  • 구축


    저장소를 가져오고 fmp를 사용합니다.bin을 구축합니다.
    git clone https://github.com/YujiToshinaga/RPi64Toppers.git
    cd RPi64Toppers/fmp
    mkdir -p cfg/cfg
    mv <コンフィギュレータを解凍したディレクトリ>/cfg cfg/cfg
    chmod 755 cfg/cfg/cfg
    mkdir build
    cd build
    perl ../configure -T rpi_arm64_gcc
    make fmp.bin
    

    동작 준비


    SD 카드 준비


    FAT32 포맷된 SD 카드 바로 아래에 다음 4개의 파일을 배치하고 Raspberry Pi를 삽입합니다.
  • bootcode.bin, start.elf
    다음은 bootcode입니다.bin과 start.elf를 다운로드합니다.
    https://github.com/raspberrypi/firmware/tree/master/boot
  • config.txt
    저장소 RPi64 Toppers/fmp/targets/rpi_arm64_gcc/config.txt 사용
  • fmp.bin
    구축된 fmp.bin.
  • 사용

    Serial 콘솔 연결


    Raspberry Pi의 GPIO14(TXD1), GPIO15(RXD1), Ground를 각각 USB-직렬 변환 케이블의 RXD, TXD, Ground와 연결합니다.
    Raspberry Pi의 피치 구성
    https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md
    TTL-232R-3V3 사용 시
    RPi 피치
    연결선
    TTL-232R-3V3 핀
    GPIO14(TXD1)
    -
    Yellow(RXD)
    GPIO15(RXD1)
    -
    Orange(TXD)
    Ground
    -
    Ground
    PC와 USB-직렬 변환 케이블을 연결하여 터미널 응용 프로그램에서 직렬 콘솔을 엽니다.
    보트율은 115200bps로 설정되었다.

    부팅


    Raspberry Pi의 전원을 켭니다.

    좋은 웹페이지 즐겨찾기