Davinci工程vBaseEnv模块讲解

news2024/12/26 21:15:03

配合的模块

要正常使用vBaseEnv模块,要同时使能EcuC、OS、vBRS和vLinkGen模块。

OS是操作系统,除了FBL以外,其他都需要用到OS。
vBaseEnv是基础环境
vBRS是基本运行系统
vLinkGen脚本链接生成器
EcuC是ECU配置

EcuC配置

需要配合vBaseEnv模块的只是EcuC里面的EcucGeneral。

Alignment of arrays数组对齐方式,可以选择1/2/3/4字节对齐,auto的话数组的对齐方式就会跟数组元素的对齐方式一样。

Atomic Bit Access In Bitfield如果选择了,编译器就会优化对位域中的单比特读写访问。我们一般不勾选。

Atomic Variable Access原子变量访问方式,可以选择1/2/3/4字节,一般默认4字节就行。

Bit Field Data Type位域数据类型,默认int就行。

Bit Order位序,默认LSB_to_MSB,没得改。

Ecuc Bsw Implementation Code Type实现代码类型,指的是BSW与SWC接口的实现类型是源代码还是库文件,我们这里默认选择源代码就行。

Byte Order字节序默认小端,没得改。

CPU Type寄存器宽度,默认32位就行,没得改。

Conditional Generating条件生成,就是只重新生成需要更改的文件,不用更改的就不生成,默认勾选就行。

Dummy function虚函数,调用指针函数的时候会检查是不是NULL,一般用不到就不勾。

Dummy statement虚拟语句,让编译器不对一些不必要的地方报警,默认勾选。

Dummy Statement Kind虚拟语句处理方式,默认self assignment自分配就行。

EcuC Safe Bsw Checks使用安全检查,默认不勾选。

Size Of Enum枚举大小,默认32位。

Size Of Int类型int大小,默认32位。

Size Of RAM Pointer RAM指针大小,默认32位。

Size Of ROM Pointer ROM指针大小,默认32位。

Alignment of struct结构体对齐方式,默认Auto就行。

Struct In Array Alignment结构体在数组当中的对齐方式,默认Auto就行

EcuC Use Std Return Type For Rte标准返回类型Std_ReturnType用于RTE,默认不勾选。

OS配置

主要是中断处理和定时器处理,需要配合vBaseEnv模块的只是OS里面的OsOS,为OSEK应用程序定义OSEK OS属性的对象

Number Of Cores操作系统可以控制的最大核数,取决于硬件,一般不写。

Scalability Class可扩展类,一般不写。

Os Stack Monitoring操作系统堆栈监控,一般不使用。

Os Status操作系统是标准状态还是扩展状态,默认扩展。

Os Use Get Service Id获取服务ID,一般不使用。

Os Use Parameter Access访问参数,一般不使用。

Os Use Res Scheduler使用寄存器注册表资源,一般不使用。

下一级的OsHooks钩子一般都不使用。

vBaseEnv配置

vBaseEnvGeneral

要选芯片

在这里面选择你使用的芯片

vBaseEnvDerivativeInformations

上面选择完你使用的芯片,这里针对你选择的芯片进行环境配置,都是自带的,一般不同改。

vBaseEnvAvailableChannels_Can可用的CAN通道数量。

vBaseEnvAvailableChannels_Ethernet可用的以太网通道数量。

vBaseEnvAvailableChannels_Flexray可用的Flexray通道数量。

vBaseEnvAvailableChannels_Hyperbus可用的Hyper总线数量。

vBaseEnvAvailableChannels_I2c可用的IIC总线数量。

vBaseEnvAvailableChannels_Lin可用的LIN总线数量。

vBaseEnvCpuCore芯片的核,会关联到vBrsCfg.h 文件里面的BRS_CPU_CORE_x宏定义。

vBaseEnvCpuCoreAmount芯片内核数量,会关联到vBrsCfg.h文件里面的BRS_CPU_CORE_AMOUNT宏定义。

cpu init core芯片内核的ID,用于一般初始化。会关联到vBrsCfg.h文件里面的BRS_CPU_INIT_CORE宏定义。

vBaseEnvCpuMaxFrequency芯片最大频率。

vBaseEnvTestedDerivative用的是什么芯片,会关联到vBrsCfg.h文件里面的BRS_DERIVATIVE_x宏定义。

Used Manual这东西没什么用。

vBaseEnvMemLayoutHwRegions

这里只是个硬件内存列表,没有划分内存,只是告诉你使用的芯片内存分为什么区域而已。

vBaseEnvInterruptHandling

配置通信通道的中断处理,就是上面vBaseEnvDerivativeInformations那里有几种通道,这里会有所体现。

