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/EK-TM4C1294XL:UniFlash "程序加载成功完成"、但是调试端口错误?

Guru**** 2482105 points
Other Parts Discussed in Thread: UNIFLASH, TM4C1294NCPDT, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/714740/ccs-ek-tm4c1294xl-uniflash-program-load-completed-succesfully-but-debug-port-error

器件型号:EK-TM4C1294XL
主题中讨论的其他器件:UNIFLASHTM4C1294NCPDT

工具/软件:Code Composer Studio

尊敬的 TI 社区:

我正在尝试使用 UniFlash 独立闪存工具刷写汇编程序。 源代码如下所示。

Thumb
.CPU cortex-M4
语法统一

#define GPIO_PORT_CGC_R 0x400FE608

#define GPIO_PORTN0_DATA_R 0x40064004
#define GPIO_PORTN_DIR_R 0x40064400
#define GPIO_PORTN_DEN_R 0x4006451C


.section .text
.global main:



LDR R11、=GPIO_PORT_CGC_R
LDR R10、[R11]
ORR R10、#0x1000
STR R10、[R11]

NOP
NOP
NOP
NOP

LDR R11、=GPIO_PORTN_DIR_R
LDR R10、[R11]
Orr R10、#3
STR R10、[r11]

LDR R11、=GPIO_PORTN_DEN_R
LDR R10、[R11]
Orr R10、#3
STR R10、[R11]

LDR R11、=GPIO_PORTN_DATA_R
LDR R10、[R11]
Orr R10、#3
STR R10、[R11]

NOP
NOP

当我选择 A 时、输出 GNU 汇编器生成为应刷写的源文件、然后按"Load Image"按钮、

