Board logo

标题: [求助]niosii中flash读写问题 [打印本页]

作者: fairy    时间: 2008-1-18 17:24     标题: [求助]niosii中flash读写问题

niosii中flash programmer成功后,用函数

alt_flash_fd* fd;

fd = alt_flash_open_dev("/dev/ext_flash");

返回的fd始终为0,就不能用alt_write_flash();alt_read_flash();函数对flash进行读写了!

请问各位大侠是什么原因,能否帮忙解决一下!非常感谢!


作者: caopengly    时间: 2008-1-20 15:05

fd = alt_flash_open_dev("/dev/ext_flash");

返回的fd返回为0,表示没有找到flash硬件,你能够下程序到flash中硬件连接应该没有问题,多半是设置问题

[此贴子已经被作者于2008-1-20 15:07:40编辑过]


作者: fairy    时间: 2008-1-22 09:13

谢谢版主!请问是哪方面的设置问题?nios2中的设置问题,还是quartus中的设置问题呀?
作者: caopengly    时间: 2008-1-24 13:12

我觉得应该是nios中的设置问题。因为能够下载下去程序,说明硬件的连接应该是对的。

你使用的是hal sdk的软件,建议你再看看nios中的software中的说明,比如头文件或其他设置,看看怎么通过hal中的api来读写flash。

这里有一个flash的测试程序,也是基于hal sdk的,希望对你有用。

#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-1-24 13:11:57编辑过]






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0