'osek'에 해당되는 글 14건

  1. 2009.04.15 22일째 - 알람 샘플의 동작을 정리해 보다. (2)
  2. 2009.04.15 21일째 - 알람까지 분석하다
  3. 2009.04.15 20일째 - 여전히 문서 정리 중
  4. 2009.04.01 OSEK/VDX 란? (1)
  5. 2009.03.21 Start hardware-specific Initialization code call #1
  6. 2009.03.18 19일째 – 문서 정리를 위하여…
  7. 2009.03.18 18일째 – StartOS 분석을 시작하다.
  8. 2009.03.18 EZ-AT7 용으로 바꾼 다이어트 된 소스
  9. 2009.03.04 17일째 - 시작 과정과 인터럽트 처리 분석 세미나
  10. 2009.03.04 16일째 - 강의 있는날 OSEK은 초기 처리 분석
2009.04.15 10:08

22일째 - 알람 샘플의 동작을 정리해 보다.

임성락 교수님과 이야기 하다가
교수님 제의로 알람이 동작하는 샘플을 하나의 전체 프로그램으로 보고
토퍼스 내에서의 동작을 추적하고 이를 정리해 보기로 했다.

교수님과 토의 하면서 진행하니 무척 분석이 빠르다.

소스 추적하고
내용 다시 점검하고
필요한 부분만 소스 요약 하고
프린터 뽑고
이를 정리하고

교수님과 나의 환상(?)적인 호흡으로

저녁 8시반에 끝내고 말았다.

아~~

뿌듯…

교수님이

우리가 목적으로 하는 로봇용 오섹을

만들어 가보는 것을 시작해 보자 신다.

좋구만요..


Trackback 0 Comment 2
  1. 2009.09.01 10:43 address edit & del reply

    비밀댓글입니다

  2. Uggs Outlet 2011.11.25 15:24 신고 address edit & del reply

    좋은 책은 친한 오늘 영원히 동일합니다.

2009.04.15 10:07

21일째 - 알람까지 분석하다

권오용이가 열심히 준비한 내용을 세미나 하였다.

세미나 내용은 알람 샘플에 대한 동작에 대한 조사 및 발표

흐흐

고생이 많았다고나 할까

생각보다 빠르게 오용이가 적응하고 있는 것 같다.

내용도 무척 알찼다.

임성락 교수님과 나 역시 다시 한번 세미나 하며

소스를 재검토 했다.

어떻게 보면 어려운 내용 없고
어떻게 보면 나름 대로 어렵고

쉽지만은 않은 것 같다.


Trackback 0 Comment 0
2009.04.15 10:04

20일째 - 여전히 문서 정리 중

날씨가 다시 쌀쌀해 졌다.

아침에 부랴 부랴 내려와서 약간 덜된 강의 준비하고 수업에 들었갔다.
흐흐…

학생들이 열심히 한다.
나만의 착각일지 몰라도 뿌듯하다.

모든 학생이 실습을 확실히 끝나도록 찾아가는 서비스를 제공하다 보니
강의가 늦게 끝났다.

그런데 원래 예정된 세미나가 다음주로 밀어 졌다.

흐흐

잘됐다는 생각에 미뤄 놓았던 자료를 올렸다.

결국 새로운 팀원은 합류하지 않았다.

다음주에 오려나..?

Trackback 0 Comment 0
2009.04.01 21:09

OSEK/VDX 란?


이글은 What is OSEK/VDX? 이라는 제목의 OSEK 사이트에 있는 글을 
권오용이가 해석하고 임성락 교수님이 감수하고 내가 약간(?) 첨부해서 올리는 글이다.

이글은 OSEK 이 무엇이고 또 OSEK/VDX 라고 하는데 이것이 무엇인가를 간략하게 설명한다.

해석 시작...



OSEK은  1993년 5월에  차량용 분산 제어 장치의 공개 아키텍처에 대한 산업표준화를 목료로 독일 자동차 산업계 공동 프로젝트로 설립 되었다.

