如何安装Windows版VRTE2.1.0开发环境并进行开发

  1. 前言(Abstract)

本文档记录了如何安装Windows版VRTE2.1.0开发环境并进行开发,并且总结了当部署在安装了比较陈旧版本Linux内核(如<4.5)和库的板子上所遭遇的困难,如S32V234EVB。

    1. Definitions and Abbreviations

Acronym

Definition

ECU

Electronic Control Unit

RTE

Run-Time Environment

Table 1.1 - Definitions and abbreviations

    1. Configuration Tools

S. No.

Software

Version

Description

1

ISOLAR-AB

9.2.2

Used for SWC and RTE configuration and code generation for this release.

2

RTA-VRTE

2.1.0

Used for AUTOSAR middleware.

Table 1.2 – Configuration Tools

 

  1. 相关文档(Related documents Documentation)
  • 0. RTA-VRTE V2.1.0 Getting Started Guide
  • 1. RTA-VRTE V2.1.0 User Guide
  • 2. ISOLAR-AB_V9.2.2_ReleaseNotes.pdf
  1. 安装包和环境搭建(Installation package and environment setup File)
    1. RTA-VRTE 2.1.0.exe

    RTA-VRTE 2.1.0.exe是Windows版本VRTE 2.1.0的安装包。

     当安装完成后,默认将在C:\VRTE_SDK_2.1.0目录下生成VRTE SDK;默认将在C:\Program Files (x86)\ETAS\RTA-VRTE_2.1.0目录下生成全部文件的根目录。VRTE 2.1.0的使用不需要license。

Figure 3‑1 VRTE 2.1.0 SDK安装路径

Figure 3‑2 VRTE 2.1.0 全部文件安装路径

    1. ISOLAR-AB_V9.2.2_Image.zip

    ISOLAR-AB_V9.2.2_Image.zip中的ISOLAR-AB_V9.2.2.zip是Windows版本ISOLAR-A_Adaptive安装包。

    ISOLAR默认安装在C:\ETAS\ISOLAR-AB_V9.2.2。

Figure 3‑3 ISOLAR-AB_V9.2.2安装路径

ISOLAR需要安装ISOLAR-A Adaptive AddOns.exe插件才能使用Autosar AP开发需要的相关工具。

ISOLAR-A_ADAPTIVE安装包路径如下:

ISOLAR needs install ISOLAR-A Adaptive AddOns.exe add-on to make Autosar AP related tools be usable.

The ISOLAR-A_ADAPTIVE installer is available here:

ISOLAR-AB_V9.2.2_Image\Updatesites\ISOLAR-A_Adaptive\Addons\ISOLAR-A Adaptive AddOns.exe

Figure 3‑4 ISOLAR-A Adaptive AddOns.exe存在路径

    ISOLAR需要license_ISOLAR-ADAPTIVE才能使用。请从ETAS获得。

    ISOLAR need ISOLAR-ADAPTIVE license. Please consultant to ETAS.

Figure 3‑6 ISOLAR-AB_V9.2.2运行界面

    1. cmake-3.24.1-windows-x86_64.msi

    cmake-3.24.1-windows-x86_64.msi是Windows版本cmake安装包,下载地址:Download | CMake。

    cmake-3.24.1-windows-x86_64.msi is the Windows version of cmake installation package. Download Address: Download | CMake

    cmake默认安装在C:\Program Files\CMake。检查系统环境变量Path是否包含CMake命令。

    cmake is installed at C:\Program Files\CMake definitely. Please check the system env whether the Path variable involves the CMake bins.

Figure 3‑7 cmake安装路径

Figure 3‑8 cmake环境变量设置

注:该版本cmake已经验证,使用其他版本不保证不会遇到问题。

