芯路恒电子技术论坛

 找回密码
 立即注册

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

热搜: 合集
查看: 174|回复: 1

【zynq课程笔记】【AC880】【裸机】【第9课 】【裸机程序调试方法】

[复制链接]

该用户从未签到

108

主题

52

回帖

1973

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1973
发表于 2026-2-9 14:39:55 | 显示全部楼层 |阅读模式
更多课程笔记请查看:【zynq裸机编程课程笔记合集】
http://www.fpga.cn/forum.php?mod=viewthread&tid=29095



在上一节课呢,我们是带领大家一起学习了基于SDK硬件驱动库的编程方法。课程中所用到的那样一个程序呢非常简单,我也是事先编写好了程序,没有现场带领大家一步一步去写。但是,对于大家自己,如果大家自己接到一个任务,要编写一个程序以实现相应的功能。那么,在编写程序的过程中,可能由于事先考虑不周,总会存在一些这样那样的问题,导致程序无法实现想要的功能,那么当程序无法实现功能的时候,如何来分析自己的程序?如何来找出自己的程序中设计不合理的地方,并来解决问题呢?这就是我们这一节课要给大家讲的内容,就是基于在线Debug的程序调试方法。

调试说明:
1、        如何设置进入调试模式
2、        断点的添加与使用(添加,取消)
3、        变量的查看(全局,局部)
4、        查看外设寄存器值(查看Memory)
5、        单步,进入函数,跳出函数

调试时候主要看的:
1、        变量(variables)
2、        断点(breakpoints)
3、        表达式(Expressions)
4、        存储器(memory)


调试呢叫做debug,在有些开发者的口中呢,他们也经常会称之为在线仿真,我们这里姑且称之为在线调试。方法都是一样的,只是大家的叫法有所差异。

如何进行在线调试呢?Xilinx的SDK开发环境为我们提供了非常便捷的在线调试功能,我们只需要在SDK中点几下按钮,就能够让我们的程序进入到调试状态,在调试状态中,我们可以控制程序一行一行的执行(我们称之为单步执行),在这个程序单步执行的过程中,我们可以去观察每一个变量的值,以及观察程序的分支走向,同时我们还可以设置断点让我们的程序运行到指定的位置停止下来,而在其他情况下全速运行,以节约我们的调试时间,再者,我们可以添加存储器(DDR3)中某一段存储空间在总线上的物理地址,来直接查看其中存储的数据内容。比如我们在做数据采集系统的时候,就可以通过这种方法直接查看FPGA采集并存储到PS侧DDR3中的数据内容,然后我们再通过分析DDR中的数据内容,来进一步分析数据采集系统存在的问题。
甚至,因为各外设控制器在连接到CPU的总线上时各个寄存器也是以存储器的模型呈现的,我们可以采用相同的方法,添加外设控制器的寄存器地址,来查看对应寄存器中的值,通过分析里面的内容,来查看其数据和工作状态。
总之,在线调试这样一个功能在我们的开发中使用的是非常广泛的,就像我们开发fpga的的时候,使用modelsim仿真的方式来分析我们逻辑设计中存在的问题一样。那么来对于我们开发ARM裸机程序来说,在线调试,也是开发中非常重要的环节,大家要想掌握独立的程序设计能力,在线调试的方法和技巧,肯定是要掌握的。


话不多说,我们还是基于上一节课给大家编写的程序,来看一下我们如何进行线调试,基于这样一个简单的工程,带领大家一起来看一下上面说的,如何查看我们的变量,设置我们的断点以及查看我们的内存信息。



进入调试模式

单步运行
进入函数
跳出函数
运行到断点
查看局部变量
查看全局变量(修改变量值)



查看内存内容
[C] 纯文本查看 复制代码
#include "xparameters_ps.h"
#include "xil_io.h"
#define DDR_BASEARDDR      XPAR_DDR_MEM_BASEADDR + 0x10000000

int main()
{
    int i;
    int rev[32];

    for(i=0; i<32; i++)
    {
        Xil_Out32(DDR_BASEARDDR+i*4,i);
    }

    for(i=0; i<32; i++)
    {
        rev[i] = Xil_In32(DDR_BASEARDDR+i*4);
    }

    return 0;
}


全速运行

回复

使用道具 举报

该用户从未签到

108

主题

52

回帖

1973

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1973
 楼主| 发表于 2026-2-9 14:40:43 | 显示全部楼层

课程完整工程附件如下
LED.rar (5.24 MB, 下载次数: 57)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2026-2-25 10:00 , Processed in 0.052246 second(s), 37 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表