OSEK은 보통 우리가 생각하는 것처럼 영문 약자가 아니고 독일어 약자이다.
독일어로  “Offend Systeme und deren Schnittstellen fur die Elektronik im Kraftfahrzeug” 이다.
이 글을 영어로는  "Open System and the Corresponding Interfaces for Automotive Electronic" 이다.
한글? 흠...

이 프로젝트는 처음에 BMW, Bosch, DaimlerChrysler, Opel, Siemens, VM 와 같은 협력체들이 모였고, Karlsruhe 대학의 IIIT가 프로젝트의 주 담당자로서 활동했다. 

이후에 OSEK/VDX 라고 불리게 된 이유는

프랑스 자동차 산업계에서도 VDX-approach(Vehicle Distributed eXcutive)라는 프로젝트 형태로 프랑스의 자동차 제조회사인  PSA 와 Renault가 OSEK 과 유사한 유사한 프로젝트인 를 진행하고 있었는데 1994년에 OSEK에 소개되면서 공식적으로 참여하였다.

이후에

OSEK/VDX 그룹은 1995년 10월 첫 번째 WorkShop 에서 OSEK과 VDX간의 조정된 사양의 결과를 발표하였다.
1997년 10월에  제 2차 국제 OSEK/VDX Workshop후에 2차 버전의 사양이 정식적으로 공개되었다.

OSEK/VDX 에서 소개한 공개 아키텍처는 다음과 같은 3가지 분야로 구성된다.

통신(제어장치 내부 및 외부 데이터 교환)
운영체제( ECU 소프트웨어의 실시간 실행과 다른 OSEK/VDX 모듈에 대한  기반)
네트워크 관리(구성 결정 및 모니터링)

통신과 운영체제 분야에서는, 일반 요구사항(표준 운영체제/통신 사양) 또는 전역적으로 동기화된 고장감내 아키텍처를 담당한 특별 요구사항(OSEktime 사양)에 대한 별도의 표준이 있다.

다시 말하면 네트워크관리 분야가 아닌 통신 과 운영체제 분야는 두가지로 나누어지는 표준안이 있는데
하나는 일반적인 요구 사항에 대한 정의를 내리는 문서 표준안이 있고
또 하는 시스템 고장에 대한 처리를 고려하여 안정성을 중시 여기는 특별한 요구 사항에 대한 정의를 내리는 문서 표준안이 있다는 것이다.

OSEK/VDX 프로젝트가 진행되게 된 동기, 목표, 장점을 정리하면 다음과 같다.

Motivation(동기)


OSEK/VDX 프로젝트가 시작된 동기는


 서로 다른 회사에서 제조된 제어장치들간의 비호환성 및 서로 다른 인터페이스 및 프로토콜로 인한
비 표준화로 인하여 지속적인 개발비용의 증가와 함께
제어 장치를 위한 소프트웨어의 응용프로그램들이 무수하게 많아졌고 이를 관리하기가

점점 힘들게 되었다. 결국 이러한 문제점을 인식하고 이를 해결 하기 위한 것이 동기가 되었다.

Goal(목표)


위의 시작된 이유들을 해결하기 위해서 기본적으로 다음과 같은 내용을 목료로 하여
응용소프트웨어의 이식성과 재활용성을 지원하는 것을 목표로 하였다.

가능한 한 응용 소프트웨어와 독립적이고 추상적인 인터페이스 사양
하드웨어와 네트워크에 독립적인 사용자 인터페이스 사양
아키텍쳐의 효율적인 설계 :
        아키텍쳐를 응용소프트웨어에 최적화 할수 있도록 조정이 가능한 기능 및 구성으로 확장성을 가져야 한다.
기능에 대한 검증과 선정된 시험 프로젝트의 프로토타입의 구현이 가능해야 한다.

Advantages(장점)


