打印

关于bootloader通过tftp下载程序的问题

[复制链接]
4241|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leo198336|  楼主 | 2007-6-17 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上找了一个4510的bootloader,带网络下载功能。可以在自己的板子上使用。但是在烧入程序后却不能运行程序,我觉得可能是程序烧的位置不对。下面是这个bootloader的说明文档,请高手看看,指点一下(bootloader见附件):
//
BIOS FOR 4510
现在只对39VF160烧入,对其他FLASH可自改,注意要修改BIOS的驻留地址,现地址为0X1F0000.对不同的RAM而言,修改SYSINIT.S里的参数.现运行地址为0X7C0000,可在ADS中修改.

1.将TFTP.BIN烧入到FLASH起始位置.
2.接好串口,使用代板是UART0,开SSCOM,设19200,复位,进入BIOS后输入
copy 0 1f0000 6000,这一步是把FLASH 从0位置开始的长度为6000H的BYTE COPY到 1F0000处,输入Y确认.                  //这一步不太明白什么意思
3.输入ap 进入TFTP接收数据,在主机终端执行 tftp -i 192.168.168.101 put filename 传送数据,结束后在SSCOM输入Y确认烧入,很快就完成了.
4.输入boot并确认,即可启动烧入的程序.        //程序烧入后boot没有反应
5.再复位后,又进入BIOS,可重新烧写FLASH,也可输入boot启动已烧入的程序.

命令介绍
help 及 ? 列出所有命令
load [address]从主机TFTP接收数据,缺省地址为8000,接收完后问是否启动IMAGE
prog addr1 addr2 length [-no0] 将RAM中ADDR2开始的数据烧入到FLASH中ADDR1开始的位置,长度为LENGTH, -no0指示不修改0地址的数据,只对FLASH 0地址起始的烧写操作有效,此BIOS能将B XXXX指令转到B 1F0000 执行BIOS程序,所以复位后直接进入BIOS,若使用-no0则直接进入程序,下次再要BIOS时可在0地址写入
B 1F0000命令
ap 从TFTP接收数据到8000处完后将数据写入flash 0地址开始的地方,并修改0地址的内容
copy 
ipcfg 显示IP地址
ipcfg xxx.xxx.xxx.xxx 修改IP地址
boot 启动程序

注意:对与0地址命令为b xxxx或nop地程序,此BIOS比较好使,若要加入对MOV PC, xx, 和LDR PC, XX的支持可自改BIOS
//



相关链接:https://bbs.21ic.com/upfiles/img/20076/200761716575296.rar

相关帖子

沙发
wangkj| | 2007-6-17 18:37 | 只看该作者

用u-boot for s3c4510就啥问题也没有了。

使用特权

评论回复
板凳
leo198336|  楼主 | 2007-6-18 10:14 | 只看该作者

有所进展了

谢楼上好意。昨天晚上又整了一下程序,发现将bios.c中的BIOS_LOAD地址修改为0x8000,通过tftp下载程序后输入boot,可以运行。我下载的是一个lcd程序,让灯闪亮。但是和正常情况比,灯闪的频率快了很多,感觉程序似乎被加速运行了。而且这个程序是一个循环程序,但是烧入后程序运行了一会就停止了,灯不闪了。很是奇怪。另外,当重启板子后,按照说明书上写的再次输入boot,程序又启动不了了。郁闷。

使用特权

评论回复
地板
leo198336|  楼主 | 2007-6-19 22:44 | 只看该作者

帮帮忙

有没有用过这个bios的高手,指点一下啊。

使用特权

评论回复
5
sklar| | 2007-6-20 08:46 | 只看该作者

帮顶

我也很困惑

使用特权

评论回复
6
youcanh| | 2007-6-23 12:12 | 只看该作者

我用的 u-boot1.1.4 tftp很好用

使用特权

评论回复
7
leo198336|  楼主 | 2007-6-23 16:07 | 只看该作者

问题已经解决

今天又重新调试了一下程序。由于这个4510的bios是由44B0修改来的,对照了44B0的bios,发现了问题所在。即将4510 bios中bios.c程序中的:
bios_load_addr = (bios_load_addr-BIOS_LOAD-8)/4;

bios_load_addr = (bios_load_addr&0xffffff)|0xea000000;
这2句程序注销掉,即可用boot来启动烧入的程序。具体原因还在研究中。

但是又发现了一个问题,即我烧入的LED闪灯程序运行显然比正常要快,灯闪得很快。如果板子中只有LED程序的话,灯闪就正常了(或者烧入bios后,运行load命令下载LED程序,也可以正常运行)。请问这种情况是怎么回事?和ARM时钟频率设置有关?如何在程序中设置ARM的时钟频率?又如何使用?什么场合下需要设置ARM的时钟频率呢?

使用特权

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

本版积分规则

8

主题

18

帖子

0

粉丝