반응형

HW 기초 27

hw일반 / os 드라이버기초사항 / nand 읽는 방법

맨날 헷갈려서 정리함;;; 위는 지금 현재 작업중인 nand의 데이터 시트이다. nand 관련 드라이버를 작성하기 위해서는 가장 기본적인 것이 nand의 spec 을 정확히 이해하고 그에 맞게 드라이버를 포팅하는 것이다. 일단, 거의 모든 드라이버(wince / mobile / linux) 는 nand의 초기화 부분에서 nand의 id를 읽어서 그에 맞는 정보를 세팅을 하게된다. 이때.. 현재 갖고있는 드라이버가 지금 작업하려는 nand를 완벽히 지원하지 않는다면, 최대한 비슷한 설정을 갖고오는것이 편할것이다. Page 의 크기 Page 의 크기는 일반 데이터 영역과 oob 영역으로 나뉜다. (oob 영역의 경우 여러가지 쓰임새가 있는데... 이것은 나중에 다시 스터디 하도록한다..) 현재 데이터 시트에..

HW 기초 2011.08.22

AVR / 기초개념 / 와치독 개념

ATmega128의 와치독 워치독 타이머는 타임아웃 되기전에 소프트웨어 명령으로 그 값을 클리어 시켜주지 않으면 MCU를 리셋 시킴으로써 시스템이 정상적으로 동작하고 있는지를 감시하는 마이크로 프로세서의 신뢰성 향상기술이다,. ATmega128에서는 내부에서 독립적으로 만들어지는 1Mhz의 오실레이터에서 클럭을 받아 동작하며 사용자가 이를 분주하여 8가지로 클럭주기를 변경시킬수있다. DRCR(Watchdog Timer Control Register) 레지스터 각 레지스터의 주소값을 외울 필요는 없다. 각 컴파일러가 갖고있는 iomap 헤더 파일안에는 해당 레지스터의 이름에 대해 메모리 맵핑이 되어있다. gcc컴파일러 안에있는 iom128.h의 내용 /* Watchdog Timer Control Regis..

HW 기초 2010.12.02

ARM / 기본개념 / ARM의 이해 (어셈명령어 포함)

출처 : 구글링/ 여기저기 원본출처 불분명;; (인터넷에 워낙많이 돌아당겨서 출처 불분명) 기타사항 : 인터넷에 널리 떠도는 자룔르 보기좋게 편집한것입니다. 참고하세요 ARM Processor ARM7 강좌 [1] : 강좌 소개 강좌 소개 RISC칩 중에 가장 널리 사용되고 있는 것의 하나인 ARM7에 대하여 다루어 보려고 합니다. 부족한 점이 많겠지만, 이 강좌를 통해 ARM7을 공부하시는 분들에게 조금이나마 도움이 되었으면 하고, 아울러 저 역시 어떤 보람을 얻을 수 있었으면 합니다. 강좌에서 다루고자 하는 내용들 개요 구조 레지스터 Exception(1) Exception(2) Instruction Set(1) Instruction Set(2) Instruction Set(3) StrongARM 사..

HW 기초 2010.12.02

ARM / 기본개념 / ARM의 메모리구조

기타사항 : 퍼온자료를 보기좋게 수정, 출처는 위의 주소.. ARM의 MMU 임베디드 프로세서도 요즈음은 동시에 많은 양의 프로그램을 동시에 수행하게 된다. 물론 단일 프로세서가 한번에 하나의 프로그램을 수행하지만 RTOS와 같은 환경에서는 응용프로그램의 개발자가 시스템에 있는 메모리 전부를 다룰 수 있도록 되어 있다. 이러한 일련의 작업들을 지원하기 위해서는 별도의 하드웨어가 필요한 데 이를 위해서 MMU(Memory Management Unit)라는 개념을 도입하였다. ARM7TDMI에는 없지만 ARM을 사용하면서 MMU를 모르고 사용한다면 절름발이 ARM을 쓰는 것이다. 물론 자료도 많지 않아서 관련된 자료를 읽어보아도 다소 설명이 어려운 것은 사실이다. 그러나 다시 한번 산을 넘어보자. 이번에는 ..

HW 기초 2010.09.09

AVR / 예제소스 / EEPROM 기본개념

기타사항 : winAVR기준 / 틀린사항이나 오류발생시 댓글 부탁드립니다. eeprom? 대부분의 경우 eeprom에는 파라미터 같은 정보 (껐다 켜지더라도 계속 유지되어야 하는값과 비슷한것들..)을 넣는 역할을 하게된다. 이때는 내부 Flash Rom 과는 약간 다른역할을 하는듯하다. 추후 스터디하여 새로포스팅예정..;;; 기본적으로 read 함수구현 int8_t read_eeprom(u16 adr) { return (int8_t)eeprom_read_byte ((const uint8_t *)adr); } AVR의 경우 메모리맵 IO로 되어있다. 즉 EEPROM은 메모리의 어딘가에 할당이 되어있으며 해당 메모리 주소를 바로 접근하는 방식으로 EEPROM에 접근가능하다. eeprom_read_byte()..

HW 기초 2010.01.14

AVR / 기본개념 / SPI 기초, 예제코딩

기타사항 : ATmega128 에서 테스트완료 spi 개요. SPI는 serial peripheral interface의 약자로서 한마디로 말해서 주변 IC와 통신하기 위한 직렬통신장치입니다. 친절하게 해석해드리면 '시리얼 방식의 주변 장치 인터페이스' 정도 된다. 특히나 MCU의 GPIO 포트가 모자르거나, 데이터를 주고받는 프로토콜에 신경 쓰기 귀찮아하는 사람에게 딱좋은 방식입니다. 가장 많이 쓰는것들은.. PLL IC나 AUDIO관련 IC등을 제어하기 위한 장치죠. 보통 CLOCK,DATA,STOBE 이렇게 3단자또는 DATA IN,OUT 을 구분하여 4단자로 구성되어 있습니다. 물론 일반 PORT를 이용해 전송할수도 있지만 전용 SPI단자의 경우는 속도가 빠르고 간편하게 사용할수 있습니다. 때로는..

HW 기초 2010.01.11

C / AVR / sprintf 의 기본적인 코딩예제

기타사항 : ATmega128 / winAVR 테스트완료 sprintf 만들기 임베디드 환경에서의 printf 구현이 쉽지는 않다. 아래와 같은 코딩으로 불편하나마 printf()를 대체하여 쓸수가 있다. C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현 이다. va_start() 나 va_end() 함수를 사용하여 구현할 수도 있지만, 이것도 stack의 동작을 숨기고 있어서 좀더 low level 로 구현하고자 한다. 스텍이나 메모리 상황이 안좋거나.. 타겟쪽에 라이브러리를 올리지 못하는 상황이라면 아래와같이 코딩하여 사용할수있을것이다.(컴파일이 된다면..) 소스원작자는 32bit ARM에서 target에 printf()관련 라이브러리를 통째로 올릴수없어서 코딩하였다고 한다. 예제코드… ..

HW 기초 2009.12.26

[AVR] printf 구현하기 : 예제

출처 : 이전에 짰던 소스 기초적인 캐릭터 단위 함수구현 winavr 기준 / ATmega128 void putchar_(u08 device,u08 data) { if(data != '\n') { if(device == 0) { uart0_send(data); } else { uart1_send(data); } } else if(data == '\n') { if(device == 0) { uart0_send(0x0d); uart0_send(0x0a); } else { uart1_send(0x0d); uart1_send(0x0a); } // if new line } } 기초적인 캐릭터 스트링 함수구현 winavr 기준 / ATmega128 void puts_(u08 device,u08* str) { whi..

HW 기초 2009.12.26

ARM > 기본개념 > MMU 와 MPU 차이

마크다운변환 : 20190905 출처 : http://cafe.naver.com/elp/134 해당 게시물을 보기좋게 편집하였습니다. MMU 와 MPU 차이 MMU 와 MPU | 소프트웨어 강좌 (2004.04.29 12:20 ) | cslee03 MMU와 MPU의 차이점에 대해서 궁금해 하시는 분들이 계신것 같아 몇자 적어 봅니다. 일단 MMU(Memory Management Unit)과 MPU(Memory Protection Unit)은 Memory를 관리한다는 점에서 비슷하기는 하지만, MMU와 MPU는 다른 것이라 볼 수 있읍니다. 정확하게 얘기하자면 MMU는 MPU 기능외에 복잡한 기능을 가지고 있다고 보시면 됩니다. 일단 MMU및 MPU에 대한 H/W적인 정보를 원하신다면 www.arm.com..

HW 기초 2008.12.27
반응형