Notice: This version of cmake is already verified, using other versions does not guarantee that there will be no problems.

    1. mingw-get-setup.exe

    mingw-get-setup.exe是Windows版本mingw installation manager安装包。通过mingw installation manager安装所有与make命令相关的包。

    mingw-get-setup.exe is the Windows version of mingw installation manager installation package. Through mingw installation manager you should install all packages related to make command.

Figure 3‑9 mingw版本信息

Figure 3-10 mingw installation manager安装项

Figure 3-11 mingw installation manager安装项

    mingw默认安装在C:\MinGW。检查系统环境变量Path是否包含mingw命令。

    mingw is installed at C:\MinGW definitely. Please check the system env whether the Path variable involves the mingw bins.

Figure 3‑12 mingw安装路径

Figure 3‑13 mingw环境变量设置

注:该版本mingw已经验证,使用其他版本不保证不会遇到问题。

Notice: This version of mingw is already verified, using other versions does not guarantee that there will be no problems.

    1. gcc-arm-10.2-2020.11-mingw-w64-i686-aarch64-none-linux-gnu.tar.xz

    gcc-arm-10.2-2020.11-mingw-w64-i686-aarch64-none-linux-gnu.tar.xz是Windows 64版本以ARM 64 Linux为目标的gcc安装包。下载地址:Downloads | GNU-A Downloads – Arm Developer

    gcc-arm-10.2-2020.11-mingw-w64-i686-aarch64-none-linux-gnu.tar.xz is the Windows 64 hosted, ARM 64 targeted version of gcc installation package. Download address: Downloads | GNU-A Downloads – Arm Developer

    可以直接将其解压在C:\CrossCompilers目录,不需要设置环境变量。

    You may decompress it into C:\CrossCompilers directory, without setting the system environment variables.

Figure 3‑14 gcc安装路径

注:该版本gcc已经验证,使用其他版本不保证不会遇到问题。

Notice: This version of gcc is already verified, using other versions does not guarantee that there will be no problems.

  1. 用例开发和编译流程(Use case development and compilation process)
    1. 确定工程目录(Determine project directory exe)

从C:\Program Files (x86)\ETAS\RTA-VRTE_2.1.0\Examples拷贝HelloWorld到合适的工作路径,以将其拷贝到C:\Users\HNN4SGH\Downloads\HelloWorld为例。

Copy the Hello use case from C:\Program Files (x86)\ETAS\RTA-VRTE_2.1.0\Examples to a reasonable place, below I copy it to C:\Users\HNN4SGH\Downloads\HelloWorld for example.

    1. 构建.cmake文件(Construct .cmake file)

    从 \RTA-VRTE_2.1.0\SDK\toolchain_files拷贝rta-vrte_common_toolchain.cmake到HelloWorld目录。创建helloworld_toolchain.cmake文件并输入以下内容:

    Copy the rta-vrte_common_toolchain.cmake file from \RTA-VRTE_2.1.0\SDK\toolchain_files to Hello directory. Create helloworld_toolchain.cmake and input below content:

##########################################################

# File Name: helloworld_toolchain.cmake

# System Version: Linux

# Date: 2022.09.08

##########################################################

include(${CMAKE_CURRENT_LIST_DIR}/rta-vrte_common_toolchain.cmake)


set(CMAKE_SYSTEM_NAME Linux)

######set(TOOLCHAIN_PATH C:/CrossCompilers/Arm-GNU-Toolchain-aarch64-none-linux-gnu/11.3-rel1)

set(TOOLCHAIN_PATH C:/CrossCompilers/gcc-arm-10.2-2020.11-mingw-w64-i686-aarch64-none-linux-gnu)

set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-none-linux-gnu-gcc.exe)

set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-none-linux-gnu-g++.exe)


set(LINUX_AARCH64_SDK_PATH ${SDK_PATH}/linux-aarch64)

message(STATUS "The RTA-VRTE LINUX aarch64 SDK path is: ${LINUX_AARCH64_SDK_PATH}")