譬如我这个芯片有三个CAN通道0/1/2,每个通道再细分四个通道:邮箱0-15,邮箱16-31,BusOff和ErrDet。每个通道有自己的名字、索引号、优先级和通道源数。

vBRS配置

需要配合vBaseEnv模块的只是vBRS里面的vBRSGeneral和vBRSHwConfig

vBRSGeneral

vBRS Disable Setup Support失能BRS引导默认的MSR堆栈配置,默认不勾选。

vBRS Enable HSM Support对HSM核心用例的支持,会关联到vBrsCfg.h文件里面的BRS_ENABLE_HSM_SUPPORT宏定义。

vBRS Enable Multi Core Support多核操作系统支持,芯片没有多核的话就不用勾选,会关联到vBrsCfg.h文件里面的BRS_ENABLE_OS_MULTICORESUPPORT宏定义。

vBRS Enable Safe Context Support对SafeContext操作系统的支持,会关联到vBrsCfg.h文件里面的BRS_ENABLE_SAFECTXSUPPORT宏定义。

vBRS Fbl Support支持FBL,会关联到vBrsCfg.h文件里面的BRS_ENABLE_FBL_SUPPORT宏定义。Disabled就没有这个宏定义,选择FBL_without_EcuMInit就为BRS_FBL_WITH_ECUMINIT,选择FBL_with_EcuMInit就为BRS_FBL_NO_ECUMINIT。

vBRS Enable EcuM Stub Generation生成EcuM.c和EcuM.h文件,一般不勾选。

vBRS Enable Schm Stub Generation生成SchM相关的文件,默认勾选。

vBRS Enable Schm Stub Support DrvCan AN防止SchM生成CAN Driver/CAN Interface/CANSM/COMM模块的专属区域,默认勾选。

vBRS Enable Support Toggle Custom Pin如果你使用的是评估板,勾选上的话这个定制LED灯就会闪烁,会关联到vBrsCfg.h文件里面的BRS_ENABLE_SUPPORT_TOGGLE_CUSTOM_PIN宏定义。

初始化的时候会在BrsMainInit函数里面执行到下面这条语句,在BrsMainRegisterCyclic里面注册了个BrsMainWrapperTogglePinCustom接口,每1000ms调用一次。

BrsMainRegisterCyclic(BrsMainWrapperTogglePinCustom, BRSMAIN_CYCLETIME_1000MS);

BrsMainWrapperTogglePinCustom接口里面只是执行了一句话,通过翻转引脚来产生闪烁的效果,本质上是调用BrsHwPort_SetLevel或者Dio_WriteChannel接口。

void BrsMainWrapperTogglePinCustom(void)
{
  BrsMainTogglePin(BRSMAIN_TOGGLEPIN_CUSTOM);
}

我们还需要在文件Demo\DemoFbl\Appl\Include\BrsHw_Ports.h里面,把后面三个的x改为具体的值。

Toggle Custom-Pin - Dio Channel Reference一般不用选。

vBRS Enable Support LEDs跟vBRS Enable Support Toggle Custom Pin差不多,也是闪烁LED,会关联到vBrsCfg.h文件里面的BRS_ENABLE_SUPPORT_LEDS宏定义。

vBRS Enable Support Toggle Wd Pin也是闪烁LED,会关联到vBrsCfg.h文件里面的BRS_ENABLE_SUPPORT_TOGGLE_WD_PIN宏定义。

vBRSHwConfig

vBRS Enable PLL Clocks Handling使能在BrsHw内处理锁相环和时钟配置,会关联到vBrsCfg.h文件里面的BRS_ENABLE_PLLCLOCKS宏定义,默认勾选。

vBRS Enable Port Handling使能vBRS的端口处理,会关联到vBrsCfg.h文件里面的BRS_ENABLE_PORT宏定义,默认勾选。

vBRS Enable Watchdog Handling使能vBRS的看门狗处理,会关联到vBrsCfg.h文件里面的BRS_ENABLE_WATCHDOG宏定义,默认勾选。

vBRS Evaluation Board选择你是用的评估板,一般用的都是自己项目的电路板,所以选个芯片型号就行。

vBRS Osc Clock外部晶振频率,会关联到vBrsCfg.h文件里面的MAIN_OSC_CLK宏定义,根据电路板进行填写。

vBRS Periph Clock和vBRS Periph Clock Description外部时钟频率,默认自带的。

Peripheral Clock Mcu Reference不用选

vBRS Time base Clock锁相环频率

