Davinci工程开发方法论

基本概念

Flash Driver是下载到RAM里面的bin文件
Boot Manager是ROM上启动运行的第一个实例,可以是独立的bin文件,可以是集成在FBL里面。
Bootloader存储在ROM里面的bin文件
Demo Appl一个示例模板,用来跳转到Bootloader的,也是一个存储在ROM里面的bin文件
Fbl Updater用来升级FBL的代码

开发步骤

1、 linker script文件当中划分内存空间
2、映射vLinkGenMemoryRegions到vBaseEnvMemLayoutHwRegion
3、集成FlashDriver生成bin文件
4、调整Memmap文件
5、在请求独立 BootManager的情况下集成引导管理器
6、集成FlashBootloader
7、集成APP程序
8、使用APP程序、 FlashDriver来测试工程。
9、集成FbL Updater
10、启动FBL

编译环境

demo里面会有个Makefile文件

修改工程名为自己喜欢的名字,在cmd里面执行下m -j8命令就能进行编译。

会在路径下生成对应的输出文件

添加变体文件

有时候我们需要在工程当中添加自己定义的一些文件,在Config路径下新建自己的文件。

譬如我们要添加到brs模块

vLinkGen要改成ONE_FILE_PER_VARIANT

生成之后在GenData路径下的vBrsCfg.h里面可以看到引用。
#if !defined (BRS_INCLUDED_BY_ASM_FILE)
/* User config file */
# include "Config\VariantHandling.txt"
#endif

内存映射

类型分为code、const和VAR,各自里面会分很多个Section,在Appl\Include\MemMap.h文件里面可以找到,譬如这个RamCodeCoreSection里面包含的DET_START_*_CODE DET_STOP_*_CODE ,*是通配符。

RamCodeCoreSection能够在DemoFbl\Appl\Source\vLinkGen_Template.ld文件当中找到,这样就知道这段code会放在哪段内存当中。

源文件BSW\Det\Det.c的写法如下,刚好对应上面code、const和VAR的三种类型。

宏定义……# define DET_START_SEC_VAR_INIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
变量var定义……
# define DET_STOP_SEC_VAR_INIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */# define DET_START_SEC_VAR_NOINIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */  /* MD_MSR_19.1 */
const定义……
# define DET_STOP_SEC_VAR_NOINIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */  /* MD_MSR_19.1 */# define DET_START_SEC_CODE
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
代码code定义……
# define DET_STOP_SEC_CODE
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */

vector通过这种方式将每一段代码和变量定义到了对应的内存区域。

当我们需要修改的时候,可以进行手动配置自动生成,当然啦,配置的位置应该在芯片允许范围内。需要在vLinkGen模块下的vLinkGenMemLayout下面的vLinkGenMemoryRegions,有三块内存,FblBmHeader/FblHeader/BmHdrHeader,定义好初始地址和长度就会自动生成了。

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

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

相关文章

本地的git仓库和远程仓库

文章目录 1. 远程创建仓库2. 关联远程和本地代码3. 推送本地分支到远程 1. 远程创建仓库 2. 关联远程和本地代码 上面创建完后会得到一个git仓库的链接,有SSH或者http的 http://gitlab.xxxxx.local:18080/xxxxx/dvr_avm.git ssh://gitgitlab.xxxxx.local:10022/xx…

220V转18V500mA非隔离恒压WT5113

220V转18V500mA非隔离恒压WT5113 亲爱的朋友们,你们是否在为如何提高电源方案而烦恼呢?今天我给大家带来了一款芯片,WT5113宽输出范围非隔离交直流转换芯片,它可是电源方案中的得力助手哦! 这款芯片拥有220V降12V、2…

Mujoco210和Mujoco-py在 Ubuntu22.04 下的安装

mujoco和mujoco-py的关系:mujoco是一个物理引擎,主要应用于强化学习和最优化控制领域。mujoco-py是mujoco编程的 Python 接口,由OpenAI Gym开发,可以使用mujoco_py方便地调用mujoco的API。 mujoco官网: https://mujoco…

国产中间件概述

1、什么是中间件? 1.1、基本概念 定义:中间件,英文名为 Middleware,是独立的系统级软件,连接操作系统层和应用程序层,将不同操作系统提供应用的接口标准化、协议统一化,屏蔽具体操作的细节。位置:居于各类应用与操作系统之间,在操作系统、网络和数据库之上,应用软件…

Linux(openEuler、CentOS8)企业内网主备DNS服务器搭建

本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09; 知识点 什么是DNS&#xff1a;DNS服务器&#xff0c;即域名服务器&#xff08;Domain Name Server&#xff09;&#xff0c;是进行域名和与之相对应的IP地址转换…

24年最新AI数字人简单混剪

24年最新AI数字人简单混剪 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x

2024年如何下载51cto的视频

你是否对学习新的技术知识感到困惑&#xff1f;是否在寻找一个优质的在线学习平台&#xff1f;那么&#xff0c;我告诉你一个秘密——51cto视频平台&#xff01;它是一个专注于技术领域的视频平台&#xff0c;提供了大量的高质量视频资源。如果你想在2024年下载51cto的视频&…

