Raspberry Pi 4B/VExpress-A9을 마이크로코어 운영 체제에서 실행하십시오!

10434 단어
RT-Thread Smart는 소스 오픈 마이크로코어 운영체제로 주로 MMU(메모리 관리 단위)를 가진 중첨단 프로세서를 대상으로 서로 다른 업계에 경쟁력 있는 운영체제 기반의 소프트웨어 플랫폼을 제공한다.RT Thread Smart는 보안, 산업통제, 차량용 장비, 소비자 전자 등 업계에 혜택을 주는 전문 고성능 마이크로코어 운영체제로 자리매김했다.

RT 스레드 지능형 아키텍처


RT Thread Smart는 하드웨어 플랫폼을 바탕으로 MMU와 시스템 호출 방법을 이용하여 전체 시스템을 커널 모델과 사용자 모델로 나누고 각 모델에 주소 공간(32비트 시스템에 4G 주소 공간 제공)을 구분한다.

RT 스레드 인텔리전트 코어에는 기본 기능이 포함되며 맞춤형 구성이 지원됩니다.RT Thread 스마트 사용자 모드 응용 프로그램 환경은 musl libc를 사용하여 POSIX 인터페이스 호출과 C 실행 시 지원을 제공하고SCON이나 다른 구축 도구(예를 들어 xmake, cmake 등)를 사용하는 RT Thread의 원시 생태를 계승하며 RT Thread 260+ 기존 온라인 소프트웨어 패키지와 연결하고 POSIX를 가지고 Linux 응용 프로그램을 이식한다.
본 논문은 RT 스레드 스마트 소스 오픈 마이크로코어 운영체제를 사용하도록 안내할 것입니다.

소프트웨어 소개


RT 스레드 지능형 소프트웨어


첫째다운로드rt-smart-20201125.zip,rt스마트.zip 패키지는 QEMU 아날로그 VExpress-A9 또는 raspberry Pi 4B 개발판에서 RT 스레드 개발자가 RT 스레드 지능을 더욱 배울 수 있도록 도와준다.
압축을 풀려면 먼저 문서 구조를 안내해 드리겠습니다.

도구 체인 준비


서로 다른 조작 환경인 linux와 Windows에 해당하는arm linuxmusleabi 도구체인을 다운로드해야 합니다. rt smart 패키지는 linux 환경에서 실행되는 도구체인을 포함하고 있습니다.
● Linux: x86에 arm-Linux-musleabi\u 64-pc-Linux-gnu를 설치합니다.타르
● Windows: i686-w64-mingw32용 arm-linux-musleabi 설치

도구 체인을 다운로드하려면 다음과 같이 하십시오.


https://drive.google.com/file/d/1IQgPs9u2BDc3OJsmiD-Zf6TqSMUd7sAF
개발 환경에 따라 도구 체인을 다운로드합니다.
다운로드한 후 rt smart/tools/gnu gcc 디렉터리와 smart env 설정된 환경 변수로 압축을 풀고 확장합니다.rt 스마트 디렉터리의bat/sh, 도구 체인 경로가 이 디렉터리를 가리킨다.
Linux에서 컴파일하여 QEMU 에뮬레이션 환경에서 실행합니다.
Linux에서 rt smart를 컴파일하기 전에 기본 환경을 설치해야 합니다.이 파일에는 Ubuntu 16의 작업이 기록되어 있습니다.04 환경, 다른 Linux 버전과 유사합니다.

컴파일 환경 설치


먼저 다음과 같은 명령을 사용하여 컴파일에 필요한 추가 도구 및 패키지를 설치합니다.
1 sudo apt-get update
2 sudo apt-get install vim scons git bzip2 net-tools
3 sudo apt-get install python-all python-all-dev
4 sudo apt-get install qemu-system-arm qemu-system-common qemu-utils
위의 명령은 시스템 기본 도구,python 환경,SCON,qemu 도구 등을 설치하도록 요구할 것입니다.

컴파일 응용 프로그램


