打印

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

[复制链接]
3842|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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运行的?
和板子厂家联系!

使用特权

评论回复
5
jlass| | 2013-4-2 17:05 | 只看该作者
本帖最后由 jlass 于 2013-4-2 17:06 编辑

我说的是芯片的主频,可能j-link有一些默认的初始化,但是你在程序里面没有写或者写的不一样。

使用特权

评论回复
6
2012CMD|  楼主 | 2013-4-2 17:21 | 只看该作者
jlass 发表于 2013-4-2 17:05
我说的是芯片的主频,可能j-link有一些默认的初始化,但是你在程序里面没有写或者写的不一样。 ...

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

使用特权

评论回复
评论
icecut 2013-4-3 11:39 回复TA
汗,你这么发送鬼知道丢了多少a 
7
xiaogai6pm| | 2013-4-2 17:43 | 只看该作者
这个确实不太懂

使用特权

评论回复
8
2012CMD|  楼主 | 2013-4-2 19:47 | 只看该作者
额,我郁闷啦,换一个软件之后竟然OK啦,
:L
:L
:L

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

求大仙指点

使用特权

评论回复
9
申小林一号| | 2013-4-3 08:08 | 只看该作者
我来顶一个

使用特权

评论回复
10
jlass| | 2013-4-3 08:46 | 只看该作者
2012CMD 发表于 2013-4-2 19:47
额,我郁闷啦,换一个软件之后竟然OK啦,

你是换了一个串口调试助手么?
那就考虑一下CTS与RTS的影响吧。

使用特权

评论回复
11
2012CMD|  楼主 | 2013-4-3 09:27 | 只看该作者
jlass 发表于 2013-4-3 08:46
你是换了一个串口调试助手么?
那就考虑一下CTS与RTS的影响吧。

这些串口工具没有设置这个的地方,只有CRECUCRT可以,不过貌似那个软件没地方发送,而且我好像多数软件默认都是没设置的吧
:sleepy:
而且还有一个问题就是我8楼说的:
我使用第一个的时候如果是串口助手有问题的话,调试的时候怎么能够正常,:o

使用特权

评论回复
12
2012CMD|  楼主 | 2013-4-3 09:29 | 只看该作者
dwh000 发表于 2013-4-3 08:05
图都挂了

。。。。。。。。。。。。
这个莫有吧,我这还在,外链百度的

使用特权

评论回复
13
jlass| | 2013-4-3 09:30 | 只看该作者
2012CMD 发表于 2013-4-3 09:27
这些串口工具没有设置这个的地方,只有CRECUCRT可以,不过貌似那个软件没地方发送,而且我好像多数软件默 ...

CTS和RTS悬空,随机态。

使用特权

评论回复
14
2012CMD|  楼主 | 2013-4-3 09:33 | 只看该作者
jlass 发表于 2013-4-3 09:30
CTS和RTS悬空,随机态。

可是如果跟这个有关的话,调试的时候也应该是有丢失的情况,就算不很严重,也至少有一些吧,我最多测试啦60几次,调试也没见丢失一次

使用特权

评论回复
15
jlass| | 2013-4-3 09:43 | 只看该作者
你使用j-link的时候,CTS和RTS的状态是正常的(被j-link配置了),但是你的代码里没有,所以烧的时候不行,但你换了串口软件以后,串口软件不认CTS和RTS了(两线传输),所以又好了。

当然,这只是我的一面之词,未必是对的,毕竟我不在现场,很难做出准确的判断。

使用特权

评论回复
16
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的时钟和程序实际运行时钟时序不一致,但发现还是不行

使用特权

评论回复
17
xjl85| | 2013-4-3 10:13 | 只看该作者
看不见图啊...

使用特权

评论回复
18
jlass| | 2013-4-3 11:11 | 只看该作者
我都说了是猜测了,很容易判断的,找一根两芯的串口线一连就可以排除了。如果使用两芯的串口线还有问题的话,就跟CTS和RTS无关了。

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

使用特权

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

谢谢帮这么多啊!不过你说用两心的串口线是什么意思啊,没很看懂,准备去接个示波器来实际测量一下

使用特权

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

嗯,这是正途

两芯的串口线就是只连了TX与RX两根线的串口线

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

80

帖子

0

粉丝