728x90
반응형
ARM(126p ~ 161p)
- APCS(ARM Procedure Call Standard)
-
- CPU에 따라 함수 호출 규약이 다름
- ARM의 레지스터 사용 규약
- ARM에서 코딩한 소스를 APCS에 맞춰 컴파일해 기계어를 만든다
- ARM 레지스터 역할
-
- ARM 어셈블리 프로그래밍할 때 표의 register, synonym, special 이름 세가지 다 사용해도 됨
- R0~R3, SP, LR, PC 레지스터를 많이 사용한다
- R0~R3
-
- argument
-
- 함수 내에서 r0~r3를 사용한다면 이 레지스터 값들을 스택에 저장해둔다
- 최적화를 위해 함수의 인자는 4개 이하로 하는 것이 좋다
-
- 5번째 인자부터 스택에 저장하므로
- 4번째 인자까지는 레지스터 R0~R3 에 저장하므로 속도가 더 빠르다
- result
-
- 함수의 return값을 저장하는데 사용
- scratch
-
- 함수 동작 중 내부변수로 활용
- 함수를 만들 때, 인자가 4개 미만이면 4개까지 더미 인자를 만들어 함수내부변수로 활용하면 동작속도를 빠르게 할 수 있다
- 특수 레지스터
-
- PC : 인텔의 EIP같은 것
-
- 인텔과 달리 어셈블리 mov로 대입할 수 있다
- SP: 스택 포인터
- LP: return address 저장
- 인터럽트
-
- Exception의 일종
-
- Interrupt Exception이 발생하면 IRQ나 FIQ의 핸들러 명령어 쪽으로 이동(branch)
- 인터럽트를 동작시키는 회로가 HW 적으로 구현되어 있음
- Nesting
-
- 인터럽트 처리중에 다른 인터럽트가 들어오는 것
- 시스템에따라 처리 법이 다르다
-
- 인터럽트 처리 중 다른 인터럽트 감지 disable
- 일정 수의 nesting 은 허용
- ISR은 최대한 짧게 작성하는 것이 좋음
- ARM SoC
-
- ARM 은 CPU Architecture
-
- MPU를 만드는 회사들이 ARM의 architecture를 사고 거기에 다른 기능(IP)들을 추가하여 디자인한다
- 같은 ARM core를 쓰면 ARM assembly를 공용으로 사용 가능
-
- ex) Qualcomm MSM(모뎀 기능이 들어간 MCU)
- SoC
-
- Core에 여러가지 기능을 덧붙여 한 개의 chip으로 만드는 기술
- ARM core를 바탕으로 다른 device를 block화 하여 하나의 칩으로 만드는 것
-
- IP(Intellectual Property)
-
- SoC 내부 각각의 block들
- USART, I/O, PLL 등
- ASIC Library
-
- verilog같은 디자인 툴로 각 device를 설계하여 block화 한 것
- AMBA
-
- 칩 내부의 IP들끼리 통신하기 위한 버스 프로토콜
- AHB, APB, ASB가 있음
-
- ASB: 주소와 데이터를 번갈아서 전송
- AHB: 주소를 한번 전송한 후 데이터를 연달아서 전송(Burst) 가능
- 컴파일
-
- 소스코드를 기계어 코드로 바꾸는 것
- CPU가 다르면 기계어가 다르다
-
- 특정 CPU에서 컴파일한 실행파일을 다른 CPU 환경에서 동작시킬 수 없다
- 어셈블리는 기계어와 1:1 매칭
-
- CPU에 따라 어셈블리 문법이 달라짐
- C 언어 같은 고급언어는 CPU나 운영체제에 구애받지 않고 프로그래밍할 수 있어 이식성이 좋다고 함
-
- 임베디드에서는 주로 C언어를 사용
- C++ 등도 가능하지만 코딩면에서 편한거지 컴파일 후 파일 길이가 길어져 최적화 측면에서는 불리
- Java 같은 언어는 하나의 파일로 가상머신이 존재하는 모든 환경에서 동작하능
- 인텔과 ARM의 함수 호출/반환 과정
- 구조체를 인자/반환값으로 사용한 함수
728x90
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151127 - 강동조 개인업무일지 ARM2일차 (6) | 2015.11.30 |
---|---|
20151127_박서연_일일업무보고서_ ARM Assembly(2) (8) | 2015.11.30 |
2015-11-27 ARM Assembly 개인업무일지 - 천정호 (8) | 2015.11.29 |
20151127_안향진_ARM어셈블리_2 (7) | 2015.11.29 |
20151127 윤재희 #2. ARM/ Thumb PCS - 레지스터 사용법 ~ 컴파일에 대한 단상 (6) | 2015.11.29 |
2015.11.27_개인업무일지_[ASM #2]_이량경_함수호출 규약 (5) | 2015.11.29 |
20151127 임현수 업무일지 ARM #2 함수호출규약 (6) | 2015.11.29 |
20151128 엄민웅 - arm 임베디드레시피 이론 수업 (교제 127~161) (7) | 2015.11.28 |