文章

ETAS-AP的安装教程

[!NOTE]

sudo密码:dev12345

1. 下载安装VirtualBox虚拟机

Downloads – Oracle VM VirtualBox

virtualbox-download

virtualbox-install

3. 解压etas压缩包并打开

etas-open

etas-desktop

4. 修改默认键盘布局

keyboard-layout1

keyboard-layout2

5. 关闭vitrualbox与宿主机时间同步

在virtualbox输入以下命令:

1
VBoxManage list vms

VBoxManage-list

记住上述的虚拟机的名称,然后输入以下命令禁止时间同步:

1
VBoxManage setextradata "rta_vrte_sk_v3.1.0_2023-08-04T1006" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

VBoxManage-setextradata

[!CAUTION]

修改完后,需要重启virtualbox。

6. 增加systemd服务,开机修改系统时间

[!CAUTION]

由于etas的license早已过期,需要修改系统时间才能使用!

1
sudo vim /etc/systemd/system/set-date.service

打开后,添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Date to 20240201
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/date 020100002024

[Install]
WantedBy=multi-user.target

保存后,输入以下命令:

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable set-date.service
sudo systemctl start set-date.service

[!NOTE]

之后每次重启后,就会自动修改系统时间。

7. 配置ssh,实现免密登录

etas的虚拟机默认有两个网络,如下所示:

etas-network

  • 网卡1:用于访问外网。
  • 网卡2:用于本机的网络。

[!TIP]

ssh连接建议使用网卡2的网络。

在虚拟机的终端上,输入ifconfig查看网卡2的ip地址。

1
2
3
4
5
6
7
8
9
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.2  netmask 255.255.0.0  broadcast 192.168.255.255
        inet6 fe80::5c5e:c9ff:fea7:2155  prefixlen 64  scopeid 0x20<link>
        ether 5e:5e:c9:a7:21:55  txqueuelen 1000  (Ethernet)
        RX packets 72  bytes 11498 (11.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 56  bytes 6512 (6.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

网卡2就是br0。由此得知网卡2的ip地址为192.168.56.2

现在就可以通过ssh工具访问此虚拟机,例如:MobaXterm

现在每次访问虚拟机,都需要输入用户密码,比较麻烦,建议将ssh公钥添加至虚拟机。

  1. 首先在windows的用户目录下,找到id_rsa.pub文件,复制里面的内容。

    [!NOTE]

    没有的话,需要通过ssh-keygen生成。

  2. 在虚拟机终端,输入以下命令

    1
    2
    
    cd ~/.ssh
    touch authorized_keys
    
  3. 将之前复制的内容拷贝至authorized_keys文件中。

8. 使用vscode编写代码

在etas的虚拟机中,编写代码较为困难,无论是ISOLAR-VRTE还是mousepad。在上面配置了ssh远程后,就可以使用vscode的remote-ssh插件访问虚拟机。

目前我所使用的vscode开发插件如下:

vscode-extend

  • clangd:c/c++语法支持。类似于c/c++插件,提供了智能补全,跳转,错误提示等功能。
  • CMake:cmake语法支持。提供了智能补全,跳转,错误提示等功能。
  • Camke Tools:cmake工具,在vscode上实现cmake等各个功能,例如cmake的构建,编译,安装,打包等。
  • CodeLLDB:debug工具。

其中CodeLLDB可能因为网络原因安装失败,需要手动安装。

clangd插件需要在虚拟机中安装llvm,建议从llvm官网下载预编译后的压缩包。建议将压缩包解压到/opt目录下。

可能clangd无法被打开,如下:

1
2
developer@rta-vrte-sk:/opt/clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04/bin$ ./clangd
./clangd: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

这就需要安装libncurses5,但是etas所使用的系统通过apt不能安装libncurses5。如下:

1
2
3
4
5
6
7
developer@rta-vrte-sk:~$ sudo apt install libncurses5
[sudo] password for developer: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libncurses5

这就需要修改apt源。将/etc/apt/sources.list修改如下:

1
2
3
4
5
deb http://deb.debian.org/debian bullseye main
deb http://deb.debian.org/debian-security bullseye/updates main
deb http://deb.debian.org/debian bullseye-updates main

deb http://deb.debian.org/debian buster main

这里增加了deb http://deb.debian.org/debian buster main

然后运行以下命令:

1
2
sudo apt update
sudo apt install libncurses5

[!NOTE]

建议安装完libncurses5后,将apt源文件还原。还原后,还需要输入sudo apt update

在vscode中打开远程设置:

vscode-setting

添加以下内容:

1
2
3
{
    "clangd.path": "/opt/clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04/bin/clangd"
}

当目前为止,准备工作已经做完。现在使用vscode打开一个etas项目,例如打开AraCM_All。

clangd-error

此时,clangd的部分功能已经启用,但发现存在部分问题。因为clangd需要compile_commands.json文件,此文件是可以通过cmake构建生成的。因此需要使用vscode构建此工程。

首先创建工作区的配置文件

vscode-setting1

添加以下内容:

1
2
3
4
5
6
7
8
9
10
{
    "cmake.configureEnvironment": {
        "SDKROOT": "/opt/etas/vrte/sdk/linux-x86_64"
    },
    "cmake.configureArgs": [
        "-DCMAKE_TOOLCHAIN_FILE=/home/developer/vrte/linux_config.cmake",
        "-DVRTE_FS=/usr/local/etas/vrte/vrte_fs/vrte_fs",
        "-DFLATC=/usr/local/etas/vrte/flatc/flatc"
    ]
}

使用vscode的cmake tool插件构建项目。

cmake-tool

cmake-tool1

在等待构建完成后,随便打开一个c/c++源码文件,等待片刻后,就会发现clangd正常工作了。

[!NOTE]

因为clangd的处理需要一些时间,在处理完后,在目录下会生成.cache文件,之后就不需要等待了。

clangd-successful

[!CAUTION]

不建议使用vscode的cmake插件编译工程,推荐使用etas的rvbuild。因为etas的编译其实并不是使用的虚拟机默认的gcc工具链,而是使用了一个x86_64的交叉编译工具链。x86_64的交叉编译工具链路径如下:/opt/etas/vrte/linux-toolchain/sysroots/x86_64-etassdk-linux/usr/bin/x86_64-etas-linux

本文由作者按照 CC BY 4.0 进行授权