vBRS Compiler Instruction Set汇编指令集,这个就没有什么好默认了的,适合哪个选哪个。会关联到vBrsCfg.h文件里面的BRS_INSTRUCTION_SET_xxx宏定义和Makefile.config.generated里面的INSTRUCTION_SET变量。

Enable FPU support使能FPU,一般不动它就行。

vBRSDriverHandlingCAN

关于CAN驱动的一些处理配置

vBRS Enable Driver Handling CAN使能CAN驱动处理,包括PLL和时钟设置、端口引脚设置、附加寄存器,会关联到vBrsCfg.h文件里面的BRS_ENABLE_CAN_SUPPORT宏定义,默认勾选。

vBRS Driver Handling CAN_Peripheral Clock将vBRSHwConfig/vBRSPeriphClock中定义的时钟用于外围时钟,由CAN驱动程序使用,默认勾选。

Frequency of peripheral clock [MHz]和Frequency of peripheral clock - Mcu Reference用于锁相环计算的CAN驱动外设时钟频率,不用设置。

vBRS Driver Handling CAN_channelxx使能通信的通道,会关联到vBrsCfg.h文件里面的BRS_ENABLE_CAN_CHANNEL_x宏定义。

vLinkGen配置

需要配合vBaseEnv模块的只是 vLinkGen里面的vLinkGenMemLayout里面的vLinkGenMemoryRegions。
配置 vLinkGen模块要先了解vBaseEnv里面你的芯片有什么样的硬件内存分区。
然后在 vLinkGenMemoryRegions里面再进行细分,每个硬件内存分区在软件上都可以再继续细分成几个,注意软件分区的范围不能超过硬件的划分范围。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员的神奇应用:从代码创造到问题解决的魔法世界之持续集成/持续部署

文章目录 持续集成/持续部署 在软件开发的海洋中,程序员的实用神器如同航海中的指南针,帮助他们导航、加速开发、优化代码质量,并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 在当今数字化的世界里&…

数字水印 | Arnold 变换的 Python 代码实现

