이 문서에서는 VxWorks 6.9 타깃 실행 환경에 대해 Wind River Workbench IDE를 사용하여 타깃 테스트를 진행하는 방법에 대해 서술합니다.

적용 예시 환경은 다음과 같으며, 로그 인터페이스는 TCP 소켓 통신을 사용하였습니다.

타깃 테스트 적용 및 실행 순서

1. 타깃 환경 설정


  • [프로젝트 우클릭] -> [특성] -> [타깃 테스트] -> [타깃 환경] 설정에서 실행 탭의 로그 인터페이스만 작성하여 적용 후 닫기를 합니다. 이 문서에서 다루는 환경은 빌드 및 실행을 수동으로 진행하므로, 다른 탭들은 테스트에 영향을 미치지 않습니다. 아래 코드는 예시 환경(VxWorks 6.9)에 적용된 로그 인터페이스 입니다.
//Do not modify this header file.
#include "cs_tfx_types.h"

//Below is an example.

#define AF_INET	2
#define SOCK_STREAM 1
#define htons(x) (x)

struct in_addr {
	unsigned int s_addr;
};

struct sockaddr_in {
	unsigned char sin_len;
	unsigned char sin_family;
	unsigned short sin_port;
	struct in_addr sin_addr;
	char sin_zero[8];
};

int sock;
struct sockaddr_in addr;

//This function called at test start.
void cs_io_initialize()
{
 sock = socket(AF_INET, SOCK_STREAM, 0);
 if (sock < 0)
 {
  printf("create socket failed\n");
 }

 memset (&addr, 0, sizeof(addr));
 addr.sin_addr.s_addr = inet_addr("211.116.222.180"); // CT 2023.12가 설치된 PC의 IP 주소
 addr.sin_port = htons(2019); // 타깃 로그 수집기에서 사용할 포트
 addr.sin_family = AF_INET;
 addr.sin_len = sizeof(addr);

 if ((connect(sock, (struct sockaddr_in *)&addr, sizeof(addr))) < 0) {
  printf("connect failed");
 }
 else
  printf("connected to server!\n");

 printf("Controller Tester Init End!!!!\n");
}

//This function called at test end.
void cs_io_finalize()
{
 //Close socket.
 close(sock);
}

void cs_io_flush()
{

}

//This function prints the test result
void cs_io_putbyte(char v)
{
 //Send the target test result.
 printf("%c",v);
 send(sock, &v, 1, 0);
}

2. 타깃 테스트 실행

  • 정확한 테스트를 위해서 [타깃 테스트 케이스 실행] 메뉴로 테스트 케이스 단위 실행합니다. 메모리 여유가 있을 경우, 여러 테스트 또는 함수를 한 번에 테스트할 수 있습니다.


  • 타깃 테스트 실행 시 CT 2023.12의 프로젝트가 위 상태처럼 잠기게 됩니다.

3. 빌드

  • 내보내기 된 코드를 Wind River Workbench IDE에서 Rebuild Project 합니다.

4. 타깃 로그 수집기 설정

  • 로그 인터페이스에서 작성한 포트에 맞춰서 타깃 로그 수집기를 설정 후 실행합니다.
  • 타깃 로그 수집기는 %appdata%\CodeScroll\TargetLogCollector\TargetLogCollector.exe에 설치되어 있습니다.
  • cmd에서 타깃 로그 수집기를 최초 실행하면 %appdata%\CodeScroll\TargetLogCollector\setting.ini가 생성됩니다. 해당 파일로 타깃 로그 수집기 설정을 할 수 있습니다.
  • 아래 예시는 로그 인터페이스 예시에 맞게 설정한 타깃 로그 수집기 설정입니다.
[LogReceiveServer]
; TCP, UDP server port
port=2019
; tcp, udp, uart or serial
protocol=tcp
; timeout(second)
timeout=60
lastString=CSET#
; serial(UART) port (Windows: COM#, Linux: /dev/ttyS#)
serialPort=COM1
; serial port setting
baudRate=9600
dataBits=8
stopBits=1
parity=0
flowControl=0

[ScanLog]
; log directory(default: scan/log)
dir=
; log file extension(if empty, scan everything)
fileExtension=log
; begin character when filtering the string of log (ascii code with value separator ;)
beginCharacter=4;5;6
; end character when filtering the string of log (ascii code with value separator ; , 10 is LF)
endCharacter=10

[LogSendServer]
; send log to Controller Tester
port=2020

5. CT 2023.12의 타깃 로그 수집기 설정

  • CT 2023.12의 [환경설정] -> [타깃 테스트] -> [타깃 로그 수집기]에서 기본 타깃 로그 수집기 사용을 선택 후 자동 감지를 켭니다.

6. 타깃에서 바이너리 실행

  • 빌드된 바이너리를 VxWorks OS에 옮겨서 타깃에 올려 실행합니다.

7. CT 2023.12에서 코드 복원

  • 타깃 테스트 로그를 가져오기 위해 CT 2023.12에서 코드를 복원합니다.

8. 타깃 테스트 로그 가져오기

  • 설정한 자동 감지 주기에 따라 작성된 로그를 자동으로 불러옵니다.

Need more help with this?
Don’t hesitate to contact us here.

Thanks for your feedback.