完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用的是MPC5744P,尝试根据NXP提供的驱动搭建一个eeprom仿真测试工程。我没有使用 SDK。幸运的是,我的代码可以运行,但运行速度非常慢。到达 main 函数中的无限“for 循环”大约需要几分钟。在项目中,只需初始化、写入和读取 eeprom 中的一些内容,但需要几分钟。 这是我下面的主要功能: /**************************************************** **************** 主要功能 ******************************** **********************************/ int main(void){ xcptn_xmpl(); system200mhz(); UINT32 我; /* 索引变量 */ UINT32 ret; /* 存储返回码 */ UINT32 pflash_pfcr1, pflash_pfcr2; UINT16 编号;/* 数据记录的id */ UINT16 size; /* 数据记录的大小 */ BOOL stop_flag = FALSE; /* 控制何时停止写入记录*/ BOOL re_init_flag = FALSE; /* 控制是否需要重新初始化eeprom系统*/ /* 解锁所有 eeprom 块 */ UNLOCK_EBLOCKS /* 初始化所有全局变量。如果启动代码可以 使用声明时指定的值初始化所有变量,则用户可以跳过调用此函数 */ InitGlobalVars(); /* 如果存在则禁用数据缓存 */ #if DCACHE_AVAILABLE dcache_disable(); #endif /* 使闪存控制器缓存无效 */ DisableFlashControllerCache(&pflash_pfcr1,&pflash_pfcr2); /* 初始化 eeprom 缓存 */ for(i = 0; i < EE_CACHE_SIZE; i = i+4) { WRITE32(cTable.startAddress + i, 0xFFFFFFFF); } /* 擦除所有 eeprom 块*/ ret = FSL_RemoveEeprom(&eepromConf,&CallBack); if(ret != EE_OK) { ErrorTrap(ret); } /*-------------------------------------------- ----------------------*/ /* 初始化eeprom,失败会重试5次 */ /*------------ ---------------------------------------------- ------*/ 我=0; ret = !EE_OK; while ((i <5) && (ret != EE_OK)) { ret = FSL_InitEeprom(&eepromConf,&CallBack); 我++; } if(ret != EE_OK) { ErrorTrap(ret); } swap_num = 0; /*-------------------------------------------- ------------------*/ /* 写入eeprom数据记录*/ /*---------------- ---------------------------------------------- --*/ id = 4; #if (SIZE_FIELD == 0) 大小 = DATA_SIZE; //size=0x40 #endif while (stop_flag == FALSE) { #if (SIZE_FIELD >0) size = id; 如果(大小 > BUFFER_SIZE) { 大小 = BUFFER_SIZE; } #endif /* 初始化缓冲区*/ for (i = 0; i WRITE8((UINT32)buffer + i, (UINT8)(i+size)); // buffer数组长度为20*4 ,size为0x40=64 } ret = FSL_WriteEeprom(&eepromConf,id,size,(UINT32)buffer,&CallBack); // id 前面定义为 4 if(ret == EE_OK) { /* 如果有交换操作则调用 FSL_MainFunction */ while(eraseStatus_Flag == ERASE_INPROGRESS) { stop_flag = TRUE; ret = FSL_MainFunction(&eepromConf,&CallBack); } 如果(TRUE == stop_flag) { swap_num ++; 如果(swap_num < 16) { stop_flag = FALSE; } } if(eraseStatus_Flag == ERASE_SWAPERROR) { re_init_flag = TRUE; } } else { re_init_flag = TRUE; } if (re_init_flag == TRUE) { /* 调用 FSL_InitEeeprom 尝试恢复 eeprom 系统 */ ret = FSL_InitEeprom(&eepromConf,&CallBack); if(ret != EE_OK) { ErrorTrap(ret); } } id = (++id)%0x50; } /*-------------------------------------------- ----------------------*/ /* 从eeprom读取数据*/ /*---------------- ---------------------------------------------- ---*/ for(i = 0; i < BUFFER_SIZE/4; i++) { buffer = 0xFFFFFFFF; } ret = FSL_ReadEeprom(&eepromConf,0x10,size,(UINT32)buffer,&CallBack); if(ret != EE_OK) { ErrorTrap(ret); } /*-------------------------------------------- --------------------*/ /* 从eeprom中删除数据*/ /*---------------- ---------------------------------------------- --*/ ret = FSL_DeleteRecord(&eepromConf,0x10,&CallBack); if(ret != EE_OK) { ErrorTrap(ret); } for(i = 0; i < BUFFER_SIZE/4; i++) { buffer = 0xFFFFFFFF; } ret = FSL_ReadEeprom(&eepromConf,0x10,size,(UINT32)buffer,&CallBack); 如果(ret == EE_OK) { ErrorTrap(ret); } /*-------------------------------------------- ----------------------*/ /* 报告eeprom状态*/ /*---------------- ---------------------------------------------- --*/ ret = FSL_ReportEepromStatus(&eepromConf,&i); if(ret != EE_OK) { ErrorTrap(ret); } /* 恢复闪存控制器缓存 */ RestoreFlashControllerCache(pflash_pfcr1,pflash_pfcr2); /* 如果存在则启用数据缓存 */ #if DCACHE_AVAILABLE dcache_enable(); #万一 对于(;;){ cnt++; } } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1928个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36414 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4759 浏览 1 评论
6098 浏览 1 评论
6806 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4242 浏览 0 评论
640浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
636浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
639浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
724浏览 2评论
833浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-16 19:20 , Processed in 1.030165 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号