ETAS-AP的安装教程
[!NOTE]
sudo密码:dev12345
1. 下载安装VirtualBox虚拟机
Downloads – Oracle VM VirtualBox
3. 解压etas压缩包并打开
4. 修改默认键盘布局
5. 关闭vitrualbox与宿主机时间同步
在virtualbox输入以下命令:
1
VBoxManage list vms
记住上述的虚拟机的名称,然后输入以下命令禁止时间同步:
1
VBoxManage setextradata "rta_vrte_sk_v3.1.0_2023-08-04T1006" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
[!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的虚拟机默认有两个网络,如下所示:
- 网卡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公钥添加至虚拟机。
首先在windows的用户目录下,找到id_rsa.pub文件,复制里面的内容。
[!NOTE]
没有的话,需要通过ssh-keygen生成。
在虚拟机终端,输入以下命令
1 2
cd ~/.ssh touch authorized_keys
将之前复制的内容拷贝至authorized_keys文件中。
8. 使用vscode编写代码
在etas的虚拟机中,编写代码较为困难,无论是ISOLAR-VRTE
还是mousepad
。在上面配置了ssh远程后,就可以使用vscode的remote-ssh
插件访问虚拟机。
目前我所使用的vscode开发插件如下:
- 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中打开远程设置:
添加以下内容:
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的部分功能已经启用,但发现存在部分问题。因为clangd需要compile_commands.json文件,此文件是可以通过cmake构建生成的。因此需要使用vscode构建此工程。
首先创建工作区的配置文件
添加以下内容:
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插件构建项目。
在等待构建完成后,随便打开一个c/c++源码文件,等待片刻后,就会发现clangd正常工作了。
[!NOTE]
因为clangd的处理需要一些时间,在处理完后,在目录下会生成.cache文件,之后就不需要等待了。
[!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