전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과
Study Plan 기간 장소 내용 목표 준비물 - 7/2 – 7/20 - 동서의료 공학과 실험실(207) - C language - Orcad(Schematic) - TMS320LF2407A 목표 준비물 2007 Summer Seminar
Contents C language Introduction to DSP - History - Characteristics - Structure - Compile & Execute - Basic functions - Example Introduction to DSP 2007 Summer Seminar
C language: Why? 2007 Summer Seminar
C language: History A language B language C language - UNIX: Assembly - 기계 의존적 -> 호환성 대두 B language - Ken Thompson에 의해서 개발 C language - B language를 기초로 하여 개발 - 1972, Dennis Ritchie에 의해서 개발(Bell Institute, USA) - DEC 사의 PDP-11 컴퓨터에서 구현된 다중 프로그래밍 언어 - 가장 많이 사용됨 - 활용: 운영체제 개발, 게임, 그래픽, 영상처리, 애니메이션 개발 등 2007 Summer Seminar
C language: Characteristics High- or middle level language 시스템 프로그래밍이 가능 구조적 프로그래밍이 가능하고 모듈화된 설계 가능, 유지 보수 용이 소문자를 기본으로 하는 자유 형식 많은 자료 형과 다양한 연산자. Portability Pointer Preprocessor로 인해서 효율적인 프로그래밍이 가능 입출력 기능이 없어서, library function을 통해서 이루어짐 고급 언어와 어셈블리 언어의 장점만을 가진 중간 수준의 언어 반드시 하나 이상의 함수가 있어야 함, 재귀적 호출 가능 단순하고 예약어가 적기 때문에 배우기 쉽다. 2007 Summer Seminar
C language: Structure(1) 파일 포함(header file) 매크로 정의 사용자 정의 함수 선언 main() { 내부 변수 선언; 명령문 기술; } 함수명(가인수 리스트, …) 가인수 선언; 머리부(Header) 몸체부(Body) 사용자 정의 함수부 2007 Summer Seminar
C language: Structure(2) #include <stdio.h> #define PI 3.1415926 int add(int a, int b); main() { int a, b, sum; a = 2; b = 3; sum = 0; sum = add(a, b); printf(“%d\n”, sum); } int add(int a, int b) return a+b; 머리부(Header) 몸체부(Body) 사용자 정의 함수부 2007 Summer Seminar
C language: Compile & Execute Compiler? - 간단하게 말하면 해독기 - 기계가 이해할 수 있는 언어로 바꿔 주는 도구 Preprocessor? - 프로그래머와 컴파일러 사이에서 매개 역할을 수행 - C 프로그램을 컴파일 하기 전에 프로그래머가 작성한 원시 프로그램에 특정하게 정의된 각종 내용을 삽입시키는 기능을 하는 처리기 - #define, #include, #undef, … Assembler? - 엄격하게 말하면 어셈블리어를 기계어로 바꿔주는 해독기 2007 Summer Seminar
C language: Compile & Execute 프로그램 작성 단계 결과 확인 실행(execution) 파일 생성(*.exe) 링커(linker) 어셈블러(assembler) C 컴파일러(C compiler) C 선행 처리기(C preprocessor) 원시 프로그램의 편집(editor) C 원시 코드 작성(*.c, *.cpp) 및 저장 확장 된 C 원시 코드 프로그램 컴파일 단계 어셈블리 언어 코드 목적 코드(object code) 생성(*.obj) 프로그램 실행 단계 2007 Summer Seminar
C language: Basic functions 표준 입출력 함수 - printf(), scanf(), getchar(), … 제어문 - if~else, switch~case, case, for, while, do~while 배열 포인터 구조체와 공용체 라이브러리 함수 - strlen(), strcpy(), malloc(), … 파일 입출력 함수 - fopen(), fclose(), … 2007 Summer Seminar
C language: Firmware? Firmware? - 롬에 기록 된 하드웨어를 제어하는 마이크로 프로그램들의 집합 2007 Summer Seminar
C language: Our goal & Tips - 하드웨어에 대한 이해(구조, 동작) - 주어진 목표에 맞는 specific한 프로그램 작성 - 주어진 하드웨어를 최대한으로 활용하는 것 Tips - 시스템은 항상 동작 중 -> while(1) {}을 사용 - 하드웨어적으로 생각하는 것이 성능 향상 - 작성 전에 미리 그림을 그릴 것 2007 Summer Seminar
C language: Structure 파일 포함(header file) 매크로 정의 사용자 정의 함수 선언 main() { 내부 변수 선언; 하드웨어 구성 제어; 명령문 기술; } 함수명(가인수 리스트, …) 가인수 선언; 머리부(Header) 몸체부(Body) 사용자 정의 함수부 2007 Summer Seminar
C language: Example #include “F2407_C.H” #define TIME 10000 void Delay(int time) { int i; for(i=1;i<time;i++); } void main(void) while(1) *PCDATDIR = 0xFF; Delay(TIME); *PCDATDIR = 0x00; Delay(TIME); 2007 Summer Seminar
C language: Example void main(void) { /*** Configure the System Control and Status registers ***/ *SCSR1 = 0x0001; *SCSR2 = (*SCSR2 | 0x000B) & 0x000F; /*** Configure All IO pins as outputs ; check the program ***/ *PADATDIR = 0xFF00; *PBDATDIR = 0xFF00; *PCDATDIR = 0xFF00; *PDDATDIR = 0x0100; *PEDATDIR = 0xFF00; *PFDATDIR = 0xFF00; … 2007 Summer Seminar
Introduction to DSP(활용분야) 범용 마이크로 프로세서(Microprocessor) - Intel Pentium - OS(Operating System)가 필요 - 실시간 제어용으로는 부적합 마이크로 컨트롤러(Microcontroller) - 주로 기기의 제어 용도로 사용되는 프로세서 - A/D 변환기, PWM 발생기, 타이머 등을 내장하고 있는 경우가 많음 - 하드웨어 단계에서 개발자가 접근이 용이, 외부 장치의 부착이 용이 - 가전기기의 제어, 의료 기기의 제어 DSP(Digital Signal Processor) - 빠른 연산 속도 - 신호처리나 고속 연산에 유리하도록 특별히 제작한 프로세서 2007 Summer Seminar
Introduction to DSP(명령어 구조) CISC(Complex Instruction Set Computer) - 어떤 필요한 기능이 있을 때 그 기능을 수행하기 위한 명령어가 프로세서에 지속적으로 추가 - 복잡하고 명령어가 많음 - 짧은 프로그램 코드 - 프로세서 설계가 복잡함 - 기존의 일반적인 프로세서의 구조 RISC(Reduced Instruction Set Computer) - 개발자들이 주로 사용하는 명령어가 국한되어 있음 - 자주 쓰이는 간단한 명령어들만 남겨두고, 대신 이러한 명령어들이 보다 빨리 수행될 수 있도록 프로세서를 설계 2007 Summer Seminar
Introduction to DSP(응용) 제어분야 - 모터 제어, 미사일 자세 제어 등 신호 처리 분야 - 능동 소음 제어, 디지털 필터링 등 멀티미디어 분야 - HDTV, MP3P 등 통신 분야 - ADSL 모뎀, 광통신 등 기타 분야 - 배터리 충전기, LCD 모니터 등 2007 Summer Seminar
Introduction to DSP(응용) 2007 Summer Seminar
Introduction to DSP(기초 지식) 주소 표현 - 이진수 표현: 숫자 뒤에 ‘b’ ex) 10b - 16진수 표현: 숫자 뒤에 ‘h’ ex) 1234h 비트, 바이트, 워드 - 비트: 한 자리에 해당 하는 단위, 0 또는 1 ‘b’ - 바이트: 8비트를 한 묶음 ‘B’ - 워드: 16bits -> 16 bits, 32 bits -> 32bits, 주의 2007 Summer Seminar
Introduction to DSP(기초 지식) ROM(Read Only Memory) - 전원이 끊어져도 기록된 정보가 없어지지 않는 비휘발성 기억장치 RAM(Random Access Memory) - 정보를 기록, 읽어내는 것이 가능 - 장점: 염가, 소형, 낮은 소비 전력, 고속 동작 - 단점: 전원이 나가면 기억되어 있던 모든 데이터가 지워짐 - DRAM(Dynamic RAM): 주기적으로 refresh - SRAM(Static RAM): 전원만 연결되면 OK, 집적용이 Flash ROM - 썼다 지웠다 하는 것이 가능 - Mask Programmable ROM, PROM, EPROM, EEPROM 2007 Summer Seminar