1   # Enter rt-smart category
2   cd rt-smart
3
4   # Set the corresponding environment variable, compared with RT-Thread, RT-Thread Smart has RTT_CC_PREFIX environment variable
5   source smart-env.sh
6
7   # Compile user mode application
8   cd userapps
9   scons
10
11  scons: Reading SConscript files ...
12  scons: done reading SConscript files.
13  scons: Building targets ...
14  CC build/hello/main.o
15  CC build/ping/main.o
16  CC build/pong/main.o
17  CC build/vi/optparse-v1.0.0/optparse.o
18  CC build/vi/vi.o
19  CC build/vi/vi_utils.o
20  CC build/webclient/main.o
21  LINK root/bin/hello.elf
22  LINK root/bin/ping.elf
23  LINK root/bin/pong.elf
24  LINK root/bin/vi.elf
25  LINK root/bin/webclient.elf
26  scons: done building targets.
성공적으로 컴파일된 후userapps/apps의 응용 프로그램은 elf 실행 가능한 파일로 컴파일하여userapps/root/bin 디렉터리에 놓으면 이 디렉터리는romfs, C 언어 그룹으로 변환하여 rtsmart에 제공할 수 있으며 다른 파일 시스템에 의존할 필요가 없다.다음 명령줄을 사용하여 ROMF 및 C 언어 배열을 생성할 수 있습니다.
1  cd userapps
2  python ../tools/mkromfs.py root ../kernel/bsp/qemu-vexpress-a9/applications/romfs.c

RT 지능형 커널 컴파일


1  cd rt-smart/kernel/bsp/qemu-vexpress-a9
2  scons
3  ... ...
4  CC build/kernel/src/thread.o
5  CC build/kernel/src/timer.o
6  LINK rtthread.elf
7  arm-linux-musleabi-objcopy -O binary rtthread.elf rtthread.bin
8   arm-linux-musleabi-size rtthread.elf
9    text    data     bss     dec     hex filename
10  1219480   40652  122444 1382576  1518b0 rtthread.elf
11  scons: done building targets.
성공적으로 컴파일한 후 rtthread.elf 커널 파일이 생성됩니다.

시뮬레이션 및 실행


QEMU를 통해 vexpress-a9 시뮬레이션 및 직접 실행:
1  cd rt-smart/kernel/bsp/qemu-vexpress-a9
2  ./qemu-nographic.sh
3
4   \ | /
5  - RT -     Thread Smart Operating System
6   / | \     5.0.0 build Nov 15 2020
7   2006 - 2020 Copyright by rt-thread team
8   lwIP-2.0.2 initialized!
9   try to allocate fb... | w - 640, h - 480 | done!
10  fb => 0x61100000
11  [I/sal.skt] Socket Abstraction Layer initialize success.
12  [I/SDIO] SD card capacity 65536 KB.
13  Dir /mnt mount failed!
14  hello rt-thread
15  msh />
16  msh />/bin/hello.elf
17  msh />hello world!
"Ctrl+A, X"를 눌러 QEMU를 종료합니다.우리는 또한 위의 컴파일러 프로그램/bin/hello.elf을 실행하고 출력hello world!을 출력한다.
첫 번째 실행 시 Dir /mnt mount 실패했습니다!출력입니다.qemu 스크립트가 빈 sd를 생성했기 때문입니다.bin 파일은 sd카드로 처음 실행할 때vexpress-a9에 제공되기 때문에 sd0을 포맷해야 합니다.
1    \ | /
2   - RT -     Thread Smart Operating System
3    / | \     5.0.0 build Nov 24 2020
4   2006 - 2020 Copyright by rt-thread team
5   lwIP-2.0.2 initialized!
6   try to allocate fb... | w - 640, h - 480 | done!
7   fb => 0x61100000
8   [I/sal.skt] Socket Abstraction Layer initialize success.
9   [I/SDIO] SD card capacity 65536 KB.
10  [I/SDIO] switching card to high speed failed!
11  Dir /mnt mount failed!
12  hello rt-thread
13  msh />mkfs sd0
14  msh />
15
16  # Ctrl + A, X to exit
17  QEMU: Terminated
18
19 bernard@fuchsia-NUC8i7BEH:
~/workspace/rt-smart/smart/kernel/bsp/qemu-vexpress-a9$ ./qemu-nographic.sh
20  \ | /
21 - RT -     Thread Smart Operating System
22  / | \     5.0.0 build Nov 24 2020
23  2006 - 2020 Copyright by rt-thread team
24  lwIP-2.0.2 initialized!
25  try to allocate fb... | w - 640, h - 480 | done!
26  fb => 0x61100000
27  [I/sal.skt] Socket Abstraction Layer initialize success.
28  [I/SDIO] SD card capacity 65536 KB.
29  [I/SDIO] switching card to high speed failed!
30  file system initialization done!
31  hello rt-thread
32  msh />

Windows에서 컴파일하고 Raspberry Pi 4B에서 실행


같은 작업은 Windows에서 할 수도 있고 qemu나 Raspberry Pi 4B 보드에서 할 수도 있다. 이를 어떻게 Raspberry Pi 4B에서 할 수 있는지 살펴보자.

컴파일 환경 준비


