?? simple flash access驅動范例.txt
字號:
/*
* 聲明:本范例源于書籍‘NiosII軟件架構解析’
* 作者:蔡偉綱
* 博客地址: http://NiosII.cublog.cn
*
* 一、功能: Simple Flash Access驅動演示代碼.
* 二、運行前提: 本范例需要硬件開發板的支持,
* 要求硬件開發板具備名為”ext_flash”的CFI Flash或EPCS Flash模塊;
*/
#include <stdio.h>
#include <string.h>
#include "sys/alt_flash.h"
#define BUF_SIZE 1024//定義緩沖區的大小
#define FLASH_OFFSET 0//從flash的第FLASH_OFFSET個字節單元開始操作
int main()
{
printf("Simple Flash Access Demo.\n");
alt_flash_fd* fd;
int ret_code;
//開辟源緩沖區,本范例將把源緩沖區的數據寫入flash
//BUF_SIZE不可過大,否則可能導致堆棧溢出;
char source[BUF_SIZE];
//開辟目的緩沖區,本范例將把flash的數據讀回目的緩沖區,
//并通過與源緩沖區數據的對比來確定讀寫flash是否正確;
//BUF_SIZE不可過大,否則可能導致堆棧溢出;
char dest[BUF_SIZE];
//將源緩沖區的數據全部初始化為0xAA;
memset(source, 0xAA, BUF_SIZE);
//使用alt_flash_open_dev打開flash設備,并返回flash設備的文件描述器fd;
//注:flash設備在SOPC Builder中的命名應為’ext_flash’,否則這里會出現編譯錯誤;
fd = alt_flash_open_dev("/dev/ext_flash");
if(fd!=NULL)
{
printf("Open Flash Device Successfully.\n");
//使用alt_write_flash對flash設備進行寫操作,
//將source緩沖區中的數據寫入fd指向的flash設備;
//寫入的數據長度為BUF_SIZE,從flash設備的第FLASH_OFFSET字節開始寫;
ret_code = alt_write_flash(fd, FLASH_OFFSET, source, BUF_SIZE);
if(ret_code==0)
{
printf("Write Flash Device Successfully.\n");
//使用alt_read_flash對flash設備進行讀操作,
//將fd指向的flash設備中從FLASH_OFFSET開始的BUF_SIZE字節數據讀到dest緩沖區;
ret_code = alt_read_flash(fd, FLASH_OFFSET, dest, BUF_SIZE);
if(ret_code==0)
{
printf("Read Flash Device Successfully.\n");
int Loop, ErrorCount = 0;
for(Loop = 0; Loop < BUF_SIZE; Loop++)
{
//對比源緩沖區和目的緩沖區的數據;
if(source[Loop] != dest[Loop])
{
printf("Verify failed at location: 0x%X\n",Loop);
ErrorCount++;
}
}
if(ErrorCount == 0)
{
printf("Verify Successfully!\n");
}
}
else
{
printf("Can’t read flash device\n");
}
}
else
{
printf("Can’t write flash device\n");
}
alt_flash_close_dev(fd);
}
else
{
printf("Can’t open flash device\n");
}
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -