ARM Datasheet
ARM7TDMI
버젼별로 숫자로 나타낼 수 있는데 Architecture로는 'ARMv3' 이런식으로 나타내며
Family 로는 'ARM7' 이런식으로 나타낸다.
지금 보면 족보로 ARM7이 나오고 그 뒤의 TDMI 이니셜들은 하나하나의 의미를 가진다.
Thumb
TDMI의 T의 의미로 32비트 마이크로 컨트롤러의 ARM7TDMI를 메모리 사용량과 기능에 따라 16비트로 동작한다. 그렇게 함으로 인해 소비전력을 줄이고 메모리의 사용량을 줄인다. 그덕에 적은 양의 공간을 채우기에 고밀도로 사용된다. (저전력에 치중)
AIC가 인터럽트를 총괄한다.
- 개별적으로 ON / OFF 가 가능한 여덟단계의 우선순위를 가진 인터럽트가 있다.
- Fast Interrupt가 존재하며 이것은 독자적이다.
DBGU
디버그 전용으로 따로 만들어 둔 것이며 비동기 전송 방식으로 USART와 별도로 사용되며
간단한 시리얼 통신으로 상태를 알아볼 때 사용된다.
PIOA
아트메가에서 PORT와 같은 것으로 우리가 사용하는 ARM의 경우 32개의 다리가 존재한다.
DMA (Direct Memory Access)
- CPU의 입출력 명령 하나에 의하여 CPU를 거치지 않고 일련의 정보를 곧바로 입출력 장치에서 메모리로 또는 메모리로부터 입출력장치에 전달하는 기술이다.
- 대량의 데이터 전송 시 CPU가 직접 제어할 경우 CPU에 많은 부하가 걸린다. DMA 방식을 사용할 경우 직접 데이터를 전송하므로 CPU의 부하를 줄여 시스템 성능을 향상한다.
5V-tolerant
- 전자장치들의 대부분 TTL을 사용한다. (TTL = 5V 기준)
- 사용하는 ARM의 전압은 3.3V이나 TTL기준으로 만든 외부장치들은 5V를 ARM으로 보낸다. 이를 버틸 수 있도록 장치 해 놓은 것이 tolerant 이다.
- 3.3V 까지 견딜수 있지만 이것을 통하여 5V로 입력받아도 크게 지장이 없다.
4개의 대전류 다리가 존재하며 최대 16mA까지 가능하다. (보통은8mA)
APB - 주변장치용 버스
ICE - 컴파일되어 밖으로 나가는 것에 신호를 보내며 장치가 돌고있는지 확인 ( 모니터링 장치)
TST - 장치의 스위치
FIQ - Fast Interrupt
NRST - 리셋 버튼
AD4~AD7 - PIO를 거치지 않고 사용이 가능
회로도
J4(몰렉스)나 VCC5(USB) 로 받은 전압을 LM117_3.3을 통하여 3.3V로 변환 하여 준다.
VBUS로 5V가 들어오고 2~3번을 통하여 데이터 교환을 한다.
제공된 헤더파일 처럼 수정해 보기
제공되는 헤더파일
#define 을 통하여 어셈블리와 C를 구분하여 수행한다.
PIOA의 첫번째 Register를 보게 되면
위의 정의로 수정하게 되면
어셈블리가 아니므로
AT91_CAST(AT91_REG *) 이 (AT91_REG *)로 바뀌게 되고
#define AT91C_PIOA_PER ((AT91_REG *) 0xFFFFF400)
typedef 으로 캐스팅 부분을 바꿔 주게 되면
#define AT91C_PIOA_PER ((volatile unsigned int *) 0xFFFFF400)
AT91C_만 제거 해주면 기존에 사용하던 정의와 비슷하게 된다.
#define PIOA_PER ((volatile unsigned int *) 0xFFFFF400)
기존의 정의 #define PIO_PER (*((volatile unsigned int *) 0xFFFFF400))
다른 부분은 *이 있고 없고의 차이이다.
제공된 헤더 파일 처럼 사용할 경우엔
Register에 값을 넣어 줄때마다 *을 붙여줘야 한다.
제공된 헤더 파일 사용해 보기
위의 방식대로 수정하게 되면 다음과 같다.
#define AT91C_BASE_PIOA (AT91_CAST(AT91PS_PIO) 0xFFFFF400)
#define AT91C_BASE_PIOA ((AT91PS_PIO) 0xFFFFF400)
->오른쪽의 주소를 구조체 포인터로 케스팅
구조체안을 보게 되면 datasheet의 레지스터 맵과 동일한 것을 확인할 수 있다.
AT91SAM7S256.h 를 메인에 include 해준다.
이렇게 하면 하나하나 주소값을 정의 해주던 귀찮은 짓을 하지 않고 구조체를 가져와서 간단하게 사용이 가능하게 된다.
해본 결과 잘 깜박인다.
이상 일일 보고를 마칩니다.
늦게 올려 죄송합니다.
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014.7.9 출석번호3번 김대희 업무일지 (13) | 2014.07.09 |
---|---|
DBGU.c 참고 자료 (0) | 2014.07.09 |
20140708 일일보고 2번 고한솔 (15) | 2014.07.09 |
20140707 일일보고 1번 고윤석 (15) | 2014.07.07 |
프로젝트 발표 코멘트 - 손병규 (0) | 2014.07.04 |
2014.07.03 업무보고 - 출석번호 21번 이재우 (12) | 2014.07.04 |
프로젝트 발표 고멘트-박영주 (0) | 2014.07.03 |
프로젝트 발표 코멘트 - 서상우 (0) | 2014.07.02 |