重新审视Xilins Driver API:ASSERT一探

原创 2005年03月03日 22:52:00

再没有见过比xilinx的assert更晦涩的assert函数了,这就是硬件相关带给人类(其实只有我)的....汗!

#define XCOMPONENT_IS_READY     0x11111111  /* component has been initialized */
#define XCOMPONENT_IS_STARTED   0x22222222  /* component has been started */

#define XTEST_PASSED    0
#define XTEST_FAILED    1

#define XASSERT_NONE     0
#define XASSERT_OCCURRED 1

unsigned int XAssertStatus;
extern void XAssert(char *, int);
Xboolean XWaitInAssert = XTRUE;             /* 如果这个值被设置为真,则Xassert函数就会进入无限循环 */

/* Xilinx processor IP reference Guide上是这么说的The XAssert function calls a user defined function and then enters an endless loop. */

typedef void (*XAssertCallback)(char* FilenamePtr, int LineNumber);
static XAssertCallback XAssertCallbackRoutine = (XAssertCallback)XNULL;


void XAssert(char *File, int Line)
{
    /* if the callback has been set then invoke it */
    if (XAssertCallbackRoutine != XNULL)
    {
        (*XAssertCallbackRoutine)(File, Line);
    }

    /* if specified, wait indefinitely such that the assert will show up
     * in testing
     */
    while (XWaitInAssert)
    {
    }
}

/* 这个宏不返回值。它和XWaitInAssert一起使用,可以在测试的时候及时assert失败,也能让执行继续 */

#define XASSERT_VOID(expression)                   /
{                                                  /
    if (expression)                                /
    {                                              /
        XAssertStatus = XASSERT_NONE;              /
    }                                              /
    else                                           /
    {                                              /
        XAssert(__FILE__, __LINE__);               /
                XAssertStatus = XASSERT_OCCURRED;  /
        return;                                    /
    }                                              /
}

/* 这个宏返回值。它和XWaitInAssert一起使用,可以在测试的时候及时assert失败,也能让执行继续 */

#define XASSERT_NONVOID(expression)                /
{                                                  /
    if (expression)                                /
    {                                              /
        XAssertStatus = XASSERT_NONE;              /
    }                                              /
    else                                           /
    {                                              /
        XAssert(__FILE__, __LINE__);               /
                XAssertStatus = XASSERT_OCCURRED;  /
        return 0;                                  /
    }                                              /
}

/* 这个宏不返回值。用在assert总会发生的地方(还不明白有什么用) */

#define XASSERT_VOID_ALWAYS()                      /
{                                                  /
   XAssert(__FILE__, __LINE__);                    /
           XAssertStatus = XASSERT_OCCURRED;       /
   return;                                         /
}

/* 这个宏返回值。用在assert总会发生的地方(还不明白有什么用) */

#define XASSERT_NONVOID_ALWAYS()                   /
{                                                  /
   XAssert(__FILE__, __LINE__);                    /
           XAssertStatus = XASSERT_OCCURRED;       /
   return 0;                                       /
}

Xilinx SDK BSP中对CPU_ID的使用

创建Xilinx SDK BSP时,要指定在哪个core上运行,这个选项对源码的影响如下: xparameters.h里面的宏定义不同: /* Definition for CPU...
  • waverider2012
  • waverider2012
  • 2013-10-30 18:10:22
  • 2427

重新审视Xilins Driver API:GPIO一探

现在gpio有两个版本,1.00a和2.00a,对channel的支持只有在2.00a里才有,才1.00a没有channel的概念,但是为了统一,姑且认为1.00a的gpio只有一个channel。v...
  • qinxi
  • qinxi
  • 2005-03-02 22:39:00
  • 1982

Zynq启动CPU1的步骤(寄存器A9_CPU_RST_CTRLS)

最近要用到Zynq的AMP,看了xapp1079,关于CPU0启动CPU1的介绍还是比较细腻的,摘录之。 SDK中的代码: print("CPU0: writing startaddress fo...
  • violet089
  • violet089
  • 2016-12-17 11:37:21
  • 1260

2018之自我审视,重新规划

社会时间轴: 心态: 离校到现在已经差不多5年的时间,回想一下这几年自己的过往,突然发现真的没有什么值得回忆的,感觉就是浑浑噩噩的,一下是和朋友的一次对话: 朋友:你觉得你年轻么? 我:答...
  • u010021959
  • u010021959
  • 2018-04-02 11:17:40
  • 33

重新审视自己

     曾几何时还认为自己是个编程的高手,但是自从到了这,我才知道自己知道的太少太少…… ...
  • leeWolfe
  • leeWolfe
  • 2007-12-17 22:37:00
  • 553

用happen-before规则重新审视DCL

精华帖子:http://www.iteye.com/topic/260515; 编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(Double Check ...
  • working_brain
  • working_brain
  • 2014-11-11 15:20:31
  • 610

为了编程梦想,重新审视自己,开始出发。

我是一个有梦想的人。而且,我的成功习惯可以帮助我实现梦想。所以,我不想把我伟大的精力花费在无谓的琐事上。我没有时间对小事犹豫。我想把自己全身上下的宝贵能量,用在实现自己的梦想上。...
  • u012272880
  • u012272880
  • 2015-04-29 23:27:37
  • 553

Assert API

org.junit Class Assert java.lang.Object org.junit.Assert public class Assertextends java.l...
  • jzy23682891
  • jzy23682891
  • 2011-11-01 16:29:20
  • 2553

审视自己的人生,面对、接受、处理…

似乎从小我们的内心总有这样的冲动,总是希望通过这样和那样的事情证明自己,更渴望得到别人的认可和重视。少不更事的时候最能反映人作为动物本身在成长过程中的心态。小时候也一度沉醉在满墙的奖状所带来的自豪之中...
  • Syshlang
  • Syshlang
  • 2014-10-08 15:39:03
  • 308

重新审视linux内核链表

list_for_each_entry_safe 、 list_for_each_entry list_for_each_safe   、 list_for_each
  • tongdh
  • tongdh
  • 2014-04-08 15:12:15
  • 370
收藏助手
不良信息举报
您举报文章:重新审视Xilins Driver API:ASSERT一探
举报原因:
原因补充:

(最多只允许输入30个字)