- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Linux下flash操作读、写、擦除步骤
1、背景介绍
在板上,ZYNQPL部分通过EMC连接一片NORFLASH,地址空间如下:
可以看到NORFLASH的起始地址为0这是物理地址,可以把数据存放在以该地址起始的一段区域。
需要注意的是,在对NORFLASH进行读写数据时,需要参考对应的datasheet,例如这里选用的NORFLASH读、写、擦除步骤如下:
通过上面的表格就知道进行相应操作每一步该做什么,可以转换为SDK中裸奔程序的C代码。
2、Linux下flash操作之前提到过zynq中Linux用户应用程序可以通过/dev/mem访问到物理地址,xil_in32和xil_out32等裸奔程序中常见的函数可以通过这一机制移植到linux下。于是,对flash的操作其实就是基于xil_in和xil_out对物理地址进行读写。
这里只需要实现三个函数,erase,write_sector以及read_sector.代码如下:
//xil_io.h
#include
#include
#include
#include
#include
#include
#include
#include
#include
#definePAGE_SIZE((size_t)getpagesize())
#definePAGE_MASK((uint64_t)(long)~(PAGE_SIZE-1))
voidXil_Out32(uint64_tphyaddr,uint32_tval){intfd;volaTIleuint8_t*map_base;uint64_tbase=phyaddrPAGE_MASK;uint64_tpgoffset=phyaddr(~PAGE_MASK);
if((fd=open(/dev/mem,O_RDWR|O_SYNC))==-1){perror(open/dev/mem:);}
map_base=mmap(NULL,PAGE_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,base);if(map_base==MAP_FAILED){perror(mmap:);}*(volaTIleuint32_t*)(map_base+pgoffset)=val;close(fd);munmap((void*)map_base,PAGE_SIZE);}
intXil_In32(uint64_tphyaddr){intfd;uint32_tval;volaTIleuint8_t*map_base;uint64_tbase=phyaddrPAGE_MASK;uint64_tpgoffset=phyaddr(~PAGE_MASK);//open/dev/memif((fd=open(/dev/mem,O_RDWR|O_SYNC))==-1){perror(open/dev/mem:);}//mmapmap_base=mmap(NULL,PAGE_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,base);if(map_base==MAP_FAILED){perror(mmap:);}val=*(volaTIleuint32_t*)(map_base+pgoffset);close(fd);munmap((void*)map_base,PAGE_SIZE);
returnval;}
voidXil_Out16(uint64_tphyaddr,uint16_tval){intfd;volatileuint8_t*map_base;uint64_tbase=phyaddrPAGE_MASK;uint64_tpgoffset=phyaddr(~PAGE_MASK);
if((fd=open(/dev/mem,O_RDWR|O_SYNC))==-1){perror(open/dev/mem:);}
map_base=mmap(NULL,PAGE_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,base);if(map_base==MAP_FAILED){perror(mmap:);}*(volatileuint16_t*)(map_base+pgoffset)=val;close(fd);munmap((void*)map_base,PAGE_
您可能关注的文档
- 环境学考试题目及答案.docx
- 逆矩阵课件完整版本.ppt
- 干部任前谈话记录.docx
- 云冈石窟完整版本.ppt
- 耳石症的诊治课件.ppt
- 历史专题03-观点论述题(解题指导+专项练习).docx
- 发现了阳痿吃什么中成药好呢?.docx
- 新概念英语第二册lesson32课件.pptx
- 新人教版三年级科学下册期中考试题及答案【完整】.doc
- 3.宠物医院人力资源管理《宠物医院实务》教学课件.pptx
- (4篇)XX区抓党建促基层治理培训心得体会汇编12.docx
- 汇编1154期-在培训班上的讲话汇编(3篇).doc
- 汇编1173期-专题党课讲稿汇编(3篇)112.doc
- 汇编1076期-主题党课讲稿汇编(3篇).doc
- 汇编1177期-学习心得体会汇编(3篇)112.doc
- (6篇)党和国家机构改革心得体会汇编.docx
- 汇编1166期-坚定理想信念、全面从严治党、担当作为专题党课讲稿汇编(3篇)112.doc
- 汇编1174期-专题党课讲稿汇编(3篇)112.doc
- 教育13期-主题教育学习心得体会、研讨发言材料参考汇编(3篇).doc
- 汇编1458期-心得体会研讨发言提纲参考汇编(3篇)123.doc
文档评论(0)