Davinci工程vBaseEnv模块讲解

配合的模块

要正常使用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.hqwc.cn/news/698064.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Processor System Reset IP核配置详解

本文描述了如何使用Xilinx的Vivado Design Suite环境中的工具来定制和生成 Processor System Reset IP 核。Vivado Design Suite是一个强大的FPGA设计和开发环境,它允许用户定制和配置各种IP核以适应他们的特定设计需求。 以下是针对如何定制IP核的步骤的简要概述&…

一、VIsual Studio下的Qt环境配置(Visual Studio 2022 + Qt 5.12.10)

一、下载编译器Visual Studio2022和Qt 5.12.10 Visual Studio 2022 社区版就够学习使用了 Qt5.12.10 安装教程网上搜,一大堆 也很简单,配置直接选默认,路径留意一下即可 二、配置环境 Ⅰ,配置Qt环境变量 系统变量下的Path&a…

`unordered_map` 和 `unordered_set`

unordered —— 无序的,从表面上来看,与 map 和 set 不同之处就在于,unordered_map 和 unordered_set 无法保证插入数据是有序的; 尽管如此,由于这两种容器内部封装了“哈希桶”,可以实现快速查找数据 ——…

保护身份安全:FIDO2认证在钓鱼攻击中的应用

攻击者主要使用钓鱼攻击来窃取和滥用用户身份。根据全球统计局(Statista)对员工报告的恶意电子邮件的研究显示,2023年第一季度,58.2%的恶意电子邮件是凭证窃取攻击,40.5%是冒充攻击,1.3%是恶意软件传送。钓…

黑马新出的SpringBoot3项目后端总结

基础篇-00_SpringBoot3_Vue3导学课程_哔哩哔哩_bilibili 这个是视频链接 这个新课程里面用了一些企业里会用的注解例如Validated这种,业务流程清晰明了简单上手,算是可以了解最基本的Springboot开发流程,方便上手和快速入门 主要是下面这几…

Nginx - location中的匹配规则和动态Proxy

文章目录 官网location 规则详解动态Proxy使用多个 if 指令指定不同的 proxy_pass根据参数选择不同的 proxy_pass 官网 https://nginx.org/en/docs/http/ngx_http_core_module.html#location location 规则详解 Nginx的location指令工作原理如下: 位置匹配&#…

Spring WebFlux 初探-响应式编程-020

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Nex…

4.2 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

方法一:在程序内部设置两个字符串内容,终端返回是否匹配 运行效果: 思路: 1、先比较两个字符串的长度,如果长度不一样,则两组字符串肯定不匹配;如果长度一样,再进行内容的匹配 2、如…

读万卷书|《从负债2000万到心想事成每一天》相信相信的力量

‍ ‍‍今天是2024年第20周 这是「输出倒逼输入」计划的第8篇文章 全年进度:8/52 PART 1 书籍简要介绍 阅读动力 这本书是读书群的好朋友小鹅推荐的,当时看完她的推荐就记住了这本书,感觉会是一本轻松愉悦且积极向上的书。而且冲着这个活力满…

【管理咨询宝藏101】普华永道并购尽调内部培训

【管理咨询宝藏101】普华永道并购尽调内部培训 【格式】PDF版本 【关键词】普华永道、兼并收购、尽职调查 【核心观点】 - 尽职调查的目的,发现潜在的致命缺陷,判断是否继续交易进程;发现潜在的问题,制定交易前后相应的应对措施。…

activiti——流程变量

文章目录 前言定义说明定义流程变量的作用域(范围) 绘制流程图文件部署数据库设置流程变量并执行流程Global 作用域 流程变量设置启动流程时设定变量查询已经创建的流程信息完成提交申请节点任务,推进工作流任务执行完成部门经理审批 推进节点 Local 流程变量 删除已…

齐护K210系列教程(十二)_拍照存SD卡

在AIstart中我们经常会用到在某些情况成立时,要把当前摄像头中的图像进行保存,这时我们就要用到拍照保存到SD卡的功能。 1,按键拍照保存 下面以【AIstart_掌机】为例,按下“口”键拍照1次存1.jpg到SD卡,再按拍照2.jpg…