1 / 19

Porting US/OC-II On ATmega128

References : Embedded Recipes 출 )Corner Book 저 ) 히언 - MicroC /OS-II 실시간 커널 출 ) 에어컨 저 ) JEAN J. LABROSSE - 당근이의 AVR 갖구 놀기 http://cafe.naver.com/carroty/40171 Embedded Systems 에의 RTOS 포팅 Intel 계열로의 포팅 실제 (x86 Core) 삼성 소프트웨어 멤버쉽 Digital System Design Lab 김종수.

anson
Download Presentation

Porting US/OC-II On ATmega128

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. References: • Embedded Recipes 출)Corner Book 저)히언 • -MicroC/OS-II 실시간 커널 출) 에어컨 저) JEAN J. LABROSSE • -당근이의 AVR 갖구 놀기 http://cafe.naver.com/carroty/40171 • Embedded Systems에의 RTOS포팅Intel 계열로의 포팅 실제 (x86 Core) • 삼성 소프트웨어 멤버쉽Digital System Design Lab 김종수 Porting US/OC-II On ATmega128 2010. 9. 7 조 승훈

  2. What is Porting?

  3. What is Porting • Porting의 광의 • 한시스템에서 구현되고 있는 기능을 다른 환경의 시스템에서도 같은 기능을 수행하도록 조정해 주는 작업 • Ex) 집에서의 밥짓기와 야외에서 밥짓기의 차이 • Porting의 협의 • 한 시스템에서 사용되는 프로그램을 다른 시스템에서도 사용 할 수 있도록 시스템에 의존적인 코드만을 바꾸는 작업 • Ex) 8051의 LED 제어 프로그램을 ATmega128에 이식 시, 플랫폼에 의존적인 assembly code만 수정하고 C코드는 그대로 놔두는 것 (C언어의 높은 이식성) 다른 환경에서 다른 방법으로 같은 결과를 유도 방법 A 동일한 자원 동일한 결과 방법 B

  4. O/S Porting • OS를 이루는 대부분의 코드들은 이식 가능한 C언어로 구현 • CPU마다 다른 구조의 아키텍쳐 (레지스터, 인터럽트, 타이머 등)을 가지고 있으므로 이 부분을 사용하는 코드들을 바꾸면 Porting 가능 • OS가 포딩이 되면 OS 위에서 동작하는 어플리케이션 프로그램은 플랫폼 독립적으로 수행 가능 • OS Porting을 수행하기 위해서는 시스템의 하드웨어 구조, 컴파일러, 프로그래밍에 깊은 지식이 필요

  5. O/S Porting Applications Operation System : Kernel (H/W Independent Code) H/W Dependent Code (Port) 변경 H/W Dependent Code (Port) Software Hardware System A System B

  6. What need for O/S Porting • Host 측 필요장비 • Host와 Target이 PC인 경우 (개발과 테스트를 같은 플랫폼 상에서 수행) • 컴파일러, 어셈블러, OS Code, Application Code 등이 필요 • Host가 PC이고, Target이 독립적인 다른 시스템인 경우 • 크로스 컴파일러혹은 PC에서 동작하는Target프로세서의 컴파일러를 구한다. • 개발 환경에서 만들어진 이미지 파일을 Target에서 동작하는 Binary Image의 형태와 주소를 갖도록 바꿔주는 프로그램인 Binary Utility를 구한다. • (Serial Data를 처리하여 보여 줄 수 있는 통신 에뮬레이터를 구한다.) Ex) 이야기, 새롬 데이터맨, Teraterm등

  7. What need for O/S Porting • Target 측 필요 장비 • JTAG • 플랫폼 • O/S Porting을 위한 약간의 메모리 • O/S를 동작시킬 Processor • 기타 원하는 작업을 위한 디바이스

  8. Whatneed for UC/OS-II Porting • 프로세서가 재진입이 가능한 코드를 생성하는 컴파일러 • C에서 인터럽트를 제어 할 수 있어야 함 • 프로세서는 인터럽트를 지원하거나 비슷한 기능을 수행 할 수 있어야 함 • 프로세서가 일정한 Timer 기능의 인터럽트를 제공 할 수 있어야 함 • 프로세서는 하드웨어적, 소프트웨어적 Stack을 지원 해야 함 • Stack이나 Memory에서 SP와 다른 CPU 레지스터를 불러오고 저장하는 Instruction을 지원해야 함 • Data Types의 설정이나 critical section에 접근하기 위한 매크로로 사용되는 인터럽트 금지와 해제의 구현에 주의해야 함

  9. UC/OS-II Software Architecture Applications UC/OS-II Configuration (Application Specific Code) OS_CFG.h INCLUDES.h UC/OS-II (Processor Independent Code) OS_CORE.cOS_Q.c OS_MBOX.cOS_SEM.c OS_MEM.cOS_TASK.c OS_TIME.c uCOS_II.cuCOS_II.h UC/OS-II Port (Processor Specific Code) OS_CPU.H OS_CPU_A.asm OS_CPU_C.c HARDWARE (Timer, Interrupt, etc)

  10. Porting for UC/OS-II on ATmega128 • http://micrium.com/page/home접속 (UC/OS-II의 제작자 홈페이지) • 메뉴 중 Downloads → Ports 선택 (H/W 종속적인 코드를 지원 : 포트) • Atmel -> AVR 선택 (Atmega카테고리에는 IAR 컴파일러 코드가 있음) 가장 최신 버전인 V.270 다운로드

  11. Porting for UC/OS-II on ATmega128 • Email과 Password 입력 (Email – 354121@naver.com, PSW : hm354121) • 압축 파일의 압축을 푼다. App Kernel App Config Port H/W 개발자가 지원하는 예제 어플리케이션 H/W 종속적인 코드 (Port)

  12. Porting for UC/OS-II on ATmega128 • 아래 다섯 개의 파일을 새 폴더 port에 복사 한다. • STK500 폴더의 아래 파일을 새 폴더 test에 복사 한다.

  13. Porting for UC/OS-II on ATmega128 • UC/OS-II Kernel을 구한다. • MicroC / OS-II real time Kernel 부록 CD v2.5 (에어컨, JEAN J. LABROSSE) • http://micrium.com/page/downloads/os-ii_evaluation_download v2.90 • Products -> UC/OS-II (kernel) -> 좌측 UC/OS-II Evaluation Download • 아래 파일을 새 폴더 source에 복사 한다. App Kernel App Config Port H/W OR UCOS-II Kernel v2.52 UCOS-II Kernel v2.90

  14. Porting for UC/OS-II on ATmega128 • UCOS-II라는 새 폴더를 만들고 커널이 들어있는 source 폴더와port 파일이 들어 있는 port 폴더를 이동 시킨 후, UCOS-II 폴더를 C:\로 이동한다. • 예제 어플리케이션이 있는 test 폴더를 C:\로 이동한다.

  15. Porting for UC/OS-II on ATmega128 • Kernel 버전에 따라 예제 어플리케이션을 선택해야 한다. • 확장자가 252로 끝나는 파일은 2.52 버전의 kernel을 위한 파일이다. • 이 파일을 쓰기 위해서는 .252를 지워주면 된다. • 그 외의 파일들은 2.90 버전의 kernel을 위한 파일이다. • Port 파일 및 어플리케이션 파일의 수정을 위해 Winavr에 포함되어 있는 Winavr노트패드를 실행시킨다.

  16. Porting for UC/OS-II on ATmega128 • File – new – project 를 실행하여, test 폴더에 새로운 이름으로 프로젝트를 생성한다. • 생성된 프로젝트에 이전에 복사한 source, test, port의 파일을 모두 불러온다. • 프로젝트 이름에 우 클릭을 한 후, add new folder 선택 • Add files를 선택하여 파일을 import 해 온다. • UC/OS-II의 소스 파일들의 경로를 수정하기 위해 makefile을 연다. • Makefile의 UCOSDIR과 PORTDIR을 아래와 같이 수정 한다. • 이 후, DIRAVR을 Winavr이 설치 된 폴더로 수정 한다.

  17. Porting for UC/OS-II on ATmega128 • 그 다음, os_cfg.h파일을 열어 CPU_CLOCK_HZ를 자신의 환경으로 수정한다. (연구실 보드는 모두 16Mhz) • Test.c파일의 AvrInit() 함수의 UBRR0L을 수정하여 적당한 Baud Rate를 설정한다. • Kernel 버전이 2.52라면 Baud rate를 19200 이상으로 설정 한다. (버그 때문)

  18. Porting for UC/OS-II on ATmega128 • 마지막으로 uCOS-II.c파일을 열어 아래와 같이 UC/OS-II의 소스 파일들을 대소문자를 잘구분하여 include 한다. • WinAVR의 makeall을 이용하여 컴파일을 하면 test.hex 파일이 생성 된다.

  19. Conclusion • UC/OS-II를 Porting하기 위해 필요한 작업 • 기본적으로 Target에 프로그램을 작성및 Download 할 수 있는 환경 설정 • OS 소스들을 구함 • OS는 하드웨어에 상관없이 수행되는 일종의 알고리즘과 같은 것 • OS는 App와 같이 컴파일 되므로 이들 사이의 함수 연결이라든지 TASK가 OS를 이용 할 때의 제약들을 정의하기 위해 Configuration이 필요 (UC/OS-II의 OS_CFG.h , INCLUDES.h) • OS에서 이용하는 하드웨어 자원들의 경우 접근하는 방식이 시스템마다 다르므로 시스템에 맞추어 설정해야 함 (port 파일을 구하는 것으로 대체했음) (OS_CPU.h , OS_CPU_A.asm , OS_CPU_C.c) • 이 Processor Dependent Code를 잘 바꾸어 주는 것이 O/S Porting의 전부 • UC/OS-II에서는 위의 세 파일에 Interrupt, Timer, Context Switch 등을 구현 • App의 작성과 OS와 App를 같이 컴파일하기 위한 makefile의 작성 • 실제 target에 Download

More Related