没有合适的资源?快使用搜索试试~ 我知道了~
应用程序操作NorFlash示例代码分享(norflash接口使用方法)
23 下载量 101 浏览量
2020-09-04
19:50:21
上传
评论
收藏 45KB PDF 举报
温馨提示


试读
4页
相对于操作NandFlash,操作NorFlash相对简单,因为基本不需要考虑坏块,NorFlash也没有OOB区域,也跟ECC没有关系。读写擦除相对容易,下面看个例子吧
资源推荐
资源详情
资源评论












应用程序操作应用程序操作NorFlash示例代码分享示例代码分享(norflash接口使用方法接口使用方法)
相对于操作NandFlash,操作NorFlash相对简单,因为基本不需要考虑坏块,NorFlash也没有OOB区域,也跟
ECC没有关系。读写擦除相对容易,下面看个例子吧
复制代码 代码如下:
int dealwithnor()
{
// glob_t mtdbuf;
struct mtd_info_user mtd;
struct erase_info_user erase;
int blocks = 0;
int i = 0; //用于控制擦除的块的个数
int k = 0;
int written = 0; //已写入的字节数,只初始化一次
unsigned int size = StateOfImage.st_size; //应该是镜像的实际大小,因为内存中大于镜像的空间的内容不可预知
unsigned int result = 0;
unsigned int DevNum = 0; //设备的数量
unsigned int StartDev = 0; //从第startDev开始擦除
char DevName[20] = {0};
unsigned int AllSize = 0;
#define MAXPARTITIONS 40
struct DeviceInfo
{
int fd;
char dir[20];
uint32_t size; // Total size of the MTD
uint32_t erasesize;
}DevInfo[MAXPARTITIONS];//用来存储设备信息
bzero(DevInfo, sizeof(struct DeviceInfo));
/* 这是一种方法,但是有一个缺点,当mtd设备大于10个是,通过glob搜索出来的结果
会出问题,下面采用会采用第二种方法 */
// if(searchmtd(&mtdbuf) != 0){
// DEBUG("Sorry! Can not find mtd device");
// return 1; //返回大于零的数,表示升级失败
// }
// else
// {
// int fd;
//
// DEBUG("find %d mtd devices ",mtdbuf.gl_pathc);
// DevNum = mtdbuf.gl_pathc;
// for(i=0; i<DevNum; i++)
// {
// fd = safeOpen (mtdbuf.gl_pathv[i],O_SYNC | O_RDWR);
// if(fd < 0)
// {
// printf("failt to open");
// return 1;
// }
// bzero(&mtd, sizeof(struct mtd_info_user));
// if (ioctl(fd, MEMGETINFO,&mtd) < 0)
// {
// DEBUG("ioctl(): %m");
// DEBUG("This doesn't seem to be a valid MTD flash device!");
// return 1;
// }
//
// strcpy(DevInfo[i].dir, mtdbuf.gl_pathv[i]);
// DevInfo[i].fd = fd;
资源评论


weixin_38592848
- 粉丝: 3
- 资源: 911
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
