9/16/2019

Jetson Nano 개발환경구축

1. Jetpack 4.2.2 설치 

기존의 SDKmanager를 설치를 해주었다면, Upgrade를 진행을 해주면되고, 아래의 Site에서 Download하자

Jetson Nano의 경우는 eMMC Type이 아닌 SD Card방식이므로 아래의 사이트에서 별도의 SD Card Image를 제공하고 있으므로,
SDKManger 설치가 익숙지 않는다면, 이것으로 Download하여 Image를 Write하여 사용하자

Jetpack Download
  https://developer.nvidia.com/embedded/jetpack

Jetson Nano Board 및 JetPack 설치 Manual
  https://developer.download.nvidia.com/embedded/L4T/r32-2_Release_v1.0/Jetson_Nano_Developer_Kit_User_Guide.pdf?vFL9evtTTiizks2dE50I2tofKlel_baFRnCEFgz-IiCbAttHALUknCurJNUO0-MfoWoONyJRa0QWOHj1GH_3fUJvLFv4elzlagbtYoV6eDmXciTVuQq7mxreo1r4b0fK6SM-NmeQeCU4wUoQRXxgbyp_c3RYdO1WiI_m3YytnaP2Z_CT8BOi


1.1 Jetson Nano의 보드 구성 


Jetson Nano의 구성을 살펴보면,  Jetson TX2와 같이 Carrier Board와 Module로 두개로 분리되어있으며, 추후 Module만 구입가능할지는 다시 봐야 할 것 같다.



  • Jetson Nano의 기본권장사항 
  1. Storage : microSD 지원 권장사양 16GB or 그이상 
  2. Power 선택 : micro B USB Power(J28) or Power Jack(J25) (5V,4A)
    1. micro B USB(J28) 로 USB Device로 연결되므로, 가급적 Power Jack 사용권장
    2. Power Jack으로 사용시 J48 Jumper 필요 
  3. Serial 사용: J44지원 or micro B USB로 연결시 ACM0으로 연결 


Jetson Nano Get Started
  https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit
  https://desertbot.io/blog/jetson-nano-usb-login

1.2  Force Recovery Mode 설정 

기존 Jetson 처럼 Force Recovery Mode를 제공하고 있지만, Button 형식으로 제공을 하고 있지 않다


