使用sdk-npi-enablement-tool生成SVD文件和芯片头文件

本文详细介绍了如何使用sdk-npi-enablement-tool工具包来生成SVD文件和芯片头文件,包括创建配置文件、填充外设模块寄存器映射描述、验证生成文件和生成芯片头文件的步骤。该工具用于在芯片验证和开发早期阶段,根据已有产品微调,以适应不断变化的需求。

使用sdk-npi-enablement-tool生成SVD文件和芯片头文件

Introduction

芯片验证与测试组(VV,Verification & Validation Team)的同事在验证新芯片产品时,需要在手册完备之前就要开始展开开发工作,甚至需要根据验证的结果对从设计文档合成的初版用户手册进行调整。这些早期的开发工作也会对软件工具的设备支持包提出需求,例如Keil集成开发环境的pack支持包,但正式给用户发布的设备支持包又需要依赖于完备的用户手册。好吧,这其实是一个“鸡蛋问题”(到底是先有鸡再生蛋,还是先有蛋再孵小鸡)。暂且跳过最初的情况,我们软件与系统工程组(Software & System Engineering Team)的工程师可以基于已有的相近产品进行微调,然后同VV提供的验证情况配合,不断微调和迭代趋近最终发布状态。这才是真实世界的开发过程。在这个过程中,对描述寄存器布局的SVD文件的更新是最活跃的,可能随着验证的实际情况,我们希望不要每次都重头开始处理所有外设寄存器的布局,而是不断根据每个周期的反馈,进行局部更新,以减少重复的工作量。在这个工作环境中,在现有SVD文件局部更新某个外设模块,将会是一个非常频繁基本操作。

本文详细说明了如何使用灵动软件与系统工程组自主开发的sdk-npi-enablement-tool工具包,完成SVD文件局部更新的操作过程。

Overview

sdk-npi-enablement-tools工具包含了一个描述外设模块寄存器分布信息的数据库(xlsx文件和yaml文件集合),以及以数据库为对象的一系列服务的工具,例如,从原始的doc格式的UM文档中提取寄存器分布信息存放为xlsx记录的工具类 gen_srctables.py、从描述外设模块寄存器分布的xlsx文件生成SVD文件的工具类 gen_svdfile.py、从xlsx记录中生成包含中断向量表等具体芯片相关信息头文件和dma_request.h文件的gen_sdkfile.py等。

Operation Steps

以新建的不会在真实世界中存在的虚拟平台MM32F0000项目为例,以现有已经发布的MM32F0020微控制器的SVD文件为模板,更换其中的UART模块为USART模块,产生最终的MM32F0000微控制器项目的SVD文件。

创建芯片配置文件yaml

  1. sdk-npi-enablement-tools\tools\generator\yaml\devices目录下创建MM32F0000.yaml文件。这里的MM32F0000.yaml文件描述了SoC中包含了哪些外设模块。

此处以MM32F0020项目在同级目录下的配置文件为模板,复制创建MM32F0000.yaml的芯片配置文件。其中包含了MM32F0000芯片中集成的外设模块。这些记录的信息来自于芯片DS手册中对片上资源介绍的描述,也可以来自于产品经理定义新芯片产品的PB文档,但实际芯片集成资源的情况仍需以DS为准。

coretype: m0

subseries:
  MM32F0000B:
    peripherals:

peripherals:
  flash:
  pwr:
  rcc:
  crc:
  syscfg:
  gpio:
   gpioa:
   gpiob:
  exti:
  adc:
    adc1:
  tim1:
  tim3:
  tim14:
  wwdg:
  iwdg:
  uart:
   uart1:
   uart2:
  spi:
   spi1:
  i2c:
   i2c1:
  dbg:

其中,yaml文件名描述了本产品系列的名字,yaml文件中的subseries及下级属性描述了产品系列内部子系列具体芯片型号的特有外设,例如在MM32F0270.yaml文件中,在不同的子系列中,对usb、can等模块的支持情况就进行了细分。

  1. sdk-npi-enablement-tools\database\ip_reg_desp目录下为MM32F0000创建外设寄存器映射数据记录。

此处以同级目录下的MM32F0020目录为模板,复制成MM32F0000的目录。其中包含了以xlsx文件存放的各外设模块独自的寄存器映射地址信息。这些文件记录的原始数据来自于芯片UM手册中对外设模块的描述,也可以来自于芯片设计组(芯片架构)提供的完备的寄存器描述材料。

在这里插入图片描述

图x 描述IP外设模块寄存器内部偏移的存储映射的数据库记录
  1. sdk-npi-enablement-tools\resource目录下为MM32F0000芯片创建关于中断向量表和外设基址映射信息的记录。

    此处仍以同级目录下的MM32F0020项目为模板,复制成MM32F0000项目的目录。其中包含了baseaddress.xlsx文件和interrupts.xlsx文件,分别记录外设模块的基地址和中断向量表中各中断向量的名字和排序。这些记录的原始信息来自于芯片的UM手册。

在这里插入图片描述

图x 描述芯片集成外设在内存空间中映射的数据库记录
  1. 运行sdk-npi-enablement-tools\tools目录下的gen_svdfile.py脚本程序,将在``sdk-npi-enablement-tools\targetfiles目录创建一个mm32f0000`的项目目录,其中包含本次创建过程生成的SVD文件。

在脚本中修改chiptype的配置值为芯片名,mm32f0000,此处的设定值需要同MM32F0000.yaml文件的文件名保持一致。

import
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值