汇编中使用串口打印调试方式

汇编中使用串口打印调试方式

问:如何在汇编中使用串口打印调试方式
BSP 调试中经常会遇到汇编中需要打印相关状态的情况,如下代码基于全志 T3(ARM Cortex A7)平台展示如何在汇编中打印一个字符的串口调试信息。类似的方式经过简单修改也可以移植到其他平台上。(注意:打印串口信息过程中会使用到 R0、R1 两个寄存器,注意相关寄存器的上下文关系)
  1. LDR R1, =0x01c2807C ; /* 读取串口状态寄存器 */
    1:
    LDR R0, [R1]
    MOV R0, R0, LSR#2 ; /* 将串口状态寄存器的值向右移两位 */
    AND R0, R0, #1 ; /* 保留发送空位状态 */
    CMP R0, #0 ; /* 判断是否位 0 */
    BEQ 1b ; /* 等待上一次发送结束 */
    MOV R0, #0x41 ; /* 0x41 为 ‘A’ 的 ASCII 码 */
    LDR R1, =0x01c28000 ; /* 0x01c28000 为串口数据寄存器地址 */
    STR R0, [R1] ; /* 写入数据 */

    • Related Articles

    • SylixOS调试不支持数据断点

      Q:调试的时候 attach 到进程,立马死掉,或者调试的时候出现很多诡异现象。 解决方法: 先叫用户在 IDE 下面检查是断点设置情况,或者直接清空断点,然后再链接,看下调试功能是否就好了,如果好了,说明之前可能出现无意中触发设置数据断点的功能了。
    • 如何使用 SylixOS 交叉编译链生成汇编文件

      问: 如何使用 SylixOS 交叉编译工具链生成汇编文件? 有时需要生成汇编文件,此处提供一种生成汇编文件的方法。 (1)找到对应的交叉编译工具链所在的目录 一般为<IDE安装位置>\RealEvo\compiler\<所用平台交叉编译工具链目录> ,记录交叉编译工具链*.exe文件所在的绝对路径。操作如图1-1所示 图1-1  交叉编译工具链路径 (2)在 IDE 中编译目标工程,获得编译时的具体参数(若工程以前编译过的话,请先进行 clean project 的操作),如图1-2所示。 ...
    • RealEvo-IDE 使用串口调试 App

      需求 对于不支持以太网接口的设备,可以使用串口进行手动启动调试,基本流程参见《RealEvo-IDE使用手册》中 5.3 小节的内容。 为了用户能正常使用该功能,本文档将实际操作中的细节整理如下。   硬件设备 本次演示使用的硬件设备是翼辉信息的T3工业控制器IGC1500,串口设备信息如下: 1 个 RS232 Debug 接口: 设备名/dev/ttyS0,对应于接线端子 RS232-2,端口信号为 RX2,TX2,GND。 2 个 RS232 用户接口: ...
    • 程序崩溃时该如何调试

      Q:程序崩溃时该如何调试 首先确定编译应用程序所选择的编译工具架构,和实际硬件架构是否一致。 可以使用 Crash Trap 调试, SylixOS 自 v1.9.9 内核版本后开始支持 crashtrap 命令,此命令可在程序崩溃时将进程切换到 STOP 模式,方便用户进入 Attach 调试。 更多扩展知识见: 使用方式详见《RealEvo-IDE 使用手册》第5章 RealEvo-IDE调试,5.8 Crash Trap调试 或者《SylixOS 开发禁(限)用说明》 ...
    • RealEvo-IDE 串口调试 app 补充说明

      需求 对于不支持以太网接口的设备,可以使用串口进行手动启动调试,基本流程参见《RealEvo-IDE使用手册》中 5.3 小节的内容。 为了用户能正常使用该功能,本文档将实际操作中的细节整理如下。 硬件设备 本次演示使用的硬件设备是翼辉信息的T3工业控制器IGC1500,串口设备信息如下: 1 个 RS232 Debug 接口: 设备名/dev/ttyS0,对应于接线端子 RS232-2,端口信号为 RX2,TX2,GND。 2 个 RS232 用户接口: 设备名/dev/ttyS5,对应于面板 ...