UniFlash 指出调试端口上存在错误。 同时、它说程序已成功加载(这在我看来很奇怪"

当我尝试查看 TM4C1294NCPDT 的存储器时、它会显示字节。 但是、如果我想查看 GPIO_PORTN_DATA_R、它会提供以下内容

当我尝试使用"Verify Image"按钮验证映像时、系统会提示它 无法加载已选择的文件。

这非常奇怪、因为我100%确定该文件位于该目录中并存在。

是否有人知道 UniFlash 为什么这样做?

此致、

Youri。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我以前见过此错误... 这通常是由于一些目标初始化问题。 这是使用定制板吗? 在尝试加载 CCS IDE 时是否会遇到类似的问题?

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

    尊敬的 Ki-Soo Lee:

    我修改了汇编文件、因为我昨天发布它时、它中有一个拼写错误。

    可以在下面查看当前源代码。

    Thumb
    语法统一
    
    #define GPIO_PORT_CGC_R 0x400FE608
    
    #define GPIO_PORTN0_DATA_R 0x40064004
    #define GPIO_PORTN_DIR_R 0x40064400
    #define GPIO_PORTN_DEN_R 0x4006451C
    
    .section .text
    org 0
    .weakmain
    .typemain、%function
    .global main
    :
    
    LDR R11、=GPIO_PORT_CGC_R
    LDR R10、[R11]
    MOVR9、#0x1000
    ORR R10、R10、R9
    STR R10、[R11]
    
    LDR R11、=GPIO_PORTN_DIR_R
    LDR R10、[R11]
    Orr R10、#3
    STR R10、[r11]
    
    LDR R11、=GPIO_PORTN_DEN_R
    LDR R10、[R11]
    Orr R10、#3
    STR R10、[R11]
    
    LDR R11、=GPIO_PORTN0_DATA_R
    LDR R10、[R11]
    Orr R10、#3
    STR R10、[R11]
    
    NOP
    nop
    
    
    
    .align
    .end
    

    我已经在 Code Composer Studio 中设置了一个项目并选择了 GNU 编译器。

    当我刷写代码时、我得到的唯一输出是

    "Cortex_M4_0:GEL 输出:
    内存映射初始化完成"

    这似乎对 EK-TM4C1294XL 没有影响。 但是、当我拔下 USB 插头并再次插上时、程序就可以正常工作!

    因此、要测试我的汇编程序、我需要使用 Code Composer Studio 对其进行刷写、然后将其拔出、然后重新插入。

    为了回答您的问题、我购买了新的 EK-TM4C1294XL 作为套件、可在下面的2张图片中看到。

    Code Composer Studio 并非完美无缺、但它毕竟闪烁^μ s。^

    UniFlash 的问题是否会由于我只将 GNU 汇编器与源代码一起使用而导致、而没有其他文件

    像_startup_ccs_gcc_c?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是 UniFlash 的问题。 您使用的是 UniFlash 的确切版本? 您是否还能提供您正在尝试刷写的输出文件? 如果您不想发布公共文件(与我开始私人对话)、则可以私下共享您的输出文件。

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

    尊敬的 Ki-Soo Lee:

    感谢您的快速回复。 在下面的屏幕截图中、您可以查看有关我的 UniFlash 版本的详细信息(请记住、我使用的是 GNU/Linux OS)

    a.out 文件是我今天早些时候发送的源代码中的汇编文件。

    由于不允许在论坛上上上载.out 扩展名、我将尝试通过 PM 发送它。

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

    感谢您提供该文件。 我尝试通过 CCS 加载它。 我遇到各种调试端口错误、例如尝试运行和停止时。 您的程序是奇数的、所有内容都加载到地址0x0、这是入口点。 我不确定这是否起作用。

    [引用 user="Xhendos"]

    UniFlash 的问题是否 会由于我只将 GNU 汇编器与源代码一起使用而导致、而没有其他文件

    像_startup_ccs_gcc_c?

    [/报价]

    情况可能是这样。 我将把这个主题移至 TM4C 论坛。 他们可以确认是否允许您执行的操作。

    谢谢

    Ki

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

    非常感谢您花时间和精力处理我的问题。
    我希望 TM4C 上的某个人能够告诉我他们如何汇编.out 文件
    并可以解释我的源代码有什么问题(如果有任何错误或我漏掉的内容)

    此致、
    Youri。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到代码中定义的堆栈指针和复位矢量。 这两者是代码正常工作所必需的。 我们通常不支持汇编级调试。 请使用 TivaWare 或至少 C 代码进行软件开发。 下面是一个介绍格鲁吉亚大学 ARM 汇编编码的链接。 讲座是为 Keil 创建的。 堆栈指针和复位矢量要求是相同的。 您需要适应 GNU 编码。

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

    您好、Charles、

    再次非常感谢您在帮助 TI 代表(和我的 crüe) w.r.t. -"HW 过采样"。  

    阅读 约瑟夫·耀的优秀书籍 《 ARM Cortex M3/M4的最终指南》一定会对这里的海报有所帮助。   汇编代码中有几章是"重"章节-而"关键 MCU 寄存器"(正如您在这里所说的) -都进行了很好的说明-甚至强调了...

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

    您好 CB1、

     感谢您的建议。 我希望我也有这本书。 :-)

     如果有人愿意发表这篇标题为"TI Stellaris ARM Cortex-M4F 汇编教程"的文章、海报也将从中受益、这是一个简单的示例、但仍然涵盖了堆栈指针和复位矢量。 它也是为 GCC 汇编器编写的。

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

    首先、感谢在该主题移至 TM4C 部分后回复该主题的所有人。 每条评论都很有帮助。

    说得对。 必须定义堆栈指针和复位矢量、以便在微控制器启动时检查位置0x4、并执行或跳转该位置。 您的链接非常有用、因为它让我能够深入了解如何使用 GNU 编译器工具链来解决此问题。

    非常感谢您的参考。 我有来自 Jonathan W. Valvano 的书,但他们认为你已经建立了一个环境,并留下了很多基本的装配体。

    我已经购买了您的建议、并将在收到时阅读。

    汇编和运行时没有问题的代码就在这里、以防将来有人卡住。

    equ stack_top、0x20008000
    equ GPIO_PORT_CGC_R、0x400FE608
    equ GPIO_PORTN0_DATA_R、0x40064004
    equ GPIO_PORTN_DIR_R、0x40064400
    equ GPIO_PORTN_DEN_R、0x4006451C
    
    Thumb
    统一.Syntax
    
    .section .text
    org 0
    弱启动
    键入 start、%function
    .global _start
    
    _start:
    .word stack_top、开始
    
    启动:
    
    LDR R11、=GPIO_PORT_CGC_R
    LDR R10、[R11]
    MOV R9、#0x1000
    ORR R10、R10、R9
    STR R10、[R11]
    
    LDR R11、=GPIO_PORTN_DIR_R
    LDR R10、[R11]
    Orr R10、#3
    STR R10、[r11]
    
    LDR R11、=GPIO_PORTN_DEN_R
    LDR R10、[R11]
    Orr R10、#3
    STR R10、[R11]
    
    LDR R11、=GPIO_PORTN0_DATA_R
    LDR R10、[R11]
    Orr R10、#3
    STR R10、[R11]
    
    .align
    .end
    

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

    这种快速购买揭示了"高动力"。    当然、供应商代理-这位"外部人员"很高兴"注意您的成功。"   ( Charles 现在将有"无生活"(已获得两项奖项-一个主题)-至少在接下来的几天内...)

    根据您的"对 ASM 的承诺"-是否可以问您 "为什么?"   您肯定会意识到、现代 C 语言编译器(甚至是供应商提供的有限版本)已经"缩小了"C"和"asm"之间的差距。   

    长期的研究表明(两者:)中存在"巨大的三角洲"

    • 开发速度
    • 不会出现编码错误

    始终且仅如此-作为   Tech Biz 的小所有者、我们非常赞成'C'。我们力求"尽早进入市场-利润率最高时-即使是一家小公司也可能"获得关键(即使是持久的-如果我们幸运的话)"双脚"。  

    ASM 使用-相反-除非受到严格的限制和战略指导-谴责 支持者"迟到"-这会 (最常)大幅缩减(或零)利润!   而且、由于复杂性/工作量的大幅增加、通常会"员工用尽"、这是 ASM 始终强制的!

    另请注意-如果(完全)需要进一步的"ammo"、则此半供应商和所有其他供应商会提供增强的(通常是独占的)支持、但仅针对"C"。   “ASM”火车——最肯定 的——“离开车站”…… 未知的目的地——  但肯定会走下坡路……