상위 Manual을 읽어보면, 상위 기반은 Adapter 로 Power로 공급하고, J28 micro B USB는 USB Device로 만 사용해야지만, 가능한 이야기이다.
Manual을 읽어보면, 최소 필요사항은 다음과 같다

  1. DC Adapter (5V,4A)
  2. HDMI Cable 과 필요한 모니터 
  3. USB Keyboard와 Mouse 
  4. Jumper 

  • Force Recovery Mode (아직 못해봄 )
  1. J40 의 PIN3,4 연결 (with Jumper)
  2. J48 Pin 의 Power 선택 (USB Power or Adapter Power)
    1. J28 micro USB Power  (without Jumper, Default
    2. J25 Power Jack (with Jumper)
  3. J48 Pin의 선택에 따라 각 Power를 연결 ( USB Power  or Adapter Power)
  4. J40의 PIN3,4 Jumper 제거  

혹시나해서 NVIDIA Site에서 가능한지 물어봤지만, USB Power로만 가능하려면, 우선 PC의 USB 전원 공급이 가능하다면, 가능하다고 한다
  https://devtalk.nvidia.com/default/topic/1063210/jetson-nano/jetson-nano-recovery-mode-/post/5384033/#5384033


  • Force Recovery Mode 설정위치  (J40)
Top View의 상단 좌측의 J40의 구성



2. Jetpack 4.2.2 설치

가능하다면 SDK Manager를 설치해서 Host에도 NVIDIA의 관련 Tools 과 함께 설치진행하자.
만약 Jetson Nano의 상위 Force Recovery Mode 설정이 어렵다면  NVIDIA에서 제공하는 SD Card Image만을 Download하여 dd로 Image를 Write하자 


2.1 SD Card Image Write 방법 

SD card Image Download 후 아래와 같이 SD Card를 삽입하여, SD Card 위치 파악


$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 6: Dev 28, If 0, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 9: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 11: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 11: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 12: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M

$  lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop1    7:1    0 202.9M  1 loop /snap/vlc/1049
sdd      8:48   1  59.7G  0 disk                                  //새로 연결된 SD Card 확인  
└─sdd1   8:49   1  59.7G  0 part 
loop4    7:4    0    89M  1 loop /snap/core/7713
loop2    7:2    0 202.3M  1 loop /snap/vlc/770
loop0    7:0    0 184.8M  1 loop /snap/eclipse/40
sda      8:0    0   2.7T  0 disk 
├─sda4   8:4    0   2.7T  0 part /
├─sda2   8:2    0   513M  0 part /boot/efi
├─sda3   8:3    0   976M  0 part [SWAP]
└─sda1   8:1    0     1M  0 part 
loop5    7:5    0 192.1M  1 loop /snap/eclipse/29
loop3    7:3    0  88.7M  1 loop /snap/core/7396


  • SD Card Image Write (Linux)

##  4M 가 잘 동작이 안된다면, 1M로 설정을 변경해서 하자 
$ unzip -p jetson-nano-sd-r32.2.1.zip | sudo dd of=/dev/sdd bs=4M conv=fsync
or 
$ sudo dd bs=4M if=sd-blob-b01.img of=/dev/sdd status=progress conv=fsync

출처
  https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
Linux에서도 Etcher가 가능(미테스트)
  https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write

Write 한 후 Jetson Nano에 연결한 후 HDMI와 USB Keyboard/Mouse로 연결하여 Ubuntu 초기설정을 진행하고, ID/PW를 만들자

이것으로 설정을 하니, DeepStream이 기본으로 설정이 되어있지 않으므로, 가능하다면, SDKmanager로 설치를 해보도록하거나, 별도로 DeepStream을 설치를 진행하자


  • DeepStream 별도설치가능 
  https://developer.nvidia.com/deepstream-download


2.2  SDKmanager 기반 설치 

기존에 SDK Manager를 설치를 했다면, Upgrade를 진행하여, 설치가 쉬우며, 아래와 같이 선택만 하면된다
다만 Jetson Series Board가 동일하게 SDK Manager로 동작할 때는 반드시 상위 Force Recovery Mode를 숙지를 해야한다.



JetPack 4.2.2 부터는 Target SDK에  Tensorflow도 새롭게 추가되어 기본으로 들어가있음



  • Host에서 USB를 통하여 Jetson OS Write
  1. STEP에서 Download를 다 진행된 후 아래의 Message가 확인
  2. Jetson Nano와 Micro B USB로 연결 확인 
  3. Manual로 Setup 설정할 경우 Force Recovery Mode로 진입 (Auto Setup일 경우 필요없음)
  4. Username/Password 설정
  5. Flash 진행 
    Target Components 중 Jetson OS만 Flash 진행 



  • Jetson OS Flash 종료 후 SSH Message 확인
  1. Flash 도중에 SSH에 연결하는 Message 확인 (Ubuntu 초기화해야함)
  2. HDMI로 연결된 화면과 USB Keyboard/Mouse를 이용하여 Ubuntu 초기화설정
  3. Username/Password 설정 후 자동 Reboot 후 SSH Server동작 
  4. 설정된 Username/Password로 SSH 접속 후 Package 설치 진행  

   Target Components 중 Jetson SDK 설치진행 (SSH이용) 


SSH로 연결하여, 나머지 추가적인 Package를 설치하는데 시간이 많이 걸리며, 아래와 같이 완료



3. SD Card 용량 제한사항 

이미 Partition Size가 이미 정해져 있다보니, 용량이 부족한 현상이 발생하며, 아래의 명령으로 늘리는 것이 가능하지만, flash.sh 의 명령의 경우 14G로 제한이 있다고 한다.
(flash명령을 아직 테스트를 해보지 않음)

flash.sh 사용법은 이전의 JetPack을 참조 (Jetson TX2와 거의 동일)
  https://developer.download.nvidia.com/embedded/L4T/r27_Release_v1.0/Docs/Jetson_X2_Developer_Kit_User_Guide.pdf?WG5M_7R8_PzZIb_pcScGrQ3imdfQKUv-NmkuOrUe6RaL5Oz5n0Z7fKm_GZnY1rpumVTduYDvxD3f2QxlUlzcIo3XEjN_nunH-4UGSicgdfo7hAvy3A3KtYivCggScKJr8Ho23QJnhy-VubjOb7D4BGbKL1-Rw5DDs3cIBkKztH91RD9e116atw

용량을 증량하려면, 아래와 같이 직접 SD Card Image를 만들고, 이를 구운다음 DeepStream SDK 별도 설치진행하거나 상위 sdkmanger를 이용하여 설치를 진행하자


  • Host PC에서 직접 본인의 SD Card Image 생성 
$ cd ~/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3448/Linux_for_Tegra 

$ ls  // 기존과 다르게 create_jetson_nano_sd-card-image 존재 
create-jetson-nano-sd-card-image.sh   flash.sh  .. 중략

## 16G 설정하면, 최대값으로 설정됨
$ sudo ./create-jetson-nano-sd-card-image.sh -o sd-blob.img -s 16G -r 100
$ sudo dd bs=4M if=sd-blob.img of=/dev/sdd status=progress conv=fsync

상위명령으로 생성된 Image는 기본적인 Jetson OS만 생성하며, Jetson SDK Components를 포함하고 있지 않다.
sdkmanager를 이용하거나 본인 별도로 각각의 Jetson SDK를 설치를 해야한다


  • SDKManager 이용할 경우
상위 Jetson OS Write 부분을 skip명령이 존재하기 때문에, 이부분을 제외하고 SSH로 SDK부분을 설치진행하면된다

출처
  https://devtalk.nvidia.com/default/topic/1050105/jetson-nano/jetson-nano-sd-card-partitions-can-not-extend-/
  https://devtalk.nvidia.com/default/topic/1050105/jetson-nano/jetson-nano-sd-card-partitions-can-not-extend-/


댓글 1개 :

bongbong :

Jetson Xavier nx에 설치중입니다.
128GB SDcard를 사용합니다.
SD card 용량 제한때문에 OS는 Imager를 생성하여 SD카드에 입혔습니다.

그후 Jetson SDK Components를 설치하기 위하여
SDK manager에서 OS flash를 skip하고 설치를 진행하였습니다.

host PC의 SDK manager에서는 Jetson SDK Components가 모두 설치완료로 표시되었으나,
실제 Target(Jetson Xavier nx)에서는 설치가 되지 않은 상황입니다.
- nvcc 명령어 사용시 nvcc not found 출력

해결방안이 있을까요?