set(CMAKE_FIND_ROOT_PATH ${LINUX_AARCH64_SDK_PATH}/opt/vrte ${LINUX_AARCH64_SDK_PATH})

其中,TOOLCHAIN_PATH需换成安装的真实路径。

Among this file, the TOOLCHAIN_PATH variable should be set as the actual installation path.

    1. 生成ecucfg文件(Generate ecucfg files)

    可以使用ISOLAR生成ecucfg文件,也可以执行下一步cmake命令时同时生成ecucfg文件。使用ISOLAR生成ecucfg文件的方法如下:

    You can use ISOLAR to generate ecucfg files, you can also execute the next cmake command to generate ecucfg files simultaneously. Below is the ISOLAR method:

Figure 4‑1 使用ISOLAR生成ecucfg方法

    1. 执行VRTE配置脚本(Execute VRTE configuration script)

    VRTE配置脚本为C:\ETAS\RTA-VRTE_2.1.0\rta_vrte_env.bat。打开系统cmd执行该脚本。

    VRTE configuration script is C: \ETAS\RTA-VRTE_2.1.0\rta_vrte_env. bat. Open the system cmd window and execute this script.

    1. 执行cmake命令(Execute cmake command)

    在helloword工程目录下进入CMD窗口并执行cmake命令,创建CMakeFiles目录结构和Makefile:

    In the helloword project folder, go to CMD window and Execute cmake command, creating CMakeFiles index and Makefile:

cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=C:\ETASData\ISOLAR-AB\workspace_adaptive\HelloWorld\helloworld_toolchain.cmake -DSDK_PATH=C:\VRTE_SDK_2.1.0

Figure 4‑2 cmake -G命令执行打印1

Figure 4‑3 cmake -G命令执行打印2

    1. 执行make命令(Execute make command)

    执行make命令,编译HelloWorld可执行文件:

    Execute make command, compiling the HelloWorld executable:

make

Figure 4‑4 make命令执行打印1

Figure 4‑5 make命令执行打印2

    1. 执行make install命令(Execute make install command)

    执行make install命令, 将可执行文件和ecucfg文件放置到HelloWorld/install/bin目录下:

    Execute make install command, putting the executable and ecucfg files into HelloWorld/install/bin path:

make install

Figure 4‑5 make install命令执行打印

  1. 用例部署和执行流程(Use case deployment and execution process)

    1. VRTE SDK 部署(VRTE SDK deployment)

    从C:\VRTE_SDK_2.1.0\linux-aarch64\opt拷贝vrte到开发板文件系统的/opt下。事实上不需要拷贝include和lib中的.a文件。

    Copy the vrte folder from C:\VRTE_SDK_2.1.0\linux-aarch64\opt to target board’s /opt directory. Actually you don’t need copy the include folder and the .a files in lib folder.

    在开发板文件系统中创建以下目录:

    Create below directories in target board:

mkdir -p /opt/vrte/user/bin /opt/vrte/user/share /opt/vrte/user/etc/ecu-cfg/ar-20-11

    1. Bin和Ecucfg文件部署(Bin and Ecucfg files deployment)

    通过SD卡读卡器、scp、ftp等方式将bin和ecucfg文件拷贝到开发板文件系统的以下目录:

    Copy the bin and ecucfg files from HelloWorld/install/bin to target board’s below directories, through SD card reader, scp command and ftp etc:

LOG_HelloWorld_Process__SoftwareCluster_0_nodeData.ecucfg > /opt/vrte/usr/etc/ecu-cfg/ar-20-11

EXM__SoftwareCluster_0_nodeData.ecucfg > /opt/vrte/exm-aap-execution-manager/etc/ecu-cfg/ar-20-11

LOG_rb_exmd__SoftwareCluster_1_nodeData.ecucfg > /opt/vrte/exm-aap-execution-manager/etc/ecu-cfg/ar-20-11

