TIH64 之一 编写 TIH64Vx690 的 SVD 文件及使用 SVD 辅助调试

1 篇文章 0 订阅
订阅专栏

  TIH64Vx690 是方寸微电子研发的高安全、高可靠的 RISC-V 架构的微处理器系列芯片,重点面向网络安全领域,提供安全的单芯片解决方案。TIH64Vx690 提供了 Linux SDK 和 BareMetal SDK,使用芯来的 NucleiStudio 作为集成开发环境。

  在使用中发现,相比于 ARM 架构,RISC-V 架构的相关基础设施要差了不少,在代码调试时尤为明显!类比于 ARM,突然想到了 SVD 文件用于 RISC-V 是否可行,TIH64 系列 SDK 并没有提供 SVD 文件,特此记录移植使用过程!

CMSIS

  CMSIS 最初是 ARM 为了自家的 Cortex-M 系列核制定的一些列规范,因此,它最初是 Cortex Microcontroller Software Interface Standard 的缩写。后来它不断被完善及扩展,现在则被称为 Common Microcontroller Software Interface Standard。

  使用 ARM 内核的芯片供应商则可以直接在 CMSIS 的基础上定制自己的 SDK。例如,STM32 系列的 SDK 就是在 CMSIS 的基础上添加了自己的各种源码文件、示例代码、文档等等。

现实情况是,大部分芯片供应商都是仅使用其中的 CORE 相关源码文件

Open-CMSIS-Pack Project

  Open-CMSIS-Pack 定义了一个芯片要提供的开发包需要包含哪些目录和文件以及如何打包发布。 2021 年 4 月,ARM 牵头成了 Open-CMSIS-Pack Project,将 CMSIS-Pack 升级为一个开放的标准,以此来标准化嵌入式代码的分发(重用性)。

  目前,Open-CMSIS-Pack Project 目前由 Linaro 与 Arm、NXP 和 ST 合作,作为孵化项目进行托管和管理。开发包发布的相关标准及工具都托管于 Github 仓库,主要由以下部分内容:

  1. Open-CMSIS-Pack-Spec
    1. 规范源码:https://github.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec
    2. 在线文档:https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html
    3. 实际就是原来的 CMSIS-Pack
  2. 相关工具
    1. 源码仓库:https://github.com/Open-CMSIS-Pack/devtools
    2. 实用程序:预编译的可执行程序见仓库发布页面
    3. 实际就是原来的 CMSIS-Toolbox

  Open-CMSIS-Pack 中的内容其实就是把原来 CMSIS 中的 CMSIS-Pack 和 CMSIS-Toolbox 独立出来了,本质上还是那一套东西。貌似没有几家的 SDK 是根据严格按照这个规范来发行的!

CMSIS Version 5

  现在,ARM 自家的内核软件包(本身就被称为 CMSIS)也是根据 Open-CMSIS-Pack 制定的规范来发布的一个软件包。其中除了包含大量 ARM 内核使用的相关代码,还包含了大量的模板,以供芯片厂商发布的软件包时添加自己的内容,从而形成一个完整的 CMSIS-Pack 以供用户直接使用。
在这里插入图片描述

  1. 源码仓库:https://github.com/ARM-software/CMSIS_5
    在这里插入图片描述
  2. 在线文档:https://arm-software.github.io/CMSIS_5/latest/General/html/index.html
  3. 实用工具:包含于 CMSIS-Pack 的 CMSIS/Utilities 中,内含 SVD 转换工具,PACK 检测工具。实际就是从 https://github.com/Open-CMSIS-Pack/devtools 直接拿过来的。

CMSIS Version 4

  CMSIS 5 之前的时旧版本的 CMSIS,旧版本的 CMSIS 也是采用 CMSIS-Pack 发布,但是部分模块没有提供源码。旧版已经不再维护,但是目前有部分芯片软件包还在使用旧版规范及相关工具。

  1. 源码仓库:https://github.com/ARM-software/CMSIS
  2. 在线文档:https://arm-software.github.io/CMSIS_5/latest/General/html/index.html
  3. 实用工具:包含于 CMSIS-Pack 的 CMSIS/Utilities 中,内含 SVD 转换工具,PACK 检测工具。

