⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ioport.c

📁 一个航天航空用的Sparc处理器(配美国欧洲宇航局用的R_tems嵌入式操作系统)的VHDL源代码
💻 C
字号:

#include "leon.h"
#include "test.h"

int ioport_test()
{
    
    /* report start of test */
    report(PIO_TEST);

    /* initialise registers */

    lr->piodata = 0;
    lr->piodir = 0;
    lr->pioirq = 0;
    lr->uartctrl1 = 0;
    lr->uartctrl2 = 0;


    /* check that port can be read */
    outb(66,0x55); outb(67,0xaa);
    outb(64,0xff); outb(65,0xff);
    if ((lr->piodata & 0x0ffff) != 0xaa55) fail(1);
    outb(66,0xaa); outb(67,0x55);
    if ((lr->piodata & 0x0ffff) != 0x55aa) fail(2);
    
    /* check that port can be written */
    outb(64,0); outb(65,0);
    lr->piodir = 0xffff;
    if ((lr->piodata & 0x0ffff) != 0) fail(3);
    lr->piodata = 0x1234;
    if ((lr->piodata & 0x0ffff) != 0x1234) fail(4);
    lr->piodata = ~0x1234;
    if ((lr->piodata & 0x0ffff) != (0xffff & ~0x1234)) fail(5);

    /* check port interrupts */

    lr->piodata = 0;
    lr->irqclear = -1;	/* clear all pending interrupts */
    lr->pioirq = 0xe3c2a180;
    lr->irqclear = -1;	
    if (lr->irqpend != (1<<4)) fail(6);
    lr->piodata = -1;
    lr->piodata = -1;	/* add delay */
    if (lr->irqpend != ((1<<7) | (1<<5) | (1<<4))) fail(7);
    lr->irqclear = -1;	
    if (lr->irqpend != (1<<5)) fail(8);
    lr->piodata = 0;
    lr->piodata = 0;
    if (lr->irqpend != ((1<<6) | (1<<5) | (1<<4))) fail(9);
    lr->irqclear = -1;	
    if (lr->irqpend != (1<<4)) fail(10);
    lr->pioirq = 0;
    lr->irqclear = -1;	
    

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -