본문 바로가기
반응형

전자/임베디드 시스템164

임베디드 시스템 개발 과정 임베디드 시스템 개발 과정은 다음과 같다.1. 회로 설계2. 개발 환경 구축과 Hello world 프로그램 작성3. CPU 주변 장치 제어 프로그램 (드라이버) 작성4. 응용 프로그램 작성위의 4가지 각 단계가 모두 어렵다. 특히, 1,2,3이 어렵다. 2019. 7. 9.
AVR 프로그래밍 AVR 구조 - 하바드 아키텍츠 AVR은 하바드 구조 (Harvard Architecture)를 가지고 있다. 하바드 구조는 프로그램 메모리와 데이터 메모리가 분리되어 있는 구조이다. 그래서, AVR에서 프로그램을 작성할 때는 하바드 구조가 아닌 CPU에서 프로그램 할 때와 조금 다른 특성이 있다. 하바드 구조에서는 프로그램과 데이터 영역이 분리되어 있기 때문에 상수로 선언된 변수를 사용하기 위해서는 상수가 저장된 플래시 메모리에서 데이터 메모리를 이동해야 한다. 변수를 상수로 선언하면 일반적인 CPU에서는 플래시에 변수가 할당되지만 AVR에서는 플래시와 램 모두를 사용한다. AVR에서 PROGMEM는 플래쉬에 저장된 데이터를 엑세스하기 위한 명령어로 플래시 메모리에서 램을 사용하지 않고 직접 엑세스하기.. 2019. 3. 10.
Watchdog 프로그램에서 위치 Watchdog Reset은 우선 순위가 가장 낮은 태스크에서 실행해야 한다. 왜냐하면, 버그나 어떤 문제로 인해 우선 순위가 높은 태스크는 실행되고 우선 순위가 낮은 태스크는 실행되지 않는 경우가 자주 발생하기 때문이다. 인터럽트를 사용하는 프로그램에서는 백그라운드에서 Watchdog Reset을 해야 한다. 2019. 3. 9.
ATmega128 입출력 포트와 클럭 입출력 포트 ATmega의 Digital I/O 내부 회로는 다음과 같다. Sleep이 아닐 때는 핀의 신호를 항상 입력 받는다. AVR의 출력 포트의 최대 전류는 40mA이다. 다른 MCU들이 보통 25mA 정도인 것에 비해 매우 큰 전류를 출력할 수 있다. 출력 포트의 소스 전류는 다음과 같다. 40mA가 흐를 때 포트 전압이 약 4V까지 떨어진다. 출력 포트의 싱크 전류는 다음과 같다. 40mA가 흐를 때 포트 전압이 약 1V까지 상승한다. 클럭 퓨즈 ATmega의 클럭 관련 퓨즈는 다음과 같다. 여기서 SUT0-1은 시작 지연시간을 설정하고 CKSEL0-3은 클럭 소스를 설정한다. 클럭 소스에 따른 CKSEL 값은 다음과 같다. ● Internal RC Osillator : AVR 내부의 오실레이.. 2018. 10. 12.
Arbiter Circuit 아비터 아비터 (Arbiter)는 공유 자원을 사용할 때 엑세스를 제어하는 장치를 의미한다. 복수의 프로세서가 하나의 장치를 공유할 때 엑세스 권한을 얻기 위해 아비터를 사용한다. 버스 아비터 (Bus Arbiter)는 멀티 마스터 버스에서 버스 사용 권한을 얻기 위해 사용된다. 각각의 프로세스에서 버스를 요구 (Request)하면 아비터는 한번에 하나의 프로세서만 버스를 사용할 수 있도록 승인 (Grant) 한다. 아비터는 크게 동기 아비터 (Synchronous Arbiter)와 비동기 아비터 (Asynchronous Arbiter)가 있다. 비동기 아비터는 Metastability 문제가 있고 아비터 승인을 위한 지연 시간이 고정되어 있지 않고 유동적이고 예측할 수 없는 문제가 있다. 아비터 로직 .. 2018. 9. 30.
BeagleBoard, BeagleBone 보드 BeagleBoardBealgeBoard의 종류 ● BeagleBoar (2008) ● BeagleBoard rev.C (2009) ● BeagleBoard-xM (2010) ● BeagleBone (2011) ● BeagleBone Black (2013) ● BeagleBoard-X15 (2015) CPU AM5728 (TI)AM3358/9 (TI) Core ARM Cortext-A8 ARM Cortext-A15 주파수 720-1500 MHz 공개 오픈 소스오픈 하드웨어 출시일 2008년 제조사 TI TI의 Sitara 프로세서TI의 Sitara 프로세서는 TI에서 생산하는 ARM 기반 프로세서이다. Sitara 프로세서는 AM335x와 AM4x와 AM5x 시리즈가 있으며 AM335x와 AM4x는 싱글.. 2018. 9. 7.
JTAG과 cJTAG과 SWD JTAG은 그라운드와 전원을 제외하고 TDI, TDO, TCK, TMS, RST의 5개 선이 필요하다. JTAG은 IEEE 1149.1로 표준화 되어 있다. cJTAG (compact JTAG)은 TMSC, TCKC의 2개 선이 필요하다. cJTAG은 IEEE 1149.7로 표준화 되어 있다. SWD (Serial Wire Debug)는 SWDIO, SWCLK의 2개 선이 필요하다. SWD는 ARM에서 만든 방식이다. JTAG과 SWD 모두를 지원하는 CPU에서 일반적으로 TMS는 SWDIO에 연결되고 TCK는 SWCLK에 연결되며 회로나 케이블의 수정 없이 디버거 소프트웨어의 설정 변경 만으로 JTAG과 SWD를 선택하여 사용할 수 있다. 2018. 7. 28.
AVR 마이크로 컨트롤러 AVR은 1996년 Alf-Egil Bogen과 Vegard Wollan에 의해 개발되었다. 공식적으로는 AVR이 어떤말의 줄임말이 아니라고 말한다. 하지만, 보통 Alf and Vegard's RISC processor의 줄임말이라고 알려져 있다. Atmel 사의 AVR MCU 종류는 tinyAVR, megaAVR, XMEGA 등이 있다. 그 중에서 megaAVR의 모델넘버가 ATmega이다. ATmega 시리즈는 ATmega48, ATmega8, ATmega16, ATmega32, ATmega64, ATmega128 등이 있고 각각 4KB, 8KB, 16KB, 32KB, 64KB, 128KB의 플래시 메모리를 가지고 있다. 8bit MCU로써 16 ~ 20 MHz의 클럭 스피드를 가진다. (16 MH.. 2018. 7. 27.
ATmel을 인수한 PIC 마이크로 프로세서의 특징 PIC을 만드는 Microchip이 ATmel을 인수했기 때문에 ATmel보다 PIC이 많이 사용될 가능성이 높다. PIC 특징 임베디드 시스템에 많이 사용하는 MCU인 PIC 시리즈의 특징은 다음과 같다. 가격이 매우 싸다. PIC은 가격 대비 속도가 매우 높다. RISC 구조를 가진다. 하바드 구조로 프로그램과 데이터가 분리되어 있다. PIC 명령어는 Loopup Table 구현에 적합하게 구현되어 있다. 인터럽터 지연은 3싸이클 이다. 하지만, 최근의 PIC 모델에는 3~4 싸이클 인터럽터 지연을 가지기도 한다. RAM에 접근하기 위해 뱅크 스위치해야 한다. PIC은 8비트, 16비트, 32비트 모델이 있다. PIC 모델 8비트: PIC10, PIC12, PIC16, PIC18 16비트: PIC24.. 2018. 6. 24.
MCU에서 일정 개수의 펄스 발생 시키는 방법 별도의 하드웨어 없이 MCU 만으로 고속으로 일정 개수의 펄스를 발생 시키는 것은 생각보다 까다롭고 자료도 많지 않다. MCU의 타이머와 카운터를 이용한 방법은 다음과 같다. 1. 다음 그림과 같이 MCU의 타이머 출력과 카운터 출력 신호를 연결한다. 2. 발생 시킬 펄스 개수를 카운터에 설정하고 카운터가 설정값에 도달하면 인터럽트가 발생하도록 한다. 3. 타이머를 시작한다. 4. 카운터 설정 개수에 도달하면 인터럽트가 발생한다. 5. 인터럽트 루틴에서는 타이머를 중지 시킨다. 이와 같은 방법을 사용할 때 인트럽트 지연 시간(Interrupt Latency)이 타이머의 펄스 폭보다 작아야 한다. 100kpps 펄스를 위해서는 마지막 펄스 발생 후 인트럽트 루틴에서 타이머를 중지시킬 때까지의 시간이 10μ.. 2018. 5. 19.
8051 마이크로프로세서 인텔에서 1980년에 출시한 8051의 정식 명칭은 MCS-51이다. 8051의 스펙은 다음과 같다. Spec 동작 주파수 12MHz (1million 명령어/초, 1 명령어에 12cycle 필요) Internal RAM 0 ~ 0x80 (0 ~ 0x7F는 직접 액세스 가능) Special Function Register 0x80 ~ 0xFF Program RAM 64KB External Data 16 bit bus 8051의 Register는 다음과 같다. Register Description PC Program counter SP Stack pointer (SFR 주소 : 0x80) PSW Program status word (SFR 주소 : 0xD0) A Accumulator (SFR 주소 : 0x.. 2018. 4. 15.
인터럽트 우선순위 네스팅 Nested Interrupt 또는 Interrupt Nesting은 인터럽트 A가 실행 중 우선 순위가 높은 인터럽터 B가 발생하면 인터럽트 B를 실행하고 인터럽트 종료 후 인터럽트 A로 돌아와 실행하는 것이다. CPU 자체에서 Nested Interrupt를 지원해 주는 CPU가 있지만 그렇지 않는 CPU는 소프트웨어로 직접 구현해야 한다. Nested Interrupt를 지원하지 않는 AVR과 같은 CPU의 데이터시트에 나오는 Interrupt Priority는 인터럽트가 동시에 발생했을 때의 우선 순위이다. 인터럽트 실행 중의 우선 순위가 아니다. 2018. 1. 1.
임베디드 시스템 임베디드 시스템(Embedded System)은 특정한 목적을 가진 컴퓨터 시스템을 말한다. 일반 PC는 프로그램을 설치함에 따라 여러가지 용도로 사용할 수 있다. 하지만, 전기밥솥, 에어컨, 냉장고, TV, 자동차, 비행기 등에 들어 있는 컴퓨터는 그 기기 제어를 위한 특정한 용도로만 사용되도록 만들어 졌다. 이러한 임베디드 시스템의 컴퓨터는 대체로 PC에 비해 성능이 낮은 경우가 많다. 간단한 기기에는 8비트에 1KB 메모리를 가진 초소형 컴퓨터가 사용되기도 한다. 임베디드 시스템의 정의에서 중요한 것은 특정한 목적을 가진 컴퓨터라는 것이다. 컴퓨터가 아닌 시스템은 임베디드 시스템이라고 부르지 않는다. 그것은 단지 전자 회로를 가진 전자 시스템이지 임베디드 시스템은 아니다. 계산기도 임베디드 시스템이.. 2016. 3. 27.
아폴로 우주선 컴퓨터 1960년대에 달에 간 아폴로 우주선에는 우주선의 항법과 제어를 위해 컴퓨터를 사용했다. 이 컴퓨터를 AGC(Apollo Guidance Computer)라고 부른다. AGC의 제원은 다음과 같다. Speed : 2.048MHz RAM : 2048 Word ROM : 36,864 Word Power : 55W Weight : 32Kg 현재 사용하는 비슷한 마이크로 프로세서는 AVR ATmega64 정도가 될 것 같다. 차이점은 ATmega64는 AGC에 비해 8배 정도 빠르고 AGC는 16비트 프로세서이지만 ATmega64는 8비트 프로세서이다. 전체적으로 비슷할 것 같다. AGC는 Block I 버전과 업그레이드 된 Block II 버전이 있는데, Block I 버전에서는 3 입력 NOR 게이트 한개가.. 2016. 3. 7.
반응형