본문 바로가기

임베디드/ARM

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.. 더보기
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 더보기
ARM Product 관련 문서 번역(Cortext-M3) (번역을 시작하게 된 계기) ARM 아키텍쳐는 높은 시장 선점율에도 불구하고, '여러 요소'들로 추상화 되어 있어 이해에 대한 필요성을 느끼기 쉽지 않다. 여러 요소들의 예로는 펌웨어 엔지니어 입장에는 칩 벤더사 SDK가, 어플리케이션 엔지니어 입장에는 리눅스와 같은 OS가 될 수 있다. 그럼에도 불구하고 ARM 아키텍쳐를 익히는 것은 앞으로 사용 할 Soc SDK의 Learning Curve를 줄여준다는 점에서 의미가 있다고 생각한다. (적어도 ARM 아키텍처를 계속 사용하는 한) 목차 Chapter 1 Introduction Chapter 2 The Cortex-M3 Processor Chapter 3 The Cortex-M3 Instruction Set Chapter 4 Cortex-M3 Perip.. 더보기
ARM ToolChain 관련 문서 ※ 본 포스팅은 armlink, armcc 사용자 가이드를 요약 및 번역한 것입니다. 오역이 있을 수 있으며, 댓글 남겨 주시면 수정하도록 하겠습니다. 문서 링크는 아래에 있습니다. 1. 읽어 볼만한 ARM ToolChain 문서 종류 - Armcc User Guide (ARM DUI 0375) : armcc 컴파일러의 특징을 설명 - ARM C and C++ Libraries and Floating-Point Support User Guide (ARM DUI 0378) : ARM C, C++ 라이브러리, ARM C microlib 특징을 설명. - Armasm User Guide (ARM DUI 0379) : armasm, 어셈블러의 특징을 설명 - Armlink User Guide (ARM DUI 0.. 더보기