【汽车Bootloader开发】第二章 英飞凌TC3xx芯片中Bootloader的内存划分

系列文章目录

【汽车Bootloader开发】第一章 5分钟看懂汽车Bootloader到底是个啥
【汽车Bootloader开发】第二章 英飞凌TC3xx芯片中Bootloader的内存划分



简介

文中可能有一些概念没有解释到,有疑问的话后面会详细介绍,我们慢慢来。
如上一章所说,Bootloader编程第一步要先划分内存空间,要思考两个问题:
1、芯片的内存范围有多大?
2、我们的Bootloader代码段需要多大?


一、英飞凌TC3xx芯片内存分布

TC3xx芯片手册下载地址

TC3xx芯片内存分布详细内容可以研究芯片手册。
我们这里只介绍Bootloader(后面简写为BOOT)开发时主要用到的内容:主要包括RAM(掉电丢失)和FLASH(PFLASH和DFLASH掉电不会丢失)。

Tips:
1、在芯片手册中看到0x8开头和0xA开头的地址,实际上表示的是同一块物理地址,只不过0x8带CACHE,0xA不带CACHE,无需过于纠结。
2、UCB(0xAF400000-0xAF405FFF)主要是一些用户配置区域,后面会详述,此处暂不涉及。

RAM

TC377为例,一般Flash Driver(具备擦写功能的驱动文件)或者SBL(Secondary Bootloader)会放到RAM内,刷写过程中下载并发挥作用,刷写完成复位后则丢失。

RAM分为DSPR和PSPR,PSPR挂在指令总线上,DSPR挂在数据总线上,因此PSPR运行代码,DSPR存放数据,效率更高。Flash Driver一般都放在PSPR。0x70100000-0x7010FFFF足够,具体可根据实际代码量决定。

Pflash

TC377的PFLASH可用空间为6M,若需要使用SOTA分区功能,那我们只能使用3M空间。此空间要考虑将HSM、BOOT、APP、CAL等内容合理分布,还要预留部分空间用于后续优化新增功能等。

Dflash

TC377的DFLASH可用空间分了两部分,DF0(0xAF000000-0xAF0FFFFF)可用来存放我们的数据,DF1(0xAFC00000-0xAFC1FFFF)用来存放HSM相关内容。

二、Bootloader代码段划分

1.PFLASH空间划分

BOOT一般TC2xx系列芯片划分96K,TC3xx系列芯片划分256k就够了。
HSM代码可以存放在PF0的S0-S39这40个16K的PFlash块中,即640K。
APP一般需要2M左右内存,CAL文件因项目而异,一般只需要几十K。
故可将内存地址分配如下:

内存分配

预留一些空间防止后面APP变大,或者新增需求。此处只是示例,并不代表一定要如此划分。标定根据项目要求,可能会有一段也可能会有多段,需要考虑在内。

2.DFLASH空间划分

APP的FEE模块,BOOT的一些需要DID写入和读出的数据通常会存放到固定地址方便获取。DFLASH用来存放数据要注意4K为一个sector,存放到同一个sector的话,会被同时擦除,需要考虑到这点来设计。

类似PFLASH空间划分,将所需数据一一划分空间。


总结

以上就是地址空间划分需要考虑的内容,当然内存有很多细化内容可以讨论,想明白CACHE/PSPR/DSPR等概念,可以结合芯片手册和其他解说文章。此篇文章主要是提供内存划分思路,无论什么芯片什么项目,初期都需要合理分配好空间再做,否则后期很容易发生混乱。

  • 28
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值