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.

[参考译文] CCS/RM41L232:编辑寄存器会导致"在[...]写入内存块时遇到问题 错误-2130"

Guru**** 2599605 points
Other Parts Discussed in Thread: RM41L232, CCSTUDIO, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/721224/ccs-rm41l232-editing-registers-results-in-trouble-writing-memory-block-at-error--2130

器件型号:RM41L232
主题中讨论的其他器件: CCStudioHALCOGEN

工具/软件:Code Composer Studio

我有一个具有 RM41L232微控制器的电路板、我将使用 HAL CC 4.06和 Code Composer Studio 7.1.0.00016。

我能够使用 XDS110调试探针通过 JTAG 对芯片进行编程。 但是、当我尝试写入寄存器时、我会得到一个错误

CortexR4:写入长度0x4第0页0xf7c108上的内存块时遇到问题:(错误-2130 @ 0xFFF7C108)无法访问设备内存。 验证内存地址是否在有效内存中。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包6.0.576.0) 

我正在尝试写入 ADCEVTSET 寄存器。

我创建项目所遵循的步骤为:

1) 1)在 CCStudio 中创建一个空项目(同时选择合适的微控制器)

2) 2)在 HAL CC 中打开项目并生成代码。 我只启用了一些驱动程序、并配置了一组引脚用作 GIO。 我没有更改任何与闪存或 RAM 相关的内容。

阅读一些论坛主题后、我认为链接器命令文件可能存在问题。 请注意、我对 C 语言比较陌生、我不确定该文件的用途是什么。 通过分析我在默认情况下发现的构建日志、工程将使用文件 sys-link.cmd

'Building target:testing.out'
'调用:arm Linker'
"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.1.LTS/bin/armcl -mv7R4 --code_state=32 -me -g --diag_warning=225 --diag_wrap=off --display_error_number --verbose_diagnostics --enum_type=packed --abi=eabi -m"-mdiag_warn=off --display_error-map_size=-out-linkg-out-ex-map-display_linkg-ex-display_size-display_link-out-display_size-display_size-display-display_size-out-display-display-link-out-display_size-display-display-display-link-display_size-display_size-display_testing-ines=-link-ines=-ines=-/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.1.LTS/include /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.1.LTS/lib rom_model -o "Testing.out""./source/adc.obj ""./source/can.obj ""./source/crc.obj ""./source/dabort.obj ""./source/dcc.obj ""./source/eqep.obj ""./source/esm.obj ""./source/gio.obj ""./source/sys_core.obj ""./source/lin.obj ""./source/sys_pcr.obj ""./source/mibspi.obj ""./source/notification.obj ""./source/pinmux.obj /source/sys_mpu.obj /source/sys_pmu.obj /source/sys_vim.obj ""./source/rti.obj ""./source/sys_intvecs.obj ""./source/sys_selftest.obj ""./source/system.obj "./source/het.obj /source/spi.obj /source/sys_main.obj /source/sys_phantom.obj /source/sys_startup.obj /source/sys_link.cmd

'已完成的构建目标:testing.out'
'''' 

当我打开项目属性时、链接器命令文件的字段为空。 如果我选择 RM41L232FlashLnk.cmd、我在构建一些已经定义的内容时会遇到错误。 我认为这是因为文件 sys-link.cmd 仍然存在。 因此、我将 sys-link.cmd 重命名为 sys-link.cmd.old。 这会导致在建筑过程中发出警告:

'Building target:testing.out'
'调用:arm Linker'
"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.1.LTS/bin/armcl -mv7R4 --code_state=32 -me -g --diag_warning=225 --diag_wrap=off --display_error_number --verbose_diagnostics --enum_type=packed --abi=eabi -m"-mdiag_warn=off --display_error-map_size=-out-linkg-out-ex-map-display_linkg-ex-display_size-display_link-out-display_size-display_size-display-display_size-out-display-display-link-out-display_size-display-display-display-link-display_size-display_size-display_testing-ines=-link-ines=-ines=-/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.1.LTS/include /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.1.LTS/lib rom_model -o "Testing.out""./source/adc.obj ""./source/can.obj ""./source/crc.obj ""./source/dabort.obj ""./source/dcc.obj ""./source/esm.obj ""./source/gio.obj ""./source/sys_intvecs.obj ""./source/lin.obj ""./source/sys_selftest.obj ""./source/mibspi.obj ""./source/notification.obj ""./source/pinmux.obj /source/sys_core.obj /source/sys_mpu.obj /source/sys_pmu.obj /source/sys_vim.obj ""./source/rti.obj ""./source/sys_pcr.obj ""./source/eqep.obj ".dl.c "./source/system.obj "."."./source/het.obj /source/spi.obj /source/sys_main.obj /source/sys_phantom.obj /source/sys_startup.obj

警告#10247-D:在没有段规范
的情况下创建输出段".sysme"'finished building target:testing.out''
''' 

调试会话仍会启动、但存在相同的问题。

这两个链接器命令文件是不同的、这让我感到惊讶、因为这两个文件都应该与 RM41L232一起使用。

我有点迷路了。 如果有人能对这个问题有所了解、那将会很棒。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否正在尝试使用 CCS 内的存储器窗口写入寄存器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经尝试过 CCS 内的"Registers"窗口和"Memory"窗口。

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

    您编程到器件中的代码有什么作用? 它是否释放到外设的复位并启用外设时钟?

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

    除了释放外设(例如通过调用 spiInit();)之外,它不执行任何操作。

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

    此问题是否已解决? 您是否能够使用寄存器或存储器窗口写入 ADCEVTSET 寄存器?

    默认情况下、所有外设都保持在复位状态。 为了使外设从复位中释放、需要设置系统模块 CLKCNTL 寄存器(PENA、外设使能)的位8。

    我建议您反转创建项目的顺序。 也就是说、使用 HALCoGen 创建一个项目、然后从 CCS 中打开该项目。 请参阅以下介绍此过程的应用手册 :www.ti.com/.../spna121b.pdf

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

    问题没有解决、但我解决了。 我非常感谢你的答复,但自我发表这篇文章以来已经超过一个月了,所以我继续发言。