This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

*/

vSomeIP version 2.14.16 빌드

CommonAPI C++ with SOME/IP Example 에서

$git clone http://github.com/GENIVI/vSomeIP.git 하면 현재(2020년2월27일) 설치되는 버젼이 vsomeip 3.1.7.1의 코드가 설치되는데 본 코드로 빌드하면 capicxx-someip-runtime 빌드시 vsomeip를 찾을수 없다는 오류가 발생한다.

vSomeIP 디렉토리에서 아래 명령어로 로그와 현재 버전을 체크한다.
$git log

$ git show

vsomip 2.14.16버전으로 돌리고자하면 로그상에서 몇번째 아래에 있는지 확인하고(여기서는 1단계 아래) 아래와 같이 git checkout HEAD~1을 해준다. 5단계 아래일 경우 git checkout HEAD~5. 가장 최신으로 돌아올 경우 git checkout master

$git checkout HEAD~1


이제 다시 예제로 돌아가서 libvsomeipxxx.so들을 생성하고 commonapi 라이브러리들을 build하자.


관련링크 :
CommonAPI Stub? Proxy?
SOME/IP 헤더 구조와 fdepl파일 관계
CommonAPI Generator로 생성되는 file
CommonAPI C++ with SOME/IP Example
Franca 설치 가이드
Linux Xubuntu에 CommonAPI C/C++ 개발환경 구축하기


Ubuntu 16.04에서 GNOME install


터미널에서 다음과 같이 레포지토리를 추가하고

$ sudo add-apt-repository ppa:gnome3-team/gnome3-staging
$ sudo add-apt-repository ppa:gnome3-team/gnome3

업데이트 하고나서 gnome을 서apt-get으로 설치한다.

$ sudo apt-get update

$ sudo apt-get install gnome

64bit Linux환경에서 64/32bit으로 compile

64bit Linux환경에서는 기본적으로 gcc를 사용할 경우 64bit용으로 컴파일된다. 당연히 32bit Linux환경에서는 32bit용으로 컴파일된다.

gcc에서 -m옵션으로 비트수를 설정할수 있다
-m32 : 32bit binary
-m64 : 64bit binary

현재사용하고 있는 환경과 다른 bit용으로 컴파일하고자 할때 gcc-multilib의 설치가 필요하다.
sudo apt-get install gcc-multilib

해당라이브러리가 설치되기 전에 -m옵션을 통해 컴파일하면 아래와 같은 오류가 발생한다.
unrecognized emulation mode: 32
라이브러리 설치하면 정상적으로컴파일되는것을 확인 할 수 있다.

32bit로 컴파일
gcc -o test test.cpp -m32

64bit로 컴파일
gcc -o test test.cpp -m64

SOME/IP Message Header와 CommonAPI의 fdepl파일 관계



SOME/IP Header 구조

  • Message ID(32 bit) : Message ID는 전체 차량에서 고유해야 한다.
    • Service ID(16 bit) : 각 서비스의 고유 값
    • Method ID(16 bit) : 0~32767까지의 값을 가진다. 이벤트는 32768~65535 값을가진다.
  • Length(32 bit) : Length다음부터 즉 Client ID부터 Payload를 포함한 길이. Byte 단위 
  • Client ID(16 bit) : ECU 내에서 호출하는 클라이언트의 고유 식별자
  • Session ID(16 bit) : Subscriber에 의해 선택된 unique number
  • Protocol Version(8 bit) : 프로토콜 버전
  • Interface Version(8 bit) : 인터페이스 버전
  • Message Type(8 bit) : 메세지 타입
  • Return Code(8 bit) : 리턴 코드
  • Payload(가변길이) : 전송하고자하는 data
  • Endian : BIG Endian

fdepl파일 예

