欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

wince6.0装置唯一码的写入和读取(nand flash)

更新时间: 2014-01-05 03:10:45 责任编辑: Author_N1

 

WINCE6.0设备唯一码的写入和读取(NAND FLASH)
大家好,我们WINCE6.0设备采用的是SLC NAND FLASH,没有EEPROM,客户要求能够通过软件接口读取设备唯一码,对于FLASH来说,大家是如何实现这个功能的,把唯一码写在Flash哪个block比较合适,我们设备FLASH block规划是这样的:nboot+TOC+eboot+logo+MBR+NK+Flash Disk。麻烦大家分享一下,先谢谢了。
--参考方法--
我们的是在eboot和logo中间加了一个cust data用于保存UUID的
--参考方法--
重新格式化系统的过程如果可以自己控制,可以考虑不格式化某些块;或格式化之前读出某些块的内容,格式化完再写进去。
--参考方法--
应用程序接口这方面比较简单,直接在FMD驱动中提供对应的接口就可以了。

引用:
...,而且如何提供接口给应用来读取UUID,请教了。

--参考方法--
以前实现在应用程序中读写TOC也是用一样的方式。也有人logo也是直接在进入系统后用app修改了。
--参考方法--
使用Nandflash,一般都是把唯一码放在指定的块中,升级的时候不对这些块操作。


写块操作导致系统异常?
确定写的块号正确吗?在写之前,能否正确读取该块?
--参考方法--
引用:
BOOL WriteDeviceId(PBYTE pInBuf, DWORD nInBufSize)
{
UCHAR szSectorInfo[16] ={0};
 PSectorInfo     g_pSectorInfoBuf = (PSectorInfo)szSectorInfo;
FMD_GetInfo (&g_FlashInfo);

 RETAILMSG(TRUE, (TEXT("WriteDeviceId() 11111  \r\n")));

if (!ReadBlock(SYSTEM_INFO_BLOCK, NULL, g_pSectorInfoBuf))
{
RETAILMSG(1, (TEXT("WriteSYSTEM_INFO_BLOCK : failed to read block (0x%x).\r\n"), SYSTEM_INFO_BLOCK));
return FALSE;
}

if (!FMD_EraseBlock(SYSTEM_INFO_BLOCK))
{
RETAILMSG(1, (TEXT("WriteSYSTEM_INFO_BLOCK : failed to erase block (0x%x).\r\n"), SYSTEM_INFO_BLOCK));
return FALSE;
}
if (!WriteBlock(SYSTEM_INFO_BLOCK,szInBuf,g_pSectorInfoBuf ))
{
RETAILMSG(1, (TEXT("WriteSYSTEM_INFO_BLOCK: failed to write block (0x%x).\r\n"), SYSTEM_INFO_BLOCK));
return FALSE;
}

return TRUE; 
这是写ID的函数,但WriteBlock这里导致系统异常,不知道是什么原因?
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:10:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19228/
本文WWW.DOC100.NET DOC100.NET版权所有。