Configtool 실행

 

template설정

 

맞는 보드 설정

패키지 선택

 

è OK ç

 

우리 연구실에서는

eCos 를 부팅하는 디바이스에 grub를 설치한후 eCos를 부팅시킨다. 그래서

eCos HAL 아래에 있는

Startup Type : GRUB로 설정해 준다.

실행파일을.. 넣고 실행해주면됩니다.

 

Posted by 인고의생애

연구실 연구과제
RT-eCos의 설정과정을 간략히 설명하고자 한다.  사용방법에 대한 문의도 환영한다. 그러나 소스 공개등은 저의 권한을 벗어 나므로 ~ ..ㅋ

ecos 설정 (이번 설정은 cygwin 환경에서 진행하고 있다. )

image

 

image

 

image

image

네트워크 설정

image

vmware (NAT)설정을 조금 살펴 보면
192.168.233.0 ==>gateway 192.168.233.2 라는 것을 확인할수 있다.
Master 의 경우 이것을 조금 수정한 IP를 넣어준다. DHCP로 IP를 할당받아도 되지만 slave NODE가 MASTER의 IP를 알고 있어야 하므로 고정 IP형식으로 주었다.

image

MASTER는 위와 같이 IP를 설정해 주었다.

image

저장을 하게 되면 타이틀이 저렇게 바뀌게 된다.

image

RT-eCos 커널을 빌드 한다.

image

아래쪽에 보면 builde finished 라는 글자를 볼 수 있다.

========================== 요기 까지가 MASTER를 위한 커널을 컴파일 해 놓은것이다.
이제 부터는 SLAVE를 위한 커널 설정에 들어가 보자

일단 New를 눌러준다.  다음
메뉴에서 Build ==> Templates

image

H/W : i386 vmware
Packages : NET

image

Continue …

image

Master IP를 넣어주는 항목이다. 이곳에 기존에 192.168.233.101 이러한 값이 들어가는데 소스코드에서 인식이 안되어서 “192.168.233.101”과 같이 수정해 주었다.

image

네트워크는 DHCP로 놔두었다. (vmware Network 사용)

파일 저장하기..
image

디스켓 아이콘을 클릭하고.
image

저장해 주면 된다. ^^;

그리고 F7
image

커널 컴파일이 되겠다.

============== ecos 커널 컴파일 완료.. ===========================

화면 캡쳐가 많아서.. 어플리케이션은. 다른 글로..

Posted by 인고의생애

연구실 후배님들을 위한… 글 입니다.

 

목차는

  1. 준비물
  2. Guest OS( 리눅스 전원 ON. ) 부팅
    1. 설치과정 생략
  3. eCos 설치를 위한 디스크 파티션(Fdisk 하기)
  4. grub 설치
  5. eCos 설치(?) 실행하기

 

Vmware를 이용한 ecos 작동환경 설정

준비물 :

  • vmware-Workstation (학과 라이선스 있음)
    • Linux (guest OS)

 

 

Guest OS의 디바이스 입니다.

현재 상태는 Hard Disk2(SCSI)에 리눅스를 설치하였습니다. (ubuntu)

그리고 eCos 설치를 위해서 (grue 설치할 HDD 하나를 추가했습니다. )

 

리눅스 설치는 제 블로그 및 다른곳에 많을 테니 생략하겠습니다.

  • Windows 7 에서 vmware Guest OS가 인터넷이 안되는 증상이 있습니다. (참고하세요)

 

eCos 설치를 위한 디스크 파티션 나누기

  • 디스크 찾기 (어떤 디바이스로 리눅스가 인식하고 있는지 확인)
  • 리눅스에서 HDD는 /dev/sda, /dev/sdb, … , /dev/hda , /dev/hdb, …
  • 위와 같은 방식으로 장치파일에 인식됩니다.
  • Dmesg 명령은 리눅스에서 커널 부팅 메시지를 보여주는 것입니다.
  • Dmesg를 통하여 리눅스 커널이 장치(HDD)를 어떻게 인식했나 확인합니다.
  • 저의 경우
    • Dmesg | grep /dev/sd
    • Dmesg | grep /dev/hd
  • 위 명령어로 확인을 하였습니다.
  • 운영체제는 /dev/sdb HDD에 설치된 파티션에 설치되어 있고
  • 다른 하드디스크는 /dev/sda 로 인식되어 있습니다.

 

Vmware 에서 eCos 용 HDD디스크를 생성은 하지만 실제로 작동시킬때는 운영체제에 따라서 eCos 작동 HDD의 파티션의 파일 시스템을 다르게 만들어 주시면 됩니다. Vmware 디스크를 윈도우/리눅스에서 직접 사용할수 있는 툴이 있으므로 편리하게 사용할실수 있습니다.

 

Linux(host OS) è ecos (vmware) 구동 è ext2 파일 시스템

