【经验分享】AN2295调试总结
AN2295调试总结不久之前,FSL_TICS_ZJJ发布了一篇名为《基于AN2295的K53bootloader修改步骤》的经验分享,以将AN2295代码从默认支持K60移植到K53为例,详细的介绍了移植过程的步骤。
但有客户反映,按照文章介绍的步骤修改完成后,但在调试过程会有出错发生(如图1所示),这是咋回事呢?难道是文章介绍的步骤不对吗?
图 1 AN2295错误提示
根据错误提示,我们会发现问题出在MCU在遵循FC协议与PC建立连接过程中,由于无法在Timeout时间段,正确的匹配好串口波特率,而发出可被PC识别的应答信号(0xFC),最终导致MCU无法与PC建立正确的联系。关于FC协议,请参考《 AN2295 bootloader文档解析(一)》文档,在此文档中,已详细介绍过FC协议,所以此文档就不对此做过多介绍啊。
既然找到问题出处,那就好对症下药啊,经过测试,我决定与大伙分享两个AN2295代码调试的技巧。
1.波特率公式修改
在rs232.c中,UART_Initialization()函数用于初始化UART的波特率配置,在rs232.h中,定义了UART_SBR、UART_BRFA的值,当然我们也可以从新定义UART_SBR、UART_BRFA的值,使其配置更加精确,避免MCU进行过多的匹配。
• UART_Initialization( )
• UART_SBR与UART_BRFA配置
2. 连接步骤修改
在《AN2295—Developer’s Serial Bootloader 解析(三)》中,介绍过上位机软件与Target Device建立连接的步骤,具体如下:
【1】:选择合适的COM;
【2】 :选择协定好的波特率;
【3】:选择User code工程生成的S19文件;
【4】:点击Connect,接着复位Target,使得Boot loader例程重新运行。
修改:
【4】:复位Target Device,跟着马上点击Connect,建立连接(如图3所示)
图 3
大家以后在调试AN2295时,碰到Target Device无法与PC建立连接,不妨使用以上两个技巧试试。
完整文档下载:
如有什么错误或者不足,欢迎网友指正,并请在后面跟帖! 收藏。以后用得着。 32MCU 发表于 2014-9-28 17:32
收藏。以后用得着。
谢谢支持,有问题欢迎留贴交流!
路过,进来飘一下 huangzzjy22 发表于 2014-9-29 11:39
路过,进来飘一下
谢谢支持,有问题欢迎留贴交流! 飞思卡尔的版主真很尽力,这样用芯片更有信心了 看上去很nice tim 发表于 2014-9-29 11:47
飞思卡尔的版主真很尽力,这样用芯片更有信心了
谢谢支持,让客户放心的使用FSL芯片是我们的目标! 这问题是解决了,但是根本原因可能并不是修正了波特率,而是由于CPU系统时钟的不稳定,不同系列的CPU,采用内部晶振后,得到的频率可能会不同,导致串口的波特率也不同。 本帖最后由 qchwu 于 2014-12-3 13:52 编辑
我目前在做基于AN2295的串口Bootloader,程序在K60D100的开发板上已经能正常工作了,但是将程序移植到K60F120的板子上时,可以进入Bootloader,也可以发送0xFC,但是,当我发送身份验证的命令:0x49时,出来的数据就错误了,但是,分步调试时,所有的数据都正常。
下面是分步运行,正确的数据。
下面是连续运行的错误数据:
串口自适应程序我也试过了,没有效果, 如果是系统时钟不稳定,那该如何解决呢? qchwu 发表于 2014-12-3 13:53
如果是系统时钟不稳定,那该如何解决呢?
你好,
AN2295串口使用的好像是内部时钟,如果觉得不准或不符合要求的话,可以试试将串口时钟源定义成其他时钟源。 谢谢您!
外部时钟也试了,进入PEE模式,系统频率100M,总线频率25M,经过测试,觉得还不如内部时钟精度。 https://community.freescale.com/docs/DOC-95039 FSL_TICS_ZP 发表于 2014-12-3 13:56
你好,
AN2295串口使用的好像是内部时钟,如果觉得不准或不符合要求的话,可以试试将串口时钟源定义成其 ...
能否有其他的办法解决这个问题? qchwu 发表于 2014-12-3 13:50
我目前在做基于AN2295的串口Bootloader,程序在K60D100的开发板上已经能正常工作了,但是将程序移植到K60F1 ...
你好,
能解释一下你的单步操作是怎样一个流程,我觉得不应该单步正确而全速运行是有问题的啊! FSL_TICS_ZP 发表于 2014-12-4 16:07
你好,
能解释一下你的单步操作是怎样一个流程,我觉得不应该单步正确而全速运行是有问题的啊! ...
DEBUG模式下,按F10.分步运行BOOT_CMD_IDENT的函数段。输出就是正确的, 挺不错的分享 以前怎么没看到 好贴,必收藏!!! 下载,空了学习下。 {:smile:}{:smile:}技术贴 赞! 技术贴,学习 现在我调到这里进行不下去了,发生了什么?
页:
[1]