위 목표를 모두 이루게 되면 다음과 같은 장점이 생긴다.

  비용과 개발시간의 절약
  다양한 회사들 간의 제어 장치 소프트웨어의 질적 향상
  서로 다른 아키텍쳐로 설계된 제어 장치에 대한  표준화된 인터페이스
  하드웨어를 새로 추가하지 않고 존재하는 자원을 최대한 활용하여 전체적인 시스템의 성능 향상이 가능한
      순차적이고 , 분산처리된 고도로 지능화된 시스템
  정해진 사양을 어떻게 구현할것인가에 대한 부분을 규정하지 않음으로서, 구현에 관한 독립성 보장


결론적으로 ...

이식성과 확장성 그리고 기존 소프트웨어의 재사용을 위한다면
OSEK/VDX에 의해 제안되고 표준화된 인터페이스와 프로토콜에 기반한
구조적이고 모듈화된 소프트웨어 형태로 제작될 필요가 있다. 

보통

소프트웨어의 기능을 확장한다면 이것은 서로 다른 어플리케이션들이 가지는 기능들을 하나의 단일 제어장치에 새로운 어플리케이션의 형태로 기능을  통합하는 것을 의미한다. 

또한 어플리케이션 포팅이라는 것은 특정 하드웨어의 플랫폼에 동작하는 어플리케이션을 다른 하드웨어 플랫폼에 작은 수정만으로 동작하게 변화하는 것이다. 예를들어 기존에 동작하는 ECU  응용 소프트웨어를 다음세대 ECU에 이식하는 것이다.

더욱이 확장성과 이식성이 보장된 응용 기술들은 공급자와 독립적이어야한다. 즉, 서로다른 공급자들로부터 소프트웨어의 공생이 가능해야하는 것이다.

이러한 모든것을 OSEK/VDX는 OSEK/VDX 모듈의 구현에 대한 정의를 기술하지 않는다는 것을 주목해야한다.

즉, 서로다른 ECU들은  동일한 OSEK/VDX인터페이스를 가지고 있지만, 요구되는 하드웨어 구조와 성능에 따라 구현은 다르도록 구현하게 하고 있다는 것이다.




Trackback 0 Comment 1
  1. 앤써K 2010.01.07 15:58 신고 address edit & del reply

    네이버 블로그로 담아갑니다. (비공개로...)

2009.03.21 02:22

Start hardware-specific Initialization code call #1

toppers 의 루틴 중 가장 처음 분석한 위치는

OSEK 문서에서 설명하고 있는 것 중

“Start hardware-specific Initialization code call”

즉 하드웨어가 리셋 된 이후 StartOS() 가 호출 되기 전까지의 분석이다.

이 부분은 다음 그림과 같은 위치에 해당된다.

리셋 과 벡터 테이블



ARM 은 하드웨어 적으로 RESET 상태가 되면 벡터 테이블이 0 번지에 위치하게 되고 이후 RESET 테이블에 주소 즉 0 번지에 있는 루틴이 실행된다. 

EZ-AT7에 사용되는 프로세서인 AT91SAM7S 계열도 ARM 계열이기 때문에 벡터테이블이 존재하게 된다.

이 테이블은 toppers_osek/config/at91sam7s-gnu/vectors.s 파일에 정의되어 있다.

즉 가장 처음 시작 시점은 이 파일의 벡터 테이블이다. 이를 벡터 테이블에서 리셋 벡터는 init.s 의 start 라벨으로 점프하는 코드가 기술 되어 있다.


그림에서 보는 것과 같이

reset 은 start로 이동하고  data_abort_handler은 다른 쪽으로 점프하여 최종적으로 C 함수를 호출하게 된다.

Undefined instruction vector, software interrupt vector, prefetch abort vector, reserved vector는각각 init.s 의 핸들러로 호출하는데 결국 해당 루틴에서 무한 루프를 돌기 때문에 실제로는 프로세서가 멈추어 버리는 효과가 있다. 즉 특별한 처리를 하지 않는다는 의미가 된다.

IRQ vector와 FIQ 벡터는 AIC IVR 또는 FVR 에 설정된 루틴을 호출하게 된다.

이런 부분은 나중에 인터럽트 처리에서 다시 설명할 것이므로 여기서는 reset이후 start를 호출한다는 것만 기억하자.

