본문 바로가기

OS/vxworks

(31)
Workbench 3.x에서 자동 생성된 Makefile의 시작 위치 설정하기 기본적으로 Workbench에서 생성된 Makefile은 .wrmakefile 및 .wrproject의 정보를 기반으로 자동생성된다. 여러명이 같은 Workspace를 바라보다 보면, 임포트하는 위치에 따라 Mafefile의 위치가 달라 버전관리하기가 여간 까다로운게 아니다. 이에 완벽하지는 않지만, 나름 방법이 있어 정리하고자 한다. 자동생성된 Makefile을 보면, 주요 변수는 WS_ROOT_PATH와 PRJ_ROOT_PATH 임을 확인할 수 있다. 이를 GNU make 파일의 Overriding 을 이용하면, 원하는 위치의 Workspace를 사용할 수 있다. wrenv.exe -p 6.9 make -f Makefile WS_ROOT_PATH="C:/Somewhere/youwant" 잘만 활용하면..
WindRiver Workbench 3.2이상 에서 특정 Plug-in을 설치하기 플러그인을 설치하기 위해 Help 메뉴를 방문해서 Install New Software 메뉴를 찾을 수 없다. 일부러 숨긴듯 하다. 그래서... 1. Help -> Search 에서 "Updating and installing software" 의 키워드로 검색한다. 2. 검색되어 나온 Help 페이지에서 "Installing new software"를 선택한다. 3. 검색된 절차 중에서 "1. Click Help > Install New Software..." 을 선택하면, 새 창이 뜨면서 플러그인 설치가 가능할 것이다. 그래서 기껏 Workbench 3.2에 QAC++ 플러그인을 설치해봤는데 안된다. -_-;;
VxWorks Simulator 네트워크 연결하기 VxWorks 6.x의 Simulator에서 네트워크를 사용하기 위해서는 별도의 설정이 필요하다. 1. WRTAP 설정 1.1 제어판을 연다. 1.2 하드웨어 추가 마법사를 실행한다. 1.3 "예, 하드웨어를 이미 연결했습니다." 를 선택한다. 1.4 "새 하드웨어 장치 추가" 를 선택한다. 1.5 "목록에서 직접 선택한 하드웨어 설치(고급)" 을 선택한다. 1.6 "네트워크 어댑터" 를 선택한다. 1.7 %WindRiver%vxworks-6.x\host\x86-win32\bin 폴더에 있는 wrtap.inf 를 선택한다. ex) C:\WindRiver\vxworks-6.8\host\x86-win32\bin 1.8 "WindRiver WRTAP"을 선택한다. 1.9 설치를 수행한다. 2. vxsimnet..
PPC9A/SBC310에서 ethernet 카드의 mac address 가져오기 sysLib.c에 정의되어 있는 rsMacStringGet 함수나 mac 주소를 가지고 있는 sysMacAdrs 변수에 접근하면 된다. uiPortNum는 0 / 1 번 이더넷 인터페이스 카드를 구분할 때 사용된다. 예제 코드 #include "vxWorks.h" #include extern "C" STATUS rsMacStringGet( char* pcPortName /* "motetsec", etc */ , UINT uiPortNum /* e.g. 0, 1 etc */ , char* pcMacString /* where to put the return ascii string in the format "nn-nn-nn-nn-nn-nn" (i.e. at least 18 chars reqd) */ ); e..
Vxworks에서 ip / udp header checksum 계산 ip / udp 헤더 조작 후 checksum 생성할 필요가 있을때 아래의 api를 활용한다. #include #include #include 를 포함한 후에,(include base는 ../target/h/wrn/coreip 이다.) 아래의 함수를 사용한다. u_short get_ipsum (struct ip *); u_short get_udpsum (struct ip *, struct udphdr *); dhcp.h 헤더 파일이 없을 경우(vxworks6.5이후 버전에서는 ipnet으로 통합되었다고한다.) 아래의 링크를 확인하여 직접 구현해도 된다. http://www.2beanet.com/vxworks/target/src/dhcp/interface.c.html
Vxworks Error Codes http://www-kryo.desy.de/documents/vxWorks/V5.5/vxworks/errno/errnoNumList.html Decimal Hexadecimal Macro Name 1 0x1 EPERM 2 0x2 ENOENT 3 0x3 ESRCH 4 0x4 EINTR 5 0x5 EIO 6 0x6 ENXIO 7 0x7 E2BIG 8 0x8 ENOEXEC 9 0x9 EBADF 10 0xa ECHILD 11 0xb EAGAIN 12 0xc ENOMEM 13 0xd EACCES 14 0xe EFAULT 15 0xf ENOTEMPTY 16 0x10 EBUSY 17 0x11 EEXIST 18 0x12 EXDEV 19 0x13 ENODEV 20 0x14 ENOTDIR 21 0x15 EISDIR 22 ..
Vxworks6에서 arpResolve 구현 Vxworks6.x에는 Vxworks5.x에서 있었던 arpResolve 함수가 없다. 윈드리버에 문의한 결과 아래와 같은 arpResolve의 구현물을 얻었다. arpResolve #ifndef IPCOM_KERNEL #define IPCOM_KERNEL #endif #include #define IPCOM_USE_CLIB_PROTO #include #include #include #include #include #include "ipnet.h" #include "ipnet_h.h" #include "ipnet_eth.h" #include "ipnet_pkt_queue.h" #include #include #include int arpResolve(char *pIpAddr, char *pMac, int..
inetLib inet_addr( ) - convert a dot notation Internet address to a long integer inet_lnaof( ) - get the local address (host number) from the Internet address inet_makeaddr_b( ) - form an Internet address from network and host numbers inet_makeaddr( ) - form an Internet address from network and host numbers inet_netof( ) - return the network number from an Internet address inet_netof_string( ) - extract..