微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教edk的一些问题

请教edk的一些问题

时间:10-02 整理:3721RD 点击:
最近在做“官方的6个实验”,在实验5中遇到了问题。
硬件添加了GPIO(4bit),UART,中断,定时器,遇到了一些问题,向大家请教一下。
1.下面这段程序进不去中断,请高手们看看。#include "xparameters.h"
#include "xuartlite.h"
#include "stdio.h"
#include "xutil.h"
#include "xbasic_types.h"
#include "xgpio.h"
#include "xgpio_l.h"
#include "xintc_l.h"
#include "xstatus.h"
#include "xtmrctr_l.h"
#define  LED_DELAY 100
#define  LED_CHANNEL 1
XGpio GpioOutPut;
Xuint16 count =1;
Xuint16 one_second_flag =0;
void timer_int_handler(void *baseaddr_p)
{
/*Add variable declarations here*/
unsigned int csr;
/*Read timer 0 CSR to see if it raised the interrupt*/
csr=XTmrCtr_mGetControlStatusReg(XPAR_DELAY_DEVICE_ID,0);
/*if the interrupt occured, then counter++*/
if (csr & XTC_CSR_INT_OCCURED_MASK)
count++;
one_second_flag =1;
//Display the count on the LEDs and print some statement
XGpio_mSetDataReg(XPAR_GENERIC_GPIO_BASEADDR,LED_CHANNEL,count);
xil_printf("count = %x\n\r",count);
// Clear the timer interrupt
XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR,0,csr);
}
int main(void)
{
  xil_printf("-- Entering main() --\r\n");
  Xuint16 count_mod_3 =0;
  
  /* initialize and set the direction of the GPIO  connected to */
  XGpio_Initialize(&GpioOutPut,XPAR_GENERIC_GPIO_DEVICE_ID);
  XGpio_SetDataDirection(&GpioOutPut, 1, 0x0);
  /*start the interrupt controller */
  XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR);
  XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR,0x1);
  xil_printf("The value of count =%d\r\n",count);
  while(1)
{   

   
  if (one_second_flag)
  {
   count_mod_3 = count %3;
   if (count_mod_3= 0)
    xil_printf("Interrupt taken at %d seconds \n\r",count);
   one_second_flag=0;
   xil_printf(".");
  }
}
print("-- Exiting main() --\r\n");
}
2.由于进不去中断,我很怀疑定时器是否工作。所以我用了以下的语句:
unsigned int csr,TCSR,TLR,TCR;
csr=XTmrCtr_mGetControlStatusReg(XPAR_DELAY_DEVICE_ID,0);
TCSR=XTimerCtr_mReadReg(XPAR_XPS_INTC_0_BASEADDR,0,XTC_TCSR_OFFSET);
TLR=XTimerCtr_mReadReg(XPAR_XPS_INTC_0_BASEADDR,0,XTC_TLR_OFFSET);
TCR=XTimerCtr_mReadReg(XPAR_XPS_INTC_0_BASEADDR,0,XTC_TCR_OFFSET);
结果用debug设置断点,得到数据:csr=0xb8080050;TCSR=0x0;TCR=0x1;TLR=0x0;
我有点疑问:csr和TCSR得到的不应该是同一个值么?这两个语句观察的不是同一个寄存器么?
3.我用debug的时候,点击Resume,然后点击suspend,出现如下情况(Exceptions occurred attempting to suspend):



而设置断点就没有问题。怎么解决?
4.看网上的教材,能看到memory,而在我的Xilinx ise suit 11.1中只能看到register,能看memory么?

老鸟们来指点一下啊!

帮顶,呵呵

菜鸟,,,学习中


请问小编这个问题解决了吗?我最近也刚好遇到这个问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top