2440(wince5.0)eboot调试
原创
©著作权归作者所有:来自51CTO博客作者rightsoft的原创作品,请联系作者获取转载授权,否则将追究法律责任
搞了一段时间的eboot,今天终于可以跑到主菜单这边了。
想想这段时间,自己太委琐了。前段时间的问题是:每次eboot跑到mmu使能之后就挂掉了。在这里兜了很多圈,首先想是不是mmu映射的问题,但是通过看代码和比较几个文档,觉得是没有问题的。其次感觉是sdram设置的问题,但是经过几次更改之后还是老样子。
由于资源问题和eboot比较大,烧写很慢的原因,这个问题拖了不少时间。前一段时间在对bootloader中加进度条的时候,对bootloader有了些了解(此处的bootloader用的是uboot,但是原理都是一样的)。通过对比,找出了原因所在。不管是uboot还eboot在执行之前都要执行nboot(至少在smdk上是这样的)。在设备上电后首先要跳到nboot中,(一般烧写在block0,大小4k)之后nboot做一些初始化操作(和uboot和eboot中的差不多),完了之后就将指定block上的uboot或者eboot拷贝到内存中指定的地址去,在这里的操作都是用的物理地址,所以比较爽。
我的问题就是nboot中将eboot拷贝到的内存地址和在eboot中实际用的地址(在经过mmu之后)不是同一个地址,我用的不是和eboot一起的nboot,而是自己的。这样nboot就把eboot放到了一个内存中去,并跳到那里去执行。这时eboot当然可以正常执行了,但是当使能mmu之后,要跳到一个虚拟地址(该地址对应的是main)一些去执行,但是此时该地址所对应的物理地址上并不是所谓的main函数,故此系统就挂掉了。为此调整了下nboot中的地址就好了。目前eboot可以跑到主菜单,由于板子上用的是dm9000,但是armv4i下的lib库中并没有dm9000的,又得自己搞了。
太土了,别人n年前都开始搞的东西,我现在才去搞。哎,这是差距啊!
上一篇:IP地址更新程序
下一篇:wince4.2系统启动流程
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
wince5.0下Camera驱动程序分析
此处的camera顶多可理解为摄像头
程序 驱动 休闲 wince5.0 Camera -
中断代码结构比较之WinCE4.2 VS WinCE5.0
本文简单介绍下wince两个版本的中断系统的代码流程
代码 结构 休闲 WinCE4.2 WinCE5.0 -
WinCE5.0下实现透明背景按钮(.net C#) 个人实验
参考了WinCE5.0下实现透明背景按钮(.net C#)这篇文章后,本着不模仿的态度去做,结果发现还是原先作者的
wince .net c# resources object -
WinCE5.0下实现透明背景按钮(.net C#) 个人补充
针对上篇文章有童鞋提出一些疑问:1.Command”(是否缺少 using 指令或程序集引用2.没有创建Command枚举类型3.编
wince .net c# resources string -
WINCE NAND FLASH eboot 创建多个分区
方法一:1. 三星原厂两个分区的实现方式1.1 WriteOSImageToB
WINCE System sed 文件系统 -
2440从sd卡启动wince
实现了bootloader从sd卡启动nk,记录一些工作中遇到的问题
职场 休闲 2440 wince sdboot