본문 바로가기

임베디드

ARM Q&A Q. Cortex-M과 Cortex-A는 어떻게 다른가요? ARM 제품군은 (회사 이름인 ARM을 이용하여) 아래 3가지로 나눈다. - A(어플리케이션 프로세서) - 모바일, 서버 등 1GHz 이상 고주파 클록 - Linux, Android, Window 등 OS 탑재 - MMU(메모리 관리 장치) - R(실시간 프로세서) - 자동차 파워트레인, 무선 통신 대역 제어 등 실시간 성을 요하는 곳에 쓰인다 - M(마이크로 컨트롤러) - 높은 에너지 효율성. 임베디드 제품 목적에 쓰인다. - MPU(메모리 보호 장치) - 수백 MHz ※ Cortex -A15, A7 까지 v7 아키텍쳐. 그 이후는 v8 아키텍쳐 이다. ※ 올해(21년) 초에 머신 러닝 연산과 보안 기능을 강화하여 v9 아키텍쳐가 출시 되었다... 더보기
ARM GCC Inline assembly coding 1. Basic Example 2. Syntax 3. Input/ouput operands and Constraint string ※ 어셈블리는 컴파일러 마다 문법이 다르다. 1. Basic Example ex1) MOV R0, R1 : __asm volatile("MOV R0, R1"); or asm ("MOV R0, R1"); ex2) LDR R0, [R1] LDR R1, [R2] ADD R1, R0 STR R1, [R3] 위의 식은 아래와 같이 표현 가능하다. void fun_add(void) { __asm volatile ("LDR R0,[R1]"); __asm volatile ("LDR R1,[R2]"); __asm volatile ("ADD R1,R0"); __asm volatile ("STR.. 더보기
[JetsonNano] 부팅 시 코드 자동 실행 방법 Jetson Nano는 리눅스 OS가 포팅되어 있고, 리눅스는 시작시 /etc/init.d 디렉토리 내부의 스크립트를 실행하도록 되어 있다. 따라서 이 디렉토리 내부에 실행하기 위한 코드를 삽입해 준다. 1) 해당 디렉토리로 이동하여, 부팅되자 마자 실행할 스크립트(e.g. start.sh)를 생성해 준다. $ cd /etc/init.d $ vi start.sh #!/bin/bash (실행하고자 하는 것) 2) 스크립트 실행 권한을 주고 등록한다. - 실행 순서도 등록 할 수 있으며, 빈칸으로 둬도 된다. - update-rc.d는 시스템 부팅과 종료에 관여하는 스크립트 관리기 이다. $ chmod +x start.sh $ update-rc.d start.sh defaults (실행순서) 출처) wiki.. 더보기
2) JetsonNano 개발 환경 구성 + 카메라, ROS (rev3) Contents 1) 개발 환경 구성 1-1) 설치법 (Jetson Nano / Rasberry Pi4 사양 비교) 1-2) Jetson Fan 구동 명령 1-3) HOST에서 Serial로 연결 2) 센서 구동 2-1) 카메라 2-2) 카메라 on ROS, 설치 부터 실행까지 2-3) Docker on JetsonNano 2-4) [Optional] OpenCV 설치 2-5) 리얼센스(RealSense) 사용 2-6) [Optional] SLAM Library 설치 2-6) 라이다 - 카메라 라이다 켈리브레이션 - Ros2로 Lidar 구동 - ORB SLAM on JetsonNano 1) 개발 환경 구성 1-1) 설치법 (Jetson Nano / Rasberry Pi4 사양 비교) https://dh.. 더보기
000_ARM Contents ARM과 관련하여 알아야할 내용들을 정리해 나갈 예정입니다. 필수 지식은 아니며, 알아두면 새로운 Soc 및 개발 환경을 만났을 때 Learning Curve를 줄여줄 수 있습니다. ARM Product - ARM Product 관련 문서 번역(Cortext-M3) ARM Product 관련 문서 번역(Cortext-M3) Cortext-M3는 대표적인 Armv7-M 계열의 제품이다 (번역을 시작하게 된 계기) ARM 아키텍쳐는 높은 시장 선점율에도 불구하고, '여러 요소'들로 추상화 되어 있어 이해에 대한 필요성을 느끼기 쉽지 않 dhpark1212.tistory.com - Core Register and CMSIS - ARM GCC Inline assembly coding ARM ToolChain -.. 더보기
Cortex-M3/M4 Utils ▶ printf using SWV -> ITM trace funtionality - M3 이상에서만 가능한 기능 - printf 는 SWD(Serial Wire Debug) 인터페이스의 SWO(Serial Wire Ouput) 핀을 이용해 구현할 수 있다. - SWD는 3pin 인터페이스로 ARM의 Debug 인터페이스에 접근 가능하다. - SWD는 JTAG의 디버깅 하기 위한 핀 갯수(GND 제외 4개)를 간소화 하기 위해 제작되었다. ▶ printf using semihosting - 위의 1번 기능을 사용할 수 없는 경우 사용한다. - syscall.c 파일은 같이 빌드하지 않는다. www.udemy.com/course/embedded-system-programming-on-arm-cortex-m3.. 더보기
Core Register & CMSIS Core Register & CMSIS Contents 1. Non-memory mapped register, Memory-mapped register 2. 모드 변경 - Privileged, Unprivileged 1. Non-memory mapped register , Memory mapped register - Core 레지스터는 memory map에서 주소를 가지고 있지 않다. 따라서, 접근해서 값을 읽을 수 있는 개념이 아니다. - 해당 레지스터의 값을 읽고, 쓰려면 메모리 맵에 접근하는 것이 아닌 assembly instruction을 이용해야 한다. - CMSIS는 assembly instruction를 포함한다. - Memory mapped register는 두 종류로 나뉜다. (Proce.. 더보기
ARM 교육 받을 수 있는 곳 기본 강의와 책을 제공. www.arm.com/resources/education 그중 들어볼 만한 강의가 있다(유료) www.arm.com/resources/education/online-courses 책으로 보고 싶다면 다음 링크를 참조(일부 유료) www.arm.com/resources/education/books 심화 이하 본격적인 ARM IP 관련 내용을 참조할 수 있는 곳이다(유료) developer.arm.com/support/training?_ga=2.4985078.473169587.1613142450-82408871.1613142450 더보기