zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1930回复:7

怪异,为什么Nboot可以写串口,同样的设置,起来eboot就变成乱码了?给分!!

楼主#
更多 发布于:2004-12-15 11:50
大虾求救,SMDK2410中引导了eboot到地址0x8c038000之后,之后串口出来的东西就变成乱码了,不知道输出了什么调试信息怎么办啊,是不是因为我的eboot编译的有问题啊?怎么才能发现并纠正串口的问题,谢谢!!
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-15 14:01
有几种可能:
1. 整个系统的时钟频率被改变了,一般串口的时钟频率是由I/O CLOCK提供的,如果I/O CLOCK变了的话,串口的波特率也就不准确了
2. 串口的波特率被改变了.

在EBOOT里,串口的初始化是在OEMInitDebugSerial()做的,并且是在OEMPlatformInit()之前. 你可以在OEMInitDebugSerial()检查一下.
www.cnemb.com
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-16 22:21
joyfly大哥,在你的帮助下,问题解决了,就是主频被改了^_^
非常感谢,分数已给!!
WeiCE
驱动牛犊
驱动牛犊
  • 注册日期2005-07-19
  • 最后登录2005-08-15
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望7点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-07-21 11:56
我也遇到乱码的问题。
在用dnw工具向2440x板子下载并运行eboot.nb0之后,
dnw里显示的全是乱码,
请问具体怎么改阿?
WeiCE
驱动牛犊
驱动牛犊
  • 注册日期2005-07-19
  • 最后登录2005-08-15
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望7点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-07-25 17:52
以下是platform\smdk2440\KERNEL\HAL\debug.c 的前面的部分内容:

#include <nkintr.h>
#include <S2440.h>

#define     UART0BaudRate       115200
#define     UART1BaudRate       115200 //38400


/*
    @func   void | OEMInitDebugSerial | Initialize serial debug monitor port.
    @rdesc  N/A.
    @comm    
    @xref  
*/
void OEMInitDebugSerial(void)
{
    volatile UART1reg   *s2440UART1       = (UART1reg *)UART1_BASE;
    volatile IOPreg     *s2440IOP       = (IOPreg *)IOP_BASE;
    
       // UART1 (TXD1 & RXD1) used for debug serial.
       //

       // Configure port H for UART.
       //
       s2440IOP->rGPHCON &= ~((3 << 8) | (3 << 10));       // Configure GPH2 and GHP3 for UART1 Tx and Rx, respectively.
       s2440IOP->rGPHCON |=  ((2 << 8) | (2 << 10));       //
       s2440IOP->rGPHUP  |=   (1 << 4) | (1 << 5);              // Disable pull-up on TXD1 and RXD1.

       // Configure UART.
       //
       s2440UART1->rUFCON  = 0x0;              // Disable the FIFO (TODO: do we need to enable the FIFO?)
       s2440UART1->rUMCON  = 0x0;              // Disable AFC.
       s2440UART1->rULCON  = 0x3;              // Normal mode, N81.
       s2440UART1->rUCON   = 0x245;       // Rx pulse interrupt, Tx level interrupt, Rx error status interrupt enabled.
       s2440UART1->rUBRDIV = ( (int)(S2440PCLK/16.0/UART1BaudRate + 0.5) -1 );              // Set up baudrate (38400).

}





可能哪里有问题啊?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-07-26 13:36
你的接收端串口速度和评估版的一样不?你先看看汇编里面有没有调试信息输出,找到最开始有输出的地方,看看是不是你的串口信息从一开始就是乱码。
根据地的兄弟们,团结就是力量
WeiCE
驱动牛犊
驱动牛犊
  • 注册日期2005-07-19
  • 最后登录2005-08-15
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望7点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-07-27 09:28
串口设置是一样的,因为一开始从bootloader输出的信息是好的。但是当顺利下载eboot.nb0或nk.nb0,并运行后,输出的就全是乱码了。

另外,使用板子自带的一个2440test.bin,下载到0x30000000并运行,输出是正常的,没有乱码。

看源码发现,bootloader与2440test.bin中均设定CPU主频为203.2MHz,而2440 BSP中使用的是400MHz。这有没有关系啊?

以下是从smdk2440目标板开始启动到eboot.nb0运行后,dnw中的输出结果:

 
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-07-29 13:40
对阿,本帖子最开始不是说频率不对不行嘛,你的改改频率三!!!
根据地的兄弟们,团结就是力量
游客

返回顶部