JLINK调试OK实际运行不OK换个串口软件就实际运行OK,有问题问

[复制链接]
 楼主| 2012CMD 发表于 2013-4-2 13:56 | 显示全部楼层 |阅读模式
本帖最后由 2012CMD 于 2013-4-2 19:54 编辑

具体情况见1楼and8楼
mini2440的板子,我写那一个程序:pc向uart发送一个字符,uart收到后将他收的字符返回给pc,使用jlink调试一直是正常的,可是实际下载到nand和nor都不行,发送很多次只能收到几次
:(
这是使用jlink仿真调试的结果

下面是下载到flash的运行结果,


我的程序如下
main.c

uart0.c

jlass 发表于 2013-4-2 14:50 | 显示全部楼层
考虑一下速度的问题,用j-link的时候速度应该会慢一些。
 楼主| 2012CMD 发表于 2013-4-2 15:45 | 显示全部楼层
jlass 发表于 2013-4-2 14:50
考虑一下速度的问题,用j-link的时候速度应该会慢一些。

哎,貌似问题依旧啊

吧i改成一亿也是这样
:'(
哎,为这个问题整了3天,桑心死拿
:Q
大秦正声 发表于 2013-4-2 16:27 | 显示全部楼层
程序从外部flash运行的?
和板子厂家联系!
jlass 发表于 2013-4-2 17:05 | 显示全部楼层
本帖最后由 jlass 于 2013-4-2 17:06 编辑

我说的是芯片的主频,可能j-link有一些默认的初始化,但是你在程序里面没有写或者写的不一样。
 楼主| 2012CMD 发表于 2013-4-2 17:21 | 显示全部楼层
jlass 发表于 2013-4-2 17:05
我说的是芯片的主频,可能j-link有一些默认的初始化,但是你在程序里面没有写或者写的不一样。 ...

不可能吧,我试过在循环中一直发送'a'是正常的
就像这样
while(1)
{
    transmit('a');
}

评论

汗,你这么发送鬼知道丢了多少a  发表于 2013-4-3 11:39
xiaogai6pm 发表于 2013-4-2 17:43 | 显示全部楼层
这个确实不太懂
 楼主| 2012CMD 发表于 2013-4-2 19:47 | 显示全部楼层
额,我郁闷啦,换一个软件之后竟然OK啦,
:L
:L
:L

但是我使用第一个的时候如果是串口助手有问题的话,调试的时候怎么能够正常,:o
还有如果别人也是用和我一样的第一个软件,那岂不是收不到数据啦:dizzy:

求大仙指点
申小林一号 发表于 2013-4-3 08:08 | 显示全部楼层
我来顶一个
jlass 发表于 2013-4-3 08:46 | 显示全部楼层
2012CMD 发表于 2013-4-2 19:47
额,我郁闷啦,换一个软件之后竟然OK啦,

你是换了一个串口调试助手么?
那就考虑一下CTS与RTS的影响吧。
 楼主| 2012CMD 发表于 2013-4-3 09:27 | 显示全部楼层
jlass 发表于 2013-4-3 08:46
你是换了一个串口调试助手么?
那就考虑一下CTS与RTS的影响吧。

这些串口工具没有设置这个的地方,只有CRECUCRT可以,不过貌似那个软件没地方发送,而且我好像多数软件默认都是没设置的吧
:sleepy:
而且还有一个问题就是我8楼说的:
我使用第一个的时候如果是串口助手有问题的话,调试的时候怎么能够正常,:o
 楼主| 2012CMD 发表于 2013-4-3 09:29 | 显示全部楼层
dwh000 发表于 2013-4-3 08:05
图都挂了

。。。。。。。。。。。。
这个莫有吧,我这还在,外链百度的
jlass 发表于 2013-4-3 09:30 | 显示全部楼层
2012CMD 发表于 2013-4-3 09:27
这些串口工具没有设置这个的地方,只有CRECUCRT可以,不过貌似那个软件没地方发送,而且我好像多数软件默 ...

CTS和RTS悬空,随机态。
 楼主| 2012CMD 发表于 2013-4-3 09:33 | 显示全部楼层
jlass 发表于 2013-4-3 09:30
CTS和RTS悬空,随机态。

可是如果跟这个有关的话,调试的时候也应该是有丢失的情况,就算不很严重,也至少有一些吧,我最多测试啦60几次,调试也没见丢失一次
jlass 发表于 2013-4-3 09:43 | 显示全部楼层
你使用j-link的时候,CTS和RTS的状态是正常的(被j-link配置了),但是你的代码里没有,所以烧的时候不行,但你换了串口软件以后,串口软件不认CTS和RTS了(两线传输),所以又好了。

当然,这只是我的一面之词,未必是对的,毕竟我不在现场,很难做出准确的判断。
 楼主| 2012CMD 发表于 2013-4-3 09:54 | 显示全部楼层
jlass 发表于 2013-4-3 09:43
你使用j-link的时候,CTS和RTS的状态是正常的(被j-link配置了),但是你的代码里没有,所以烧的时候不行, ...

没有配置这两个东东,看我的配置文件ini
。。。。。。。。。。。
。。。。。。。。。。。
FUNC void SetupForStart (void) {

// <o> Program Entry Point
  PC = 0x30000000;
}


FUNC void Init (void) {

  _WDWORD(0x4A000008, 0xFFFFFFFF);      // Disable All Interrupts

  _WDWORD(0x53000000, 0x00000000);      // Disable Watchdog Timer
  
                                        // Clock Setup
   /*                                     // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz
  _WDWORD(0x4C000000, 0x0FFF0FFF);      // LOCKTIME
  _WDWORD(0x4C000014, 0x0000000F);      // CLKDIVN
  _WDWORD(0x4C000004, 0x00043011);      // MPLLCON
  _WDWORD(0x4C000008, 0x00038021);      // UPLLCON
  _WDWORD(0x4C00000C, 0x001FFFF0);      // CLKCON*/

                                        // Memory Controller Setup for SDRAM
  _WDWORD(0x48000000, 0x22000000);      // BWSCON
  _WDWORD(0x4800001C, 0x00018005);      // BANKCON6
  _WDWORD(0x48000020, 0x00018005);      // BANKCON7
  _WDWORD(0x48000024, 0x008404F3);      // REFRESH
  _WDWORD(0x48000028, 0x00000032);      // BANKSIZE
  _WDWORD(0x4800002C, 0x00000020);      // MRSRB6
  _WDWORD(0x48000030, 0x00000020);      // MRSRB7

  _WDWORD(0x56000000, 0x000003FF);      // GPACON: Enable Address lines for SDRAM
}


// Reset chip with watchdog, because nRST line is routed on hardware in a way
// that it can not be pulled low with ULINK

_WDWORD(0x40000000, 0xEAFFFFFE);        // Load RAM addr 0 with branch to itself
CPSR = 0x000000D3;                      // Disable interrupts
PC   = 0x40000000;                      // Position PC to start of RAM
_WDWORD(0x53000000, 0x00000021);        // Enable Watchdog
g, 0                                    // Wait for Watchdog to reset chip

Init();                                 // Initialize memory
LOAD uart发送和接收.axf INCREMENTAL         // Download program
SetupForStart();                        // Setup for Running
g, main  
。。。。。。。。。。
。。。。。。。。。。
其中注释掉时钟设置是因为csdn上有人说我使用jlink的时钟和程序实际运行时钟时序不一致,但发现还是不行
xjl85 发表于 2013-4-3 10:13 | 显示全部楼层
看不见图啊...
jlass 发表于 2013-4-3 11:11 | 显示全部楼层
我都说了是猜测了,很容易判断的,找一根两芯的串口线一连就可以排除了。如果使用两芯的串口线还有问题的话,就跟CTS和RTS无关了。

不过你注销掉的那一段反而印证了我在5楼的猜测,你应该去理解应该怎么配置,而不是简单的注销掉。

评论

哎,桑不起,搞来搞去发现是启动代码中的ENTER STOP有毛病,老师帮我找出来的,不过我看不懂什么意思, 还是谢谢你啦,告诉我这么多  发表于 2013-4-3 21:42
 楼主| 2012CMD 发表于 2013-4-3 15:32 来自手机 | 显示全部楼层
jlass 发表于 2013-4-3 11:11
我都说了是猜测了,很容易判断的,找一根两芯的串口线一连就可以排除了。如果使用两芯的串口线还有问题的话 ...

谢谢帮这么多啊!不过你说用两心的串口线是什么意思啊,没很看懂,准备去接个示波器来实际测量一下
jlass 发表于 2013-4-7 08:44 | 显示全部楼层
2012CMD 发表于 2013-4-3 15:32
谢谢帮这么多啊!不过你说用两心的串口线是什么意思啊,没很看懂,准备去接个示波器来实际测量一下 ...

嗯,这是正途

两芯的串口线就是只连了TX与RX两根线的串口线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部