2009-06-09 8 views

답변

3

우리는 최근 VxWorks를 실행하는 PowerPC 시스템의 코드를 Linux를 실행하는 Intel 시스템으로 이식 한 반대 변환을 수행했습니다. 나는 운영 체제 간의 차이점까지 많은 걸림돌을 치는 것을 기억하지 않는다. 분명 OS 특정 API에 대한 호출은 변경되어야하며 우리는 이러한 함수를 광범위하게 사용하지 않았습니다.

가장 큰 문제는 운영 체제의 차이가 아니라 PowerPC와 Intel 하드웨어의 차이입니다. PowerPC는 Big Endian이고 Intel은 Little Endian입니다. 우리의 소프트웨어는 C로 작성되었으며 바이트의 순서에 대해 많은 가정을 가졌습니다. 그리고 이것은 다시 원활하게 작동하도록하는 절대적인 악몽이었습니다. 말 그대로 비트 필드를 정의하고 제대로 작동하도록 다시 정렬해야하는 수백 개의 구조가있었습니다. 우리는 GCC에서 #pragma를 정의하여 (#pragma reverse_bitfields) 이러한 비트 필드를 뒤집은 #pragma를 구현했습니다.

0

포팅하는 애플리케이션에 대해 알지 못해도 알기가 어렵습니다. 리눅스 라이브러리와 API 호출은 무엇을 사용합니까? 자체적으로 포함되어 있습니까? 아니면 리눅스 명령 줄 도구와 스크립트를 사용하여 업무를 수행합니까?

평균처럼, 엔디안은 당신이 예상 한 것보다 더 많은 문제를 야기 할 수 있습니다 - 특히 준비가되어 있지 않은 경우.

+0

답장을 보내 주셔서 감사합니다. 이 응용 프로그램은 pthread, 소켓 라이브러리, 임계 섹션 및 뮤텍스 처리 API를 사용합니다. VxWorks로 이식 할 때 어떤 문제가 발생하는지 알려주십시오. – ebaccount

1

VxWorks 엔디안, 아키텍처 패킹 및 메모리 정렬로 실행중인 프로세서에 따라 문제가 발생할 수 있습니다. 마지막으로 VxWorks를 사용했을 때 유닉스 환경을 쉽게 모방 한 pthread, 소켓 및 뮤텍스 레이어를 지원했습니다.

2

대상이되는 VxWorks 버전과 실제 대상 프로세서 자체에 따라 크게 다릅니다. 당신이 처리해야 할 한 가지는 페이징 된 메모리 시스템이나 가상 메모리가 없다는 것입니다. 환경 자체는 리눅스 시스템보다 훨씬 제한적입니다. 때로는 응용 프로그램을 포팅하는 작업이 리눅스 에서처럼 리소스가 무제한이 아니기 때문에 전체 아키텍처 수준으로 돌아갑니다.

다른 팁 :

  • 라이센스 Vx 웍스 등이 소스 코드 만 사용할 수
  • 개발주기에서 가능한 한 빨리 실제 물리적 대상을 사용을 가지고; 정확하게 대상을 모방하는 시뮬레이터를 고려하지 마십시오.
  • 필요에 따라 TSR (기술 지원 요청)을 사용하십시오. 나는 그들이 TSR을 만들 권리를 어떻게 구조화하는지 모르지만, 아무도 이것들을 값 싸게 내버려 두지 마십시오.
관련 문제