ARM

포스트: 173|조회수: 0|TERM
Items

Posts

173 posts

[ARM][브레인스토밍] 레지스터의 진실과 오해 - ①

Guillermo Austin Kim|2020년 7월 21일

ARM 프로세서의 레지스터에 대한 브레인 스토밍 노트의 내용을 저장합니다. # 레지스터란 CPU에서 연산하는 데이터를 저장하는 용도로 메모리 공간으로 속도가 가장 빠름# 사실 ARM 프로세서 내부에는 수 많은 레지스터가 있는데 유식한 용어로 물리 레지스터라고 말함# 일반적으로 레지스터라고 말하면 ARM 프로그래밍 모델의 레지스터를 뜻함. 이를 유식하게 논리 레지스터라고 함(이런 소리를 할 필요는 있는 지) # ARM 프로세서의 레지스터의 갯수가 많다고 불만을 토로하는 인간들이 있음.이게 다 명령어를 패턴화 시켜서 트렌지스터의 갯수를 줄이기 위한 아이디어에서 나왔음. 이걸 RISC라고 부르는데최근에 RISC와 CISC의 경계는 거의 사라짐. 그래도 ARM 프로세서를 소개할 때 RISC로 말하는 게 바람직.

[ARM][ARMv7 아키텍처] 성능: 사이클(cycle) 정보 얻어오기 - [1]

Guillermo Austin Kim|2020년 7월 20일

이번 포스팅에서는 ARM 프로세서의 성능 측정 지표인, 사이클 정보를 얻는 방법을 정리한다.아쉽게도 관련 문서나 코드를 100% 이해한 내용은 아니나, 리서치한 부분까지 정리한다. 리눅스 커널의 ARM 어셈블리 코드 분석 아래 소스를 열어보면 뭔가 의미있어 보이는 주석이 있다. * Cortex-A8 has up to 4 configurable performance counters and * a single cycle counter. * Cortex-A9 has up to 31 configurable performance counters and * a single cycle counter. * * All counters can be enabled/disabled and IRQ masked separ

[ARM] 임베디드 개발자가 반드시 ARM 프로세서를 배워야 하는 이유

Guillermo Austin Kim|2020년 7월 14일

이번 시간에는 ARM 프로세서를 리눅스 시스템 개발자가 배워야 하는 지 설명합니다. 브링업을 제대로 하기 위해서 임베디드 개발자들이 진행하는 프로젝트의 단계는 '보드 브링업 - 기능 안정화 - 유지 보수'로 분류할 수 있습니다.3단계에서 보드 브링업은 어떤 단계를 거쳐 진행될까요? 과제에 따라 다르지만 개발 업무의 내용을 소개하면 다음과 같습니다. * 부트로더에서 스타트업 코드를 작성 * 메모리와 같은 하드웨어를 초기화 먼저 스타트업 코드를 작성하는 업무에 대해서 조금 더 설명을 드려볼까요?전원이 시스템에 들어오면 가장 먼저 실행되는 코드가 reset 익셉션 벡터 코드입니다. 이 코드에서 기본적인 메모리를 설정을 초기화하고 ARM 모드 별로 스택 사이즈를 지정해야 합니다.이 모든 코드를

[ARM] ARM 프로세서의 특징을 활용한 최적화는 왜 중요할까?

Guillermo Austin Kim|2020년 7월 4일

이번 포스팅에서는 'ARM 프로세서의 특징을 활용한 최적화는 왜 중요할까?'에 대해서 이야기하려고 합니다.본론에 들어가기 앞서 일반적인 SW 개발자들이 최적화에 대해 어떻게 생각하는지 짚어 보겠습니다. 생각보다 성능과 최적화는 중요하다 대부분 SW 개발자들은 주어진 스팩을 구현하기 위해 프로그램을 작성합니다. 화면을 꾸미는 프론트 엔드 개발자들은 화면이 제대로 구성됐는지, 메뉴나 폰트가 제대로 보이는 지 체크를 합니다. 네트워크 개발자들은 데이터 패킷이 제대로 전달이 됐는지 테스트를 할 것입니다. 프로그래머는 주로 주어진 스팩을 만족하면서 버그가 없도록 프로그래밍을 합니다. 하지만 프로그램이 스팩 내에서 올바르게 실행되도록 결함을 찾아 다듬는 것만으로는 충분하지 않을 수 있습니다. 고객이 사용