9 在线调试
9.1 在线调试简介
- 什么是在线调试
- 在线调试也称为板级调试,它是将程序文件下载到FPGA芯片后分析代码运行的情况。
- 为什么要在线调试?
- 直接观察代码很难找到BUG
- 软件仿真不全面,难以做到100%的代码覆盖率
- 在板级交互中,存在异步事件,很难做到仿真,或者仿真起来时间很长,无法运行
- 外围电路可靠性问题,如电源问题、信号干扰等导致程序运行出错
- ……
9.2 使用在线调试工具
文章作者: 君恒
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 君恒的博客!
相关推荐

2026-06-17
ZYNQ的FPGA侧基础学习_Part1
1 ZYNQ初识1.1 PL简介这里PL就是指的FPGA(Field Programmable Gate Array,现场可编程门阵列),一种可以通过编程来修改其逻辑功能的数字集成电路 (芯片)。 1.1.1 CLB介绍 为什么它能通过编程改变硬件电路呢,是因为它有CLB(可配置的逻辑块),如上图所示,CLB由“片0”和“片1“组成(在赛灵思中片就是Slice)。在这个FPGA芯片当中是有很多的这个CLB组成了一个二维的矩阵,图中只是其中一个CLB的一个内部结构,那么它是由两个片组成,然后一个开关矩阵进行一个连接。这个开关矩阵你可以把它理解成一个布线资源,CLB呢可以通过这个开关矩阵跟其他的这个PL端的资源进行一个连接,或者是连接CLB内部的一些资源。 这个片Slice是由四个LUT加上这八个FF组成。其中LUT(Look UP...

2026-06-20
ZYNQ的FPGA侧基础学习_Part2
4 流水灯实验4.1 LED简介LED是什么?全称:Light Emitting Diode,发光二极管。 4.2 硬件设计下面来看一下本次实验的硬件设计部分,也就是LED硬件电路,我们这里是将FPGA引脚直接连接到了发光二极管的阳极,然后LED的阴极接了一个电阻,电阻另一端连接到GND。所以引脚给高电平则LED亮,反之则熄灭。 注意,上面两个是PL的引脚,下面这两个PS的引脚。那由于底板上面只有两个灯,所以说我们是用两个灯来实现流水灯效果。 可以发现它这里都串联了一个电阻,其主要是起到一个限流的作用,就说限制流过发光二极管的电流。 4.3 实验任务本节的实验任务是使用开发板上的两个/四个LED灯顺序点亮并熄灭循环往复产生流水灯的效果,流水的间隔时间为0.5s。 4.4...

2025-07-03
FreeRTOS基础学习_Part2
7 同步互斥与通信7.1 同步与互斥的概念一句话理解同步与互斥:我等你用完厕所,我再用厕所。 123- 什么叫同步?就是:哎哎哎,我正在用厕所,你等会。 - 什么叫互斥?就是:哎哎哎,我正在用厕所,你不能进来,也即同一时间只有一个人能使用 同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“互斥”吗? 相当于大丙老师多线程教学中的“线程同步”和“互斥锁”的概念吗? 7.2 有缺陷的同步与互斥示例通过下面两个任务示例,就可以比较容易地看出同步和互斥想要解决的问题。 同步主要聚焦于两/多个任务有依赖关系,其中一个任务B需要另一个任务A的处理结果,所以任务B就需要等待任务A处理结束才能继续运行,所以任务/线程同步聚焦于解决如何让等待的线程B在等待期间尽量少地占用CPU资源。 互斥主要聚焦于两/多个任务共同访问同一个共享资源,这些任务不一定有依赖关系,可能是完全独立的任务,但是有些任务会写入共享资源,有些任务会读取共享资源,如果不加以处理,写入和读取就会乱套,导致程序Bug。 7.2.1...

2025-07-01
FreeRTOS基础学习_Part1
1 单片机程序设计模式1.1 裸机程序设计模式裸机程序的设计模式可以分为:轮询、前后台(中断)、定时器驱动、基于状态机。前面3种方法都无法解决一个问题:假设有 A、B 两个都很耗时的函数,无法降低它们相互之间的影响。 第4种方法可以解决这个问题,但是实践起来有难度。比如这样一个场景:一位职场妈妈需要同时解决 2 个问题:给小孩喂饭、回复工作信息。 1.1.1 轮询模式示例代码如下: 123456789/* 经典单片机程序: 轮询 */void main() { while (1) { 喂一口饭(); 回一个信息(); } } 轮询模式在main函数中是一个while循环,里面依次调用2个函数,这两个函数相互之间有影响:如果“喂一口饭”太花时间,就会导致迟迟无法“回一个信息”;如果“回一个信息” 太花时间,就会导致迟迟无法“喂下一口饭”。 1.1.2...

2025-07-05
FreeRTOS基础学习_Part3
12 任务通知(Task Notifications)所谓”任务通知”,你可以反过来读”通知任务”。 使用队列、信号量、事件组等方法时,并不知道对方是谁。使用任务通知时,可明确指定:通知哪个任务。 使用队列、信号量、事件组时,我们都要事先创建对应的结构体,双方通过中间的结构体通信: 使用任务通知时,任务结构体TCB中就包含了内部对象,可以直接接收别人发过来的”通知”,如下图所示,也就是说任务A或者ISR可以直接修改任务B内部结构体TCB: 12.1 任务通知的特性12.1.1 优势及限制 任务通知的优势: 效率更高:用任务通知来发送事件、数据给某个任务时,比队列、信号量、事件组等效率都更高。 更节省内存:使用其他方法时都要先创建对应的结构体,使用任务通知时无需额外创建结构体。 任务通知的限制: 不能发送数据给 ISR: ISR并没有任务结构体,所以无法使用任务通知的功能给ISR发送数据。 但是ISR可以使用任务通知的功能,发数据给任务。...

2025-07-08
STM32基础学习_Part1
1 STM32简介1.1 STM和ARM介绍STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器(MCP)。ARM Cortex-M内核是STM32内部的核心部分,相当于整个芯片的CPU,这个内核是ARM公司设计的,其他外设部分是STM公司设计的。 STM32系列介绍 补充,ARM介绍 ARM既指ARM公司,也指ARM处理器内核 ARM公司是全球领先的半导体知识产权(IP)提供商,全球超95%的智能手机和平板电脑都采用ARM架构 ARM公司设计ARM内核,半导体厂商(ST公司)完善内核周边电路并生产芯片,结构如下图所示 1.2 本课程使用芯片介绍1.2.1 芯片的命名规则 1.2.2 芯片基本信息 STM32F103C8T6芯片 实物图 • 系列:主流系列STM32F1• 内核:ARM Cortex-M3• 主频:72MHz• RAM:20K(SRAM)• ROM:64K(Flash)• 供电:2.0~3.6V(标准3.3V) • 封装:LQFP48(48个引脚) 1.2.3...