Windows(host OS) èeCos (vmware)구동 è fat16/fat32 파일 시스템

파일 시스템 확인

 

변경 방법

Command (m for help) : t

Hex code (type L to list codes): l

 

Wq를 누르고 빠져나간다.

 

파시션을 나우었으니 파일시스템으로 포멧을 시켜준다.

#mkfs.msdos /dev/sda1 (FAT16 파일 시스템)

#mkfs.vfat /dev/sda1 (FAT32 파일 시스템)
#mkfs.ext2 /dev/sda1 (리눅스용)

 

파티션을 나누었으면 이젠 디스크로 인식 시킬수 있다.

/dev/sda1 으로 파티션이 만들어졌다. : /dev/sda : 하드디스크의 1번째 파티션이다.

#mkdir /home/hanseok/ecos_hdd

#mount /dev/sda1 /home/hanseok/ecos_hdd

 

 

이제 GRUB를 설치해 보자

 

 

주의 사항 : /dev/sda ç 입니다. 저의 경우 /dev/sda1 이라고 적어서 GRUB 17번 에러를 몇번 맞은적이 있습니다.

 

 

적다가 귀찮아서. 화면만 캡쳐했습니다. ~

저것이 grub 설치 끝입니다.

방금 설치한것으로 나타난 GURB 쉘입니다.


비싼돈주고 구입한 스마트펜 사용하기


grub install vmware
brought to you by Livescribe


발성법도 그렇고 이것저것 다시 해볼것이 많네요 ^^

저는 개인적으로 virtualBox가 더 빠르고 좋습니다.
그런데 virtualBox의 디스크를 윈도루즈나 리눅스에서 직접 마운트해서 사용할수 있는 방법을 찾지 못해서 vmware를 사용합니다. vmwaremount, vmwre-mount   vmware에서 제공해주는 윈도우/리눅스용 명령어가 있습니다. 이걸 사용하면 vmware에서 작동하는 디스크를 쉽게 편집할수가 있습니다.


Posted by 인고의생애
얼마 되지 않은 나이이지만 그래도 꾸준히 간단한 프로그램을 작성하고 다른 프로그램 코드를 보면서 지내왔다.  임베디드 시스템이란것을 하면서 하드웨어에 대한 지식이 있어야 한다는것을 알고 공부를 조금씩 했었다.

네트워크 프로그램을 작성하면 일단 인터넷에서 서버/클라이언트 소스를 찾아서 내컴퓨터로 가져온이후 이 프로그램을 수정하거나?  이 프로그램의 소켓 설정등을 내 프로그램에 복사하여 넣는다. 

수많은 사용자가 네트워크 프로그램을 작성하면서 10여개의 API를 사용하여 원하는 프로그램을 만들어 낸다.  10여개의 API를 나열하는 방법은 너무나 많다.  나열하는 방법이 많아도 우리는 네트워크 응용을 구축하여 잘 작동시키고 있다.

eCos로 들어와서 내가 만드는 프로그램에 숨어있는 네트워크 프로그램을 시작하였다.  이것이 작동하지 않는다.  임베디드 보드에 올려야 하지만 vmware를 사용하여 개발중이라 생각보다 빠른 컴파일 빠른 작동 확인이 가능하지만. 정말 원인을 찾는데 오랜 시간을 들였다.

작동하지 않는 결과를 어렵게 찾았다.  궁극적인 내용은 모르지만 원인은 간단하다.  

main Thread 에서는 block I/O를 하면 안된다.
- ecos Main()
1. main() //C or C++ 스타일
2. cyg_user_start()
3. cyg_start()

모두 프로그램의 시작을 나타낸다.
cyg_user_start, cyg_start 앞에는 externC를 붙여줘야 작동이 가능하다. (externC 부분을 참조) 나는 cyg_start를 가지고 프로그램을 시작했다.  그리고 그속에서 주된 프로그램이 시작하기 전에 네트워크로 정보를 교화하는 코드가 들어간다.  메시지를 보내고 응답을 받고 응답을 받는데, 항상 reset이 걸린다.  특별할것이 없는 코드였으므로 이곳저곳 찾아 보며 범위를 줄였다. 그리고 결국 찾은 것은 UDP로 메시지를 받아 들이는 recvfrom에서 문제가 발생하는 것이다.  아무리 arg를 검토해봐도 죽는 이유를 몰랐다.  결국 이해 한것은 새로운 thread를 생성한 곳에서 block I/O를 해야 문제가 발생하지 않는다는 것이다.

먼저 thread를 생성하고 schduler를 가동시키고 이후에 block I/O를 수행해야 한다.  이것은 eCos의 제약사항일까? 아니면 당연히 이렇게 해야하는 것인데 우리가 지금까지 몰랐던 것일가? 

