본문 바로가기

OS

(49)
Raw Socket :: 패킷을 구성하여 전송하자. Vxworks 6.x에서 Raw Socket을 사용하여, IP/UDP 헤더를 조작하여 해당 패킷을 전송하는 예제이다. UDP 체크섬은 0을 채워 전송하였다. #include #include "vxLib.h" #include "ipProto.h" #include "netinet/in.h" #include "netinet/in_systm.h" #include "netinet/if_ether.h" #include "netinet/ip.h" #include "netinet/ip_icmp.h" #include "netinet/udp.h" #include "sys/socket.h" #include "sockLib.h" #include "inetLib.h" static int s_iIpId = 0; #pragma p..
VxWorks에서 arpLib 사용 VxWorks에서 이더넷 헤더의 mac 어드레스를 조작하기 위하여 arpLib를 사용하였다. 간단히 사용방법을 적는다. 10.100.10.2 : vxworks 임베디드 보드 10.100.10.90 : 노트북 상황은 이렇다. 10.100.10.90에서 네트워크에 존재하지 않는 10.100.10.3으로의 arp를 요청하였을때 10.100.10.2의 vxworks에서 arpLib를 사용하여 10.100.10.3 arp 요청이 왔을때 특정 맥 주소로 응답하게 하는 것이 목적이다. 이를 위하여 vxworks의 arpLib를 사용한다. 전반적인 API는 링크를 확인한다. 커널 옵션에서 아래의 컴포넌트를 추가한다. Network Components >> Network Utility Components > arpLib..
vxWorks Standalone 시스템 구축 vxWorks로 개발한 이후에 Stand-alone 으로 시스템을 구동시키고자 할때 쓰이는 방법을 소개하고자 한다. 흔히 사용하는 방법으로는 vxWorks의 커널 프로젝트에서 usrAppInit.c 함수에 사용자의 Entry-point를 적으면 된다. 하지만, 이 방법을 사용하고자 하려면 사용자의 이미지가 vxWorks 커널에 포함되어야 하는 단점이 존재한다. 목표로하는 Stand-alone 시스템은 사용자이미지를 .out 의 형태로 유저 플래쉬에 저장하며 커널 로드시 해당 라이브러리를 동적으로 로딩하고, Entry-point의 심볼을 동적으로 찾아 수행하도록 하는데 있다. 볼드체로 된 부분이 추가된 부분이다. define 문으로 동작형태를 구분하고 있다. /* usrAppInit.c - stub app..
PPC9A 부트롬 복구 1. PPC9A 점퍼세팅을 바꿔 Recovery Boot로 부팅하도록 세팅한다. E14는 In으로 E12는 out으로 설정 2. PPC9A 점퍼세팅을 바꿔 Boot Flash와 User Flash Write를 활성화한다. E15를 In으로 설정 3. Recovery Boot로 부팅하여 U-Boot가 뜨는것을 확인한다. 4. Host컴퓨터에서 tftp 설정을 한다. C:\WindRiver\vxworks-6.6\host\x86-win32\bin\Tftpd32.exe 를 실행한다. Browse로 bootrom.bin 이 있는 곳을 가르키도록 한다. 5. U-Boot의 IP를 설정한다. set serverip X.X.X.X set ipaddr X.X.X.X 6. Flash의 Write Protect를 비활성화한..
VxWorks 5.5 - Expat으로 XML 프로그래밍 Expat? Expat은 SAX형 XML파서로 이벤트 기반으로 데이터 처리를 한다. XML 파싱할 때 DOM과 같이 XML 크기와 비례하여 메모리가 증가하지 않아, 메모리 제약이 상대적으로 큰 임베디드 장비에서 사용하기 적합하다. 본 문서는 1553 Framework의 일환으로 개발중인 XML 파서에서 사용된 Expat을 소개하는 것을 목적으로 한다. 더 자세한 DOM과 SAX의 차이는 아래의 표를 참고한다. 구분 DOM SAX 파싱 기반 트리 기반 이벤트 기반 데이터 접근 방식 랜덤 순차 메모리 사용 방식 데이터 크기에 비례해서 증가 데이터 크기와 상관없이 일정 메모리 사용 적합한 데이터 경량 데이터 경량/대용량 데이터 데이터 재사용 가능 불가능(재파싱해서 사용할 수 있음) License MIT 라이센..
VxWorks 5.5 - TFFS를 사용하여 Stand-alone으로 부팅하기 목차 목적 방법 Stand-Alone 용 커널이미지 작성 Start-up Script 작성 타켓 보드로의 파일 복사 커널 이미지 복사 작성된 라이브러리 및 어플리케이션 복사 Start-up 스크립트 복사 파일 복사 스크립트 부트 파라미터 수정 목적# Downloadable 이미지로 충분한 테스트를 거치고 나면, Stand-Alone 이미지를 해당 보드에 올려 자체 부팅이 되어 원하는 Entry-Point를 실행시켜야 할 필요성이 있다. 이 때 사용되는 방법으로, TFFS 파일시스템에 커널, 라이브러리, 실행 코드등을 저장하여 startup script로 실행하는 방법을 설명한다. 방법# Stand-Alone 용 커널이미지 작성# Stand-Alone용 커널이미지를 작성한다. Start-up Script ..
VxWorks 6.6에서 Static Library 만들기 VxWorks 6.6에서 사용할 Statc Library 만드는 법이다. 프로젝트에는 따로 Static Library를 위한 메뉴는 없다. 일단 Downloadable Kernel Module 프로젝트를 생성한다. 그러면 기본적으로 XXX.out 과 같은 형태의 아웃풋이 생성된다. Project Explorer 트리에서 Build Targets를 찾아들어가 XXX.out 파일을 선택하고 Properties 메뉴를 선택한다. 팝업으로 뜬 설정메뉴에서 Build Target 탭을 선택한 후 Build Tool을 Librarian으로 변경하면 된다. 변경된 내용을 적용하면 아래와 같이 바로 적용되는 것을 확인할 수 있다. 이 글은 스프링노트에서 작성되었습니다.
SBC310 AMP 설정 SBC310에서 AMP 모드로 동작시 각각의 코어들이 메모리를 공유하여 데이터를 주고 받을 수 있다. 커널 Configuration에서는 설정을 할수 없고(BSP Version 2.0/1.3 버전까지는...) BSP 폴더내의 rsSBC310.h를 열어 조작해야한다. 코드를 열어 INCLUDE_SM_HIGH_MAP을 설정해 주면된다. 이로써 Core0과 Core1은 SBC_SHARED_MEM_ADRS 주소를 통해 SBC_SHARED_MEM_SIZE 만큼의 공유 영역을 가지게 된다. /* Define to move the intercore shared */ /* memory component to the top of */ /* core 1 physical memory */ #define INCLUDE_SM_..