关于OEMInit()中调用NandFlash总是编译不通过问题

九个太阳2023 2010-01-19 01:40:20
RT,项目中需要显示开机LOGO,BootLoader中显示图片过后,lanch os的时候,屏幕的图片消失,所以决定在OEMInit中添加显示LOGO函数。由于图片数据是放在flash里制定的区域的,所以说要调用flash的读写函数,来完成这个功能。我在OEMInit中直接调用BootLoader中显示图片的代码,但是编译的时候总是提示:

BUILD: [01:0000010633:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_GetBlockStatus referenced in function OALFlashStoreOpen

BUILD: [01:0000010634:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_GetInfo referenced in function OALFlashStoreOpen

BUILD: [01:0000010635:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_Init referenced in function OALFlashStoreOpen

BUILD: [01:0000010636:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_Deinit referenced in function OALFlashStoreClose

BUILD: [01:0000010637:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_ReadSector referenced in function BuildLayoutInfo

BUILD: [01:0000010638:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_WriteSector referenced in function OALFlashStoreWrite

BUILD: [01:0000010639:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_SetBlockStatus referenced in function OALFlashStoreWrite

BUILD: [01:0000010640:ERRORE] oal.lib(flashstore.obj) : error LNK2019: unresolved external symbol FMD_EraseBlock referenced in function OALFlashStoreWrite

OALFlashStorexxxx是在C:\WINCE600\PLATFORM\TI_EVM_3530\SRC\CSP下的代码,其Source文件为:

TARGETNAME=omap_boot_flashstore_lib
TARGETTYPE=LIBRARY

INCLUDES=$(INCLUDES);$(_PUBLICROOT)\common\oak\drivers\block\msflashfmd\inc

SOURCES= \
flashStore.c


若是在source文件中添加
$(_TARGETPLATLIB)\$(_CPUDEPPATH)\bsp_fmdnand.lib

那么编译提示找不到bsp_fmdnand.lib,已知bsp_fmdnand.lib是在编译EBOOT的时候生成的!
请大家给点建议,看能不能解决这个问题~~~
...全文
94 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
九个太阳2023 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 veabol 的回复:]
引用 9 楼 hao507 的回复:
我在DisplayInit里打印串口信息,信息也是在黑屏很长时间才显示的!也就是说wince下的现实驱动是在系统起来之后的一段时间才加载的,但是系统起来和加载驱动之间的这一段时间,LCD为什么是黑屏呢???

启动系统的时候OAL层或者其它某个地方操作了LCD的相关寄存器或者是关掉了背光。
[/Quote]
正解!谢谢Veabol,问题解决了,散分
博说医械研发 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hao507 的回复:]
我在DisplayInit里打印串口信息,信息也是在黑屏很长时间才显示的!也就是说wince下的现实驱动是在系统起来之后的一段时间才加载的,但是系统起来和加载驱动之间的这一段时间,LCD为什么是黑屏呢???
[/Quote]
启动系统的时候OAL层或者其它某个地方操作了LCD的相关寄存器或者是关掉了背光。
kyzf 2010-01-19
  • 打赏
  • 举报
回复
帮顶下。

MARK,我也学习下、
rushonin 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hao507 的回复:]
我在DisplayInit里打印串口信息,信息也是在黑屏很长时间才显示的!也就是说wince下的现实驱动是在系统起来之后的一段时间才加载的,但是系统起来和加载驱动之间的这一段时间,LCD为什么是黑屏呢???
[/Quote]
把背光关了?
在oeminit中做的话,可以考虑直接读虚拟地址(把logo写在特定的flash区域中).另外,好像oeminit时,文件系统并没有开启.
九个太阳2023 2010-01-19
  • 打赏
  • 举报
回复
我在DisplayInit里打印串口信息,信息也是在黑屏很长时间才显示的!也就是说wince下的现实驱动是在系统起来之后的一段时间才加载的,但是系统起来和加载驱动之间的这一段时间,LCD为什么是黑屏呢???
九个太阳2023 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skynet000 的回复:]
在wince OAL以后文件系统已经开启,对nand的底层操作比较复杂。
最好在EBOOT的阶段OEMPlatformInit()里面做LOGO,只要在OAL里面不清屏,也一样可以用的。
[/Quote]
有点奇怪的就是,我没有清屏,但是LCD黑屏......不知道怎么回事
skynet000 2010-01-19
  • 打赏
  • 举报
回复
在wince OAL以后文件系统已经开启,对nand的底层操作比较复杂。
最好在EBOOT的阶段OEMPlatformInit()里面做LOGO,只要在OAL里面不清屏,也一样可以用的。
skynet000 2010-01-19
  • 打赏
  • 举报
回复
OEMInit已经进入wince的OAL层,不能像Eboot里面直接调用NAND FLash的底层驱动。
可以改用kernalIOcontrol的方式进行对nand的读写。
guopeixin 2010-01-19
  • 打赏
  • 举报
回复
还有编译顺序
guopeixin 2010-01-19
  • 打赏
  • 举报
回复
to:若是在source文件中添加
$(_TARGETPLATLIB)\$(_CPUDEPPATH)\bsp_fmdnand.lib

那么编译提示找不到bsp_fmdnand.lib,已知bsp_fmdnand.lib是在编译EBOOT的时候生成的!
请大家给点建议,看能不能解决这个问题~~~

查看环境变量TARGETPLATLIB的值,并确定$(_TARGETPLATLIB)\$(_CPUDEPPATH)下面有bsp_fmdnand.lib
wolfmvp 2010-01-19
  • 打赏
  • 举报
回复
我觉得是某些地方缺少静态链接库或者动态链接库,没有做过!友情赞助+顶贴!
博说医械研发 2010-01-19
  • 打赏
  • 举报
回复
OAL层调用FLASH的操作可以用些IOCONTROL来操作,如果确定要用这些函数的话要改些SOURCE文件的链接库的设定,且在dir文件中使FLASH相关的文件先于OAL调用FLASH的代码之前编译。
九个太阳2023 2010-01-19
  • 打赏
  • 举报
回复
自己顶~~~

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