Board logo

标题: nios II flash 下载碰到的诡异问题 [打印本页]

作者: siweik    时间: 2008-9-19 23:41     标题: 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. 那位大侠帮忙看看是什么问题吧,版主谢谢啦!

作者: caopengly    时间: 2008-9-21 08:35

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://bbs.eccn.com/) Powered by Discuz! 7.0.0