본문 바로가기

OS/vxworks

VxWorks 5.5 - TFFS를 사용하여 Stand-alone으로 부팅하기

 

목적#

  • Downloadable 이미지로 충분한 테스트를 거치고 나면, Stand-Alone 이미지를 해당 보드에 올려 자체 부팅이 되어 원하는 Entry-Point를 실행시켜야 할 필요성이 있다. 이 때 사용되는 방법으로, TFFS 파일시스템에 커널, 라이브러리, 실행 코드등을 저장하여 startup script로 실행하는 방법을 설명한다.

방법#

Stand-Alone 용 커널이미지 작성#

  • Stand-Alone용 커널이미지를 작성한다. Start-up Script 실행을 위해 다음의 커널 컴포넌트를 추가한다.

    • development tool components >> target shell components >> shell startup script

     

     

  • 커널 컴포넌트 세팅이 끝났다면, vxWorks와 vxWorks.sym 파일을 작성한다.

Start-up Script 작성#

  • 다음과 같은 형식으로 Start-up Script를 작성한다. 필요한 라이브러리 로드 후 어플리케이션을 실행한다.
cd "/tffs0/"
ld 1 < DDC_LIB.out
ld 1 < NEX1_1553LIB.out
ld 1 < NEX1_OS_MW.out
ld 1 < XXX_SW_OFP.out
sp XXXMain__Fv
  • 주의할 점은, 만약 C++로 작성된 이미지라면, nmppc로 해당 entry-point의 심볼을 확인하여 작성해야 한다.
  • 또는, entry-point만을 extern "C" {} 로 감싸 심볼형식을 바꿔주면, 쉘상에서 C 형식의 심볼을 바로 사용할 수 있다.
  1. extern "C"
    {
    void XXXMain()
    {
    // do something... } };

타켓 보드로의 파일 복사#

커널 이미지 복사#

  • Target Shell을 사용하여, /tffs0/ 에 vxWorks와 vxWorks.sym 파일을 복사한다.
-> copy "XXX:vxWorks","/tffs0/vxWorks"
-> copy "XXX:vxWorks.sym","/tffs0/vxWorks.sym"

작성된 라이브러리 및 어플리케이션 복사#

  • 어플리케이션 구동에 필요한 모든 파일들을 /tffs0 로 복사한다.
-> copy "XXX:DDC_LIB.out", "/tffs0/DDC_LIB.out"
-> copy "XXX:NEX1_1553LIB.out", "/tffs0/NEX1_1553LIB.out"
-> copy "XXX:NEX1_OS_MW.out", "/tffs0/NEX1_OS_MW.out"
-> copy "XXX:XXX_SW_OFP.out", "/tffs0/XXX_SW_OFP.out"

Start-up 스크립트 복사#

  • 위에서 작성된 스타트업 스크립트를 /tffs0 로 복사한다.
-> copy "XXX:xxx_start.cmd", "/tffs0/xxx_start.cmd"

파일 복사 스크립트#

  • 본 프로젝트에서 Zeroize를 한 후라면, 일일이 모든 파일들을 복사해 줘야하므로, 다음과 같이 파일 복사 스크립트를 만들어 사용해도 된다.

    • download.cmd 의 내용

     

     

USER_FLASH_Unlock
usrTffsConfig 0,0,"/tffs0"
copy "XXX:vxWorks","/tffs0/vxWorks"
copy "XXX:vxWorks.sym","/tffs0/vxWorks.sym"
copy "XXX:DDC_LIB.out","/tffs0/DDC_LIB.out"
copy "XXX:XXX_SW_OFP.out","/tffs0/XXX_SW_OFP.out"
copy "XXX:NEX1_1553LIB.out","/tffs0/NEX1_1553LIB.out"
copy "XXX:NEX1_OS_MW.out","/tffs0/NEX1_OS_MW.out"
copy "XXX:xxx_start.cmd","/tffs0/xxx_start.cmd"

부트 파라미터 수정#

  • Downloadable 프로젝트로 테스트할 당시 부트 파라미터는 다음과 같을 것이다.
  1. [VxWorks Boot]: p
    boot device : fei unit number : 0 processor number : 0 host name : XXX file name : vxWorks inet on ethernet (e) : 192.168.1.3:ffffff00 host inet (h) : 192.168.1.2 gateway inet (g) : 192.168.1.1 user (u) : xxx ftp password (pw) : xxx1 flags (f) : 0x8 target name (tn) : LSV-70C other (o) : fei0
  • TFFS Stand-Alone으로 할 경우, 부트 파라미터는 다음과 같이 수정해야 한다.
  1. [VxWorks Boot]: p
    boot device : tffs=0,0 unit number : 0 processor number : 0 host name : XXX file name : /tffs0/vxWorks inet on ethernet (e) : 192.168.1.3:ffffff00 host inet (h) : 192.168.1.2 gateway inet (g) : 192.168.1.1 user (u) : xxx ftp password (pw) : xxx1 flags (f) : 0x8 target name (tn) : LSV-70C startup script (s) : /tffs0/xxx_start.cmd other (o) : fei0
  • 쉘상에서 부트 파라미터 수정은 bootChange 명령을 사용하여 수정할 수 있다.

 

이 글은 스프링노트에서 작성되었습니다.