AT91SAM7S의 부팅시 메모리 맵 특성

ARM에서 RESET 후 부팅되기 위해서는 보통 0 번지에 플래쉬 메모리가 할당되거나 NAND 부팅을 하기 위한 SRAM 이 할당된다.
AT91SAM7S 역시 ARM 코어를 사용하므로 이와 동일한 처리가 필요하다.
그런데 AT91SAM7S 프로세서는 0 번지에 할당된 메모리는 없다. 즉 0 번지는 실제로 메모리가 존재하지 않는 빈 공간이다.

다음 그림은 이런 상태를 나타낸 것이다.



이런 상태에서 프로세서가 RESET 되면 플래쉬 메모리가 0 번지에 맵핑 된다. 즉 플래쉬 메모리는 0x0000 0000 ~ 0x000F-FFFF 에서도 접근이 가능하고 0x0010 0000 ~ 0x001F FFFF 에서도 접근이 가능하게 된다.

이런 상태를 그림으로 보면 다음과 같다.


플래쉬 메모리의 영역이 1 M 바이트로 잡혀 있지만 실제로는 256K 바이트만 있으므로 접근 가능한 주소 공간은
0x0000 0000 ~ 0x0003_FFFF 와 0x0010 0000 ~ 0x0013_FFFF 이다.
이런 상태에서 MC_RCR 레지스터의 RCB 비트에 1을 써 넣으면 0 번지는 SRAM  메모리에 맵핑된다.
이것을 그림으로 보면 다음과 같다.



SRAM 메모리의 영역이 1 M 바이트로 잡혀 있지만 실제로는 64K 바이트만 있으므로 접근 가능한 주소 공간은
0x0000 0000 ~ 0x0000_FFFF 와 0x0020 0000 ~ 0x0020_FFFF 이다.
이런 상태에서 MC_RCR 레지스터의 RCB 비트에 1을 써 넣으면 0 번지는 다시플래시 메모리에 맵핑된다.
즉 MC_RCR 레지스터의 RCB 비트에  1을 써 넣을 때마다 맵핑 상태가 토글링 된다.

 
Trackback 0 Comment 0
2009.03.18 17:51

19일째 – 문서 정리를 위하여…

점점 일어나는 시간이 늦어져 간다.

늦게 탓도 있지만 7시에 집에서 나왔다.

 

학교에 도착하니 9.

 

따뜻하다.

 

그리고 나무에 꽃들이 피기 시작한다.

아직은 몽울이지만

 

요즘 임성락 교수님이 OSEK 진도를 쭈욱 쭈욱 나가신다..

 

자료 정리하기도 벅차다. ㅜㅜ

 

오늘은 밀린 자료 문서화 하는 것이 목적이다.

 

문서화 밀리면 진짜 못한다.

 

열심히 해야지..

 

오늘은 우선 이전에 세미나 했던 부분부터 문서화 하려고 한다.

 

..

 

새로운 멤버가 합류할 하다.

 

누군지는 확실해 지면 그때 하면 되지

 

오섹에 관심들이 점점 많아지는 같다.

 

오늘은 열라 해서리 문서 정리를 열심히 열심히..

 

^^


Trackback 0 Comment 0
2009.03.18 17:49

18일째 – StartOS 분석을 시작하다.

오랜만에 마나님 덕분에 6시에 일어 났다. 부랴 부랴 세수하고 챙겨주신 아침 먹고 출발해서  한 8시 30분쯤에 학교에 도착 했다.

헉~~ 임성락 교수님이 계셨다. 새 학기라서 바쁘신가 보다. 반갑게 맞아주시는 임 교수님 ^^

자리에 노트북 펴고
임 교수님이 해 주셨던 이전 세미나 정리 하면서 ( 징하게 오랫동안 정리한다.)
오늘은 StartOS 함수 와 TerminateTask  함수를 분석해야 한다는 것을 깨달았다.

흠 이전 자료도 정리하지 않았는데 큰일이다.

