admin管理员组

文章数量:1530987

2024年4月2日发(作者:)

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

作者:李福勇(lfy)

此前我在中国EDA技术网论坛发表了一篇《通过网口烧写程序》的文章,许多朋友在

应用简易JTAG调试和用我写的方法烧写程序的时候出现一些问题,因此我在这篇文章中详

细解析大家所遇到的问题,以及解决的方法,避免以后学习的人再犯同样的错误,浪费宝贵

的学习时间。

正常调试程序我们是应该用仿真器的,它调试稳定而且速度很快,不过它的不菲的价

格也令很多希望学习ARM的朋友望而却步,因此价格便宜的简易JTAG就成了一种流行的

折衷方案。但是正是由于它的“简易”给大家使用中制造许多麻烦,以至于要拿出一定的时

间和精力来学习怎样能正确的使用它。下面我把大家经常出现的问题以及解决的方法列出

来,以飨大家:

第一个问题就是烧写的问题,网上比较流行的两个通过简易JTAG烧写程序的软件就是

FLUTED和FLASHPGM。FLUTED是一种WIN98下运行的比较简单的烧写软件,目前许

多网友通过PORTTALK打开相应的硬件端口也可以在WIN2000下应用FLUTED软件。但

是此软件烧写速度很慢,几十K的程序需要烧写十几分钟,而且烧写成功率比较低。根据

我实际应用的经验,主要还是JTAG下载时复位有问题,需要关闭开发板的电源,等一会再

上电,烧写时成功的几率就比较大了。另一个烧写软件就是FLASHPGM,此软件有良好的

GUI操作界面,下载速度和成功率也很高,然而它的烧写速度与通过网口烧写的速度是无法

比拟的。而且关于它的烧写方法即使中国EDA技术网提供了演示动画,大家在应用时也会

出现一些问题,同时它需要WIGGLER接口小板的支持。

第二个问题就是调试的问题,通过简易JTAG调试程序需要先执行一个的软

件在后台运行,此软件也是一个WIN98下的应用软件,也可以通过PORTTALK打开相应

的硬件端口在WIN2000下应用。目前网上也提供了专门在WIN2000下应用的

软件,可以直接在WIN2000下应用,具体装载方法请参阅软件包的说明文

件。一般简易JTAG只支持SDT调试环境,虽然网上有支持通过简易JTAG在ADS集成环

境中调试的软件包,但由于调试速度很慢,大家很少应用。软件原理是把发送到

以太网的数据拦截下来,遵从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节),具体的

配置方法如下:

执行软件,让其在后台运行。然后打开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中进行调试了。

我们也可以将命令事先写道一个文本文件中(如:),通过obey命令来调用

执行文件中的armsd commands命令,如图:

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

ARM论坛免费下载包含此文件的整个工程以及程序源代码,工程名压缩包文件名为

51EDA_Bios。

以前的文章中我用的是串口调试软件sscom32,此次我介绍一下如何应用WINDOWS

中的超级终端进行调试。超级终端的设置方法如下:打开WIN2000的程序->附件->通讯->

超级终端,如图所示:

将会弹出如下窗口:

输入任意名字,如:UART1,按“确定”弹出如下窗口:

由于我们是通过串口1来与开发板进行通信,因此直接按“确定”就可以了。按照下

图选择波特率115200,8位数据,无奇偶校验,1位停止位,无数据流控制,按“确定”设

置完毕。

此时我们回到SDT251的DUGGER窗口全速执行程序,在超级终端将会出现如下提示

信息:

Bios for S3C44B0x

Flash ID is : 278200bf

IP address : 192.168.111.8

Build date:Dec 23 2003-20:18:31

>

在提示符后输入load 0c00f000(load后面的地址可以为任意值,但不要超出SDRAM的

地址范围,load与地址之间应该有空格)

此时将会出现如下提示信息:

No begin address for download, use address 0xc00f000

Load image file from host

Type tftp -i 192.168.111.8 put filename at the host PC

Press ESC key to exit

由于我们程序中网口采用的是查询方式,因此这时不要按下ESC键。

执行程序->附件->命令提示符,如果您在C:提示符后输入ping 192.168.111.8可ping通

板子,命令提示符窗口会显示相应的信息。然后在此提示符后输入tftp -i 192.168.111.8 put

C:(路径是你要烧写的程序的路径)。回车后在超级终端窗口会出现以下提示信息:

Begin to receive filename: , transtype: octet.

TFTP transfer finished, and receive ba50 bytes.

此处“receive ba50 bytes”是一条有用的信息,ba50是你要烧写程序的大小。

同时在命令提示符窗口也会看到Transfer successful: 47696 bytes in 1 second, 47696

bytes/s的提示信息。

在超级终端窗口中的提示符后输入prog 0 0c00f000 ba50 -no0(程序大小根据你烧写程

序时上一步的提示显示而定,不一定是这里ba50)。这时超级终端窗口中会显示:

program flash begin @0x0, from ram data @0xc00f000, size = 47696Bytes

Are you sure? [y/n]

按y键

超级终端窗口中会显示:

Erase sector 0x0

program ok

Erase sector 0x3000

program ok

Erase sector 0x4000

program ok

......

烧写时间根据你的程序大小而定,我的程序几十K,烧写时间不到2秒。此时按下复位

键就可以执行你新烧入的程序了。

上面我写的过程比较详细,包括了每一步的提示信息和图示,感觉好像比较繁琐,实

际上大家只要熟练应用,就会感到通过网口烧写程序是非常快捷方便的。

此文章可以转载,但请注明出处为:中国EDA技术网,请不要做任何删减。所有提及

的软件和程序的源代码都可以在中国EDA技术网上免费下载(不提供SDT251)。如果大家

对文章中提到的操作有不明白的地方可以直接发EMAIL:lfy@

向我咨询。

本文标签: 程序烧写调试