NMSIS

  TIH64Vx690 使用的是芯来 UX608 作为 CPU,因此,SDK 的内核源文件使用了芯来的 NMSIS。NMSIS 则是芯来参照 ARM 的 CMSIS 搞了一套自己的独立于供应商的硬件抽象层代码库。
在这里插入图片描述
  与 STM32 基于 CMSIS 提供自己的 SDK 类似,TIH64 系列 SoC 也是基于 NMSIS 提供了自己的 BareMetal SDK。但是,SDK 里面并没有实现 NMSIS 中定义的 SVD 文件。

NMSIS 应该还是初级阶段,其本身也不完善

SVD 文件

  SVD(System View Description) 文件是 CMSIS(Common Microcontroller Software Interface Standard) 中的定义的一个 XML 格式的纯文本文件,其包含了芯片内核、芯片所具有的外设以及内核和外设的寄存器的完整描述(详细到寄存器的每个 BIT 位)。

  CMSIS 本身主要是针对 ARM 自家 Cortex 架构的,但是 CMSIS 足够开放,其他架构基本也可以模仿。因此,我们的 RISC-V 架构的芯片同样可以使用 SVD 文件。唯一需要注意的是 <cpu> 中的 <name> 填写 other 就可以了,其他填写规则与 ARM 一样即可(以下仅仅是个示例)。
在这里插入图片描述

源码

  我从 ARM 的 CMSIS 中提取了相关工具并打包,组成了 TIH64-SVD 开源项目,开源地址 https://gitee.com/itexp/TIH64-SVD。TIH64Vx690 系列 SoC 寄存器一大堆,目前,我正在逐步添加中。感兴趣的可以提交 PR 共同完善。

编写

  SVD 文件是一个 XML 格式的文本文件,可以使用任何编辑器进行编辑。所有的字段解释在 Open-CMSIS-Pack 文档中都有详细的介绍,编写后,通过使用以下命令可以检查我们写的 SVD 文件是否有错误:

  1. 执行 SVDConv.exe UX600.svd -o Output -b Output/UX600.log,确保 0 错误 0 警告
  2. 执行 SVDConv.exe UX600.svd --generate=sfr -o Output,确保 0 错误 0 警告

用途

目前,SVD 主要有以下两大用途。

生成 芯片.h

  SVD 文件的内容足够详细,以至于使用相关工具命令(SVDConv.exe UX600.svd -o Output -b Output/UX600.log --generate=header)就可以根据编写的 SVD 文件直接生成芯片的顶级头文件(UX600.svd --> UX600.h)。
在这里插入图片描述
  注意,随着 CMSIS 规范的升级,SVD 文件内容及相应的工具出现了一些差异,尤其是生成的芯片头文件的代码格式。因此,我将两个版本的 SVD 独立保留。理论上,SVD 文件是向后兼容的,因此,这两个版本下的 SVD 基本是一致的,随便选择一个使用即可。

调试

  SVD 文件最主要的目的是调试时直接显示寄存器的每个比特位的状态。由于 ARM 在嵌入式领域的统治地位,目前,几乎所有主流嵌入式开发工具(部分可能需要依赖插件)均支持在调试时动态解析 SVD 文件。例如 Eclipse 中的使用效果如下:
在这里插入图片描述

注意,不同于 Keil 和 IAR 等,Eclipse 不支持实时显示寄存器值。因此,需要暂停程序执行后才可以查看寄存器值。

使用示例

  目前,绝大多数嵌入式开发工具都支持手动导入 SVD 文件。部分工具(例如,Keil)也使用二进制的 SFR 文件,需要使用命令 SVDConv.exe UX600.svd --generate=sfr -o Output 手动将 SVD 文件转换为二进制的 SFR 文件。

SfrCC2.Exe 就来自于 Keil

eclipse