RT Thread Smart를 Windows에서 컴파일하려면 RT-Thread Env tool:
먼저 Env가 유효한지 확인합니다.rt가 똑똑하니까.zip 패키지는 Windows 환경에 도구 체인이 없기 때문에 Windows 도구 체인을 다운로드하고 rt-smart\tools\gnu_gcc에서 스트레스를 푸는 것이 매우 중요하다. 앞에서 언급한 바와 같이.
그리고 Env의 end 창을 열고 rt 스마트 코드 패키지의 루트 디렉터리로 전환하고 smart Env를 실행합니다.bat, 일정한 수량의 환경 변수를 설정한 다음에 전체 RT 스레드 스마트 개발 환경을 사용할 수 있습니다.
1  #Enter rt-smart category, set environment variable 
2  cd rt-smart
3  > smart-env.bat
지능형 환경을 실행하십시오.여기bat 설정 환경에는 컴파일러 설정과 Env 터미널에서 입력할 수 있는 도구 체인의 접두사 설정이 포함되어 있으며 반환 결과가 유효한지 확인할 수 있습니다.
1  # Check out if the return results are effective 
2  > set RTT_CC_PREFIX
3  RTT_CC_PREFIX=arm-linux-musleabi-

컴파일 응용 프로그램


응용 프로그램을 컴파일할 때 Linux에서 컴파일하는 것과 유사합니다.
1 #Enter userapps category to edit 
2  cd rt-smart\userapps
3  scons

RT 스레드 지능형 커널 컴파일


1   #Enter raspberry-pi\raspi4-32 category to compile
2   cd rt-smart\kernel\bsp\raspberry-pi\raspi4-32
3   scons
4   ... ...
5   CC build/kernel/src/signal.o
6   CC build/kernel/src/thread.o
7   CC build/kernel/src/timer.o
8   LINK rtthread.elf
9   arm-linux-musleabi-objcopy -O binary rtthread.elf kernel7.img
10  arm-linux-musleabi-size rtthread.elf
11   text    data     bss     dec     hex filename
12  710780   40448   64730  815958   c7356 rtthread.elf
13  scons: done building targets.
성공적으로 컴파일한 후, 내부 핵 7.img 파일은 현재 디렉토리에서 생성되며 Raspberry Pi의 32비트 버전입니다.현재 RT Thread Smart는 32비트 시스템만 지원하므로 Raspberry Pi 4B에서 32비트 모드로 실행됩니다.

하드웨어 연결


다음 그림과 같이 다음 하드웨어를 준비하고 직렬 선을 개발 보드에 연결해야 합니다.
  • 복분자 껍질 4B
  • SD 카드(32GB 이하)
  • USB-TTL 스위칭 직렬
  • 네트워크 케이블
  • C형(전원용)
  • 카드 리더기(SD 카드에 컴파일된 파일 쓰기용)

  • SD 카드의 소프트웨어 준비


    Raspberry Pi를 로드하려면 sd 카드에 일부 부트 파일을 배치해야 합니다.rpi4 rt-smart 부트를 다운로드할 수 있습니다.지퍼로 복분자 가죽 장착 도와드려요.
    https://drive.google.com/file/d/1IQgPs9u2BDc3OJsmiD-Zf6TqSMUd7sAF
    다운로드한 파일은 압축을 풀고 커널 7과 함께 배치됩니다.img는 빈 SD 카드 루트 디렉터리에 있습니다. 다음 그림에서 보듯이 bin 폴더는 userapps\root\bin 디렉터리에 컴파일된 실행 가능한 elf 파일을 저장합니다.

    Serial 디버그 도우미를 켜고 전원을 꽂으면 프로그램이 성공적으로 실행되고 bin 디렉토리에 들어가서 예제 프로그램을 실행할 수 있습니다.
    1  heap: 0xc00c9a0a - 0xc40c9a0a
    2  \ | /
    3  - RT -     Thread Smart Operating System
    4   / | \     5.0.0 build Nov 15 2020
    5  2006 - 2020 Copyright by rt-thread team
    6  lwIP-2.0.2 initialized!
    7  version is B1
    8  bcmgenet: PHY startup ok!
    9  [I/sal.skt] Socket Abstraction Layer initialize success.
    10 [I/SDIO] SD card capacity 31465472 KB.
    11 found part[0], begin: 4194304, size: 256.0MB
    12 found part[1], begin: 272629760, size: 29.772GB
    13 file system initialization done!
    14 hello rt-thread!
    15 msh />/bin/hello.elf
    16 msh />hello world!
    
    Contact RT-Thread 무슨 생각이 있으면 공유할 수 있어요!

    좋은 웹페이지 즐겨찾기