본문 바로가기

임베디드

임베디드시스템의자바가속기술 임베디드시스템의자바가속기술 더보기
고분해능 ADC성능을 높이는 노하우 출처 : Texas Instrument Korea 고분해능 ADC 성능을 높이는 노하우 로버트 슈레이버(Robert Schreiber) 텍사스인스트루먼트 ADC(아날로그 디지털 컨버터)에서 최대한 성능을 끌어낼 수 있는 방법이 있을까? 디자인과 보드 레이아웃을 잘하는 것 이외에도 성능을 향상시킬 수 있는 기술이 있다. 이런 기술을 위해서는 ADC 오차의 원인 및 타입을 이해할 필요가 있다. 몇 가지 기술을 이용해 ADC의 성능을 스펙 이상으로 끌어올릴 수 있다. 이 기사를 통해 ADC의 일반적인 오차 원인을 설명하고 이런 오류를 보정하기 위한 방법을 찾아보자. 어떤 오차 보정 방법은 이해하기도, 구현하기도 쉽지만 그렇지 않은 것도 있다. 이를 적절히 활용한다면 전체 시스템 성능을 향상시킬 수 있다. 이상.. 더보기
AVR 보레이트 설정 프로그램 더보기
ADC 변환시 고려해야할 중요한 사항 출처 : http://cafe.naver.com/carroty 이번에 LM35Z를 이용한 온도 변화를 감지하는 회로를 구성하게 될텐데, LM35DZ가 온도 변화를 아날로그로 출력합니다. 따라서 이를 디지털로 변환하기 위해서는 ADC가 필요한데, 비록 128에 ADC가 있기는 합니다만, ADC를 일부러 구현해 보려고 합니다. LM35를 ADC가 없는 PIC에 장착하려면 장착할수가 없잖아여. 당근이가 고려하는 ADC로는 온도 변화에 따른 정밀한 ADC가 필요합니다. 그런데 온도 변화는 영상처리와 같은 고속 샘플링이 불필요하므로 (초당 온도가 몇도씩 변하는 경우는 거의 없으니까요) 약간의 정밀도만 유지하면 됩니다. 8 bit로도 왠지 충분할듯 합니다. 이제 ADC 선택시 무엇이 중요한 문제인지에 대해서 좀 고.. 더보기
임베디드 개발자 입문-5 임베디드 개발자 입문-5 저 자 : 박철 출판일 : 2004년 1월호 무엇을 준비해야 할까? 앞서 살펴봤던 것과 같이 우리가 이제껏 알고 있던 그리고 흔히 접해왔던 일반적인 컴퓨터 기반의 하드웨어, 소프트웨어 개발과는 달리 임베디드 시스템의 경우엔 그 개발 환경 구축부터 개발에 이르기까지 여러 가지 상이한 점들이 존재하기 때문에 처음 이를 접하는 개발자들은 다소 혼란스럽고 적응에 실패하기도 한다. 그러나 임베디드 시스템 역시 CPU(프로세서)와 메모리로 되어 있는(어느 특정 목적을 위해 개발된) 조그만 컴퓨터라 생각하고 개발에 임한다면 그리 어렵지만은 않을 거라고 필자는 확신한다. 즉, 임베디드 시스템 개발시 다음의 기본 기술 요소들만 확실하게 닦아 놓는다면 나름대로 쉽게 적응할 수 있지 않을까 싶다. .. 더보기
부트로더의 기본 구현 1 저 자 : 유영창 출판일 : 2003년 12월호 부트로더의 주 임무는 커널이 동작할 수 있는 환경을 구성하고 커널을 시작하는 것이다. 정의는 간단하지만 프로세서를 정상적으로 동작시켜야 하기 때문에 그리 만만한 일이 아니다. PXA255 프로세서에서 동작하는 이지부트 프로그램은 두 부분으로 나눠져 있다. 최소한의 환경 설정을 하는 start 프로그램 부분이 있으며, 커널이 부팅하도록 지원하고 개발의 편리함을 제공하는 main 프로그램이 있다. start 프로그램은 모두 ARM 어셈블러로 구성돼 있고 스택이 없기 때문에 다중 호출도 하지 못하는 가장 열악한 환경의 프로그램이다. 이번 호에는 이지부트의 시작점인 start.S를 집중적으로 살펴보고자 한다. 연+재+순+서 1회 2003.10 | 임베디드 프로그래.. 더보기
보드를 살려보자-6 저 자 : 유영창 출판일 : 2003년11월호 == Makefile 리눅스에서 동작하는 gcc는 기본적으로 make 유틸리티를 사용하여 컴파일한다. RAD 툴을 사용하던 프로그래머라면 이 make 유틸리티가 다소 어렵게 느껴질지 모르지만 리눅스 프로그래머거나 기존 펌웨어 프로그래머라면 항상 접하는 유틸리티이다. 리눅스에서 사용되는 make 유틸리티는 매우 유용한 도구이고 개념만 익히고 나면 쉽다는 것을 알 수 있다. make 유틸리티는 기본적으로 Makefile이라는 이름을 갖는 파일을 필요로 한다. 이 Makefile이 바로 컴파일에 관련된 모든 조건을 기록해 놓는 파일이다. 보통 이 Makefile은 구성이 비슷하기 때문에 한번 자신만의 구성을 만들면 이후에 조금씩 수정해서 쓰면 된다. make에 관.. 더보기
보드를 살려보자-5 저 자 : 유영창 출판일 : 2003년11월호 == start.S 어셈블러 에서 가장 먼저 보이는 것은 (1)인데, 이렇게 선언되면 이후 코드의 어드레스 영역이나 기타 조건은 링커 스크립트에 선언된 .text라는 선언에 영향을 받는다. 일반적으로는 프로그램 코드 영역을 의미한다. 하드웨어 리셋이 발생하면 ARM은 0x00000000번지의 명령을 수행한다. 이 번지는 링커 스크립트에 의해서 _start 라벨에 맵핑된다. 좀더 정확히 말하면 링커 스크립트에서 .text에 대해 0x00000000번지에 할당되어 있기 때문이고 _start 라벨이 가장 먼저 기술되었기 때문이다. 이 _start가 0x00000000번지이기 때문에 이 라벨 이후에 인터럽트 벡터 테이블이 들어간다. 그래서 각 벡터 테이블이 수행할 .. 더보기
ARM 부트로더 제작기 보드를 살려보자-1 저 자 : 유영창 출판일 : 2003년11월호 임베디드 시스템에서 하드웨어 설계가 끝나고 제작 후 샘플 보드가 나왔을 때 가장 먼저 하는 것이 보드에 대한 검증이다. 필자가 다니는 회사에서는 이것을 ‘보드 살리기’라는 말로 표현한다. 이 보드 살리기는 운이 좋으면 바로, 운이 나쁘면 언제 끝날지 모르는 피 말리는 시간이 필요하다. 이런 현상이 발생하는 이유는 문제의 원인이 하나가 아니고 여러 가지가 혼재하기 때문이다. 어떤 문제를 해결하는 가장 빠른 방법은 문제의 종류를 구분하는 것이다. 그런데 이 경우에는 이 자체도 매우 어렵다는 것이다. 하드웨어 문제인가? 소프트웨어 문제인가? 때문에 보드 살리기에 필요한 과정을 살펴보고 부트로더와의 관계를 살펴보자. 연+재+순+서 1회 2003.10 | 임베디드 프.. 더보기
임베디드 프로그래머와 부트로더-5 저 자 : 유영창 출판일 : 2003년 10월호 == ARM 프로세서 PXA255는 앞서 언급했듯 ARM 계열이다. 삼성이나 다른 회사에서 만든 프로세서가 ARM 코어를 라이선스한 것과는 다르게 아예 설계 자체를 사서 인텔 자사의 기술을 더한 프로세서이다. 그러나 결국은 이것도 개발자 입장에서 보면 ARM의 한 계열로 봐도 무방하다. 이 프로세서를 이해하면 ARM 코어를 사용하는 다른 프로세서들도 어느 정도 이해가 가능하다 그렇다면 ARM이란 것은 어떤 것일까? 아무래도 이 연재가 ARM용 부트로더를 작성하기 위한 것이므로 ARM 프로세서에 대해 모르고 갈 수는 없다. 그래서 ARM에 대해 잠깐 살펴보자. 우리가 알고 있는 펜티엄은 인텔에서 제작하고 있는 프로세서이다. 하지만 ARM에서 만든 ARM 프로.. 더보기
임베디드 프로그래머와 부트로더-4 저 자 : 유영창 출판일 : 2003년 10월호 == 상태 표시·메시지 표출·명령 입력 및 처리 기능 보드를 시험하는 과정에서 진행된 위치나 상태를 알려주는 기능은 거의 필수적이다. 예전에 동료 한 사람이 펌웨어 프로그램에 자칭 청진기 기능이라고 하는 메모리나 기타 상태를 보여 주는 기능을 항상 넣어 놓고 프로그램을 디버그했다. 당시에는 에뮬레이터가 일반화되어 있지 않기 때문에 이런 기능을 넣어야 했다. 지금도 상황에 따라 이런 기능을 넣어야 프로그램 디버깅이 편하다. 초기에 시리얼 디바이스 초기화가 힘든 상태에서는 LED를 점멸시키거나 LED를 이용해 진행 표시를 한다. 이후 시리얼 디바이스가 초기화되면 시리얼 디바이스를 이용해 프로그램 상태나 기타 메시지를 표출한다. 또한 특정한 문자열을 입력받은 후.. 더보기
임베디드 프로그래머와 부트로더-3 저 자 : 유영창 출판일 : 2003년 10월호 == 리눅스 커널의 구동 환경 앞서 잠깐 언급했지만 임베디드 시스템에서 리눅스 커널이 원활하게 동작하기 위한 최소 조건이 있다고 했다. 물론 절대적인 것은 아니지만 필자의 현장 경험상 다음과 같은 조건은 충족돼야 한다. ◆ 32비트 프로세서 ◆ 8MB 램(일반적으로 SDRAM을 사용한다) ◆ 8MB 롬(일반적으로 플래시를 사용한다) ◆ 시리얼 포트 1개 이 정도 사양만 있어도 리눅스 커널이 동작한다. 더 이하 사양의 시스템에 리눅스 커널을 올려 동작시킬 수도 있지만 응용 프로그램이 조금만 커져도 문제가 발생하고 프로그램 작성시 상당한 주의를 요한다. 여기에 한 가지 더 조건을 붙인다면 MMU(Memory Management Unit) 즉 메모리 관리 장치의.. 더보기
임베디드 프로그래머와 부트로더-2 저 자 : 유영창 출판일 : 2003년 10월호 == 임베디드 시스템 개발자의 고민 필자가 다니는 회사의 한 개발자는 처음 배운 프로세서가 32비트 원칩 프로세서이다. 특정한 장비 개발 건으로 8비트 원칩을 다룰 일이 생겼는데 프로세서 매뉴얼을 보더니만 씨익 웃고서 “정말 간단한 구조를 가졌네요” 하는 것이다. 필자는 조금 놀랐다. 왜냐하면 예전에 8비트 원칩을 보고 매우 복잡하다는 생각을 많이 했기 때문이었다. 물론 이전에는 Z-80이나 6502 같은 좀더 단순한 프로세서만 보다가 8비트 원칩을 보았기 때문이기도 하다. 문제는 필자와 같이 기존 8비트 원칩 프로세서를 다루던 개발자들이 32비트 원칩 프로세서를 보면 매우 복잡해 보인다는 것이다. 8비트 원칩 프로세서가 다루던 4MHz와는 차원이 다르게 .. 더보기
임베디드 프로그래머와 부트로더-1 임베디드 프로그래머와 부트로더-1 저 자 : 유영창 출판일 : 2003년 10월호 필자는 이 세상에 PC라는 시스템이 나오기 전에는 임베디드 시스템이라는 구별이 따로 없었던 것으로 기억한다. 또 한 가지 ‘펌웨어’라는 단어도 별로 사용하지 않았다. 그러다가 PC가 나온 후 어느 정도 시간이 지나면서 임베디드 시스템이라는 말이 사용되기 시작했고 또한 펌웨어라는 단어를 접하게 되었다. 임베디드(embedded)를 인터넷의 야후 사전에서 찾아보면 이렇게 나온다. embed[imbd, em-] vt. (-ded; -ding) [1] 깊숙이 박다, 파묻다 [2] (마음 속 등에) 깊이 간직하다((in)) [3]【언어수학】 끼워 넣다 임베디드 시스템을 통상적으로는 내장 시스템이라고 말한다. 하지만 필자는 PC 이외.. 더보기
ARM 코어 프로세서는 뭔가...?? [ARM 의 정의] ARM은 Advanced RISC Machine 의 약자다. 말그대로, 임베디드시스템에 들어가는 저전력, 고성능의 기기다. 여기에는 고성능의 RISC(Reduce Instruction Set Computer)가 들어간다. 아주 많은 기업체들이 이를 지원하고 있다. ARM Architecture - ARMv5TE, ARMv5TEJ, ARMv6 ARM Microarchitecture - ARM9, ARM10 코어 ARM Mictoprocessor - 사용하고자 하는 용도에 맞게 ARM Microarchitecture 기반 칩이다. 참고 - 이름중 T는 16bit thumb 명령 지원 [ARM의 특징] 가장... 좋은 점은 전력소모가 적다. ARM7의 경우 내부 32bit 데이터 버스/어드.. 더보기