This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0G3507:SVD 文件问题。

Guru**** 2524550 points
Other Parts Discussed in Thread: MSPM0G3507

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1458631/mspm0g3507-svd-file-issue-s

器件型号:MSPM0G3507

工具与软件:

 您好!

我找到了有关 MSPM0G3507 SVD 问题的主题: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1398791/mspm0g3507-could-you-provide-svd-files-for-mspm0g3xxx-family

我正尝试通过 svd2rust 编译器来编译 TI 提供的 MSPM0G3507 SVD、以便将来还能使用 Rust 的 MCU。 `re,到目前为止,我已经把所有的"读写一次"替换为"读写",并做了这一改变:

@@ -74984,7 +74984,7 @@
                             <description>Bank not in read mode.
 Indicates which banks are not in READ mode.  There is 1 bit per bank.</description>
                             <bitOffset>0x0</bitOffset>
-                            <bitWidth>0x1</bitWidth>
+                            <bitWidth>0x5</bitWidth>
                             <access>read-only</access>
                             <enumeratedValues>
                                     <enumeratedValue>

以便从 SVD 文件生成 Rust 代码。

无论如何、我仍然会遇到生成的代码中缺少某些寄存器的问题。 到目前为止、我将重点介绍尽可能实现"LED 闪烁"的示例、因此这里只介绍 GPIO。 SVD GPIO 定义提供了"仪表组"中定义的几个寄存器。 不幸的是、这对我的 svd2rust 不是很有效、而且我不会得到为这些寄存器生成的代码.

这可能只是我的 svd2rust (0.35.0、截至目前最新版本)的一个问题、遗憾的是 TI 自身改变了 MSPM0L130X.SVD 中有问题的代码(涉及到集群)。 在2023年版本(作为 VS 代码 Cortex-Debug 扩展名的一部分分发的文件)中、SVD 文件包含寄存器组、而 TI 的最新代码重写它以使用非清除器寄存器序列。 标题的差异应该有助于识别我在这里讨论的变化:

--- MSPM0L130X.svd      2024-05-24 13:59:22.000000000 +0200
+++ /c/Users/gardas/git/SE/TI_MSPM0L/mspm0l130x/MSPM0L130X.svd  2024-12-12 19:33:15.692204100 +0100
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<device schemaVersion="1.2" xmlns:xs="">www.w3.org/.../XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD.xsd" >
+<?xml version='1.0' encoding='UTF-8'?>
+<device xmlns:xs="">www.w3.org/.../XMLSchema-instance" schemaVersion="1.2" xs:noNamespaceSchemaLocation="CMSIS-SVD.xsd">
    <vendor>Texas Instruments</vendor>
    <vendorID>ti.com</vendorID>
    <name>MSPM0L130X</name>
-   <version>This preliminary header file does not have a version number -  build date: 2024-04-29 21:56:11</version>
+   <version>This preliminary header file does not have a version number -  build date: 2023-02-21 16:43:37</version>
    <description>ARM Device</description>
    <licenseText>
-  Copyright (C) 2024 Texas Instruments Incorporated - http://www.ti.com/
+  Copyright (C) 2023 Texas Instruments Incorporated - http://www.ti.com/

现在、当看到此 MSP-L 系列 SVD 定义变化时、我很好奇 TI 是否计划在 G 系列 SVD 文件中进行类似的更改?

谢谢!
Karel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Karel:
    您能否更详细地介绍您在  MSPM0G3507.SVD 文件中遇到的具体问题? 以下还是最新版本的 MSPM0G3507 SVD 文件: www.keil.arm.com/.../
    此致、
    Diego Abad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Diego:

    感谢您的咨询。 我的 svd2rust 编译器抱怨"读写一次"声明的寄存器. 我不知道该指责谁,但我已经解决了这一问题,把所有读写发生改为"读写"。

    另外,闪存相关的信息/位宽似乎是不正确的-请参阅我在上面发布的 diff。 再次,我不知道这是不是一个正确的修复,但它使编译器高兴,因为它继续生成实际的 Rust 代码。

    最后,群集寄存器似乎不会使 svd2rust 编译器满足任何原因. 它不会为此类寄存器生成任何代码。 我会在 Rust 社区的某个地方问这个问题、并将通过信息返回给您。

    谢谢!
    Karel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Karel:

    谢谢您让我知道。 我会让软件团队了解这一点。

    此致、

    Diego Abad