NIOS 2 软核中EPCS配置芯片的存储操作
我用fpga altera , 用的存储芯片是EPCS16,具体型号是M25P16, 其存储了系统的配置以及我的 nios2 软件。
我在研究如何读取 M25P16 的 ID, 所以需要如何操作芯片, 我用的Altera 15 下的Qsys ,芯片已经添加到系统了。
如何对其进行spi 操作呢? 在网上闻询,查找了资料,顺带学习了其 读写,erase 操作,
先简要描述如下:
需要的几个关键文件: alt_type.h alt_flash.h, alt_flash_dev 都是产生在hello_bsp 的 drivers\inc 下,
drivers\src 下的 altera_avalon_epcs_flash_controller.c, epcs_commands.c, altera_avalon_spi.c 是值得研究的源代码。
主要的步骤是:
1: alt_flash_open_dev("/dev/epcs");//打开FLASH器件,获取句柄
这个 /dev/epcs 的根据是用户在配置NIOS核时自命名的,可以在system.h中查到,即“EPCS_CONTROLLER_NAME”。
2:alt_epcs_flash_get_info (my_epcs, my_epcs->region_info,my_epcs->number_of_regions);//获取配置芯片信息
3: alt_epcs_flash_erase_block(my_epcs,my_epcs->region_info->offset+0x70000);//擦除第8块
一块的大小是0x10000,
3a: 显示epcs 块的信息内容:
4: alt_epcs_flash_read(my_epcs, my_epcs->region_info->offset+0x70000, epcsbuf, 40); //读40字节
显示 可以看到其结果都是0xff
5: alt_epcs_flash_write(my_epcs, my_epcs->region_info->offset+0x70000, epcsbuf, 32); //写32字节
写的内容是 i+0x22
6: alt_epcs_flash_read(my_epcs, my_epcs->region_info->offset+0x70000, epcsbuf, 40); //读40字节
验证我们写入的内容正确。
程序如下:
main 函数里调用epcs(), main没有显示,我的项目程序里还有其他东西,我这里只是突出epcs 的操作。
结果显示不知怎么不能复制粘贴, 只有用贴图的方式了。
#include "system.h"
#include <stdio.h>
#include "alt_types.h"
#include "sys/alt_flash.h"
#include "sys/alt_flash_dev.h"
unsigned char epcsbuf[32];
int ret_code;
alt_flash_fd* my_epcs;//定义句柄
void epcs()
{
int i;
my_epcs = alt_flash_open_dev("/dev/epcs");//打开FLASH器件,获取句柄
ret_code = alt_epcs_flash_get_info (my_epcs, my_epcs->region_info,my_epcs->number_of_regions);//获取配置芯片信息
printf("ret_code=%d",ret_code);
if(my_epcs) //信息获取成功
{
//example application, read general data from epcs address 0x70000
ret_code = alt_epcs_flash_erase_block(my_epcs,my_epcs->region_info->offset+0x70000);//擦除第8块
ret_code = alt_epcs_flash_read(my_epcs, my_epcs->region_info->offset+0x70000, epcsbuf, 40); //读32字节
printf("offset=%d\n",my_epcs->region_info[0].offset);
printf("size=%d\n",my_epcs->region_info[0].region_size);
printf("numberOfBlock=%d\n",my_epcs->region_info[0].number_of_blocks);
printf("blockSize=%d\n",my_epcs->region_info[0].block_size);
printf("after erase:\n");
for(i=0;i<40;i++)
{
printf("%x ",epcsbuf[i]);
}
printf("\nafter write:\n");
for(i=0;i<32;i++)
epcsbuf[i]=i+0x22;
ret_code = alt_epcs_flash_write(my_epcs, my_epcs->region_info->offset+0x70000, epcsbuf, 32); //写32字节
ret_code = alt_epcs_flash_read(my_epcs, my_epcs->region_info->offset+0x70000, epcsbuf, 40); //读32字节
for(i=0;i<40;i++)
{
printf("%x ",epcsbuf[i]);
}
printf("\n");
}
}
参考文章有:
http://m.blog.csdn.net/article/details?id=5701024
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_embedded_ip.pdf
NIOS 2 软核中EPCS配置芯片的存储操作相关推荐
- NIOS II 软核中EPCS配置芯片的存储操作
NIOS II 软核中EPCS配置芯片的存储操作 EPCS4配置芯片除了存储FPGA配置信息和NIOS ...
- [转贴]NIOS II 软核中EPCS配置芯片的存储操作
最近用CYCLONE FPGA做的视频图像叠加板需要存储一些用户配置信息,而EPCS4配置芯片除了存储FPGA配置信息和NIOS II程序外,还有很多存储空间剩余未使用,刚好可以用来做用户配置信息存储 ...
- PYNQ-Z2调试笔记:在Microblaze软核中编程运行C程序
本篇主要介绍,通过Jupyter在Microblaze Subsystems上使用C语言编程,实现一些简单的功能. 目录 前言 正文 一.软核PMODA.PMODB.RPI.ARDUINO 二.在软核 ...
- NIOS II软核处理器
前不久,Altera 正式推出了Nios II系列32位RSIC嵌入式处理器.Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPG ...
- [笔记].Nios II 软核性能基准
一些表格 表1 Nios II处理器系统的最大时钟频率(tMAX)(MHz) 表2 Nios II处理器系统的MIPS(每秒钟一百万个指令) 表3 在不同设备家族上的Nios II处理器系统的MI ...
- SecureCrt配置之自动存储操作日志
日志自动存储配置 我填写的log file name D:\SecureCrt-log\%H\%Y%M%D\%S %H %Y-%M-%D %h%m%s.log 防止连接中断配置 每300秒会在命令 ...
- NIOS软核处理器入门实验
NIOS软核处理器入门实验 脚本方式的优势: •便于工程的复制和搬移, 命令脚本能够较好的解决文件路径的相对关系 •便于参数的集中修改,命令脚本的参数相对集中, 在配置文件的集中区域可以完成所有的设定 ...
- nios 和arm 是硬核还是软核?
核(CORE)是一个数字系统的核心,负责整个系统的内存调度,中断管理,算术逻辑运算等,如同整个系统的大脑,是由物理电气实现逻辑功能的关键.尽管复杂,但不可忽略的是,核同其他数字器件一样,也是一个典型的 ...
- 基于 NIOS-II 软核的流水灯
基于 NIOS-II 软核的流水灯 一.实验介绍 (一)实验目的 (二)实验内容 (三)实验原理 (四)实验器件 二.硬件设计 (一) 新建一个工程 (二) Qsys 系统设计 (三)完成 Qsys ...
- 3级调度 fpga_FPGA的软核、硬核、固核
"核" 现在的FPGA设计,规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的.一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设 ...
最新文章
- linux 文件系统 文件查找 文件链接
- 怎样一步一步删除(linux amp; UNIX)环境下 oracle 11g 集群节点
- laravel + Vue 前后端分离 之 项目配置 - 开发环境
- android怎样将bar的label居中_从iPhone换成Android手机之后,将是一种怎样的不同体验...
- [PAT B1036]跟奥巴马一起编程(15分)
- 记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑
- Windows Mobile logo测试介绍
- 前端学习(1735):前端系列javascript之TypeScript介绍
- 餐饮小票打印app_POS收银工业平板电脑在餐饮行业的应用
- MongoDB 安装记录
- 5场直播丨PostgreSQL、openGauss、Oracle、GoldenDB、EsgynDB
- 关于“Unknown or unsupported command ‘install‘”问题解决的小结
- 写作的积累 —— 台词
- python web改为java_Python是否可以成为Web应用程序的良好替代方案,否则将在Java EE中完成?...
- 一个成功的网络营销案例的分析
- 明明办了100M宽带,下载速度为何不到10M/s?
- 2018年度中国IT行业杰出人物奖出炉
- 一篇文章,教你学会Git
- 深度 | 巨头都在追逐的眼球追踪技术,究竟能带来什么?
- mysql Error 1412: Table definition has changed, please retry transaction