栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

英飞凌 AURIX 系列单片机的HSM详解(3)——开发方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

英飞凌 AURIX 系列单片机的HSM详解(3)——开发方法

点击回顾之前的文章:
《英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM》
《英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器》

本文以TC397为例,来介绍一下HSM的开发方法。

1. 编译器

HSM开发时分两类工程,一类工程是编译Tricore内核代码的,用到的编译器是Tasking for Tricore;
另一类工程是编译HSM的ARM Cortex-M3内核的,用的是Tasking ARM for HSM。

各个版本可以在下面Tasking的官网上找到,需要试用的话要联系Tasking的销售:
https://www.tasking.com/support/tricore-and-aurix-toolset-support#4.3

2. 调试器

英飞凌的Miniwiggler支持Tricore和HSM核的调试,可以使用Tasking内嵌的Debugger。

高端一点的调试器可以用Lauterbach,配合软件Trace32,需要有Tricore和ARM的license。用Trace32软件结合Lauterbach硬件调试器可以实现HSM核和Tricore核程序的烧写和调试。此外还有iSYSTEM等不太常用的调试器。

3. PFlash地址划分

HSM核的程序代码可以存放于PFlash0的S0-S39这40个16K的PFlash块中,手册中对该区域的定义如下,我们暂时先考虑右侧“HSM only”的情况,先不管TP:

我们此次将该区域划分成如下三部分:

PF0的起始地址0x80000000处的S0-S1用于存放Tricore APP的部分代码,Tricore上电后从0x80000000处开始执行。

HSM代码分为BootLoader和APP两部分,此次将HSM的BootLoader起始地址放在S2 - 0x80008000处,HSM的APP起始地址放在S24 - 0x80060000处,将S2-S39共38个Sector都预留给HSM使用,其中BootLoader分配352K空间,APP分配256K空间。

预留给HSM的这38个Sector要被保护起来,是通过寄存器SP_PROCONHSMCX0/1两个寄存器设置的,HSM的BootLoader启动地址由寄存器SP_PROCONHSMCBS设置,这三个寄存器又都由UBC中的UCB_HSMCOTP0/1_ORIG和UCB_HSMCOTP0/1_COPY定义,详细定义见上一篇文章。这三个寄存器的设置值如图中所示。

MCU上电时,SSW代码先判断UCB中的内容,如有效则将其复制到响应的寄存器中,然后查找SP_PROCONHSMCBS获取HSM核的启动代码地址,启动HSM核。

Flash地址分配可以用链接脚本来控制,代码共分为三个部分,Tricore的APP,HSM的BootLoader和HSM的APP,三个工程的链接脚本要相互配合好,保证编译出来的代码不会互相覆盖。

例如,HSM BootLoader工程中的链接脚本中,PFlash起始地址定义如下:

#define HSM_FLASH					0x80008000

HSM APP工程链接脚本中的PFlash起始地址定义如下:

#define HSM_FLASH					0x80060000

Tricore APP工程链接脚本中,应将PF0中用于HSM的一段剔除,例如:
原链接脚本:

修改为:

(这里pfls01的大小为了方便就写了2M,实际剩余空间>2M)。

将原来放在pfls0的代码段都改为pfls01,只有启动代码放在pfls00中,要修改的地方比较多就不一一列举了:

编译后的Hex文件地址如下图所示:

我们可以看到0x80008000-0x8009FFFF这一段已经没有代码了,被预留出来烧写HSM的代码。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号