LOG_dlt_A__SoftwareCluster_0_nodeData.ecucfg > /opt/vrte/dev-aap-dlt/etc/ecu-cfg/ar-20-11

LOG__SoftwareCluster_0_nodeData.ecucfg > /opt/vrte/dev-aap-dlt/etc/ecu-cfg/ar-20-11

STM__SoftwareCluster_0_nodeData.ecucfg > /opt/vrte/stm-project/etc/ecu-cfg/ar-20-11

HelloWorld > /opt/vrte/usr/bin

    1. 执行脚本创建和部署(Execution script creation and deployment)

    在开发板文件系统的/opt/vrte/usr/bin目录下创建exmd.sh文件并输入以下内容:

    Create exmd.sh file in target board’s /opt/vrte/usr/bin directory and input below:

echo "Creating dlt runtime cfg..."

touch /tmp/dlt-runtime-application.cfg

touch /tmp/dlt-runtime-context.cfg

touch /tmp/dlt-runtime.cfg

export ECUCFG_ENV_VAR_ROOTFOLDER=/opt/vrte/exm-aap-execution-manager/etc/ecu-cfg

export LD_LIBRARY_PATH=/opt/vrte/lib:$LD_LIBRARY_PATH

export LOGTRACEDEFAULTLOGLEVEL=info

export LOGTRACELOGMODE=network,console

export LOGTRACEPROCESSDESC="VRTE:EXM: daemon logging"

export LOGTRACEPROCESSID=EXM

export PROCESSIDENTIFIER=rb_exmd