调试配置界面有专门的 TAB 页来运行用户指定 SVD 文件,如下图所示:
在这里插入图片描述
进入调试界面,就可以在 Peripherals 标签下,看到我们添加的外设,选中想要查看的外设,就可以显示外设寄存器。
在这里插入图片描述

参考

  1. https://arm-software.github.io/CMSIS_5/General/html/index.html
ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例
技术干货
02-18 762
目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。
TiH2粉末的高能行星球磨及超细晶钛烧结 (2013年)
04-25
研究TiH2粉末的高能行星球磨规律,然后使用制备出的球磨粉末开展压制-真空烧结,评价烧结样品的显微组织特征。结果表明,TiH2粉末的高能球磨可划分为3个基本阶段:球磨初期粉末粒度迅速细化;球磨中期粉末粒度逐步...
针对内部RAM中SFR的原理
weixin_73463925的博客
01-31 275
那我们就可以利用这三位·(bit2,bit1,bit0)来干点别的事,(bit2,bit1,bit0)表示的范围是0~7,即寄存器内部的8bit空间,这样我们把固定为0的这后三位利用起来表示寄存器内部的位偏移的话,这个寄存器就变成可以进行位操作的寄存器了。不同芯片所实现的功能和内部结构是有区别的,所以头文件就会有差异,为了方便查找,就会命名不同 芯片的名字,以名字来区别芯片的作用和功能。我们都知道在写程序时,头文件是必不可少的,可是我们却往往忽视了头文件原理,所以我就来讲讲它具体的深层原理究竟是什么?
RISC-V SVD 文件生成工具
10-03
RISC-V SVD 文件生成工具。详细说明见博文 RISC-V 之一 使用 ARM CMSIS 的 SVD 文件辅助调试 https://itexp.blog.csdn.net/article/details/127144450
CMSIS-SVD 解析器项目教程
最新发布
gitblog_00106的博客
08-15 369
CMSIS-SVD 解析器项目教程 cmsis-svd项目地址:https://gitcode.com/gh_mirrors/cms/cmsis-svd 1. 项目目录结构及介绍 该项目的主要目录结构如下: . ├── cmsis-svd # 主要的解析器代码和工具 ├── cmsis-svd-parser.py # Python SVD解析器示例 └── examples...
芯片svd文件生成
weixin_43673603的博客
02-14 1146
【代码】芯片svd文件生成。
SVD文件转换工具
sdv的博客
02-08 1327
SVD文件转换工具用途代码 用途 转换现有svd文件到 mculib4d 的芯片声明工具 代码查阅 代码 module svd; import std.stdio; import std.file; import std.xml; import std.string; import std.regex; struct tys { union{ uint i1; ushort[2] s1; ubyte[4] b1; } } int main() { string svdfile
使用sdk-npi-enablement-tool生成SVD文件和芯片头文件
suyong_yq的专栏
01-19 3311
本文详细说明了如何使用灵动软件与系统工程组自主开发的`sdk-npi-enablement-tool`工具包,完成SVD文件局部更新的操作过程。
SVD详解
liudongdong_jlu
07-09 3585
SVD详解 SVD(singular value decomposition),翻译成中文就是奇异值分解。SVD的用处有很多,比如:LSA(隐性语义分析)、推荐系统、特征压缩(或称数据降维)。SVD可以理解为:将一个比较复杂的矩阵用更小更简单的3个子矩阵的相乘来表示,这3个小矩阵描述了大矩阵重要的特性。   1.1奇异值分解的几何意义(因公式输入比较麻烦所以采取截图的方式) ...
加热氧化处理对TiH2释氢行为的影响 (2005年)
06-11
结果表明:经高于450℃空气中加热处理后TiH2于Ar气氛中释氢,TiH1.97和TiH1.92向TiH1.5转变的相变开始温度有明显的升高趋势,表明氧化产物对TiH2有较好的缓释效果;氧化温度对TiH2缓释效果的影响程度明显大于保温...
SiO2/TiH2包覆粉体的制备及其释氢特性 (2005年)
05-12
The coating process of TiH2 particles with SiO2 layers, and the effect of the coating layer on hydrogen release characteristic of TiH2 powders were studied experimentally. The gelation rate of silicic...
cmsis-svd, ARM Cortex M of SVDs和相关工具的Aggegration.zip
10-10
cmsis-svd, ARM Cortex M of SVDs和相关工具的Aggegration 基于的包分解存储库 这是什么?这个仓库试图通过两种主要方式向devlopers平台提供价值:提供一个方便的地方来访问和聚合来自多个源的cmsis svd硬件描述。提供使代码生成和基于SVD的工具更易于构建的解析器。 大多数解析
stm32 SVD文件合集
10-30
包含:STM32F756.svd STM32H723.svd STM32L476.svd STM32F0x0.svd STM32F7x2.svd STM32H725.svd STM32L496.svd STM32F0x1.svd STM32F7x3.svd STM32H73x.svd STM32L4P5.svd STM32F0x2.svd STM32F7x5.svd STM32H742x.svd STM32L4Q5.svd STM32F0x8.svd STM32F7x7.svd STM32H743.svd STM32L4R5.svd STM32F100.svd STM32F7x8.svd STM32H745_CM4.svd STM32L4R7.svd STM32F101.svd STM32F7x9.svd STM32H745_CM7.svd STM32L4R9.svd STM32F102.svd STM32G030.svd
svd详细的svd介绍,非常有用的;
09-17
svd详细的svd介绍,非常有用的;svd详细的svd介绍,非常有用的;svd详细的svd介绍,非常有用的;svd详细的svd介绍,非常有用的;
SVD快速教程
07-31
特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧
ST GD等大多数M内核芯片SVD文件
06-11
ST GD NZP TI等大多数M内核芯片SVD文件,可使用文件进行仿真调试,在线查看寄存器状态等
升温速率对TiH2热分解反应动力学的影响 (2009年)
06-14
利用程序升温热重法研究了TiH2的热分解动力学,考察了升温速率对热分析谱图的影响,并用单一升温速率法和多个升温速率组合法分别作了动力学分析。结果表明:反应的起始温度Tm,峰顶温度Tp均随着升温速率的升高而增大...
修改.svd仿真文件
dew_gao的博客
01-19 3309
修改.svd仿真文件仿真寄存器描述svd文件dac监控问题修改 仿真寄存器描述svd文件 在用vs code做stm32f072开发时遇到了仿真文件与手册描述不一致问题,简单提供一下修改方法。 dac监控问题 stm32f072x.svd的dac描述沿用了f051的,只描述了一个dac外设。然而072具有两个dac,可以实现双路的dac输出。而仿真文件便于我们观察dac的工作状态,iar中我并没有找到相关的文件无法修改。 修改 <peripheral> <name>DAC
Scala 读取SVD文件转成JSON
E的小小地方
07-16 388
import java.io._ import scala.util.parsing.json.JSON class ReadSvd { val svdFilePath: String = "D:\\aa\\" def genSvdInfo(svdName: String) = { val fileName: String = svdFilePath + svdName + "...
编写基于matlab的sfr函数
06-02
以下是基于MATLAB的SFR函数的示例代码: ```matlab function [resolution, sfr, freq] = calculate_sfr(image, threshold, fft_size, angle) % 计算图像的分辨率 % % 输入参数: % image - 输入图像,为灰度图像 % threshold - Sobel算子的阈值,默认为0.1 % fft_size - 傅里叶变换的大小,默认为512 % angle - SFR算法的方向,0表示水平方向,90表示垂直方向,默认为0 % % 输出参数: % resolution - 图像分辨率 % sfr - SFR曲线 % freq - 空间频率 % 设置默认参数 if nargin < 4 angle = 0; end if nargin < 3 fft_size = 512; end if nargin < 2 threshold = 0.1; end % 计算边缘 if angle == 0 edge_image = edge(image, 'sobel', threshold, 'horizontal'); else edge_image = edge(image, 'sobel', threshold, 'vertical'); end % 计算SFR sfr = sum(edge_image, angle+1)'; % 对SFR进行傅里叶变换 sfr_fft = abs(fft(sfr, fft_size)); sfr_fft = sfr_fft(1:fft_size/2); % 计算空间频率 freq = (0:(fft_size/2-1)) / fft_size; % 找到SFR曲线的第一个峰值 [pks, locs] = findpeaks(sfr_fft); [~, max_idx] = max(pks); resolution = freq(locs(max_idx)); % 绘制SFR曲线 plot(freq, sfr_fft); xlabel('空间频率'); ylabel('幅度'); title(sprintf('分辨率 = %.2f', resolution)); ``` 使用示例: ```matlab image = imread('lena.png'); gray_image = rgb2gray(image); [resolution, sfr, freq] = calculate_sfr(gray_image); ``` 需要注意的是,该函数仅适用于灰度图像。如果要对彩色图像进行分辨率计算,需要先将其转换为灰度图像。此外,SFR算法的参数需要根据图像的特性进行适当调整。
写文章

热门文章

  • 开发工具 之四 Python 中的 pip 安装 及 使用详解 286425
  • Network 之二 Ethernet(以太网)中的 MAC、MII、PHY 详解 164699
  • STM32 之一 HAL库、标准外设库、LL库(STM32 Embedded Software) 115611
  • STM32 之二 HAL库详解 及 手动移植 107010
  • 开发工具 之七 Visual Studio Code 中 C/C++ 调试配置详解 83063

分类专栏

  • Linux Kernel 付费 8篇
  • U-Boot 付费 9篇
  • ARM 付费 17篇
  • STM32 付费 16篇
  • Yocto & Buildroot 付费 7篇
  • Network 付费 13篇
  • LwIP 付费 10篇
  • 开发工具 付费 12篇
  • CAN & USB 付费 11篇
  • Linux 8篇
  • Toolchain 3篇
  • FreeRTOS 9篇
  • 项目管理 8篇
  • GIT 5篇
  • TIH64 1篇
  • 华大 MCU 7篇
  • C/C++ 13篇
  • FAT 文件系统 3篇
  • SourceInsight 4篇
  • LORA 1篇
  • 常用算法 5篇
  • 学无止境 4篇
  • Android 1篇

最新评论

  • 学无止境 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)笔记

    山脚下的迷路人: 中文版翻译不是很准确

  • Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现

    张小北: 谢谢大佬,学习了。

  • Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现

    旭很不戳: ERROR: Missing META-INF/MANIFEST.MF

  • Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现

    旭很不戳: 大佬给孩子个构建教程吧!构建失败最多的那个,没错就是我!快看看吧!急需!!!表情包

  • Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现

    旭很不戳: 就我这菜狗构建不成功么表情包

最新文章

  • 开发工具 之十二 详解 J-link、OpenOCD 的 FLASH、RAM 烧写原理、配置、自定义
  • 开发工具 之十一 详解 OpenOCD 源码、构建、配合各仿真器使用示例
  • Yocto 之二 详解 Layer Model、配置文件、Recipes 等
2024年16篇
2023年20篇
2022年21篇
2021年22篇
2020年12篇
2019年25篇
2018年46篇
2017年19篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZC·Shou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

天下网标王北京网站关键词优化代理坪山新区网站优化灯塔优化网站排名黄冈网站优化公司排名网站外部链接优化策略嘉兴网站优化销售厂家电话禹州网站优化有效果吗做优化网站软件股票网站优化推广好做不网站的整体搜索引擎优化概述资阳襄阳网站运营优化公司收费网站优化成功案例新网站关键词优化步骤莱芜网站优化是什么南山网站优化平台济宁网站优化注意事项网站建设公司网站排名优化深圳好的网站自然优化义乌网站建设优化推广菜鸟式网站的优化方法辽宁网站优化排名制作清远外贸网站关键词优化工具莱芜企业网站关键词优化网站优化发外链必须加链接吗网站优化有哪几种方式邛崃企业网站优化费用瑞金市网站排名优化旅游优化网站怎么设置郑州网站权重优化方式网站优化是咋做上去的香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化