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,定义好初始地址和长度就会自动生成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鱼的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值