转载两年半载积累之NiosII EDSWord文档格式.docx

上传人:b****4 文档编号:16835010 上传时间:2022-11-26 格式:DOCX 页数:7 大小:99.98KB
下载 相关 举报
转载两年半载积累之NiosII EDSWord文档格式.docx_第1页
第1页 / 共7页
转载两年半载积累之NiosII EDSWord文档格式.docx_第2页
第2页 / 共7页
转载两年半载积累之NiosII EDSWord文档格式.docx_第3页
第3页 / 共7页
转载两年半载积累之NiosII EDSWord文档格式.docx_第4页
第4页 / 共7页
转载两年半载积累之NiosII EDSWord文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

转载两年半载积累之NiosII EDSWord文档格式.docx

《转载两年半载积累之NiosII EDSWord文档格式.docx》由会员分享,可在线阅读,更多相关《转载两年半载积累之NiosII EDSWord文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

转载两年半载积累之NiosII EDSWord文档格式.docx

图5.2

(3)运行工程,单击菜单栏Run,在下拉菜单选择Run…,

图5.3

(4)在Browse中选择已经编译过的工程,

图5.4

(5)单击TargetConnection,查看Jtagcable是不是所用的JTAG线,JTAGdevice中是所用的器件,NiosIITerminalcommunicationdevice是jtag_uart_0<

stdin/stdout/stderr>

图5.5

(6)单击Run就可以运行了。

5.1了解相关库文件

#include"

stdio.h"

system.h"

string.h"

altera_avalon_pio_regs.h"

alt_types.h"

可以看到这些库中#include"

和#include"

市Altera公司提供的库。

前者是Altera公司提供的Avalon总线上可编程输入输出口使用的库文件,里面包含许多相关的函数,并与我们对配置的可编程输入输出口进行写入和读出,例如:

#ifndef__ALTERA_AVALON_PIO_REGS_H__

#define__ALTERA_AVALON_PIO_REGS_H__

#include<

io.h>

#defineIOADDR_ALTERA_AVALON_PIO_DATA(base) 

__IO_CALC_ADDRESS_NATIVE(base,0)

#defineIORD_ALTERA_AVALON_PIO_DATA(base) 

IORD(base,0)

#defineIOWR_ALTERA_AVALON_PIO_DATA(base,data) 

IOWR(base,0,data)

#defineIOADDR_ALTERA_AVALON_PIO_DIRECTION(base) 

 

__IO_CALC_ADDRESS_NATIVE(base,1)

#defineIORD_ALTERA_AVALON_PIO_DIRECTION(base) 

IORD(base,1)

#defineIOWR_ALTERA_AVALON_PIO_DIRECTION(base,data) 

IOWR(base,1,data)

#defineIOADDR_ALTERA_AVALON_PIO_IRQ_MASK(base) 

__IO_CALC_ADDRESS_NATIVE(base,2)

#defineIORD_ALTERA_AVALON_PIO_IRQ_MASK(base) 

IORD(base,2)

#defineIOWR_ALTERA_AVALON_PIO_IRQ_MASK(base,data) 

IOWR(base,2,data)

#defineIOADDR_ALTERA_AVALON_PIO_EDGE_CAP(base) 

__IO_CALC_ADDRESS_NATIVE(base,3)

#defineIORD_ALTERA_AVALON_PIO_EDGE_CAP(base) 

IORD(base,3)

#defineIOWR_ALTERA_AVALON_PIO_EDGE_CAP(base,data) 

IOWR(base,3,data)

#defineIOADDR_ALTERA_AVALON_PIO_SET_BIT(base) 

__IO_CALC_ADDRESS_NATIVE(base,4)

#defineIORD_ALTERA_AVALON_PIO_SET_BITS(base) 

IORD(base,4)

#defineIOWR_ALTERA_AVALON_PIO_SET_BITS(base,data) 

IOWR(base,4,data)

#defineIOADDR_ALTERA_AVALON_PIO_CLEAR_BITS(base) 

__IO_CALC_ADDRESS_NATIVE(base,5)

#defineIORD_ALTERA_AVALON_PIO_CLEAR_BITS(base) 

IORD(base,5)

#defineIOWR_ALTERA_AVALON_PIO_CLEAR_BITS(base,data) 

IOWR(base,5,data)

#defineALTERA_AVALON_PIO_DIRECTION_INPUT 

0

#defineALTERA_AVALON_PIO_DIRECTION_OUTPUT1

#endif

"

是Altera公司的类型定义库,可以使用里面定义的类型,其使用方法和Verilog中的类型很相似。

#ifndef__ALT_TYPES_H__

#define__ALT_TYPES_H__

#ifndefALT_ASM_SRC

typedefsignedchar 

alt_8;

typedefunsignedchar 

alt_u8;

typedefsignedshortalt_16;

typedefunsignedshortalt_u16;

typedefsignedlongalt_32;

typedefunsignedlongalt_u32;

typedeflonglongalt_64;

typedefunsignedlonglongalt_u64;

#defineALT_INLINE 

__inline__

#defineALT_ALWAYS_INLINE__attribute__((always_inline))

#defineALT_WEAK 

__attribute__((weak))

运用NIOSII_IDE向导,在niosII_cyclone_1c20small下新建一个hello_led工程。

其中hello_led.c是这样写IO口的:

IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led);

首先在altera_avalon_pio_regs.h找到定义

#include

#defineIORD_ALTERA_AVALON_PIO_DATA(base)IORD(base,0)

#defineIOWR_ALTERA_AVALON_PIO_DATA(base,data)IOWR(base,0,data)

因此在NIOSII中可以调用#include库函数IORD/IOWR来操作PIO。

(详情可参见D:

alterakitsios2documentsn2cpu_nii51007.pdf文档page:

7,Table7–2:

和n2sw_nii5v2.pdf.pdf文档page:

111,Table7–1:

接着在smallsoftwarehello_led_0_syslibDebugsystem_description下的system.h

中,有以下内容:

#defineLED_PIO_TYPE"

altera_avalon_pio"

#defineLED_PIO_BASE0x00004000

其中LED_PIO_BASE(IO寄存器地址?

)为0x00004000同SopcBuilder中设置一致!

(其实在SopcBuilder中有关NiosII的配置,就是通过system.h来传送给IDE的!

最后用IOWR(0x00004000,0,led);

替代IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led);

编译,下载到开发板上,运行成功!

初级知识,就当是抛砖引玉,这只是库函数级,应该还有汇编级代码,请各位大虾继续!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1