본문 바로가기

arm

부트로더의 기본 구현-2 저 자 : 유영창 출판일 : 2003년 12월호 == 이지부트의 디렉토리 구조 이지부트 소스에서 start와 main의 두 프로그램은 상호 유기적인 관계가 있기 때문에 디렉토리를 하나로 작성하고 하부 디렉토리에 따로 관리한다. 하나의 디렉토리 안에 모든 소스를 관리하면 나중에 무척 힘들게 되고 Makefile이나 링크 스크립트 작성이 어렵다. 그래서 Makefile이나 링크 스크립트의 관리적인 측면에서 따로 나누는 것이 유리하다. 우선 이지부트의 하부 `디렉토리 구조를 살펴보자. 이지부트가 존재하는 디렉토리가 ezboot라는 이름을 갖는다고 가정하면 하부 디렉토리의 모습은 다음과 같다. ◆ ezboot/image/ : 최종적으로 생성되는 부트로더 이미지가 들어가는 디렉토리 ◆ ezboot/include/.. 더보기
보드를 살려보자-4 저 자 : 유영창 출판일 : 2003년11월호 == PXA255의 GPIO EZ-X5의 LED는 GPIO 2, 3, 4, 5에 연결돼 있다. 따라서 LED 시험을 하기 위해서는 PXA255의 GPIO에 대해 알아봐야 한다. GPIO(General Purpose Input Output)는 일반적인 용도의 입출력 포트를 의미하며, 구조는 와 같다. 이처럼 복잡한 구조를 갖는 이유는 하나의 입출력 핀에 여러 가지 기능을 부여하기 때문이다. 기본적으로 입력과 출력이 가능하며, 하나의 핀은 GPIO로 사용될 수도 있지만 다른 기능으로도 사용이 가능하다. GPIO의 구조 이 모든 것을 설명하기는 지면 사정상 곤란하므로 시험 코드를 작성하기 위해 필요한 사항에 대해서만 알아보자. 우선 살펴봐야 할 것은 GPIO에 관.. 더보기
보드를 살려보자-3 저 자 : 유영창 출판일 : 2003년11월호 == 타겟 보드 이전 강좌에서도 독자들에게 양해를 구했듯이 실제 사용 가능한 부트로더를 만들려면 타겟이 분명해야 한다. 여러 프로세서를 지원하는 공개된 부트로더들 역시 환경 설정시에 타겟을 설정하게 하는 것이 그 이유이다. 때문에 필자 회사에서 개발한 EZ-X5 보드를 소개할 수밖에 없는 점을 이해해 주기 바란다. 은 이번 연재를 통해 만들어보게 될 ‘이지부트’라는 부트로더가 실장될 타겟 보드(모델명 EZ-X5)의 외관이다. 실장 내용은 다음과 같다. ◆ PXA255 400MHz ◆ 32MB SDRAM ◆ Boot Flash(NOR FLASH ROM 29LV800) ◆ Data Flash(NAND FLASH K9F1208U0A) ◆ Ethernet CS890.. 더보기
보드를 살려보자-2 저 자 : 유영창 출판일 : 2003년11월호 == 크로스 컴파일러와 gcc 소스 패키지 gcc에서 i386 이외의 실행 파일을 만들기 위해서는 리눅스에 이미 설치된 gcc란 컴파일러는 소용이 없다. 몇 가지 옵션만 바꾸어서 gcc를 실행한다고 i386 이외의 프로세서를 지원하는 코드가 생성되는 것은 아니다. 애초에 다른 프로세서에서 동작될 수 있는 실행 파일을 만들 수 있도록 gcc를 만들어야 하는 것이다. 그렇다고 기존에 i386에서 동작하는 gcc를 아예 다른 프로세서에서 동작하는 실행 파일을 만드는 gcc로 바꿔버리면 문제가 된다. 그 뒤로는 i386에서 동작하는 어떤 프로그램도 만들 수 없기 때문이다. 그래서 보통은 gcc의 이름을 조금 바꾼다. arm 계열의 프로세서에서 동작하는 실행 프로그램.. 더보기
S3C2410 카메라 인터페이스 http://cafe.naver.com/robotall.cafe 23. 카메라 인터페이스 개요 카메라 인터페이스에 대해서 설명한다. S3C2440X의 카메라 인터페이스는 3개의 포트로 구성된다. 첫 번째 포트는 카메라 입력 신호를 캐슁하는 로직이다. 2번째 포트는 로직 포맷 을 변환하고 크기를 줄이는 로직이다. 3번째 포트는 DMA 부분 전용으로 쓰인다. 카메라 인터페이스는 ITU BT.601/656 8-bit 모드를 지원한다. 카메라 인터페이스의 스 케일러는 XGA(수평 1016 픽셀까지 업이 가능) 입력 이미지 이하를 SVGA, VGA, QVGA, CIF, QCIF나 그 이하의 사이즈로 줄인다. 2개의 마스터 포트는 DSC, JPEG, MEEG self 이미지 등의 다양한 어플리케이션에 이용된다. 카.. 더보기
S3C2410 IIS http://cafe.naver.com/robotall.cafe 21. IIS-BUS INTERFACE OVERVIEW 현재, 많은 디지털 오디오 시스템들은 compact disc, 디지털 오디오 테이프, 디지털 사운드 프로세서, 그리고 디지털 TV 사운드 형태로 시장에서 고객들을 유혹하고 있다. S3C2410X Inter-IC Sound(IIS) 버스 인터페이스는 CODEC 인터페이스를 미니 디스크와 휴대용 어플리케이션에 쓰이는 외부 8/16 비트 스테레오 오디오 코덱으로 구현되는데 쓰일 수 있다. IIS 버스 인터페이스는 IIS 버스데이터 포멧과 MSB-justified 데이터 포맷 모두를 지원한다. 인터페이스는 인터럽트 대신에 FIFO 엑세스 하는데 쓰이는 DMA transfor 모드를 제공한다. .. 더보기
S3C2410 IIC-BUS INTERFACE2 http://cafe.naver.com/robotall.cafe S3C2410X RISC 마이크로 프로세서는 Multi-master IIC-Bus 시리얼 인터페이스를 지원한다 전용되어지는 한개의 Serial Data Line(SDA)과 한개의 Serial Clock Line(SCL)은 IIC Bus에 연결되어진 버스 마스터들과 주변장치사이에서 데이터(정보)를 이동시킨다. SDA와 SCL은 양방향(bi-direction)라인이다. Mulit Master IIC-Bus에서 Mulitple S3C2410X RISC 마이크로 프로세서는 Slave Device로 Serial Data를 주거나 받을수 있다. S3C2410X RISC 마이크로 프로세서는 IIC-bus를 통한 데이터전송을 개시 할 수 있고, 중지시킬 .. 더보기
S3C2410 프로그래머의 모델 http://cafe.naver.com/robotall.cafe 제2장 프로그래머의 모델 개요 S3C2410X는 Advanced RISC Machines, Ltd에서 개발한 성능이 향상된 ARM920T 코어를 내장하고 있다. 프로세서 동작 상태 프로그래머의 관점에서 보면, ARM920T는 아래와 같은 2가지 상태 중 하나에 있게 된다: ☞ 32-bit, word-단위의 ARM 명령어를 실행할 수 있는 ARM 상태. ☞ 16-bit, halfword-단위의 THUMB 명령어를 실행할 수 있는 THUMB 상태. 이 상태에서, PC 는 halfword 단위를 변경 및 선택하는데 bit 1을 이용한다. 주의할 점 이러한 2가지 상태의 상호변경은 프로세서의 모드나 레지스터의 내용에 영향을 미치지는 않는다. 상태의.. 더보기
S3C2410 개요 제1장 개요 소개 이 문서는 16/32-bit 마이크로프로세서인 삼성 S3C2410X에 대한 매뉴얼이다. 이 제품은 소형 사이즈이면서, 저가격, 저전력, 고성능의 마이크로컨트롤러로써, 휴대형 장치와 범용 기기에 탑재되도록 설계되었다. 시스템 제작 비용을 줄이기 위해서, S3C2410X는 각각 분리된 16KB의 명령어 캐쉬, 16KB의 데이터 캐쉬, 가상의 메모리 관리 유닛을 핸들링하는 MMU, LCD 컨트롤러(STN & TFT), NAND 플래쉬 부트 로더, 시스템 관리자(칩 선택 로직과 SDRAM 컨트롤러), 3채널의 UART, 4채널의 DMA, 4채널의 PWM 타이머, I/O 포트, RTC, 8채널의 10-bit ADC와 터치 스크린 인터페이스, IIC-BUS 인터페이스, IIS-BUS 인터페이스, .. 더보기
ARM7 강좌 [14] : Instruction Set(8) (출처 : 디지털 동호회) 2007/10/19 - [임베디드/ARM] - ARM7 강좌 [13] : Instruction Set(7) (출처 : 디지털 동호회) ---------------------------------------------------------------------- ARM7 강좌 [14] : Instruction Set(8) ---------------------------------------------------------------------- 오늘 다룰 명령은 SWP와 SWI두가지 입니다. Co - Process 명령을 제외하면 이 명령이 마지막이겠군요... 코프로세서는 다루지 않을 생각이니... 참 홀 가분한 느낌입니다. 1. Single Data Swap : {cond}{B} Rd,Rm,[Rn] 레.. 더보기
ARM7 강좌 [9] : Instruction Set(3) (출처 : 디지털 동호회) ---------------------------------------------------------------------- ARM7 강좌 [9] : Instruction Set(3) ---------------------------------------------------------------------- 지난번 강좌를 쓰고나서 이것 저것 생각을 해봤는데, 내용이 좀 어렵지 않 았나 싶네요. 인스터럭션의 코드를 가지고 접근하는 방식은 디지털쪽의 기 초지식과 어셈블리에 대한 보편적인 지식을 갖고 접근하는 방법이어서, 혹 그런 기본지식이 없으신 분들에게는 딱딱하고 어렵게 느껴졌을지도 모른다 는 생각을 혼자(?) 했습니다. 강좌에대한 피드백이 없어서... 쩝... 그냥 나름대로 생각하고 쓰고 있는 데요... 더보기
ARM7 강좌 [7] : Instruction Set(1) (출처 : 디지털 동호회) ---------------------------------------------------------------------- ARM7 강좌 [7] : Instruction Set(1) ---------------------------------------------------------------------- * ARM7 인스터럭션의 특징 AMR7은 32 Bit 코어입니다. 특징적인 것은 모든 명령어가 32Bit 하나의 Word로 구성된다는 것입니다. 8086의 경우엔 명령어에 따라 1바이트 명령 부터 5바이트 까지 있나요? 그런데, ARM7은 모든 명령어를 한 워드로 처 리 합니다. 일단은 명령어의 개수가 몇 안되고, 주소는 상대주소 방식을 사용하며, 심지어는 Immediate 상수값도 32비트 값은.. 더보기
ARM7 강좌 [6] : Exception(2) (출처 : 디지털 동호회) ---------------------------------------------------------------------- ARM7 강좌 [6] : Exception(2) ---------------------------------------------------------------------- * Exception Overview Exception을 처음부터 완전히 이해 할 필요가 있다고는 생각하지 않습니 다. 대부분의 것들이 그러하듯 우선은 이런게 뭐다 라고 파악만 하고 있 다면, 정작 필요할 경우에 다시 자세히 살펴보아도 좋을 것입니다. 그런 취지에서 Exception을 바라본다면, ARM 7 에는 여섯가지의 CPU 동작 모드를 지원한다는 사실과, 차후 MMU 같은것에도 그 동작모드가 관여한다.. 더보기
ARM7 강좌 [5] : Exception(1) (출처 : 디지털 동호회) 출처 : 디지털 동호회 ---------------------------------------------------------------------- ARM7 강좌 [5] : Exception(1) ---------------------------------------------------------------------- * Exception 우선 Exception이 무엇을 말하는지부터 정리해 보고자 합니다. 일반적으 는 인터럽트와 유사한 개념으로 사용합니다. 어떻게 보면 인터럽트 보다 는 조금 큰 개념이랄 수도 있고, 정확한 정의에 대해서는 말씀을 드리지 못하겠군요. 개념을 ARM7에서의 Exception으로 한정해서 말씀드리겠습니 다. 구체적으로 ARM7에는 FIQ(Fast Interrupt reQ.. 더보기
ARM7 강좌 [4] : 레지스터 (출처 : 디지털 동호회) 출처 : 디지털 동호회 ---------------------------------------------------------------------- ARM7 강좌 [4] : 레지스터 ---------------------------------------------------------------------- * ARM7의 레지스터 지난 강좌에서 ARM7에는 31개의 General Purpose 레지스터와 6개의Status 레지스터가 있다고 말씀드렸습니다. 물론 모두 32비트 레지스터 입니다. 그런데 ARM7의 어셈블러에서 사용하는 범용 레지스터 키워드는 r0 에서 r15 까지 16개 밖에는 되지 않습니다. 즉, 다시 말해서 사용자가 한번에 사용할 수 있는 레지스터는 16개 입니다. 그중에 몇개는 프로그.. 더보기