🥭 参考博客: Arnold 阿诺德置乱(猫脸变换)图像盲水印注入预处理(Python) 1 回顾:Arnold 公式 A r n o l d \mathsf{Arnold} Arnold 变换公式如下: [ x n 1 y n 1 ] [ 1 b a a b…

搜索引擎的设计与实现(二)

目录 3 搜索引擎的基本原理 3.1搜索引擎的基本组成及其功能 l.搜索器 (Crawler) 2.索引器(Indexer) 3.检索器(Searcher) 4.用户接口(UserInterface) 3.2搜索引擎的详细工作流程 4 系统分析与设计 4.1系统分析 4.2系统概要设计 4.2系统实现目标 前面内容请移步 搜索引…

力扣HOT100 - 70. 爬楼梯

解题思路&#xff1a; 动态规划 注意 if 判断和 for 循环 class Solution {public int climbStairs(int n) {if (n < 2) return n;int[] dp new int[n 1];dp[1] 1;dp[2] 2;for (int i 3; i < n; i) {dp[i] dp[i - 1] dp[i - 2];}return dp[n];} }

Co-Driver:基于 VLM 的自动驾驶助手,具有类人行为并能理解复杂的道路场景

24年5月来自俄罗斯莫斯科研究机构的论文“Co-driver: VLM-based Autonomous Driving Assistant with Human-like Behavior and Understanding for Complex Road Scenes”。 关于基于大语言模型的自动驾驶解决方案的最新研究&#xff0c;显示了规划和控制领域的前景。 然而&…

智能组网实施步骤?

随着信息技术的快速发展&#xff0c;智能组网正在逐渐成为各个行业的关注焦点。智能组网通过将各种设备、终端和系统连接起来&#xff0c;实现信息的传输和共享&#xff0c;从而提升工作效率和运营效益。本文将介绍智能组网的实施步骤&#xff0c;以及一家名为【天联】的智能组…

台式电脑屏幕亮度怎么调节?让你的眼睛更舒适!

在日常使用台式电脑时&#xff0c;调节屏幕亮度是一项常见的需求。不同的环境和个人偏好可能需要不同的亮度设置。因此&#xff0c;了解台式电脑屏幕亮度怎么调节是非常重要的。本文将介绍三种常见的方法&#xff0c;帮助您轻松调节台式电脑屏幕亮度&#xff0c;以满足您的需求…

【C++初阶】第十一站:list的介绍及使用

目录 list的介绍及使用 1.list的含义 2.list的介绍 3.list的使用 1.list的构造 2.list iterator的使用 3.list capacity 4.list element access 5 list modifiers 尾插尾删 和 头插头删 insert 和 erase resize swap clear 6.list sort and reverse 7.list copy vector copy li…

数字化转型:超越信息化,构建数字化营销体系!

在数字化的浪潮中&#xff0c;企业仅仅做好信息化数字能力基础已远远不够&#xff01;那么&#xff0c;还需要什么呢&#xff1f;没错&#xff0c;就是在数字化经营思维的指导下&#xff0c;建立起数字化营销体系和执行方案&#xff01;这是企业在数字时代中立于不败之地的关键…

在cmd中,如何使用cd进入指定文件目录

在cmd中&#xff0c;如何使用cd进入指定文件目录 1.要进入的磁盘与当前磁盘一致 例如: cd C:\Program Files (x86)\Google\Chrome\Application 2.进入到其他磁盘&#xff0c; 例如 cd /d D:\JAVA\codes\01\1.4 或者下面的方式&#xff08;直接输入磁盘F&#xff1a;和文件名…

11.php-fpm模板(监控页面取值)

php-fpm模板(监控页面取值) 开启监控页面配置 #修改php配置文件 vim /etc/php-fpm.d/www.conf pm.status_path /php_status#修改nginx配置文件,添加到nginx配置文件中 vim /etc/nginx/conf.d/default.conflocation /php_status {root html;fastcgi_pass 127.0.…

使用单片机的IO引脚直接驱动段码屏

使用单片机的IO引脚直接驱动段码屏,目的是为了降低成本。这种古老的应用,在低功耗产品中比较多见。 如:水表&#xff0c;燃气表等需要电池供电的产品。 下面纯属个人理解&#xff0c;未经测试。 1/3Duty表示LCD共有3个COM引脚,分别占显示周期的1/3 1/2BIAS表示电压0和VCC 1、…

想半天憋不出几个字?试试AI扩写

大家在写文章时是否也经常这样&#xff1f;想了半天&#xff0c;结果只能写出几个字&#xff0c;但是要求往往又是几百多个字&#xff0c;那么有没有啥工具可以帮我们在原文的基础上扩写一下文章字数&#xff0c;让我们达到字数要求呢&#xff1f; 下面给大家介绍一下如何扩写文…

Rpcx (二):传输

一、Transport 传输 rpcx 可以通过 TCP、HTTP、UnixDomain、QUIC和KCP通信。你也可以使用http客户端通过网关或者http调用来访问rpcx服务。 TCP 这是最常用的通信方式。高性能易上手。可以使用TLS加密TCP流量。 Example: 101basic 服务端使用 tcp 做为网络名并且在注册中心…

什么是Data Lakehouse Architecture(DLA)?企业为何要创建DLA

公司捕获和存储的数据比以往任何时候都多&#xff0c;因为它们依赖数据来做出关键的业务决策、改进服务或产品&#xff0c;或为最终用户&#xff08;客户&#xff09;提供更好的服务。了解各种大数据存储技术对于为商业智能&#xff08;BI&#xff09;、数据分析和机器学习&…

山西教育杂志山西教育杂志社山西教育编辑部2024年第4期目录

课题研究 小学语文随堂小练笔策略研究 陈立固; 3-4 儿童戏剧工作坊载体下小学语文戏剧课堂的建构 郭黎明; 5-6《山西教育》投稿&#xff1a;cn7kantougao163.com 文化生态视域下小学英语教学的传统文化融入 周慧娟; 7-8 基于“主题语境”的初中英语课堂教学研究…

PCIe总线-PCIe简介

一、前言 PCIe总线是由PCI/PCI-X发展而来&#xff0c;但是两者之间有很大的不同。PCI/PCI-X采用的是并行总线&#xff0c;最大支持的频率为PCI-X2.0 的133MHz&#xff0c;传输速率最大仅为4262MB/s。同时使用并行总线&#xff0c;在PCB上也会造成布线资源紧张&#xff0c;线与…

MyBatis——动态 SQL

一、if 标签 <mapper namespace"com.powernode.mybatis.mapper.CarMapper"><select id"selectByMultiCondition" resultType"car">select * from t_car where<if test"brand ! null and brand ! ">brand like #{br…

ARM架构安全特性之标准安全 API

安全之安全(security)博客目录导读 目录 一、机密计算软件 二、Arm机密计算固件架构 三、认证校验 四、Veraison项目 五、独立于语言的安全API 六、平台抽象安全项目&#xff08;Platform AbstRaction for SECurity project&#xff09; 七、可移植平台安全API 八、…

(undone) 什么是马尔可夫链?Markov Chain

参考视频1&#xff1a;https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考视频2&#xff1a;https://www.bilibili.com/video/BV1xg4y1K7z4/?spm_id_from333.788&vd_source7a…