问答
直播中

mytom520

12年用户 43经验值
擅长:可编程逻辑 电源/新能源 存储技术
私信 关注

【Z-turn Board试用体验】+ 【第五贴】:拨码开关控制LED灯

本帖最后由 mytom520 于 2015-6-12 00:06 编辑

本文主要实现由拨码开关的状态控制LED灯的亮灭(运行中遇到问题,在反编译成汇编的区域代码都一样,无法单步运行调试,求高手解决)1.1搭建的硬件系统
1.JPG
1.2在Vivado中File->Export->Export Hardware->OK    File->Launch SDK->OK; 在SDK中->File->New->New App ...
2.JPG
1.3自动包含的源文件
3.JPG
在SDK中:
system.hdf里面是硬核对应的外设地址
system.mss里面有对外设的各种说明文档
xparameter.h对应系统内外设的地址映射和设备号,这个文件有你的硬件设计平台生成,即由Block Design决定
xgpio.h对应GPIO的可以调用的函数,包括GPIO初始化、GPIO读写、GPIO数据方向

XGpio_SetDataDirection  :说明:对特定的GPIO通道设置所有独立信号的输入、输出的方向.
XGpio_GetDataDirection  :说明:对特定的GPIO通道获取所有独立信号的输入、输出的方向.
XGpio_DiscreteRead :说明:对特定的GPIO通道读取所有独立信号的状态.
XGpio_DiscreteWrite  :说明 对特定的GPIO通道写寄存器
具体查看system.mss里面的各种说明文档及例程

软件代码如下:
  1. /*
  2. * Copyright (c) 2009-2012 Xilinx, Inc.  All rights reserved.
  3. *
  4. * Xilinx, Inc.
  5. * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
  6. * COURTESY TO YOU.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
  7. * ONE POSSIBLE   IMPLEMENTATION OF THIS FEATURE, APPLICATION OR
  8. * STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION
  9. * IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE
  10. * FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
  11. * XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
  12. * THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO
  13. * ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
  14. * FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY
  15. * AND FITNESS FOR A PARTICULAR PURPOSE.
  16. *
  17. */

  18. /*
  19. * helloworld.c: simple test application
  20. *
  21. * This application configures UART 16550 to baud rate 9600.
  22. * PS7 UART (Zynq) is not initialized by this application, since
  23. * bootrom/bsp configures it to baud rate 115200
  24. *
  25. * ------------------------------------------------
  26. * | UART TYPE   BAUD RATE                        |
  27. * ------------------------------------------------
  28. *   uartns550   9600
  29. *   uartlite    Configurable only in HW design
  30. *   ps7_uart    115200 (configured by bootrom/bsp)
  31. */
  32. #include "xparameters.h"
  33. #include
  34. #include "platform.h"
  35. #include "xgpio.h"
  36. #include "xil_printf.h"

  37. /*
  38. * The following constant is used to determine which channel of the GPIO is
  39. * used for the LED if there are 2 channels supported.
  40. */
  41. #define SW_CHANNEL 1
  42. #define LED_CHANNEL 2

  43.     /************************** Variable Definitions *****************************/
  44.      /* The following are declared globally so they are zeroed and so they are
  45.      * easily accessible from a debugger
  46.      */
  47.     XGpio Din, Dout; /* The Instance of the GPIO Driver */

  48.     int main()
  49. {

  50.         int i;
  51.         u32 sw_status;
  52.         int program_status;
  53.         print("-- Start of the Program --rn");

  54.         program_status = XGpio_Initialize(&Din, XPAR_SW_4BIT_DEVICE_ID) && XGpio_Initialize(&Dout, XPAR_LED_3BIT_DEVICE_ID);

  55.         if (program_status != XST_SUCCESS) {
  56.                 return XST_FAILURE;
  57.         }
  58.                 /*  Set the direction for all signals to be inputs except the
  59.                  * LED output
  60.                  */
  61.         XGpio_SetDataDirection(&Dout, LED_CHANNEL, 0xffffffff);

  62.         while (1)
  63.         {
  64.                  /* Read the state of the data so that only the LED state can be
  65.                  * modified
  66.                  */
  67.                 sw_status = XGpio_DiscreteRead(&Din, SW_CHANNEL);

  68.                 switch (sw_status)
  69.                 {
  70.                 case 0xfffffff1:        XGpio_DiscreteWrite(&Dout, LED_CHANNEL, 0xfffffff1); break;
  71.                 case 0xfffffff2:        XGpio_DiscreteWrite(&Dout, LED_CHANNEL, 0xfffffff2); break;
  72.                 case 0xfffffff3:        XGpio_DiscreteWrite(&Dout, LED_CHANNEL, 0xfffffff3); break;
  73.                 case 0xfffffff4:        XGpio_DiscreteWrite(&Dout, LED_CHANNEL, 0xfffffff4); break;
  74.                 default:        XGpio_DiscreteWrite(&Dout, LED_CHANNEL, 0xfffffff0); break;
  75.                 }
  76.           xil_printf("Switch Status is %xrn", sw_status);

  77.           for (i=0; i<99999; i++);
  78.         }

  79.         return XST_SUCCESS;

  80. }

下一步project->Build All,下一步Xilinx Tools->Program FPGA,下一步右击主程序所在目录Debug As->Launch on hardware(GDB)
接着卡壳了,不能顺利调试!!!求助高手……





回帖(6)

myir.tom

2015-6-16 09:12:55
调试ARM得用D-stream吧
举报

李嘉

2015-6-16 16:41:16
同样遇到这个问题,每次Debug As->Launch on hardware后都提示no variable sources for “”,汇编是空的,但是有时也能单步调试,大部分时间卡在no variable sources for “”,偶尔几次能进行单步调试,不知是何原因,
举报

mytom520

2015-6-18 21:55:04
尝试了好几遍,各种错误!!!
不知道,要不要program fpga ,Debug As->Launch on hardware(GDB)不能但不运行,但是可以经过串口打印???!!!
Run As->Launch on hardware(GDB)一样的现象……@blackroot @中科院 同学你是如何解决的?跪求知道,卡在这里好久了
p.JPG

q.JPG

r.JPG

s.JPG


举报
  • t.JPG

中科院

2015-6-25 17:26:38
我有的时候也会遇到各种蛋疼的问题,一般我是直接保存。然后重启程序或机器。一般是program fpga ,Debug As->Launch on hardware(GDB)的过程,如果你连接上,Run As->Launch on hardware(GDB)也是可以直接运行的,但是有的时候运行失败,这时候我也没其他解决办法,一般就是看看连线,看看下载器之类的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分