-
20140702 (ARM Register Summary, LED 켜기)부산IT학원/스마트컨트롤러 2014. 7. 2. 11:17
93일차
-------
ARM
-------
------- 기본 준비
1. vi, 몇 가지 기본 설정함. 안해도 무방함.
1.tar 파일은 홈 디렉토리에 해제하고
profile 파일은 /etc/ 에 붙여넣고, 홈 디렉토리에 .profile 로 바꿔넣는다.
2. 어제 받은 arm-gcc 중에 4.1 버전을 설치한다.
그리고
이 압축파일을 해제하고 그 해제한 폴더에 들어가 make 명령어를 걸어주는데
make 가 실패하면
cygwin 이 설치 된 폴더에 bin 경로를 추가해 주면 된다.
그리고 아까 압축해제한 폴더에 가서 다시 make가 걸리면 준비 끝.
그 폴더에 main.c 에 작성하면 된다.
------- AT91 SAM 7S 256 data sheet
--- Memory Map
AT91 SAM 7S 256 같은 경우 폰노이만 구조인데
상위 버전(9S)는 하바드 구조이다.
32 bit라 메모리 주소를 위와 같이 되어 있지만 실제 사용하지 않는 공간이 많다.
장치관련 Reg도 하부쪽에 분포되어 있다.
Remap?
- cstartup.s 소스 중에..
----- LED 켜기
우선 외부 port 제어하는 Reg를 찾는다.
AT91 SAM 7S 256은 32개의 PORT를 갖고 있다.
--- 관련 Reg
- Pin을 켜는 Reg
- Pin을 끄는 Reg
ATMega와 다르게 on, off Reg가 따로 있다.
그래서 이전 값을 유지시키는 코드가 필요없고 영향을 끼치지 않는다.
예를 들어
ATMega)
PORTA = PORTA | 0x01; // 다른 값에 영향을 주지 않기 위한 코드.
ARM)
PORTA = 0x01; // 0bit 켜는 코드. 다른 값에는 영향을 주지 않는다.
또 다른점으로 AVR은 Register Summary 표가 있는데
ARM은 없다. 그래서 Reg 주소값을 알아야 하는데... Data sheet 를 살펴보니 이런 표가 있었다.
(제작사마다, 부서마다 Register Summary를 붙여주고, 안 붙여주고 제 각각이다.)
offset 이란 곳에 주소처럼 보이는데 offset은 어떤 기준이 되는 주소에서 떨어진 만큼을 알려준다.
그럼 그 기준이 되는 주소는 Memory Map 에 나와 있다.
0xFFFF F400이 기준 주소인 것이다.
예로
PIO_PER : 0xFFFF F400
PIO_PDR : 0xFFFF F404
이렇게 주소가 되는 것이다.
오늘 한 수업 중에 PC reg에 대해서...
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140704 (ARM 회로도, Register 사용법) (0) 2014.07.04 20140703 (ARM ISP, USB Driver, LED 켜기) (0) 2014.07.03 20140701 (ARM Cygwin, arm-gcc) (0) 2014.07.01 20140626 (select, 1:1 채팅) (0) 2014.06.26 20140625 (메시지 큐 우선순위, 공유 메모리) (0) 2014.06.25