串口启动问题:从BL1运行起来后,加载EBOOT.NB0成功,跳转到EBOOT去执行时停止,什么问题?
来源:互联网 发布:淘宝联盟助手机版 编辑:程序博客网 时间:2024/06/06 23:50
硬件平台介绍:三星S5PV210芯片,wince6.0系统。
这几天遇到了郁闷的问题:系统从UART启动,通过dragin工具也加载成功BL1_UART.NB0文件,通过串口打印消息可以看出,BL1也运行起来了,初始化OTG口也成功了,传输EBOOT.NB0文件也成功了,跳转到EBOOT去执行时停止了。停在了如下消息处:
OEMInitLIb is Success
+++InitializeInterrupt()
---InitializeInterrupt()
+++OTGDEV_InitOtg
OTGDEV_SetSoftDisconnect
---OTGDEV_InitOtg
TSR START ADDRESS : 0x47700000
TSR IMAGE SIZE : 0x00080000
DOWNLOADING IS COMPLETED
我对比了我的BL1_UART目录下的代码,和原来开发板提供的代码一致,也对比了EBOOT下的代码,我有在BSP_ARGS这个结构体里增加了2个DWORD的变量。然后就是修改了LOGO显示部分的代码,LOGO图片也比之前的小很多。系统编译能通过,但是不管我怎么恢复,就是跳转运行EBOOT.NB0不成功。也测试了PMIC的POWERHOLD脚的电平也没有变化,从上电到运行EBOOT.NB0始终是高电平。这点应该可以排除电源跌落造成停止运行的情况。难道是DDR2 RAM初始化代码方面的问题?
分析EBOOT代码,正常启动应该是:从BootloaderMain函数里的KernelRelocate执行完后就执行OEMDebugInit函数,然后就是打印出:
Microsoft Windows CE Bootloader Common Library Version 1.4 Built May 17 2012 11:40:09
+OEMPlatformInit.
Microsoft Windows CE Bootloader for the Samsung SMDKV210 Version 2.5 Built May 17 2012
这一串东西。我现在的情况就是打印不出上面的那串消息。如何判断有没有执行到BootloaderMain函数里面呢?决定点灯试试。还有个疑问:有什么工具可以断点调试BL1或者eboot代码?VS2005可以吗?
现在测到的最新进展是:当一执行:BL1代码里的main函数的最后:
CallTSR = (TSR_RUN)dwImgAddr;
CallTSR();
就系统复位。(原来我设定的某个管脚置高的脚变低了。),地址是没错的:0x47700000,为什么跳到这个地址去就复位了呢?
CallTSR 是这样定义的: TSR_RUN CallTSR;
现在测到的最新进展是:BL1文件用我自己的BL1_UART.NB0,EBOOT用以前能正常启动的开发板的EBOOT.NB0,就能正常跳到eboot去执行。因此断定:肯定是我的EBOOT代码问题,造成跳到eboot去后系统复位。后面重点检查eboot代码问题。
问题搞定:在BL1或EBOOT目录下的startup.s中复位后增加如下代码:
ldr r1, =0x02 ;GPH1DAT[1] =1
ldr r0, =GPH1DAT
str r1, [r0]
ldr r1, =0x00000010 ;GPH1[1] : Output PMIC_PWRHOLD_OUTPUT=1
ldr r0, =GPH1CON
str r1, [r0]
ldr r1, =0x02 ;GPH1DAT[1] =1
ldr r0, =GPH1DAT
str r1, [r0]
若是增加如下代码:
ldr r1, =0x00000010 ;GPH1[1] : Output PMIC_PWRHOLD_OUTPUT=1
ldr r0, =GPH1CON
str r1, [r0]
ldr r1, =0x5551 ;GPH1PUD[1] ENables Pull-up
ldr r0, =GPH1PUD
str r1, [r0]
ldr r1, =0x02 ;GPH1DAT[1] =1
ldr r0, =GPH1DAT
str r1, [r0]
则始终不行。这点细节折腾我好久!!
- 串口启动问题:从BL1运行起来后,加载EBOOT.NB0成功,跳转到EBOOT去执行时停止,什么问题?
- nboot通过串口下载并运行eboot.nb0
- EBOOT.nb0
- 解决不能产生EBOOT.NB0文件的问题
- 解决不能产生EBOOT.NB0文件的问题
- 如何生成eboot.nb0
- 如何生成eboot.nb0
- 更改Eboot.nb0大小
- 更改Eboot.nb0大小
- 如何生成eboot.nb0
- eboot中断向量问题
- 生成Eboot.nb0 NK.nb0时不能复制临时文件错误
- 不能生成eboot.bin eboot.nb0
- CE5.0 - eboot加载NK.nb0的详细流程(转)
- nboot通过DNW下载并运行eboot.nb0
- 从BL1跳转到BL2
- EBoot单独编译时遇到的问题
- Eboot无法生成nb0文件
- 获取GridView中RowCommand的当前索引行
- 实现了一个比nginx速度更快的HTTP服务器
- xcode4.1自带SVN配置
- 数据中心备份的重要性
- 合理应用HashMap扩容
- 串口启动问题:从BL1运行起来后,加载EBOOT.NB0成功,跳转到EBOOT去执行时停止,什么问题?
- 什么时候加上android.intent.category.DEFAULT
- RTSP状态码
- stdafx.h的作用
- 2012年3月15-17日学习记录
- 重写 equals 方法
- [UvaOJ - Getting Started] 458 - The Decoder
- 现实迷途 第二十九章 钱是大爷
- java动态代理2 (cglib 不用实现接口)