通过串口烧写程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通过网口烧写程序(完整版)

作者:李福勇(lfy)

此前我在中国EDA技术网论坛发表了一篇《通过网口烧写程序》的文章,许多朋友在应用简易JTAG调试和用我写的方法烧写程序的时候出现一些问题,因此我在这篇文章中详细解析大家所遇到的问题,以及解决的方法,避免以后学习的人再犯同样的错误,浪费宝贵的学习时间。

正常调试程序我们是应该用仿真器的,它调试稳定而且速度很快,不过它的不菲的价格也令很多希望学习ARM的朋友望而却步,因此价格便宜的简易JTAG就成了一种流行的折衷方案。但是正是由于它的“简易”给大家使用中制造许多麻烦,以至于要拿出一定的时间和精力来学习怎样能正确的使用它。下面我把大家经常出现的问题以及解决的方法列出来,以飨大家:

第一个问题就是烧写的问题,网上比较流行的两个通过简易JTAG烧写程序的软件就是FLUTED和FLASHPGM。FLUTED是一种WIN98下运行的比较简单的烧写软件,目前许多网友通过PORTTALK打开相应的硬件端口也可以在WIN2000下应用FLUTED软件。但是此软件烧写速度很慢,几十K的程序需要烧写十几分钟,而且烧写成功率比较低。根据我实际应用的经验,主要还是JTAG下载时复位有问题,需要关闭开发板的电源,等一会再上电,烧写时成功的几率就比较大了。另一个烧写软件就是FLASHPGM,此软件有良好的GUI操作界面,下载速度和成功率也很高,然而它的烧写速度与通过网口烧写的速度是无法比拟的。而且关于它的烧写方法即使中国EDA技术网提供了演示动画,大家在应用时也会出现一些问题,同时它需要WIGGLER接口小板的支持。

第二个问题就是调试的问题,通过简易JTAG调试程序需要先执行一个JTAG.EXE的软件在后台运行,此软件也是一个WIN98下的应用软件,也可以通过PORTTALK打开相应的硬件端口在WIN2000下应用。目前网上也提供了专门在WIN2000下应用的JTAG2000.EXE软件,可以直接在WIN2000下应用,具体装载方法请参阅软件包的说明文件。一般简易JTAG只支持SDT调试环境,虽然网上有支持通过简易JTAG在ADS集成环境中调试的软件包,但由于调试速度很慢,大家很少应用。JTAG.EXE软件原理是把发送到以太网的数据拦截下来,遵从JTAG协议,转换到并口上面,然后通过JTAG接口板,控制ARM板上面的CPU,进行硬件Debug调试的。但是我们在实际应用中发现,此软件对下载到SDRAM中的程序缺乏验证机制,也就是说虽然集成环境中显示下载成功,我们却不知道下载的数据是否正确。甚至我们在测试中发现,从开发板上取下简易JTAG,下载程序,在PC机的集成环境中仍旧显示下载成功。因此大家在单步调试程序的时候,程序跑飞那就是很自然的事情了。不过调试中单步程序跑飞,一般有几种原因:一是板子上的SDRAM没有驱动,二是下载程序不正确,三是下载的程序本身有BUG,四是简易JTAG调试有时候也不稳定,当然简易JTAG调试不稳定导致程序跑飞的时候很少,最后就有可能是你的板子硬件有问题了。

以上谈了简易JTAG的烧写和调试中遇到的一些问题,有些跑题,不过这些问题是大家经常遇到的,我通过此文一并提出来,希望大家能尽快上手学习ARM,而不要在一些小问题上浪费时间。下面我就详细介绍怎样通过网口烧写程序,虽然我在网上已经写过类似的文章,但文章的前提是板子中已经预烧了程序,其中暗含的意思就是我们已经初始化了板子上的SDRAM存储器。而这篇文章我会详细的教会大家怎样在没有预烧了程序的板子中(也就是说可以是空白的FLASH并没有初始化SDRAM),一步步通过网口烧入程序。

由于大家多数都是简易JTAG,因此我演示应用的集成调试环境是SDT251的ADW,

当然此方法也可以在ADS中应用,但ADS调试是需要用到仿真器。用仿真器也可以用此方法烧写程序,就不用单独编写烧写软件了。

首先我们按照开发板的说明书正确连接开发板的硬件,需要有网线和串口线,串口线连接到开发板的串口0。此时如果我们面对的是一个没有任何程序的开发板,而我们要通过网口烧写程序,需要先把程序下载到SDRAM中去,因此我们第一项任务就是驱动SDRAM。驱动开发板的SDRAM非常简单,我们只要正确的配置ARM芯片的有关SDRAM的内部寄存器就可以了。我们可以通过SDT251集成调试环境中的armsd commands的let命令来配置寄存器(armsd commands调试命令详细说明请参阅ARM SDT参考指南的7.4节),具体的配置方法如下:

执行JTAG2000.EXE软件,让其在后台运行。然后打开SDT251的调试软件ADW,按照配置简易JTAG的方法正确配置目标环境,具体方法请参阅相关文章。接着在调试软件ADW的命令窗口输入:

let 0x01C80000=0x11110101

let 0x01C80004=0x00000600

let 0x01C80008=0x00007ffc

let 0x01C8000C=0x00007ffc

let 0x01C80010=0x00007ffc

let 0x01C80014=0x00007ffc

let 0x01C80018=0x00007ffc

let 0x01C8001C=0x00018000

let 0x01C80020=0x00018000

let 0x01C80024=0x0086060e

let 0x01C80028=0x10

let 0x01C8002C=0x20

let 0x01C80030=0x20

let命令直接把初始化数据写入指定的寄存器,关于配置数据的意义请参考44B0X的手册(163页)。初始化后我们就可以在SDT251中把程序下载到SDRAM中进行调试了。

我们也可以将命令事先写道一个文本文件中(如:memcfg.txt),通过obey命令来调用执行文件中的armsd commands命令,如图:

选择FILE->LOAD IMAGE导入工程中的model.axf文件。您可以在中国EDA技术网的

相关文档
最新文档