그래서 속으로 일단 StartOS 함수만을 1차 목표로 잡고 나머지 자료도 찔끔 찔끔 이라도 꾸준히 정리해 나가기로 마음먹었다.  현재 것도 정리하고 이전것도 조금씩 정리하는
병행 기법을 하기로 했다.

10시 반에 강의 들어가서 학생들을 마구 마구 괴롭혔다…
좀 미안하기는 하지만 그렇게라도 실력이 늘어서 학생들에게 도움이 된다면 좋겠다.

어찌되었든 학생들도 나름 최선을 다하는 것 같기도 하다. ( 흠 나만의 착각인가 ^^ … )

수업 끝나고 나서 식사 하러 간 후 StartOS 함수부터 분석을 시작했다.

흠…

바로 어셈블러 루틴으로 뛰어 들어가는 그 막막함..

사실 소스는 얼마 안되는데
그 의미를 역으로 추적해 내는 것도 쉽지는 않은 듯

어찌되었든 StartOS 함수에 대한 분석부터는 다른 문서에 기록해 나갔다.

나중에 임성락 교수님이 합류하셔서 StartOS , TerminateTask 까지 츄아악~~~ 끝내 버렸다.
하여간 대단한 교수님이셔 ^^

Trackback 0 Comment 0
2009.03.18 17:41

EZ-AT7 용으로 바꾼 다이어트 된 소스

EZ-AT7 용으로 일일히 바꾼 소스는 다음과 같다.
분석하고 싶은 사람은 다운로드 받아서 분석하며 된다.

다이어트된 소스



다이어트 된 디렉토리 구조은 다음 그림과 같다.




samples/alarmtest

AlarmTest.oil
Makefile
alarm_test_ram.elf
alarm_test_ram.elf.map
alarm_test_ram.ld
alarm_test_rom.bin
alarm_test_rom.elf
alarm_test_rom.elf.map
alarm_test_rom.ld
alarm_test_samba.ld
alarm_test_samba_ram.bin
alarm_test_samba_ram.bin.map
alarm_test_samba_ram.bin_elf
implementation.oil
kernel_cfg.c
kernel_id.h
samba_ram.tcl
template.c

toppers_osek/config/at91sam7s-gnu


AT91SAM7.h
aic.c
aic.h
cpu_config.c
cpu_config.h
cpu_context.h
cpu_defs.h
cpu_insn.h
cpu_support.S
data_abort.c
debug.S
init.s
interrupts.h
interrupts.s
irq.s
systick.c
systick.h
tool_config.h
tool_defs.h
vectors.s

toppers_osek/config/at91sam7s-gnu/ez_at7


ez_at7.make
mytypes.h
osek_interface.c
sam7.lds
sys_config.c
sys_config.h
sys_defs.h
sys_support.S

toppers_osek/include


kernel.h
osek.h
t_config.h
t_stddef.h

toppers_osek/kernel


alarm.c
alarm.h
check.h
event.c
interrupt.c
interrupt.h
osctl.c
osek_kernel.h
resource.c
resource.h
task.c
task.h
task_manage.c

toppers_osek/sg


lego_nxt.sgt
sg.exe

toppers_osek/sg/impl_oil


impl_os_bcc1.oil
impl_os_bcc2.oil
impl_os_ecc1.oil
impl_os_ecc2.oil

toppers_osek/syslib/at91sam7s-gnu/ez_at7


hw_sys_timer.c

 

Trackback 1 Comment 0
2009.03.04 20:39

17일째 - 시작 과정과 인터럽트 처리 분석 세미나

어제 늦게 잤음에도 불구하고 새벽 4시에 눈이 떠져 버렸다. ( 제길슨 ㅠㅠ  )

꾸역 꾸역 준비 하다가 오늘은 OSEK 초기 부팅 과정에 대한 세미나를 해야 한다는 것을 깨닫고
부랴 부랴.. 학교 갈 준비를 했다.

5시쯤에 차 몰아 경부선을 탔는데 안성쯤에서 너무 졸렸다.

