Davinci工程开发方法论

news2025/1/11 5:46:27

基本概念

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.coloradmin.cn/o/1649228.html

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

相关文章

OpenCV 入门(五) —— 人脸识别模型训练与 Windows 下的人脸识别

OpenCV 入门系列: OpenCV 入门(一)—— OpenCV 基础 OpenCV 入门(二)—— 车牌定位 OpenCV 入门(三)—— 车牌筛选 OpenCV 入门(四)—— 车牌号识别 OpenCV 入门&#xf…

【负载均衡在线OJ项目日记】项目简介

目录 前言 什么是负载均衡 所用的技术和开发环境 所用技术 开发环境 项目的宏观结构 leetcode 结构 结构 编写思路 前言 从C语言的文章到现在Linux网络部分,我已经涉猎了很多知识;终于在今天我要开始搞项目了,通过项目我也可以开始…

《Fundamentals of Power Electronics》——一些常用变换器的正则电路参数值

对于理想的CCM PWM dc-dc转换器,其包含一个电感和电容,正则模型有效的低通滤波器需要包含一个电感和一个电容。正则模型简化为如下图所示。 假设电容与负载直接相连。基础的buck、boost和buck-boost转换器的参数值如下表所示。 该模型可以用传统的线性电…

【贪心算法】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法Python实现时间复杂性 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图, E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] [ w ] c[v][w] c[v][w]如果 G G G的一个子图 G ′ G^{} G′是…

贪心问题 难度[普及-]一赏

目录 #小A的糖果 删数问题 陶陶摘苹果(升级版) P5019 NOIP2018 提高组 铺设道路 小A的糖果 原文链接: P3817 小A的糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 小 A 有 n 个糖果盒,第 i 个盒中有 a_i 颗糖果。 小 A 每…

【吃透Java手写】Spring(下)-AOP-事务及传播原理

【吃透Java手写】Spring(下)AOP-事务及传播原理 6 AOP模拟实现6.1 AOP工作流程6.2 定义dao接口与实现类6.3 初始化后逻辑6.4 原生Spring的方法6.4.1 实现类6.4.2 定义通知类,定义切入点表达式、配置切面6.4.3 在配置类中进行Spring注解包扫描…

Windows系统安装MySQL数据库详细教程

【确认本地是否安装mysql】 (1)按【winr】快捷键打开运行; (2)输入services.msc,点击【确定】; (3)在打开的服务列表中查找mysql服务,如果没有mysql服务&am…

计算机组成结构—虚拟存储器

目录 一、虚拟存储器的基本概念 二、页式虚拟存储器 1.页表 2.快表(TLB) 3.具有 TLB 和 Cache 的多级存储系统 三、段式虚拟存储器 四、段页式虚拟存储器 五、虚拟存储器和Cache比较 早期的计算机,CPU 是直接操作主存的,也就是运行程序时&#xf…

工业光源环形系列一高均匀条形光源特点

产品特点 ◆可以根据检测需求随意调整照射角度: ◆可以根据检测需求选择光源颜色: ◆多个条形光源可以自由组合: ◆使用贴片灯珠,均匀性更好。

使用Docker安装MySql数据库

大家好,今天给大家分享一下如何使用docker安装MySql数据库,关于docker的安装和常用命令,大家可以参考下面两篇文章,本文中不做过多描述。 Docker在Windows与CentOS上的安装 Docker常用命令 一、拉取MySql数据库镜像 docker pul…

远程桌面连接不上,远程桌面连接不上的专业解决策略

在信息技术领域,远程桌面连接是一种非常重要的工具,它允许用户从任何地点、任何时间访问和操作远程计算机。然而,当远程桌面连接出现问题时,可能会严重影响工作效率。以下是一些可能导致远程桌面连接不上的原因以及相应的解决方案…

usb个人总结

前言: 推荐快速上手资料: 《圈圈教你玩usb》讲用一个usb模块51如何让电脑识别出一个usb设备,也介绍了不少相关的字段内容。 其他例如uac\hid相关字段怎么看的建议去官网下载文档 USB-IF官方网站:Front Page | USB-IF USB中文…

AIGC绘画辅助网站

Midjourney风格样式 Midjourney Style Classifier | Andrei Kovalevs Midlibrary

系统维护启动盘 优启吧

优启吧-《优启时代系统维护盘》2025典藏版(UD/ISO)

STM32F4xx开发学习_SysTick

SysTick系统定时器 SysTick属于CM4内核外设,有关寄存器的定义和部分库函数都在core_cm4.h这个头文件中实现,可用于操作系统,提供必要的时钟节拍 SysTick简介 SysTick是一个 24 位向下定时器,属于CM4内核中的一个外设,…

Python类方法探秘:从单例模式到版本控制

引言: 在Python编程中,类方法作为一种特殊的实例方法,以其独特的魅力在众多编程范式中脱颖而出。它们不仅提供了无需实例即可调用的便捷性,还在设计模式、版本控制等方面发挥着重要作用。本文将通过几个生动的示例,带您…

八.吊打面试官系列-Tomcat优化-深入源码剖析Tomcat如何打破双亲委派

前言 上篇文章《Tomcat优化-深入Tomcat底层原理》我们从宏观上分析了一下Tomcat的顶层架构以及核心组件的执行流程。本篇文章我们从源码角度来分析Tomcat的类加载机制,且看它是如何打破JVM的ClassLoader双亲委派的 Tomcat ClassLoader 初始化 Tomcat的启动类是在…

5月7号(信息差)

🌍首次,西湖大学用蛋白质语言模型定向改造碱基编辑器,登Cell子刊 https://www.jiqizhixin.com/articles/2024-05-07-10 🎄 哈马斯宣布同意停火提议 https://finance.eastmoney.com/a/202405073067687785.html ✨ 中国将对…

【陀螺仪JY61P维特智能】通过单片机修改波特率和角度参考的方法

根据官方文档: 修改波特率 1.解锁:FF AA 69 88 B5 1.1延时200ms 2.修改波特率:FF AA 04 06 00 2.1切换已修改的波特率然后重新发送解锁和保存指令 2.2解锁:FF AA 69 88 B5 2.3延时200ms 4.保存: FF AA 00 00 00 XY轴角度参考 角度参考是以传感器当前的实际位置&…

IDEA远程连接docker服务,windows版docker desktop

1.windows上安装docker desktop docker desktop下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 有的windows系统不支持安装docker desktop 安装完之后我们可以直接打开,可以选择不登录使用 我们用IDEA连接到docker …