USB-Blaster问题:
————————————————————————————————- USB-Blaster Driver 驱动Vista x64环境下无法安装
直接原因:兼容性问题
可能根本原因:quartus II 8.0的驱动不含签名,而Vista x64只认带签名的驱动。 解决方案:请使用XP x32环境。
更换quartus版本无法安装USB-Blaster Driver驱动,提示“名称已用作服务名或服务显示名”
直接原因:7.2版本与8.0版本的驱动不通用 根本原因:windows驱动卸载卸不干净 解决方案:注册表删除
**同时装有7.2与8.0时,只能使用7.2的驱动
————————————————————————————————- Quartus II 8.0 问题:
————————————————————————————————-
Internal Error: Sub-system: HDB, File: /quartus/db/hdb/hdb_inst_name.cpp, Line: 11432 Error accessing data member. Not data member owner Stack Trace:
0x2853D : HDB_SYN_INSTANCE_NAME::set_m_children + 0x1D (DB_HDB)
End-trace
Quartus II Version 8.0 Build 215 05/29/2008 SJ Full Version 解决方案:删除db下所有文件,重建工程。
quartus 引脚相关
引脚手工批量导入的方法(可避免自动导入全部引脚造成的大量警告) 直接修改.qsf文件,在尾部添加引脚定义,形如: set_location_assignment PIN_AD15 -to iCLK_50 set_location_assignment PIN_T29 -to iKEY[0]
set_location_assignment PIN_W27 -to oLEDG[0] set_location_assignment PIN_W25 -to oLEDG[1] set_location_assignment PIN_W23 -to oLEDG[2] set_location_assignment PIN_Y27 -to oLEDG[3] set_location_assignment PIN_Y24 -to oLEDG[4] set_location_assignment PIN_Y23 -to oLEDG[5] set_location_assignment PIN_AA27 -to oLEDG[6] set_location_assignment PIN_AA24 -to oLEDG[7]
**使用自动导入引脚时必须注意:
Assignments->Device..->Device and Pin Options…->Unused Pins: As output driving ground 改为 As input tri-stated 解决Nios II无响应
Assignments->Device..->Device and Pin Options…->Dual-Purpose->nCEO: Use as programming pin 改为 Use as regular I/O 解决AD25引脚无法分配
**仿真前务必先产生网表
————————————————————————————————- DE2-70开发板SOPC Builder的配置:
————————————————————————————————- on-chip memory 大小1.1Mb 测试100kB,实际使用57KB正常 SSRAM 选CY7C1380C SSRAM 大小2MB 默认即可
FLASH 选Flash Memory(CFI) 大小8M 自定义:地址宽度 22 数据宽度 16 wait 100 SDRAM 选SDRAM Controler 大小64MB 自定义:数据宽 32 chip 1 bank 4 row 13 col 9 Issue one refresh command every: 7.8125 us Delay after powerup, before initialization : 200 us PIO
LEDG 数据宽度 9 output port only LEDR 数据宽度 18 output port only KEY 数据宽度 4 input port only
SW 数据宽度 18 input port only
————————————————————————————————- NIOS II8.0 问题:
————————————————————————————————- Error parsing project STF file
The software settings (STF) file associated with this project is damaged. This may be fixed by copying your source files into a new C/C++ application project. For more details see the error log.
直接原因:nios工程路径中含有空格! 根本原因:JDK6的bug 参见
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6506304
解决方案:由于NIOS II使用含有该bug的JDK6的进行开发,固仅更换JRE无效……请避免工程路径中的空格
,这意味着不能使用”我的文档”等地存放工程。
常用nios II template空间占用情况
hello_world 使用jtag_uart作为标准输出的情况(以下空间占用与Nios软件配置中选择on-chip memory、SSRAM、SDRAM、FLASH无关,与SOPC builder建立的硬件配置有关,官方给出的大小是~69 kbytes)
名称 优化参数1 优化参数2 优化参数3 优化参数4 hello_world 默认(-O0) 默认(-O0) -Os -Os hello_world_syslib 默认(-O0) -Os 默认(-O0) -Os 空间占用 66KB 56KB 38KB 28KB
Hello MicroC/OS-II 使用jtag_uart作为标准输出的情况(以下空间占用与Nios软件配置中选择on-chip memory、SSRAM、SDRAM、FLASH无关,与SOPC builder建立的硬件配置有关)
名称 优化参数1 优化参数2 优化参数3 优化参数4 hello_ucosii 默认(-O0) 默认(-O0) -Os -Os
hello_ucosii_syslib 默认(-O0) -Os 默认(-O0) -Os 空间占用 127KB 102KB 100KB 75KB
使用jtag_uart作为标准输出与使用lcd作为标准输出的区别:
在system.h中:
#define ALT_STDOUT “/dev/lcd”
#define ALT_STDOUT_TYPE “altera_avalon_lcd_16207″ #define ALT_STDOUT_BASE 0×00011000 #define ALT_STDOUT_DEV lcd
#define ALT_STDOUT “/dev/jtag_uart”
#define ALT_STDOUT_TYPE “altera_avalon_jtag_uart” #define ALT_STDOUT_BASE 0×00011010 #define ALT_STDOUT_DEV jtag_uart
**使用lcd作为标准输出时必须注意
Reduced device drivers前面的勾不能去掉,否则LCD无响应
数据类型 “alt_types.h”中 #ifndef ALT_ASM_SRC typedef signed char alt_8; typedef unsigned char alt_u8; typedef signed short alt_16; typedef unsigned short alt_u16; typedef signed long alt_32; typedef unsigned long alt_u32; typedef long long alt_64;
typedef unsigned long long alt_u64; #endif
LED控制相关
使用在中的IORD、IOWR
(注意是/altera/80/ip/nios2_ip/altera_nios2/HAL/inc/io.h,不是/altera/80/quartus/bin/cygwin/usr/include/io.h) #define IORD(BASE, REGNUM) \\
__builtin_ldwio (__IO_CALC_ADDRESS_NATIVE ((BASE), (REGNUM))) #define IOWR(BASE, REGNUM, DATA) \\
__builtin_stwio (__IO_CALC_ADDRESS_NATIVE ((BASE), (REGNUM)), (DATA))
altera_avalon_pio_regs.h中的总线读写
#define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0)
#define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data) 实际以巨集IORD与IOWR实现。