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.

[参考译文] MSP432E401Y:在TIRTOS中使用闪存访问操作挂起XDS110 UART_WRITE函数

Guru**** 2035740 points
Other Parts Discussed in Thread: MSP-EXP432E401Y
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1096097/msp432e401y-xds110-uart_write-function-hanged-using-flash-access-operation-in-tirtos

部件号:MSP432E401Y
主题中讨论的其他部件:MSP-EXP432E401Y

您好,

为了测试闪存操作,我导入了“nvsinternal”作为TIRTOS CCS项目,并将“nvsinternal.c”替换为“flash_access-c”。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
* ======== flash_access.c ========
*/
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
/* DriverLib Header files */
#include <ti/devices/msp432e4/driverlib/driverlib.h>
/* Driver Header files */
#include <ti/display/Display.h>
#include <ti/drivers/UART.h>
#include <ti/drivers/NVS.h>
#include <xdc/runtime/System.h>
/* Driver configuration */
#include "ti_drivers_config.h"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 此C程序非常简单:

  1.打开配置为XDS 110 UART的UART0  

  2.闪擦除(0xFC000)

  3.在名为 SV_remoteConf的C结构中填充数据

  4.  使用FlashProgram()函数保存SV_remoteConf结构的此内容

  5.访问存储在闪存中的数据并加载到数据结构中

  6.使用UART_WRITE将加载的数据输出到COM端口

如果我注释掉所有UART_WRITE语句,则此程序在CCS调试模式下工作正常。

但是,如果我将所有 UART_WRITE语句都激活,则CCS调试将在第一 个UART_WRITE语句中挂起。  

我无法继续调试。 所以我停止调试。

在TI-RTOS下,闪存操作和UART操作之间是否有冲突?

请告诉我解决这个问题的线索。

我的测试环境是:

  -操作系统:Windows 10 64位

  - CCS:  版本:11.2 .0.0.0007万  

  - simplelink_msp432e4_SDK: 版本4_20_00_12

  - MSP-EXP432E401Y LaunchPad

任何帮助/建议都应提前获得。   

海升

  

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

    你好,HaeSeung

    请考虑将断点设置为内部函数"UART_WRITE (UART_WRITE)",并检查该函数是否在该函数上正常运行(通过逐步进入和重新执行)

    谢谢!

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

    您好,Xiaodong,

    要使用ROV,我将引用的项目从"tirtos_build_MSP_EXP432E401Y_debug_CCS"更改为"tos_build_MSP_EXP432E401Y_release_CCS"

    然后我发现 UART_OPEN ()在 UART_WRITE ()操作挂起之前导致java.lang.Exception,说:

       错误:java.lang.exception: target memory read failed at address: 0x8, length:76 This read is at an invalid address.(java.lang.exception:目标内存读取失败,地址:0x8,长度:76此读取位于无效

        根据应用程序的分区地图。 应用程序可能未初始化或已损坏。

    我附上了所有可用的屏幕截图(RAW,BASIC,CallStacks和Module),如下所示:

    如果我注释掉所有闪存驱动程序库API,那么UART_OPEN ()和UART_WRITE ()运行良好,没有问题。

    仅当在TI-RTOS下同时使用UART驱动程序API和闪存驱动程序库API时,才会发生此错误。

     UART驱动程序API和闪存驱动程序库API之间是否存在任何已知冲突?

    欢迎提前提供任何帮助/线索。

    海升