白酒:白酒香型与历史文化传承的关联性研究

云仓酒庄的豪迈白酒作为中国白酒的品牌&#xff0c;其香型与历史文化传承之间存在着紧密的关联。白酒的香型不仅是酿造技艺的体现&#xff0c;更是中华历史文化的重要组成部分。 首先&#xff0c;白酒的香型与中国的地理、气候和自然资源密切相关。不同地区的白酒产区&#xff…

用脚本写一个日期样式的字符

现在想要诸如此类样式的语句&#xff1a;&#xff08;过去三个月的&#xff09; 可以用python脚本写&#xff1a; from datetime import date, timedelta# 获取当前日期 current_date date.today()# 定义过去三个月的时间间隔 three_months_ago current_date - timedelta(da…

QT+多线程编程

QT的多线程编程有两种 1、自定义类继承QThread 第一种是自定义一个类继承于QThread&#xff0c;重写run()方法来实现。然后当需要使用线程的时候你就新建一个自定义对象&#xff0c;然后调用start方法开始运行。 下面的例子是widget里面创建一个线程&#xff0c;然后调用sta…

BGP协议应用:SW1、SW2、SW3、RT1、RT2之间运行BGP协议

8.SW1、SW2、SW3、RT1、RT2之间运行BGP协议,SW1、SW2、RT1 AS号65001、RT2 AS号65002、SW3 AS号65003。 (1)SW1、SW2、SW3、RT1、RT2之间通过Loopback1建立IPv4 BGP邻居。SW1和SW2之间财务通过Loopback2建立IPv4 BGP邻居,SW1和SW2的Loopback2互通采用静态路由。 (2)SW1…

C++基础——深拷贝和浅拷贝

C中类的拷贝有两种&#xff1a;深拷贝&#xff0c;浅拷贝&#xff1a;当出现类的等号赋值时&#xff0c;即会调用拷贝函数 一、概念 浅拷贝&#xff1a;同一类型的对象之间可以赋值&#xff0c;使得两个对象的成员变量的值相同&#xff0c;两个对象仍然是独立的两个对象&#…

Centos上通过Docker安装单节点ES

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Elasticsearch 是一…

美易官方:美股周一收高,道指连续第四个交易日上涨

收盘之际&#xff0c;美股市场周一的表现可圈可点&#xff0c;各大股指纷纷走高&#xff0c;道指更是连续第四个交易日实现上涨。这一积极态势不仅凸显了投资者对于全球经济的信心&#xff0c;也反映了市场对于未来前景的乐观预期。 道指涨176.59点&#xff0c;涨幅为0.46%&…

最新贷款市场报价利率(LPR)数据(1991-2024)

数据来源&#xff1a;东方财富网时间跨度&#xff1a;1991-2024年 数据范围&#xff1a;全国范围 数据指标&#xff1a; LPR_1Y利率(%) LPR_5Y利率(%) 中长期贷款利率:5年以上(%) 短期贷款利率:6个月至1年(含)(%) 日期 样例数据&#xff1a; 下载链接&#xff1a; ht…

枚举类型和联合体类型

一、 枚举类型 简单介绍一下 枚举 顾名思义 就是一一例举 像我们生活中的很多东西 比如说一周有多少天 性别有几种 这些都可以用枚举类型来一一列举 1. 枚举类型的定义 我们以性别为例子 这里如果我们开始打印它们的数值的话 我们会发现 typedef enum Sex {MALE,FEMALE…

Docker 的网络实现

简介 标准的 Docker 支持以下 4 类网络模式&#xff1a; 1&#xff09;host 模式&#xff1a;使用 --nethost 指定 2&#xff09;container 模式&#xff1a;使用–netcontainer:NAME_or_ID 指定 3&#xff09;none模式&#xff1a;使用 --netnone 指定 4&#xff09;bridge 模…

C语言 循环语句 (3) for 循环语句

接下来 我们来看第三个 for语句 基本语句是 for关键字 然后小括号 括号中三个表达式 然后它对表达式2进行判断 如果表达式2条件成立 则走进循环体 执行完循环体 会回来执行表达式3 然后再返回来 继续对表达式2进行判断 如果表达式2 还是成立 这继续循环往复 直到表达式2的条件…

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法 问题截图&#xff1a; 亲测有效的方法 方法一&#xff1a; 选择通过uniapp的开发工具Hbuilder来进行在线打包&#xff0c;取消默认勾选的以下选项。 然后进行在线打包就不会存在提交审…

MySQL:多表查询练习

#1.出版社信息 与 图书信息 交叉连接 select * from 出版社信息 cross join 图书信息; #2.从“客户信息”和“订单信息”两张数据表中查询购买了商品的客户信息&#xff0c;要求查询结果显示客户姓名、订单编号、订单状态。 select 客户信息.客户姓名,订单信息.订单编号,订单…