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

读写FLASH的问题

读写FLASH的问题

我在程序中读写flash,用debug模式可以正确读写flash,当把程序烧入到flash中,然后启动这段程序,运行结过就是读写flash出错,请问这是什么问题?

有谁遇到吗?

我的读写flash的代码如下:

#include <stdio.h>
#include <sys/alt_flash.h>
#include "system.h"

#define DATA_OFFSET 0x300000

void main(void)
{
  alt_flash_fd* flash_handle;
  FILE *uart;
 
  char write_data = 0;
  char read_data = 0;
 
  write_data = 100;
 
  uart = fopen(UART_0_NAME,"w"); 
  flash_handle = alt_flash_open_dev(CFI_FLASH_0_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); 
  } 
}

我想这个问题解决了,我读写文件系统的问题就会解决,帮忙分析下啊!

难道没有人遇到吗?

顶一下,希望有高手来作答,我也同问!
学习学习       
顶上去,为什么am29lv320/160是这样的,而别的不是这样的.

程序在哪里运行的?RAM or FLASH

你的程序如果是在FLASH中运行,在烧写的时候,既要去读FLASH中的程序,又要去写FLASH,FLASH在擦除时是不能读的!

正确的做法应当是把烧写这部分程序拷贝到RAM里面运行。

在sdram里运行

返回列表