chmod 777 /opt/vrte/dev-aap-dlt/etc/*

chmod 777 /opt/vrte/exm-aap-execution-manager/etc/*

chmod 777 /opt/vrte/stm-project/etc/*

chmod 777 /opt/vrte/usr/etc/*

chmod +x /opt/vrte/dev-aap-dlt/bin/rb-dltd

chmod +x /opt/vrte/usr/bin/*

/opt/vrte/exm-aap-execution-manager/bin/rb-exmd -t 60000 &

然后赋予exmd.sh执行权限:

Then give exmd.sh execution permission:

chmod +x exmd.sh

    1. 用例执行(Execution use case)

在开发板文件系统的/opt/vrte/usr/bin目录下执行./exmd.sh:

Execute ./exmd.sh in target board’s /opt/vrte/usr/bin directory:

./exmd.sh

Figure 5‑1 用例执行打印1

Figure 5‑2 用例执行打印2

  1. 附录(Appendix)
    1. S32V234EVB实验遇到的错误和纠正方法(S32V234EVB experiment encountered errors and work arounds)

6.1.1.     版本分析(Version analysis)

    S32V234EVB运行4.19.59内核,安装2.26版本的GLIBC和3.4.22版本的GLIBCXX。

Figure 6‑1 S32V234EVB的Linux内核分析

Figure 6‑2 S32V234EVB的GLIBC分析

Figure 6‑3 S32V234EVB的GLIBC++分析

6.1.2.     执行错误分析(Execution error analysis)

    执行rb-exmd会报GLIBC和GLIBC++找不到的错误:

Figure 6‑4 S32V234EVB执行rb-exmd报错

6.1.3.     GLIBC问题纠正(GLIBC error work around)

    使用objdump查看librb-ecucfg.so具体的GLIBC_2.27的使用情况,发现只有glob符号。

Figure 6‑5 objdump查看librb-ecucfg.so具体的GLIBC_2.27的使用情况

    进一步查看S32V234EVB的2.26版本GLIBC是否实现了glob符号,结果是同样实现了。

Figure 6‑6 查看S32V234EVB的2.26版本GLIBC的glob符号使用情况

    使用readelf查看librb-ecucfg.so符号表。.gnu.version_r表示二进制程序实际依赖的库文件版本,从输出结果中得出,该表从0x01e918偏移量开始。而libc.so.6的GLIBC_2.27和GLIBC_2.17的偏移量分别从0x01e918开始算为0x0050和0x0060。

readelf -sV librb-ecucfg.so

Figure 6‑7 readelf查看librb-ecucfg.so符号表

    由于Linux系统中的LD库(ld-linux-aarch64.so.1)加载ELF时检查.gnu.version_r表中的符号,可以强制修改.gnu.version_r来强制使用老版本函数实现。使用vim打开librb-ecucfg.so并使用命令%!xxd切换到十六进制显示,修改0x01e918下面第5行画红框数据,即从第6行相同位置进行复制。即修改了GLIBC_2.27的库名称的hash值、表中符号的版本值、库名称字符串的偏移量。最后使用命令%!xxd -r,wq保存。

Figure 6‑8 使用vim强制librb-ecucfg.so强制修改函数实现版本

    修改之后使用readelf查看librb-ecucfg.so符号表,修复完成。结果如下:

Figure 6‑9 readelf查看librb-ecucfg.so符号表,修复完成

6.1.4.     GLIBCXX问题纠正(GLIBCXX error work around)

    拷贝aarch64版本的libstdc++.so.6.0.28到目标开发板的/usr/lib下,并备份相关链接文件并创建新的链接文件:

mv libstdc++.so libstdc++.so.bak

mv libstdc++.so.6 libstdc++.so.6.bak

ln -s libstdc++.so.6.0.28 libstdc++.so

ln -s libstdc++.so.6.0.28 libstdc++.so.6

Figure 10‑1

  1. FAQs

In order to achieve all the purpose this document sets, th

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545870.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于时频分析的一些事-答知乎问(一)

从信号的时频谱图中可以提取什么特征&#xff1f; 基于时频谱图的特征一般包括能量特征、时域和频域拓展特征以及时频内禀特征。 基于时频图的能量特征 基于时频图的特征中&#xff0c;能量特征是最简单的一种&#xff0c;通过分析时频谱图中的能量分布特性而获取信号的时频…

第011问 - 工作/学习老走神,如何提升注意力?(3个步骤提升注意力)

前言 你有没有遇到以下 2 个现象&#xff1a; 注意力被微信消息干扰&#xff1a;早上做好了计划&#xff0c;打算今天开发登录功能&#xff0c;结果一看微信 小A 给我发了一条消息&#xff0c;想都没想就给他回复了&#xff0c;这一回不要紧&#xff0c;他又给我发了&#xff0…

爆火 AI 硬件遭差评,Ai Pin 上市即翻车;Grok 推出首个多模态模型丨 RTE 开发者日报 Vol.184

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

jenkins 启动linux节点时 控制台中文显示问号乱码

新增一个jenkins节点时&#xff0c;遇到了控制台中文输出问号的问题。 网上各种配置jenkins的全局变量&#xff0c;都不行。 最终是 节点列表 ->对应节点 -> 启动方式 -> 高级 添加JVM选项 -Dfile.encodingUTF-8

webots学习记录:R2023b如何导入stl文件

R2023b以及更新的版本的“文件”菜单中已经没有“Import 3D Model”这个选项了&#xff0c;用如下方法导入stl文件&#xff0c;

把数组中的所有空字符串移动到数组的前面

// 假设我们有一个数字数组和一个条件函数 // 条件函数返回true的元素将被移动到数组的前面 let numbers [1, 2, 3, 4, , 6, , 8, 9]; let condition (value) > value ; // 例如&#xff0c;我们想把偶数移动到前面// 使用sort函数实现 numbers.sort((a, b) > {let aS…

GIS GeoJSON数据获取

1、工具地址 DataV.GeoAtlas地理小工具系列 2、界面预览

【C++】unordered_map unordered_set 底层刨析

文章目录 1. 哈希表的改造2. unordered_map3. unordered_set C STL 库中&#xff0c;unordered_map 和 unordered_set 容器的底层为哈希表&#xff0c;本文将简单模拟哈希表&#xff08;哈希桶&#xff09;&#xff0c;unordered_map 和 unordered_set 只需封装哈希表的接口即可…

专业SEO优化指南:设置网站关键词的详细步骤

在网站SEO优化的过程中&#xff0c;关键词的设置是提升网站排名的关键步骤之一。那么&#xff0c;作为一名专业的SEO人员&#xff0c;如何有效地进行关键词设置呢&#xff1f;以下是一些详细的步骤&#xff1a; 1. 确定网站的核心关键词。 这需要深入理解网站的主题或产品。通…

稀碎从零算法笔记Day49-LeetCode:设计哈希集合

题型&#xff1a;模拟 链接&#xff1a;705. 设计哈希集合 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 不使用任何内建的哈希表库设计一个哈希集合&#xff08;HashSet&#xff09;。 实现 MyHashSet 类&#xff1a; void add(key) 向哈…

封装原生html的table处理方法【参数类似eltable】

直接跑html即可 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>封装原生talbe</title> </…

“书写梦想 快乐成长”——沱江社区雏鹰活动(一)

为了丰富社区青少年精神文化生活&#xff0c;发挥社区服务青少年的功能和作用&#xff0c;2024年4月13日上午9点&#xff0c;中共新都区新都街道沱江社区委员会、沱江社区居民委员会联合成都市新都区领航社会工作服务中心举办的“书写梦想 快乐成长”——沱江社区雏鹰活动在沱江…

图灵奖简介及2023年获奖者Avi Wigderson的贡献

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 2023年的…

✌粤嵌—2024/3/19—环形链表

代码实现&#xff1a; 快慢指针&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ bool hasCycle(struct ListNode *head) {// 快慢指针&#xff1a;快指针每次走两步&#xff0c;慢指针每次走一步&a…

近屿OJAC带你解读:什么是GAN生成式对抗网络?

生成式对抗网络(GAN&#xff0c;英文全称Generative Adversarial Network)是一种深度学习模型&#xff0c; 由于其生成高质量、真实数据的能力&#xff0c;近年来获得了极大的关注。GAN已被用于广泛的应用 中&#xff0c;包括图像合成、⻛格转移和数据增强。 GAN的核心思想是通…

《springcloud alibaba》 六 微服务链路跟踪skywalking

目录 准备调整配置接入多个微服务网关项目调整order-seata项目stock-seata项目测试 接入网关微服务 skywalking持续化到mysql自定义链路跟踪pom .xmlorderControllerOrderServiceOrderDaoOrderTblMapper.xml测试 性能剖析日志tid打印pom.xmllogback-spring.xml日志收集启动项目…

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

OpenCV轻松入门(七)——HSV颜色模型图像特效案例:判断白天夜晚抠图颜色过滤替换背景图

HSV模型解释 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。 这个模型中颜色的参数分别是&#xff1a; 色调&#xff08;H&#xff09;饱和度&#xff08;S&#xff09;明度&#xff08;V&…

为什么不用低代码平台制作网站,套用这11个商城主题模板,让程序员解放双手

随着人工智能技术的迅猛发展&#xff0c;众多复杂工作变得愈发简便。二十年前&#xff0c;构建一个在线商城并处理支付交易是一项艰巨任务&#xff0c;而正是在那个时代&#xff0c;零售巨头淘宝和京东崭露头角。如今&#xff0c;我们迎来了新时代&#xff0c;众多高效工具应运…

Dinov2 + Faiss 图片检索

MetaAI 通过开源 DINOv2&#xff0c;在计算机视觉领域取得了一个显着的里程碑&#xff0c;这是一个在包含1.42 亿张图像的令人印象深刻的数据集上训练的模型。产生适用于图像级视觉任务&#xff08;图像分类、实例检索、视频理解&#xff09;以及像素级视觉任务&#xff08;深度…