시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 (155) 썸네일형 리스트형 [ARM] ARM 프로세서를 배워야 하는 이유 이번 시간에는 ARM 프로세스를 왜 배워야하는지 이야기를 해보겠습니다. 우리가 어떤 것을 처음 배울 때는 그것을 왜 배워야 하는지 알면 좋습니다. 왜냐면, 무엇을 공부하기 전에 왜 배워야 하는지 알면 더 동기 부여가 되기 때문이죠. 다른 동료들이나 친구들이 ARM 프로세서는 잘 배워야 한다고 해서 등떠밀려 공부하면 잘 집중이 안되는 거 같습니다. 그렇지 않나요? 무엇보다 배운 내용이 어떻게 활용되는지 알면 공부할 때 더 힘이 날 겁니다. 소형 기기에서 ARM 프로세서를 많이 탑재 ARM 프로세스를 배우는 가장 큰 이유는 ARM 프로세서를 많이 쓰기 때문이에요. 대부분 휴대 기기에는 ARM 프로세서가 많이 탑재돼 있어요. 여러분들, 모두 휴대폰 1개는 다 들고 다니죠? 안드로이드 스마트폰에 탑재된 CPU가.. [ARM프로세서] ARM 모드에 대한 소개 ARM을 공부하면 가장 먼저 만나는 용어가 있습니다. 바로 ARM 동작 모드입니다. ARM 모드는 ARM의 세부 동작을 배우려면 반드시 알아야 하므로 잘 익혀 둘 필요가 있습니다. 특히 64비트 기반의 ARMv8 아키텍처는 기존 ARM의 모드에 대응되는 익셉션 레벨이란 개념을 도입했습니다. 익셉션 레벨이란 개념이 기존 ARMv7 아키텍처의 ARM 모드에서 발전됐으니 먼저 ARM의 동작 모드부터 살펴봅시다. ARM 모드의 종류 이 ARM 동작 모드를 잘 익혀야 시스템을 디자인하고 디버깅할 때 배운 내용을 유용하게 활용할 수 있습니다. 실행 모드를 잘 살펴 보면 유저(User) 모드는 표준 사용자 모드라고 부르는데 나머지 6가지 모드는 Privileged mode라고 분류됩니다. ARM User Manual.. [ARM] ARM 프로세서 소개 - RISC와 CISC란 무엇인가? 이 세상에는 다양한 종류의 프로세서들이 있습니다. 예를 들어 봅시다. * x86 * MIPS * Power PC * ARM 이제부터 ARM 프로세서에 대해 이야기를 하겠습니다. 자, 여기서 한 가지 의문이 생깁니다. * 임베디드 개발자들은 왜 ARM 프로세서를 배워야 할까? 간단히 답을 드리면 임베디드 개발에서 ARM 프로세서가 아주 많이 쓰이기 때문입니다. 가장 큰 이유는 ARM 프로세서는 전력을 조금 소모한다는 사실입니다. 그렇다면 ARM이 저전력 프로세서인 이유는 무엇이며 임베디드 시스템에 적합한 이유는 무엇일까요? 그 이유에 대해 조금 더 자세히 알아 보겠습니다. 보통 마이크로 프로세스는 크게 2 가지 범주로 나눌 수 있습니다. * CISC (Complex Instruction Set Comput.. [ARM] ARM 프로세스를 배우기 어려운 이유 - 어셈블리 명령어 많은 분들이 ARM 프로세스를 익히기 어렵다고 말합니다. 물론 저도 마찬가지였고요. 그렇다면 ARM 프로세스가 어려운 이유가 뭘까요? ARM 프로세스 자체가 어렵기보다는 ARM 프로세스를 익히는 방법에 문제가 있기 때문입니다. 달리 말하면 ARM 프로세스 내용은 그리 어렵다는 이야기입니다. 자, 그럼 ARM 프로세스의 핵심 개념이 무엇인지 살펴볼까요? ARM 프로세스 범위는 넓게 보면 MMU부터 캐시까지 다양하나 핵심 내용은 다음과 같이 좁힐 수 있습니다. - 어셈블리 명령어 - 익셉션 - ARM 모드(ARMv7/ARMv8) - 함수 호출 규약(Calling Convention) 이 밖에도 MMU, Cache(L1/L2) 등등 깊게 살펴볼 주제가 있습니다. 위에서 언급한 내용만 제대로 파악하면 임베디드 .. 유용한 ARM 책 - 컨텐츠 2) Microprocessor 아뜰리에 (Atelier) - ARM을 파헤쳐 보자 ⓐ Microprocessor 아뜰리에 ⓑ ARM inside ⓓ ARM 동작 Modes - 나는 어느 Mode를 써야 하나 ⓔ ARM Register와 Context ⓕ ARM Exception과 Modes ⓖ ARM - Thumb PCS ; Register 사용법 ⓗ ARM은 Interrupt 냄새를 어떻게 맡는가 ⓘ ARM SoC (System On Chip) - ARM 그렇고 말고 ⓙ AMBA와 Bus 이야기 3) Software 데꾸바쮸 (Decoupage) - Software의 정체와 만들기 ⓑ 컴파일에 대한 단상 ⓒ 컴파일 공장 이야기 ⓓ 원하는 컴파일을 해보자 ⓔ Preprocess (-E option)과 .. [ARM] CPSR(Current Program Status Register) Register 501 ARM Mode와 PSR..너희들은 누구냐? 뭘 알아야 이해를 하지 아래의 그림을 보면서 이야기 해 보죠. 아래는 하드웨어 디버거로 ARM9TDMI의 core 레지스터를 보여 주고 있답니다. 모두 32bit를 가지고 있어요. 막상 이 그림을 보면 레지스터 개수가 상당히 많이 있는 것으로 보이지만 실제로는 그렇지 않답니다. 같이 개수를 세어 보죠. ARM core는 6개의 모드로 나누어 진답니다. USR, FIQ, SVC, IRQ, UND, ABT 모드가 있으며, SVC, IRQ, UND, ABT는 3개의 레지스터가 있답니다. FIQ는 8개가 있구요. USR는 R8~R14까지만 있는 것으로 보이겠지만 좀 더 자세히 살펴보시면 R0~R14까지 해서 15개가 있지요. 안 보이시는 분은 눈을 크게 뜨고 .. [ARM] tst 명령어를 실행하면 ARM CPSR 레지스터가 어떻게 변경될까? tst 명령어는 연산자와 비연산자 사이 AND 비트 연산을 수행합니다. AND 비트 연산 결과에 따라 CPSR 레지스터 Z 비트는 다음과 같이 변경됩니다. Z: 0 ( AND 비트 연산 결과가 1인 경우) Z: 1 ( AND 비트 연산 결과가 0인 경우) tst 명령어가 위와 같이 동작하는지 증명하기 위해 T32 디버거를 실행해 보겠습니다. 다음 화면은 tst 명령어를 실행하기 직전입니다. NSR:80107E6C|ret_to_user_from_irq: ldr r2,[r9,#0x8] NSR:80107E70| cmp r2,#0x7F000000 ; r2,#2130706432 NSR:80107E74| blne 0x8010B5FC ; addr_limit_check_failed NSR:80107E78| ldr r1.. [Linux][ARM] Coprocessor(코프로세서) Assembly ARM 프로세스 내 Coprocessor라는 하드웨어가 있습니다. Co-Processor라는 것은 Co-worker랍니다. CPU 혼자 모든 일을 다 할 수 없으니 Co-Processor가 필요한 것입니다. Co-Processor는 C언어 같이 어떤 코드 흐름을 제어하는 일보다는 ARM Core나 Cache을 콘트롤하는 역할을 수행합니다. 그래서 ARM 프로세스로 칩을 디자인하는 개발자는 Co-Processor를 제어하는 명령어를 달달 외우고 있죠. Co-Processor가 있으니 당연히 Co-Processor하고 대화를 해야 겠죠. Co-Processor에게 말을 거는 방법을 역시 레지스터를 이용해서 주어진 명령어를 실행시키면 됩니다. Co-Processor에게 말을 걸면 Co-Processor가 알아.. 이전 1 ··· 15 16 17 18 19 20 다음