안전 운전을 위해서 안성 휴게소에서 한 30분 자고 다시 읽어 나서 휴게소 식당에 가서
밥먹고 출발하여 학교에 도착하니 시간이 7시 ~~

역쉬 학교의 아침 공기는 너무 좋다.

교수님 방에 들어가 노트북 키고
어제부터 정리 했던 부팅 부분과 인터럽트 처리 부분을 정리 했다.
교수님 오시기 전에 간신히 다 정리 하고 ㅋㅋ

10시 반이면 수업이라서 강의 시간 15분 전에 시간 맞춰 들어 갔다.

흠 저번 시간에 빡 세게 한다는 엄포를 주었음에도 불구하고 학생 수에 변동이 없다.
엄청 힘든 수업들이 될 거라는데 무슨 배짱이신지 잘 모르겠다.

학생수 많으면 점수 채점 시간도 길어 지고 챙겨야 할 학생수가 많아서 한 20명 정도 이기를 바랬는데.. 완전 실패 엄포 였던 것이다.

하지만 가만히 보니 들어오고 나간걸  보니 .. 멋 모르고 들어 오신분들 많은가 보다. 쯧쯧…

어쨌든 …빡! 센 강의를 향해 고고…

정신 없이 강의 끝나고 교수님과 밥 챙겨 먹고 세미나 시작..

세미나 끝에서 임성락 교수님이 분석 과정에서 생겼던 나의 궁금증을 많이 해결 주셨다. 역쉬~~

어쨌든 이 문서 끝에 세미나 과정을 정리 해 올릴 예정이다.



 

Trackback 0 Comment 0
2009.03.04 20:34

16일째 - 강의 있는날 OSEK은 초기 처리 분석

오늘은 1 학기 첫 강의가 있는 날이다.

아침에 눈을 뜨니 5시 …
정말 나이가 들면서 잠이 없어지고 있다.

젊은 놈이 잠만 자냐는 어른들의 꾸지람이 요즘은 틀렸다는 생각이 든다.
젊은 놈이 원래 잠이 맑고 나이 들면서 잠 없어지는 것이 맞는 것 같다.

덕분에 그냥 세수하고 출발 .. 학교에 도착…

후우~~~
호서대에서 맞는 아침에 마시는 공기는 정말 상쾌하다.
난 이 맛에 호서대 강의를 좋아 하나 보다.
이날 만이라도 회사 대표직에서 땡땡이 치니깐.. (흐흐)

호서대는 첫 강의가 다른 학교보다 1 주 빠르다.
사실 1 주 더 강의가 있다. 아주 특이하다.

원래 첫 주는 강의 신청 교정 기간과 겹치기 때문에 대충하는 경향이 많은데
그런 생각 자체를 하지 말고 정말 학생을 위한다는 생각으로 첫날도 꽉 찬 알찬 수업을 하라는
임성락 교수님의 당부를 귀에 담고..

오늘 아주 빡 세게 원칙대로 시간 엄수 하면서
한 학생이라도 더 건지자는 각오로 강의하기로 했다.

이런 각오를 오늘 첫 시간에 이야기 하면
아마도 우수수… (ㅠㅠ) 

내 수업을 안 듣고 다른 강의 신청 하는 학생이 많아 질 거다.
왜냐하면 그 친구들도 취업을 위해서 학점관리를 해야 하는 거니깐..

그래도 할 수 없다.

한 사람이라도 내가 알고 있는 것을 알게 하는 것 역시
내가 살아가는 신념과 일치하는 것이니깐…

강의 끝나고 집에 올라가기 전까지

오늘은 다이어트 한 OSEK 에서 리셋 후부터 StartOS 까지 그리고 인터럽트 처리에 의한 부분과 OSEK 과의 연결고리를 조사하고 정리해서 다음 시간에 세미나 하기로 했다.

….


결국 정리를 모두 못했다. 다음주로 미루고 어떻하던 세미나는 해야겠다.

 


 

Trackback 0 Comment 0


티스토리 툴바