위의 헤더중에 fdepl파일에서 사용되는 ID는 Service ID(SomeIpServiceID), Method ID(SomeIpMethodID)가 파일내에서 사용되며, fdepl파일내에서 InstanceId, SomIpInstanceID는 SOME/IP 헤더에는 없고 SOME/IP-SD(Service Discovery) 포멧에서 Entries array에 포함되어 있다.
commonapi-c-with-someip-example

    import "platform:/plugin/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl"
    import "HelloWorld.fidl"
    define org.genivi.commonapi.someip.deployment for interface commonapi.HelloWorld {
      SomeIpServiceID = 4660 method sayHello {  // 각 서비스의 Unique value
         SomeIpMethodID = 31000                 // 0~32767까지의 값. 범위를 벗어나면 SomeIP Generator에서 오류생성
      }
    }
    define org.genivi.commonapi.someip.deployment for provider MyService {
      instance commonapi.HelloWorld {
         InstanceId = "test"                    // registerService(), buildProxy()에서 같은 값을 사용해야한다.
         SomeIpInstanceID = 22136               // 
      }
    }

    Reference

    관련 페이지

    files list file for package 'libgcc-5-dev:amd64' is missing final newline 오류

    환경 :
     - VMware
     - Ubuntu 16.04 x64

    시스템에 git을 설치하려 sudo apt-get install git 을 했는데 다음과 같은 오류 발생
    sudo apt-get install git

    여러가지  검색결과 여기서 해결방법을 찾았다.
    우선/var/lib/dpkg/info/에 있는 아래 파일들을 제거한다.
    $ ls /var/lib/dpkg/info/libgcc-5*
    /var/lib/dpkg/info/libgcc-5-dev:amd64.list
    /var/lib/dpkg/info/libgcc-5-dev:amd64.md5sums

    $ sudo rm /var/lib/dpkg/info/libgcc-5*

    2개파일을 지우고 다음 세개의 명령어를 실행한다.
    sudo dpkg --configure -a
    sudo apt update
    sudo apt upgrade
    그리고, 처음에 오류났던 git설치 작업을 계속한다.


    Ubuntu root 패스워드 설정하기

    Ubuntu linux를 사용하다 보면 root 계정으로 작업해야할 때가 있다
    그때 사용하는 명령어로 su, sudo 등이 있는데 password가 틀리다고 나올경우가 있다. 이럴때 패스워드를 새롭게 설정해주는 명령어로 passwd 가 사용된다.

    [  passwd 유저명 ]

    root 패스워드를 설정 : [ sudo passwd root ]

     $ sudo passwd root 

    현재 로그인되어 있는 계정의 패스워드를 입력하라는 메세지가 나온다.
    현계정의 패스워드를 입력하고나면 새로운 패스워드를 입력하라고 나오고, 확인을 위해 재입력하라는 메세지가 순차적으로 나온다.


    su : Super User의 약자로 최상위 사용자를 의미한다. 터미널에서 su명령어를 사용하면 해당 터미널에서 일시적으로 root권한을 사용할 수 있다.

    sudo : Super User do의 의미로 일시적으로 super user의 권한으로 명령어를 실행

    Windows환경에서 Qt 개발환경 구축하기 - 2/2

    Qt Creator 설치하기 - 2

    Windows환경에서 설치 

    Qt Creator 설치하기 - 1페이지에서 다운로드 받은 인스톨 파일(qt-unified-windows-x86-3.1.1-online.exe)을 실행한다.
    Qt계정, Qt확장모듈의 가격 등과 라이센스들을 확인할 수 있다. 그냥 "Next" 버튼을 클릭한다.
    Qt 계정이 있으면 기입하고, 계정이 필요하면 등록한다.. 여기서는 그냥 "Skip" 버튼을 클릭

    Setup 화면에서 Setting은 그대로 두고 "Next"버튼 클릭
    뭔가 보내는건 언제나 Disable.... "Next"
    설치 폴더를 정해주세요.. 그리고.. "Next"
    설치할 컴포넌트 선택에서 Qt버전은 1.12.6으로하고 거기에 컴파일러는 MinGW 7.3.0 64bit로선택한다.  선택해도 실제 컴파일러는 설치되지 않는다.
    MinGW 와 Cmake는 위와 같이 Developer and Designer Tools에서 선택하면 자동으로 설치된다. Visual Studio(MSVC)를 선택할 경우 별도로 설치해야한다.
    라이센스 사용에 동의 체크하고 "Next"
    "Install"버튼을 클릭하면 선택된 컴포넌트들이 차래로 설치된다.
    Completing the Qt wizard가 나오면 설치 끝...