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.
工具与软件:
您好!
我将用于 TMS570LS0714PGE 的 FreeRTOS HalCoGen 项目移植到了 TMS570LS0914PGE 。 运行正常、示例任务启动并切换 GIOB.3。 我还将 ECLK 配置为用作 GIO。 在启动调度程序之前切换调度程序会正常工作。 在示例任务中切换 ECLK 会导致数据中止异常。 我想知道作为 GIO 的 ECLK 有什么特别之处、我缺少什么? 这是由 MPU 引起的吗?
这是我修改后的链接器脚本:
小程序
{
VECTORS (X):origin=0x00000000 length=0x00000020
内核(RX):origin=0x00000020 length=0x00008000
FLASH0 (RX):origin=0x00008020 length=(0x00100000 - 0x8000 - 0x20)
堆栈(RW):origin=0x08000000 length=0x00000800
KRAM (RW):origin=0x08000800 length=0x00000800
RAM (RW):origin=0x08001000 length=(0x00020000 - 0x800 - 0x800)
}
部分中)
{
. intvecs :{}>向量
kernelTEXT :{}> kernel
.cinit :{}>内核
.pinit :{}>内核
.text :{}> FLASH0
.const :{}> FLASH0
.kernelBSS :{}>克拉姆
.kernelHEAP :{}>RAM.
.bss :{}>RAM.
.data :{}>RAM.
}
尊敬的 Ju We:
这是因为用户模式没有访问系统资源的权限。 由于 ECLK 端口寄存器进入系统资源、因此、如果我们尝试在用户模式下写入这些寄存器、那么它将创建数据中止异常。
该问题的解决方案是在访问 ECLK 的系统端口寄存器之前切换模式。
有关更多详细信息、请参阅以下主题、其中我还随附了示例工程来解决该问题:
(+) TMS570LS1227:在 GIO 模式中使用 ECLK、而不生成 dabort。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
我做了一些阅读。 可 在任务创建时使用 portPRIVILEGE_BIT 按位或操作更改任务优先级。 这使得任务以特权模式运行。