本系列的其它几篇文章:

《英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM》
《英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器》
《英飞凌 AURIX 系列单片机的HSM详解(4)——Tricore核与HSM核之间的通信方法》
《英飞凌 AURIX 系列单片机的HSM详解(5)——HSM硬件加速模块的使用》

本文以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_ORIGUCB_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的代码。

4. 程序烧写步骤

根据上文所述,共有三个工程,分别编译得到三个elf或hex文件。程序烧写步骤如下:

(1)烧写BMHD

首先确保BMHD区域的值正确,保证Tricore可以正常启动。

(2)禁用HSM

在烧写HSM程序前,要保证HSM处于禁用的状态,即UCB_HSMCOTP0/1_ORIGUCB_HSMCOTP0/1_COPY两个UCB中 PROCONHSMCFG 中的HSMBOOTEN值为0。

(3)烧写程序

向PFlash中烧写HSM的BootLoader程序、APP程序和Tricore的APP程序。

(4)程序校验

查看PFlash相应地址处的程序,确保三个程序烧写完整,彼此没有覆盖。

(5)配置HSM BootLoader启动地址

PROCONHSMCBS寄存器中配置正确的HSM BootLoader启动地址,依据前文所述,向UCB_HSMCOTP0/1_ORIGUCB_HSMCOTP0/1_COPY两个UCB中的PROCONHSMCBS中的BOOTSELx填入0x02(暂定,待验证)。

(6)启用HSM

以上准备工作完成后,就可以启用HSM配置了,即向UCB_HSMCOTP0/1_ORIGUCB_HSMCOTP0/1_COPY两个UCB中 PROCONHSMCFG 中的HSMBOOTEN写入1.

以上配置都完成且正确后,再次给MCU上电,MCU即可启动Tricore核和HSM核。

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

  1. 英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> <英飞凌 AURIX 系列单片机的HSM详解(3)--开发方法> ...

  2. 英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  3. 英飞凌 AURIX 系列单片机的HSM详解(5)——HSM硬件加速模块的使用

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  4. 英飞凌 AURIX 系列单片机的HSM详解(4)——Tricore核与HSM核之间的通信方法

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  5. STM8L101系列单片机串口配置详解(基于IAR自带库)

    STM8L101f3p6  有一个串口如图 本历程基于库操作 不讨论具体寄存器操作 有兴趣的同学可以自行参考编程手册 下面看一下手册的了解一下特点 本人英语是个小白只可意会不可言传了 内部结构了由于是 ...

  6. 单片机执行指令过程详解

    单片机执行指令过程详解: 单片机执行程序的过程,实际上就是执行我们所编制程序的过程,即逐条指令的过程. 计算机每执行一条指令都可分为三个阶段进行.即取指令-----分析指令-----执行指令. (1) ...

  7. h2 不能访问localhost_SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台

    SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台 作者:一一哥 我在上一章节中讲解了Spring Boot中整合Mybatis,接下来我给大家介绍一款内存数据库--H2. H ...

  8. 大型网站系统架构系列:负载均衡详解(一)

    大型网站系统架构系列:负载均衡详解(一) 2016-03-20 架构说 面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比 ...

  9. 【百度飞浆】YOLO系列目标检测算法详解

    YOLO系列目标检测算法详解 1 YOLO发展史 2 YOLO v3目标检测原理 3 PaddleDetection中YOLO v3模型介绍 4 YOLO v3配置演练 1 YOLO发展史 2 YOL ...

  10. 【百度飞浆】RCNN系列目标检测算法详解

    RCNN系列目标检测算法详解 目录 两阶段目标检测算法发展历程 R-CNN R-CNN网络结构 R-CNN网络效果 Fast R-CNN Fast R-CNN网络效果 Faster R-CNN Fas ...

最新文章

  1. java 二维数组内存溢出_模拟Java内存溢出
  2. 已知三角形三边长怎么求面积_解三角形问题中的常见错解分析
  3. 一个ioc例子jdk和spring版本导致问题
  4. c++备忘录模式mememto
  5. bean named 'entityManagerFactory' that could not be found错误及解决
  6. VS2013 MFC + OpenCV3.0 打开图片
  7. 三步完成自动抢票,又一款春节免费抢票神器推荐
  8. Mybatis框架源码笔记(一)之编译Mybatis源码和源码调试环境准备
  9. php编程模块英文缩写_PHP版国家代码、缩写查询函数代码
  10. 常用嵌套sql语句查询
  11. python实现连环阵
  12. 选择SAP IBP(集成业务计划云)的十大理由
  13. ul阻燃标准有几个等级_阻燃等级划分标准
  14. C# 盛金公式 求解一元三次方程
  15. 工程图学及计算机绘图第二版答案,工程图学及计算机绘图第3版答案
  16. 梦幻西游唯美版3D模型展示
  17. Apple LZF算法解析
  18. Spring源码分析番外篇二:事务原理番外篇
  19. 中关村GHOST XP SP3极速装机版2013V4.0(NTFS)
  20. 完整的ChatRoom聊天室代码

热门文章

  1. 步步为赢,做好数据分析的7个步骤
  2. RMI(Remote Method Invocation)原理浅析
  3. html js 鼠标变图片大小,js之图片变大变小效果
  4. 【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
  5. 简述er图的作用_ER图的理解
  6. Excel中绘制斜线表头
  7. ip归属地是什么?ipv4和ipv6区别?
  8. 云服务器选择、腾讯云轻量应用服务器面板介绍
  9. Opengl ES Glew库 ----- By YDD的铁皮锅
  10. 机器学习的应用–大数据