또한가지는 init_all_networks_interface() 라는 함수이다.   이것은 thread를 만들고 그곳에서 호출하도록 만들었었다. 그런데 이것도 이상하게 작동을 한다.  networks의 MAC을 FF로 쭈욱 찍어 주는 것이다. 이것도 무엇인가 잘못된것이다. 이것은 Main Thread에서 수행해 주어야 한다. 그래야 옳바르게 작동한다.

임베디드 시스템을 하면서 많은 프로그래밍의 제한사항을 만나고 있다.  1차적인 것은 시스템의 성능, 그리고 메모리의 관리(임베디드에서는 메모리가 제한적이다. 
초반에 적었듯 함수의 호출 순서에 따라서 내가 원하는 결과로 작동하거나? 작동하지 않거나가 적용이 된다. 일반 PC에서는 아무런 문제가 없던 코드인데 임베디드로 eCos로 들어오면 문제가 발생한다.

좀더 꼼꼼히 살펴보아야하고, 좀더 꼼꼼히 체크해야한다.  건성 건성 프로그래머다 라는 생각으로 코딩하고 컴파일하고 실행하고 하던 PC프로그램과는 다르다.  코딩할때 정신을 똑바로 차리고 배운데로 권해주는데로 프로그램을 하면 한번에 끝낼것을 이유을 찾는데 오랜시간이 걸리고 해결하기 위해서 또 많은 시간을 허비한다.

지금까지 너무나 잘 만들어진 운영체제에게 대충 만들어도 돌아가는 프로그램을 했다면 반성하며 앞으로는 잘 만들어졌지만 규칙을 따르지 않으면 안돌아가는 운영체제에서 규칙을 지키며 프로그램을 해보자.  내가 사랑하는 임베디드 시스템에서


저작자 표시 동일 조건 변경 허락
Posted by 인고의생애
  1. Configtools

  2. Build > Templates

  3. Templates 선택

  4. 선택한 내용 confilcts 내용

  5. 저장

  6. Kernel compile ( build > Library)

  7. 컴파일 결과

  8. Build > Tests

  9. 테스트 결과

  10. 올바르게 빌드 및 테스트 되었다.

       

    문제가 무엇인가? 설정 파일을 좀더 보아야겠다.

Posted by 인고의생애

 http://log.bestf.net/133

위 글에서는 에러가 나는 것을 올려 보았다.

이번에는 연구실에서 사용하던 패키지로 에러가 없는 모습을 볼 수 있다.

   

  1. Templates 선택 (packages NET)
    - i386 PC target with RTL8139 ethernet

       

       

  2. 패키지 선택후 confilcts
    - 선택한 패키지 중 requires로 들어가 있는 항목이다.
    - continue를 누름으로 requires에 들어간 항목을 선택해 준다.

       

       

  3. 커널 빌드
    - 아무런 문제 없이 build finished를 확인할 수 있다.

       

  4. Tests 프로그램을 필드한다.

       

       

       

       

  5. Test 또한 아무런 문제 없이 컴파일이 완료 되었다.

       

       

   

   

   

Posted by 인고의생애
TAG eCos, i386, net, RTL8139

http://log.bestf.net/134

에러없는 패키지 컴파일을 확인할수 있따.

  1. 새로운 프로젝트에서 templates 선택

 

   

   

  1. Hardware로 I386(vmware선택)
    Package NET 선택

 

   

   

   

  1. 선택된 패키지에 대한 conflicts 발생
    - continue 를 통하여 자동으로 conflicts에 대한 해결을 해준다.


     

  2. 지금까지 작성된 것을 저장한다.

  3. 파일 저장할 곳을 설정한다.

       

       

  4. 커널을 컴파일 한다.

       

       

  5. 오류가 발생한다.
    오류의 원인이 무엇인지 해결방법을 찾아야 한다.

       

       

    위와 같은 오류에 대한 메일링 리스트의 글

    http://www.mail-archive.com/ecos-discuss@ecos.sourceware.org/msg09854.html

    2009년 5월 20일 올라온 질문

       

 오류를 어떻게 해결해야지~~ 메일링을 좀더 자주 들어가 보며 질문도 한번 올려봐야겠다.

Posted by 인고의생애
TAG eCos, net, vmware

설치 관련 설명들….
http://ecos.sourceware.org/getstart.html

 

따라하기

  1. yum install compat-libstdc++-33
  2. wget --passive-ftp ftp://ecos.sourceware.org/pub/ecos/ecos-install.tcl
  3. yum install tcl
  4. sh ecos-install.tcl
  5. 다운로드 사이트 선택
  6. 설치 디렉토리 선택
    /opt/ecos
  7. 설치할 gnu tools 선택
    i386, arm, …
  8. 5에서 선택한 서버가 요구할 경우 Proxy 설정
  9. 종료….

source /opt/ecos/ecosenv.sh

configtools

Posted by 인고의생애