社区
嵌入开发(WinCE)
帖子详情
wince6.0的eboot下如何创建分区,这个分区下次烧写nk.bin后不会被擦除掉?
zhengmeifu
2011-05-06 01:53:53
我现在想:当NK.BIN文件升级后,原来创建的用户数据分区不会被擦除掉。即使更新NK.BIN后,原来用户数据仍然还存在。这个怎么实现?我用的平台是:wince6.0+arm(S5PV210).拜谢大侠的指导!
...全文
478
20
打赏
收藏
wince6.0的eboot下如何创建分区,这个分区下次烧写nk.bin后不会被擦除掉?
我现在想:当NK.BIN文件升级后,原来创建的用户数据分区不会被擦除掉。即使更新NK.BIN后,原来用户数据仍然还存在。这个怎么实现?我用的平台是:wince6.0+arm(S5PV210).拜谢大侠的指导!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ADC0809608
2014-01-16
打赏
举报
回复
总是这样,解决了,也不给个总结
MJL007
2013-11-23
打赏
举报
回复
太经典了.......
一介布衣萧萧
2012-09-27
打赏
举报
回复
楼上,这个问题怎么解决的,能说说不???
loongembedded
2011-11-30
打赏
举报
回复
[Quote=引用 16 楼 zhengmeifu 的回复:]
终于解决问题了,感谢以下朋友:loongEmbedded,gooogleman,wswwxk,aaa_tnt
[/Quote]
解决了就好,麻烦分享一下,让其他朋友也可以学习。
当我遇上-你
2011-11-29
打赏
举报
回复
这好久的东西都顶上来了,LZ早就解决了吧,只是没结贴而已,看来要版主帮忙了
loongembedded
2011-11-29
打赏
举报
回复
最近在赶项目节点,忙的都没有时间回家开电脑,看了大家的回复,思路是对,楼主参考调试一下,我这边博文希望对楼主有帮助
http://blog.csdn.net/loongembedded/article/details/6129967
zhengmeifu
2011-11-29
打赏
举报
回复
终于解决问题了,感谢以下朋友:loongEmbedded,gooogleman,wswwxk,aaa_tnt
gooogleman
2011-11-28
打赏
举报
回复
楼主真是明白我,发个邮件到我的邮箱。
gooogleman
2011-11-28
打赏
举报
回复
烧写的时候不要擦除整个nand ,在nand 驱动标记 fat 为坏块即可。
不过这样也会产生问题。就是fat以后真的有坏块怎么办?嘿嘿。
xiaosan5871
2011-07-15
打赏
举报
回复
不要低格。
在NK更新之后,在分区里边动动手脚~
zhengmeifu
2011-07-15
打赏
举报
回复
[Quote=引用 8 楼 fqayst 的回复:]
分区一般是在eboot里面进行的,比如现新建一分区,分区应标记为reserved,NK存放在flash上的位置根据情况做相应的变动,以保证该分区与NK所在的分区没有冲突,这样更新NK的时候就不会影响到该分区了。
[/Quote]
嗯,思路是这样的。具体改代码起来没这么容易。
zengwujun
2011-07-15
打赏
举报
回复
[Quote=引用 1 楼 wswwxk 的回复:]
把他标记为坏块,就不会对他操作了
[/Quote]
这个做法简单适用。
fqayst
2011-06-09
打赏
举报
回复
分区一般是在eboot里面进行的,比如现新建一分区,分区应标记为reserved,NK存放在flash上的位置根据情况做相应的变动,以保证该分区与NK所在的分区没有冲突,这样更新NK的时候就不会影响到该分区了。
homer.shin
2011-06-08
打赏
举报
回复
怎么没有高手呀?顶一下
zhengmeifu
2011-05-09
打赏
举报
回复
// read MBR sector ADD BY ZMF
if(dwCurBlock=GetValidMBR(toc) !=0){
if ( FMD_ReadSector(dwCurBlock*g_FlashInfo.wSectorsPerBlock, (PUCHAR)&toc, &si, 1) ) {
// if (SaveMBRSector(toc)==TRUE){
OALMSG(1, (TEXT("ZMF:WriteFlashNK: read MBR sector: 0x%x\r\n"),dwCurBlock*g_FlashInfo.wSectorsPerBlock));
goto READPART;
}else OALMSG(OAL_ERROR, (TEXT("ZMF:WriteFlashNK: ERROR: Unable to read MBR sector\r\n")));
}
if(BP_LowLevelFormat(0, g_FlashInfo.dwNumBlocks, FORMAT_SKIP_RESERVED | FORMAT_SKIP_BLOCK_CHECK) != TRUE)
{
OALMSG(OAL_ERROR, (TEXT("ERROR: Low-level boot media format failed.\r\n")));
return FALSE;
}
dwCurBlock=0;
// write MBR sector ADD BY ZMF
#ifdef SDMMC_BOOT
#else
// Open a BINFS partition
READPART:
g_hPartBINFS = BP_OpenPartition
(
NEXT_FREE_LOC,
SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(dwBINFSPartLength)) * _SECTORS_PER_BLOCK,
PART_BINFS,
TRUE,
PART_OPEN_ALWAYS
);
#endif
if(g_hPartBINFS == INVALID_HANDLE_VALUE)
{
RETAILMSG(1, (TEXT("<ERROR> WriteFlashNK : BINFS partition open was failed.\r\n")));
return FALSE;
}
else
{
// Partition open success
PPARTENTRY ppartBINFS = BP_GetPartitionInfo(g_hPartBINFS);
if(ppartBINFS != NULL)
{
OALMSG(OAL_DEBUG, (TEXT("----- BINFS Partition -----\r\n"), ppartBINFS->Part_BootInd));
OALMSG(OAL_DEBUG, (TEXT("Part_BootInd : 0x%X\r\n"), ppartBINFS->Part_BootInd));
OALMSG(OAL_DEBUG, (TEXT("Part_FirstHead : 0x%X\r\n"), ppartBINFS->Part_FirstHead));
OALMSG(OAL_DEBUG, (TEXT("Part_FirstSector : 0x%X\r\n"), ppartBINFS->Part_FirstSector));
OALMSG(OAL_DEBUG, (TEXT("Part_FirstTrack : 0x%X\r\n"), ppartBINFS->Part_FirstTrack));
OALMSG(OAL_DEBUG, (TEXT("Part_FileSystem : 0x%X\r\n"), ppartBINFS->Part_FileSystem));
OALMSG(OAL_DEBUG, (TEXT("Part_LastHead : 0x%X\r\n"), ppartBINFS->Part_LastHead));
OALMSG(OAL_DEBUG, (TEXT("Part_LastSector : 0x%X\r\n"), ppartBINFS->Part_LastSector));
OALMSG(OAL_DEBUG, (TEXT("Part_LastTrack : 0x%X\r\n"), ppartBINFS->Part_LastTrack));
OALMSG(OAL_DEBUG, (TEXT("Part_StartSector : 0x%X\r\n"), ppartBINFS->Part_StartSector));
OALMSG(OAL_DEBUG, (TEXT("Part_TotalSectors : 0x%X\r\n"), ppartBINFS->Part_TotalSectors));
OALMSG(OAL_DEBUG, (TEXT("---------------------------\r\n"), ppartBINFS->Part_BootInd));
}
else
{
OALMSG(TRUE, (TEXT("Failed to get a BINFS partition information\r\n")));
return FALSE;
}
if(dwCurBlock !=0 ){
if(FMD_SetBlockStatus(dwCurBlock, BLOCK_STATUS_RESERVED))
OALMSG(1, (TEXT("ZMF:SET BLOCK RESERVED: 0x%x\r\n"),dwCurBlock));
if(EraseBlocks(SECTOR_TO_BLOCK(ppartBINFS->Part_StartSector),
((ppartBINFS->Part_TotalSectors%64==0) ? ppartBINFS->Part_TotalSectors/64 : ppartBINFS->Part_TotalSectors/64+1),
FORMAT_SKIP_RESERVED | FORMAT_SKIP_BLOCK_CHECK) != TRUE)
{
OALMSG(OAL_ERROR, (TEXT("ERROR: Low-level boot media format failed.\r\n")));
return FALSE;
}
if(EraseBlocks(dwCurBlock, 1, FORMAT_SKIP_RESERVED | FORMAT_SKIP_BLOCK_CHECK) != TRUE)
{
OALMSG(OAL_ERROR, (TEXT("ERROR: Low-level boot media format failed.\r\n")));
return FALSE;
}
// WriteMBR();
if ( !FMD_WriteSector(dwCurBlock * g_FlashInfo.wSectorsPerBlock, (PUCHAR)&toc, &si, 1) ) {
OALMSG(OAL_ERROR, (TEXT("ZMF:WriteFlashNK: ERROR: Unable to save MBR sector\r\n")));
}else
OALMSG(1, (TEXT("ZMF:WriteFlashNK: write MBR sector\r\n")));
}
我现在把代码改成如上过程,先检测有无可用的MBR,若有就不格式化整个flash,只擦除binfs分区。而binfs分区是紧挨着MBR扇区后面的扇区。我擦除binfs分区后把原来读出来保存的MBR扇区重新写回去。这样可以吗?(上面这个文件是eboot目录下的nand.cpp文件里的WriteFlashNK()函数里的一部分)。
zhengmeifu
2011-05-07
打赏
举报
回复
[Quote=引用 3 楼 aaa_tnt 的回复:]
EBOOT 下创建分区 可以使用BP_OpenPartition函数
你是不是 升级NK的时候 把整个flash的数据擦掉,然后再分区呢?
[/Quote]
是的。系统默认的。
zhengmeifu
2011-05-07
打赏
举报
回复
[Quote=引用 2 楼 wincelf 的回复:]
升级NK的时候,只格式化,NK对应的大小就行了,不要格式化整个区
[/Quote]
怎么操作呀?我看代码是格式化整个剩余的(除了坏块和保留空间外)空间。代码如下:
if(BP_LowLevelFormat(0, g_FlashInfo.dwNumBlocks, FORMAT_SKIP_RESERVED | FORMAT_SKIP_BLOCK_CHECK) != TRUE)
{
OALMSG(OAL_ERROR, (TEXT("ERROR: Low-level boot media format failed.\r\n")));
return FALSE;
}
在eboot目录下的nand.cpp文件里的WriteFlashNK()函数里。而且他MBR扇区是系统自动分配在前面0-5块后面(也就是RESERVED_BOOT_BLOCK后面)第6块的第一个扇区里。好像没办法给他改变。且nk.bin也是存在第6块开始的后面空间里的。
Ei
2011-05-06
打赏
举报
回复
EBOOT 下创建分区 可以使用BP_OpenPartition函数
你是不是 升级NK的时候 把整个flash的数据擦掉,然后再分区呢?
X86工业平板电脑
2011-05-06
打赏
举报
回复
升级NK的时候,只格式化,NK对应的大小就行了,不要格式化整个区
当我遇上-你
2011-05-06
打赏
举报
回复
把他标记为坏块,就不会对他操作了
WinCE
6.0
BSP移植(二)
一,E
BOOT
菜单和USB下载问题解决 按上一篇的地址
烧写
STEPLDR.nb1和E
BOOT
.nb0。连接好系统的串口调式线,打开DNW,系统上电,我们将可以在DNW界面看到E
BOOT
的菜单。 0) IP address: 192.168.1.6 1) Subnet mask: 255.255.255.0 2) DHCP: Disabled 3)
Boot
delay: 5 sec
WinCE
6.0
Boot
loaderMain源码分析之OEMLaunch
本文转自:http://jazka.blog.51cto.com/809003/612722在下载了内核镜像之后,进入到最后一个阶段OEMLaunch,在这里将完成e
boot
的最后一部分任务,并将跳转到OAL.exe开始启动内核。还是先给出该函数的源码如下: 先来看看这几个参数,都是从DownloadImage函数获得的,dwImageStart是镜像的起始位置,dwImageLength是
E
boot
中应用NandFlash
出处:http://blog.csdn.net/LoongEmbedded/article/details/6015302 ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi) 时间:2010.11.17 类别:
WINCE
b
(转)E
boot
中应用NandFlash
E
boot
中应用NandFlash 分类:
WINCE
boot
loader开发2010-11-17 17:07 1218人阅读 评论(1) 收藏 举报 flashdownload存储
wince
byteinterface ********************************LoongEmbedded******************************** ...
转 适合
wince
初学者的一些 知识
http://blog.csdn.net/ligang2005070207/article/details/5788435 1.1 嵌入式车载导航系统的软件设计流程 嵌入式车载系统软件主要包括系统内核、驱动程序、应用程序三部分。设计的过程当中,我们采用瀑布模型进行设计,首先制定Windows CE5.0系统内核,再次编写相关设备驱动,最后编写或移植应用程序。 制定内核时,我们采用SunS
嵌入开发(WinCE)
19,498
社区成员
41,565
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章