Thief of Wealth
7. ARM 어셈블리 프로그래밍 TIPS
개발/마이크로컴퓨팅 2019. 4. 18. 02:01

- 어셈블리어는 C 컴파일러가 컴파일 하기 때문에, 결국엔 C코드를 최적화 하는 것이 필요하다. 그리고 C프로그램을 짤때, 자료형은 32bit형 int를 써주는것이 좋다.왜냐하면 ARM의 레지스터의 길이는 32bit인데, 32bit가 아닌 경우, 어셈블리어쪽에서 32bit로 바꿔주는 연산이 추가로 필요하기 때문이다. - Load 명령어 주소지정방식 3가지 1. Pre indexing LDR r0, [r1, #4] 형태로 쓴다. 이것의 의미는 r0에 [r1+4]인 값을 저장하겠다는 의미이다.그러면 r0값을 바뀔것이나r1의 값은 그대로 일 것이다. 2. Post indexing LDR r0, [r1], #4 이것도 의미는 r0에 [r1+4]인 값을 저장하겠다는 의미이다.그러면 r0값도 바뀌고r1의 도 4가 ..

6. ARM 명령어
개발/마이크로컴퓨팅 2019. 4. 18. 00:47

https://ezbeat.tistory.com/359 위 블로그에도 많은 정보들이 있습니다. ARM의 명령어의 종류에는 데이터 처리 명령어 분기 명령어 Load/Store 명령어 Software Interrupt 명령어 Program Status Resgiter (PSR) 명령어들이 있습니다. 각각에 대해 살펴보도록 하겠습니다. 1. 데이터 처리 명령어 - ARM은 RISC아키텍쳐이므로 명령어의 길이는 32bit으로 고정입니다. - 3-address 형식을 지닙니다. - 각 연산은 1개의 cycle에 실행됩니다. - 조건부로 실행이 가능합니다. - 기본적으로 결과가 상태플래그 CPSR에 영향을 주지 않습니다. - 명령어에 S를 붙여주면 상태플레그 CPSR에 영향을 줍니다. (ADD -> ADDS , S..

5. ARM 디버깅
개발/마이크로컴퓨팅 2019. 4. 18. 00:21

c코드 파일을 하나 만들고main.c로 가정 cmd 창에서 알맞은 경로로 들어가준 다음에 armcc -S main.c하면 c파일을 바탕으로 어셈블리 파일 main.s가 생성됩니다. armasm -g main.s하면 어셈블리파일을 바탕으로 오브젝트파일(main.o)을 디버깅속성(-g)을 넣어주고 생성합니다. armlink main.o -o main.axf하면 오브젝트파일을 바탕으로 ARM 실행파일 main.axf가 만들어집니다. 이 .axf 파일을 DS-5의 디버깅 경로에 넣어서 테스트하면 됩니다.

article thumbnail
4. ARM 프로세서에 대해 2
개발/마이크로컴퓨팅 2019. 4. 18. 00:00

이번엔 ARM 프로세서의 예외 발생에 대해 알아보자. 1. ARM Exception Exception은 앞서 설명했듯이 CPU내부에서 발생하는 예외이다.Interrupt는 CPU외부 hw에서 발생하고trap은 sw인터럽트로써 system call에 의해 호출된다. 이렇게 3가지로 나누어져 있으나, 여기 ARM Exception은 위 3개를 모두 "동일"한 것으로 취급해서 설명하겠다. - Exception ( Interrupt ) 처리과정 1) 현재 CPSR 레지스터 내용이 SPSR 레지스터로 복사됨. (해당 exception의 종류에 맞게 적절하게 값을 설정해서 save) 2) Exception 종료 후 복귀할 pc값 (지금 pc값) 을 LR_ 레지스터에 저장. (LR이 뭐지) 3) pc 에 "vecto..

article thumbnail
3. ARM 프로세서에 대해
개발/마이크로컴퓨팅 2019. 4. 17. 23:11

2장에 이어서 더 자세한 ARM의 특징들을 알아보자. 1. ARM Core의 데이터 흐름도 (폰 노이만 ver) 지금은 위 그림보다 하버드 구조를 더 많이 쓴다. 하버드와 폰 노이만 아키텍쳐의 차이점을 이전 글에서 자세히 설명했다! 2. ARM Date Types ARM 프로세서 내부에서는 어떤 데이터 타입들의 전송이 일어나고 있을까 - Byte : 8bit- HalfWord : 16bit- Word : 4byte = 32bit- Doubleword : 64bit - Intruction Sets : ARM 명령어는 무조건 32bit로 고정!- Core Instructions : Core 명령어들은 58 3. ARM Register Set - ARM의 Register개수는 몇개일까. RISC니까 32개? ..

article thumbnail
2. ARM은 뭘까
개발/마이크로컴퓨팅 2019. 4. 17. 22:19

1. ARM은 뭘까ARM을 배울건데 ARM은 뭘까, 팔인가?그게 아니라 ARM는 임베디드 기기에 많이 사용되는 RISC 프로세서이다. 2. ARM의 구성ARM의 큰 틀은 아래로 구별할 수 있다. 1) ARM코어명령어 해석하고, 연산하는 녀석. (Databus로 data를 받아옴)2) Data맞다 그 데이터다 근데 여기서 Databus의 종류로 ARM 아키텍쳐가 아래의 2가지로 나뉜다.(1) 폰 노이만 아키텍쳐(2) 하버드 아키텍쳐 3. 폰 노이만 아키텍쳐 - 일반 data와 명령어가 같은 bus를 통해 공유된다. 즉, 메모리가 데이터도 저장하고, 명령어를 구별없이 저장할 수 있다. - 구조는 다음과 같다. 메모리가 2가지 종류의 정보를 읽어올 수 있는데, 1개의 bus를 가지고 동작한다. - 버스가 1개..

article thumbnail
1. 임베디드 시스템이란 무엇일까
개발/마이크로컴퓨팅 2019. 4. 17. 21:31

1. 임베디드 시스템이란?- 마이크로 프로세서 또는 마이크로 컨트롤러를 내장하여 개발자가 지정한 기능만을 수행하는 장치- 더 큰 시스템의 일부이거나, 독립된 시스템으로서 특정업무를 수행하기 위한 Hw와 SW를 포함하는 응용 시스템 즉, 컴퓨터의 HW와 SW가 조합되어 특정한 목적을 수행하는 시스템. (참고) 1개의 chip에 시스템들이 들어가 있는 것을 System on chip이라고 한다. 2. 임베디드 시스템의 응용분야1) 제어응용 (공정제어)2) 단말응용 (헨드폰)3) 가정용 정보기기 (프린터, 게임기)4) 통신장비 응용 (라우터, 교환기) - 실제사례(1) 공장자동화 (FA : Factory Automation)smart factory에도 쓰이며,센서와 제어시스템 로봇등을 사용하여 무인시스템을 구..

profile on loading

Loading...