zynq sdk裸机开发总是时不时的就不能进入中断了, 找来找去的找不到原因. 后来我经过多次尝试. 将问题限位到非常小的范围. 只用了最普通的内部定时器, 开启中断也是偶尔会进去偶尔会进不去.
我的版本是 2018.3
后来多次尝试慢慢的摸索出经验规律, 只要修改过代码重新开始调试.就会再也进不去中断函数. 只有按下开发板上的电源键, 进行重启, 重启后的板子再开始调试就能正常进入中断函数. .
找到一个解决方法了, 有没有更好的方法?
能不能在每次点击调试按钮的时候自动重启系统? 找了下还真有. 如下图,
Reset entire System 一定要勾上
图上第4点. Reset entire System 一定要勾上, 每次调试的时候会自动重启系统, 这样就可以解决各种莫名其妙的问题. 只要重启能解决的问题, 勾上这个以后, 以后就不再出现了.
zynq的调试使用GDB模式比较稳定
System Debugger模式不行, 不能调试断点. 加了也不会暂停执行,唯有GDB调试是可以的.
如果是野指针访问导致的异常, 那么软重启是解决不了问题的, 必须断电重启. 话说C语言真的就无法捕获这种问题么? 有知道的大神请指教… 异常后基本上就无解. . 定位到有问题的代码那得费老大的功夫了. 纯粹的浪费生命. 还是C#和Java好啊. 给你提示一个"找不到对象,或者NullPoint", 还告诉你是那行代码出问题了. 好怀念 “找不到对象” 的时候啊. C语言直接闷声不吭, 啥反映都没有就嗝屁了. 然后一行一行的循环执行. 最后定位到问题点. 那真是苦不堪言. .
刚写完就找到了方法, 已写新文章,如何定位到异常代码请参考下面的连接.
<<zynq c语言中如果出现bug,进入异常中断如何定位到代码行?>>
https://blog.youkuaiyun.com/phker/article/details/142852471
人人为我,我为人人.
总结一下吧, zynq的调试 真是各种问题. 最小系统ps的调试也是一路坎坷.
DDR的芯片型号一定要选对
调试的时候似乎需要用到内存. 如果各种莫名其妙的问题, 停留在了"Disassembly"中, 调试也进不去, 或者偶尔能进去但是调试2下就挂了. 那么大概率是内存芯片型号选择的有问题. 或者DDR内存出问题了,有坏块,或者内存的外围电路有问题, 例如电压问题.
电压问题参考这篇文章, 虽然也没写具体的过程, 但总算是提供了一个可能性.
https://blog.youkuaiyun.com/Agustin_Mou/article/details/133266613
PL的时钟FCLK_CLK0 能给尽量给, 重启信号FCLK_RESERT0_N 一定要连上,如下图
最好是要生成bitstream
不管有没有用到PL部分, 如果总是调试不能进入, 那么可以尝试着生成bitstream文件, 然后导出.
快速调试技巧. 减少PL部分FPGA的烧录
为减少PL部分FPGA的烧录, 可以强制重启PL部分. 参考文章如下.
https://blog.youkuaiyun.com/qq_21531457/article/details/124581055?spm=1001.2014.3001.5506
为防止原文章丢失, 已将PlSoftwareReset();函数的代码复制过来, 见下文 代码.
最后附上我自己的测试代码.
main.c 在2018.3版本上跑通了. 各种调试正常.
/******************************************************************************
*
* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be