Copyright (C) 커널연구회 (www.kernel.bz)작성자: 정재준(rgbi3307 골뱅이 nate.com)문서위치 메인(출처): https://kernel.bz/blogPost/rpi5-hailo아래 내용은 누구나 사용할 수 있습니다. 저자정보는 지우지 말고 위의 출처를 기입해 주시기 바랍니다.커널 버전 [v6.6) 설치 준비물(순서) 라즈베리파이5 NPU AI 모듈(Hailo-8L) 카메라 리눅스 배포본 설치 hailo 소프트웨어 설치 hailo 소프트웨어 실행(테스트) 라즈베리파이5참조 사이트: https://www.raspberrypi.com/products/raspberry-pi-5/ 라즈베리파이5 Specification Broadcom BCM2712 2.4GHz quad-core 64-bit Arm Cortex-A76 CPU, with cryptography extensions, 512KB per-core L2 caches and a 2MB shared L3 cache VideoCore VII GPU, supporting OpenGL ES 3.1, Vulkan 1.2 Dual 4Kp60 HDMI® display output with HDR support 4Kp60 HEVC decoder LPDDR4X-4267 SDRAM (4GB and 8GB SKUs available at launch) Dual-band 802.11ac Wi-Fi® Bluetooth 5.0 / Bluetooth Low Energy (BLE) microSD card slot, with support for high-speed SDR104 mode 2 × USB 2.0 ports, 2 × USB 3.0 ports, supporting simultaneous 5Gbps operation Gigabit Ethernet, with PoE+ support (requires separate PoE+ HAT) 2 × 4-lane MIPI camera/display transceivers PCIe 2.0 x1 interface for fast peripherals (requires separate M.2 HAT) 5V/5A DC power via USB-C, with Power Delivery support Raspberry Pi standard 40-pin header Real-time clock (RTC), powered from external battery Power button 쿨링팬(옵션) NPU AI 모듈(Hailo-8L)참조 사이트: https://www.raspberrypi.com/products/ai-kit/ 라즈베리파이5 AI 가속 모듈(Hailo-8L, 13테라톱스, PCIe 인터페이스) NPU: Neural Processing Unit 내장 (동작온도: 0도 ~ 50도) 라즈베리파이5 NPU AI 모듈(Hailo-8L) 장착 카메라라즈베리파이 카메라 정보 참조:https://www.raspberrypi.com/documentation/accessories/camera.html#about-the-camera-modules 카메라 케이블(25핀 to 15핀) 카메라 인식 설정은 자동으로 됩니다. 라즈베리파이 배포본을 설치하면 /boot/firmware/config.txt 파일에 다음과 같이 자동으로 설정 됩니다. /boot/firmware/config.txt camera_auto_detect=1 카메라를 구동하는 소프트웨어들도 기본적으로 설치되어 있으며 아래의 웹사이트를 참고 하여 실행할 수 있습니다. 참조 사이트: https://www.raspberrypi.com/documentation/computers/camera_software.html#rpicam-apps 기타 준비물micro SD카드와 어댑터용량 32GB 권장 5V 파워 어댑터(USB-C) Input voltage: 100 - 240 v.a.c Input AC frequency: 50-60Hz Output voltage: 5.1V (USB-C type) Output current: 5.0A Output power: 25.5W mini hdmi 어댑터, 모니터라즈베리파이5 mini HDMI 어댑터 키보드 마우스 이더넷 케이블길이: 1미터 내외 (내부 네트워크 연결, 옵션) 리눅스 배포본 설치라즈베리파이5 리눅스 배포본 설치 날짜: 2024년 11월 21일 라즈베리파이5 리눅스 배포본는 마이크로 SD 카드에 설치하기 때문에, 다음과 같이 개발용 PC의 USB 카드 리더기 혹은 SD 카드 슬롯에 마이크로 SD 카드가 장착 되어 있어야 합니다. 참고로, 필자는 32GB 마이크로 SD 카드를 장착 했습니다. 라즈베리파이5 리눅스 배포본 설치는 아래 웹사이트를 참고 하여 설치 합니다.참고 웹사이트: https://www.raspberrypi.com/software/ 위의 웹사이트에서 rpi-imager 프로그램 다운로드하여 설치합니다. 개발용 PC에 리눅스 우분투가 설치되어 있다면 아래 명령으로 rpi-imager 프로그램을 설치할 수 있습니다. $ sudo apt install rpi-imager rpi-imager를 설치한 후 rpi-imager를 실행하면 다음과 같이 프로그램 메뉴가 나타 납니다. 라즈베리파이 장치(보드) 선택을 위해서 CHOOSE DEVICE 버턴을 클릭 합니다. 위에서 라즈베리파이5 보드를 선택 합니다.라즈베리파이 OS를 설치하기 위해서 CHOOSE OS 버턴을 클릭 합니다. 라즈베리파이 OS (64-bit)을 클릭하여 선택 합니다. 라즈베리파이 OS가 설치되는 장치 선택을 위해서 CHOOSE STORAGE 버턴을 클릭 합니다. 저장 장치는 개발용 PC의 USB 카드 리더기 혹은 SD 카드 슬롯에 장착한 장치 정보를 rpi-imager가 검색하여 위와 같이 표시 합니다. (필자는 32GB 마이크로 SD카드를 장착 했습니다.) SD카드 장치를 선택한후 NEXT 버턴을 클릭하여 설치 진행 합니다. OS 설치시 필요한 설정값(컴퓨터이름, 사용자 아이디, 암호, 무선통신) 들을 EDIT 버턴을 클릭하여 설정하여 저장 합니다. SERVICES 탭을 클릭하여 SSH 프로토콜을 Enable 가능하도록 체크 합니다. 위의 설정 정보들을 SAVE 한후, 아래에서 YES 버턴을 클릭하여 진행 합니다. 설치 시작할때, SD 카드에 있는 내용들이 삭제 된다는 경고 문구가 나타나면 YES 버턴을 클릭하여 설치 진행 합니다. 라즈베리파이 OS 설치가 진행 됩니다. 개발용 PC 속도에 따라서 10여분정도 소요 됩니다. 설치가 완료되면, 쓰기 작업 성공(Write Successful)이라는 팝업창과 함께 SD 카드 리더기에 장착되어 있는 마이크로 SD를 제거 하라는 문구가 나타 납니다. 마이크로 SD를 빼내고 rpi-imager 실행 프로그램은 종료 합니다.빼낸 마이크로 SD 카드를 라즈베리파이5 보드에 장착하여 전원을 On하면 부팅이 됩니다.부팅시간: 약20초(전원 On 부트로더 10초, 커널 부팅 10초) 부팅한 바탕 화면 부팅후 커널 버전 정보 확인라즈베리파이5 리눅스 배포본 설치 날짜: 2024년 11월 21일 부팅후, /boot/firmware 경로를 확인해 보면, 라즈베리파이 부트로더와 디바이스 트리(DTB) 파일들과 커널 바이너리 이미지 파일이 있습니다. 라즈베리파이5는 bcm2712 디바이스 트리(DTB) 파일과 kernel_2712.img 커널 바이너리 이미지 파일을 사용하여 부팅 합니다. 커널 버전은 아래와 같이 확인 합니다. (v6.6.x)커널 버전 확인 $ uname -a Linux rpi5 6.6.51+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux hailo 소프트웨어 설치 준비(설정) hailo 매뉴얼과 소프트웨어들은 아래 문서에서 확인할 수 있습니다. 매뉴얼(문서): https://www.raspberrypi.com/documentation/accessories/ai-kit.html 오픈 소스 웹사이트: https://github.com/hailo-ai 오픈 소스 사용법 : https://github.com/hailo-ai/hailo-rpi5-examples/blob/main/doc/install-raspberry-pi5.md#how-to-set-up-raspberry-pi-5-and-hailo-8l hailo을 구동하기 위한 소프트웨어 패키지들은 리눅스 커널 버전이 최신 일수록 좋습니다. 먼저 다음과 같이 라즈베리파이 리눅스 시스템을 최신 버전으로 전체 업그레이드 합니다. apt full-upgrade $ sudo apt full-upgrade 라즈베리파이 리눅스 커널이 최신 버전으로 업그레이드하여 재부팅후, 다음과 같은 명령 실행으로 PCIe 포트 속도 설정(Gen 3 Enable) 합니다. $ sudo raspi-config hailo 소프트웨어 설치 다음과 같이 apt install 명령으로 hailo 소트웨어를 설치 합니다. $ sudo apt install hailo-all 위의 명령으로 다음과 같은 hailo 소프트웨어가 설치 됩니다. Hailo kernel device driver and firmware HailoRT middleware software Hailo Tappas core post-processing libraries The rpicam-apps Hailo post-processing software demo stages 설치가 마무리 되면, 리눅스를 재부팅 합니다. $ sudo reboot hailo 소프트웨어 설치 정보 확인 설치정보를 다음과 같은 명령으로 확인 합니다. $ sudo apt show hailo-all Package: hailo-all Version: 4.18.0+1 Priority: optional Section: video Maintainer: Serge Schneider <serge@raspberrypi.com> Installed-Size: 7168 B Depends: hailofw (>= 4.18.0), hailort (>= 4.18.0), hailo-tappas-core (>= 3.29.1), rpicam-apps-hailo-postprocess (>= 1.5.1), python3-hailort (>= 4.18.0) Breaks: hailo-dkms (<< 4.18.0) Download-Size: 1186 B APT-Manual-Installed: yes APT-Sources: http://archive.raspberrypi.com/debian bookworm/main arm64 Packages Description: Hailo support (metapackage) hailo firmware 버전 확인 $ ls -al /lib/firmware/hailo/ drwxr-xr-x 2 root root 4096 Nov 21 15:38 . drwxr-xr-x 48 root root 4096 Nov 21 15:37 .. -rw-r--r-- 1 root root 164224 May 24 18:14 hailo8_fw.4.17.0.bin -rw-r--r-- 1 root root 165816 Aug 12 17:53 hailo8_fw.4.18.0.bin lrwxrwxrwx 1 root root 31 May 24 18:14 hailo8_fw.bin -> /etc/alternatives/hailo8_fw.bin hailo 디바이스드라이버 버전 확인 $ dmesg | grep hailo [ 3.499035] hailo: Init module. driver version 4.18.0 [ 3.506171] hailo 0000:01:00.0: Probing on: 1e60:2864... [ 3.506183] hailo 0000:01:00.0: Probing: Allocate memory for device extension, 11632 [ 3.506200] hailo 0000:01:00.0: enabling device (0000 -> 0002) [ 3.506207] hailo 0000:01:00.0: Probing: Device enabled [ 3.506236] hailo 0000:01:00.0: Probing: mapped bar 0 - 00000000aa7655d5 16384 [ 3.506243] hailo 0000:01:00.0: Probing: mapped bar 2 - 000000009a38e721 4096 [ 3.506248] hailo 0000:01:00.0: Probing: mapped bar 4 - 00000000bbf5d1bd 16384 [ 3.506252] hailo 0000:01:00.0: Probing: Force setting max_desc_page_size to 4096 (recommended value is 16384) [ 3.506261] hailo 0000:01:00.0: Probing: Enabled 64 bit dma [ 3.506264] hailo 0000:01:00.0: Probing: Using userspace allocated vdma buffers [ 3.506269] hailo 0000:01:00.0: Disabling ASPM L0s [ 3.506273] hailo 0000:01:00.0: Successfully disabled ASPM L0s [ 3.737788] hailo 0000:01:00.0: Firmware was loaded successfully [ 3.759665] hailo 0000:01:00.0: Probing: Added board 1e60-2864, /dev/hailo0 hailo 설치 확인 $ hailortcli fw-control identify Executing on device: 0000:01:00.0 Identifying board Control Protocol Version: 2 Firmware Version: 4.18.0 (release,app,extended context switch buffer) Logger Version: 0 Board Name: Hailo-8 Device Architecture: HAILO8L Serial Number: HLDDLBB241601230 Part Number: HM21LB1C2LAE Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP hailo 소프트웨어(펌웨어) 버전과 디바이스드라이버 버전은 서로 같아야 합니다. (설치된 버전 4.18.0) hailo 실행 테스트 실행파일 위치 확인 $ ls -al /usr/bin/rpicam* -rwxr-xr-x 1 root root 68040 Oct 4 07:30 /usr/bin/rpicam-hello -rwxr-xr-x 1 root root 134136 Oct 4 07:30 /usr/bin/rpicam-jpeg -rwxr-xr-x 1 root root 199744 Oct 4 07:30 /usr/bin/rpicam-raw -rwxr-xr-x 1 root root 200000 Oct 4 07:30 /usr/bin/rpicam-still -rwxr-xr-x 1 root root 199760 Oct 4 07:30 /usr/bin/rpicam-vid $ ll /usr/bin/hailo* -rwxr-xr-x 1 root root 957 Aug 12 18:52 /usr/bin/hailo -rwxr-xr-x 1 root root 5178160 Jul 8 20:17 /usr/bin/hailortcli rpicam 카메라 테스트 $ rpicam-hello [0:26:14.465765424] [2012] INFO Camera camera_manager.cpp:325 libcamera v0.3.2+27-7330f29b [0:26:14.473273512] [2016] INFO RPI pisp.cpp:695 libpisp version v1.0.7 28196ed6edcf 29-08-2024 (16:33:32) [0:26:14.490502486] [2016] INFO RPI pisp.cpp:1154 Registered camera /base/axi/pcie@120000/rp1/i2c@88000/ov5647@36 to CFE device /dev/media1 and ISP device /dev/media0 using PiSP variant BCM2712_C0 //10초동안 카메라 영상 표시 $ rpicam-hello -t 10s //180도 회전 $ rpicam-hello --rot 180 -t 10s post-process-file(json)hailo 모듈 실행시 전달하는 설정 파일들(*.json) $ ll /usr/share/rpi-camera-assets/ -rw-r--r-- 1 root root 158 Sep 28 18:17 annotate_cv.json -rw-r--r-- 1 root root 303 Sep 28 18:17 face_detect_cv.json -rw-r--r-- 1 root root 416 Sep 28 18:17 hailo_classifier.json -rw-r--r-- 1 root root 647 Sep 28 18:17 hailo_yolov5_personface.json -rw-r--r-- 1 root root 438 Sep 28 18:17 hailo_yolov5_segmentation.json -rw-r--r-- 1 root root 551 Sep 28 18:17 hailo_yolov6_inference.json -rw-r--r-- 1 root root 555 Sep 28 18:17 hailo_yolov8_inference.json -rw-r--r-- 1 root root 259 Sep 28 18:17 hailo_yolov8_pose.json -rw-r--r-- 1 root root 563 Sep 28 18:17 hailo_yolox_inference.json -rw-r--r-- 1 root root 630 Sep 28 18:17 hdr.json -rw-r--r-- 1 root root 249 Sep 28 18:17 motion_detect.json -rw-r--r-- 1 root root 30 Sep 28 18:17 negate.json -rw-r--r-- 1 root root 47 Sep 28 18:17 sobel_cv.json Object Detection객체(물체) 식별 실행 $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.json --lores-width 640 --lores-height 640 $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.json --lores-width 640 --lores-height 640 $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolox_inference.json --lores-width 640 --lores-height 640 $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov5_personface.json --lores-width 640 --lores-height 640 Image Segmentation이미지 분리 실행 $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov5_segmentation.json --lores-width 640 --lores-height 640 --framerate 20 Pose Estimation자세(pose) 검출 $ rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_pose.json --lores-width 640 --lores-height 640 hailortcli 실행 도움말 $ hailortcli --help 감사합니다.