首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

nios II flash 下载碰到的诡异问题

nios II flash 下载碰到的诡异问题

我用nios 自带的函数读,写,擦除flash都可以,但是下载的时候都是出错,说是:failed at offset 2。
我用的flash是AT49BV322,2M x 16.在CFI里设置的是21,16位。实际硬件是FPGA_A[1]和FLASH的A0连接,FPGA_A[0]随便分到其它的管脚。CFI里的时序是40,160,40.为什么我可以打开CFI,用NIOS II 自带的memtest测试也是通过的,但是将程序下载的时候却下载不了呢?老是报:program failed at offset 2. 那位大侠帮忙看看是什么问题吧,版主谢谢啦!

nand flash的时序一般都是一样的,都有可能,楼主可以试试下面的测试程序,在offset 2的地方测一下,flash可能是内部颗粒出问题,这是常有的事,再分析一下。

#include <stdio.h>
#include <sys/alt_flash.h>
#include "system.h"
#include <unistd.h>
#define DATA_OFFSET 0x300000

int main(void)
{
alt_flash_fd* flash_handle;
FILE *uart;
char write_data = 0;
char read_data = 0;
write_data = 100;
uart = fopen(UART_NAME,"w");
flash_handle = alt_flash_open_dev(CFI_FLASH_NAME);
fprintf(uart, "open flash device...\n");
usleep(10000);
if (flash_handle)
{
fprintf(uart, "open flash device successed!!!\n");
usleep(10000);
alt_write_flash(flash_handle, DATA_OFFSET, &write_data, 1);
fprintf(uart, "wirte_data = %d\n", write_data);
usleep(10000);
alt_read_flash(flash_handle, DATA_OFFSET, &read_data, 1);
fprintf(uart, "read_data = %d\n", read_data);
usleep(10000);
if(read_data == write_data)
{
fprintf(uart, "flash write and read successed!!!\n");
usleep(10000);
}
else
{
fprintf(uart, "flash write or read failed!!!\n");
usleep(10000);
}
alt_flash_close_dev(flash_handle);
fprintf(uart, "close flash device...\n");
usleep(10000);
}
else
{
fprintf(uart, "open flash device failed!!!\n");
usleep(10000);
}
}

[此贴子已经被作者于2008-9-21 8:36:34编辑过]

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表