Logic Gate
Memory
- 명령어와 데이터를 위한 저장 공간
- micro-controller는 서로 다른 종류의 메모리 하드웨어 컴포넌트들 여러 개로 구성되어 있음
- 메모리의 종류
- Volatile 여부
- ex) RAM(random-access) vs ROM(read only)
- access : read and write
- Byte 단위 주소, Byte들의 블록 단위 주소
- ex) NOR(byte) vs NAND (block) Flash
- Volatile 여부
Microprocessors (uP)
uP의 핵심 component는 ALU(arithmetic logical unit)과 register
- ALU : +, - , 비교, branch, read/write..
- register : internal memory
uP는 메모리 읽기쓰기를 제외하고, ALU에 외부 메모리를 직접적으로 사용하지 못함
- 외부 메모리 속 데이터는 register에 load된 후에 ALU에 쓸 수 있다.
- 0000의 10을 reg 1로
- 0004의 20을 reg 2로
- reg 1 + reg 2를 reg 3에 저장 (30)
- reg 3 (30)을 000C에 저장
Microprocessor Pins
- 각 핀의 주소들을 표기
- 어떤 신호를 받는지, read/write인지, clock signal input 용인지 등
Bus
HW component를 연결한 선
- uP
- 64KB addressable
- 64KB = 65536 = 2^16
- A0 ~ A15
- 8 Bits data
- data signal: D0 ~ D7
- 64KB addressable
- RAM/ROM
- 32KB memory space
- A0-A14 addressable, signals
- 32KB memory space
- Read는 OE/ ( output enable) signal에 부착
- Write는 WE/에 붙이며 오직 RAM에만 있음
- ROM은 READ-ONLY라서 없음
Memory Map
uP의 16 bit addressable 체계에 대해서 알아보자
- 64KB (0x0000 ~ 0xffff)
RAM과 ROM에 주소 범위를 할당하는 것을 ‘memory mapping’이라고 함
- ROM : 0x0000 ~ 0x7fff (32KB)
- 0111111111111111
- RAM : 0x8000 ~ 0xffff (32KB)
- 1000000000000000
- (이진수로 표현했을 때 !!)
uP가 데이터를 읽고 싶다면
- ROM의 A15를 LOW로 (directly)
- RAM의 A15를 HIGH로 (inverted)
+) ROM과 RAM은 동시에 일하면 안 되기에 RAM의 CLK에 not 게이트를 붙임
Additional Devices on the Bus
- 외부 장치는 메모리 주소에 의해 접근 가능
- memory mapped I/O
- 장치들은 data와 address signal와 함께 같은 bus로 uP에 연결해야 함
- Sensor, actuator, ..
- 장치들은 data와 address signal와 함께 같은 bus로 uP에 연결해야 함
- memory mapped I/O
- Memory Map
- 장치에다가 사용하지 않은 주소 범위에 할당
- uP와 장치는 서로 같은 기능의 핀들에 연결되어야 함
- 도면을 보면 각 컴포넌트 끼리 어떻게 연결되었는지 볼 수 있음
- 장치에다가 사용하지 않은 주소 범위에 할당
MSP432P4111
Initialization code
- startup_msp432p411_ccs.c
- 프로세서가 처음 실행할 때 동작하는 reset event
- SystemInit();은 system_msp432p4111.c에 있음
- MSP-EXP432P4111의 초기화 단계에 필요한 일을 수행
- _c_int00()는 C 프로그램을 돌리는데 필요한 단계를 수행
- SystemInit();은 system_msp432p4111.c에 있음
- 프로세서가 처음 실행할 때 동작하는 reset event
WDT : Watchdog Timer
프로그램을 재시작하지 않는 이상 특정 시간 간격이 후에 초기화하는 타이머
- 만약 프로그램이 정상작동하고 있다면, 간격이 끝나기 전에 WDT를 다시 프로그래밍해야 함
WDT 펄스의 출력은 일반적으로 소프트웨어가 실패했을 때 유효함
- 출력은 uP의 reset 신호에 연결되고, 프로그램을 처음부터 다시 시작
- 시스템에 장애가 발생 시 일정 시간 뒤에 재시작
+) 컴퓨터 오작동을 감지하고 복구하는 데 사용되는 타이머이다. 정상 작동 중에는 컴퓨터가 정기적으로 watchdog 타이머를 리셋하여 경과 시간이 지나지 않게, 즉 "시간 초과(time out)"하지 않게 하여야 한다.
오류로 인해 컴퓨터가 watchdog을 재설정하지 못하면 타이머가 경과되고 시간 초과 신호가 생성. time-out 신호의 발생은 컴퓨터의 루프가 정상적으로 동작하고 있지 못함을 나타는 신호
발생 시 이를 대처하기 위해 시스템을 안전한 상태로 두고 정상 작동을 복원(재시작)
예를 들어, 우주 탐사선과 같은 원격 임베디드 시스템은 인간 조작자가 물리적으로 접근 할 수 없다. 장애로부터 자율적으로 복구 할 수없는 경우 잘못하면 이 시스템을 영구적으로 사용할 수 없게 될 수 있다. watchdog 타이머는 일반적으로 이와 같은 경우에 사용됩니다.
( https://xmctutorial.readthedocs.io/ko/stable/Watchdog/)
Dummy main()
실행가능한 binary 파일로 target을 빌드함
( Project -> Build Project )
watchdog가 프로그램에게 정기적으로 잘 작동하고 있는지 물어봄
제대로 답변을 안 하면 계속 껐다 키려고 하기 때문에 stop으로 구현함
Download the Executable Binary
- Click “Flash”
- 이전에 flash하여 생성된 binary는 삭제되고 새 binary가 flash된다
- 약 100만 번 이상 flash하면 (썼다 지웠다 하면)
- 일부분은 닳아 없어지기에 새 binary에 대해 단순 쓰기만 했는지, flash까지 해주었는지 검증할 필요가 있다
'CS > Embedded System' 카테고리의 다른 글
Header file에 정의된 macro와 데이터형 이용하기 (0) | 2021.10.13 |
---|---|
[실습] Memory Map for P1.0 Red LED (0) | 2021.10.13 |
Bit Operator (0) | 2021.10.13 |
전자공학 기초 2 (0) | 2021.10.13 |
전자공학 기초 1 (0) | 2021.10.13 |