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

[复制链接]
5270|6
 楼主| leo198336 发表于 2007-6-17 16:58 | 显示全部楼层 |阅读模式
在网上找了一个4510的bootloader,带网络下载功能。可以在自己的板子上使用。但是在烧入程序后却不能运行程序,我觉得可能是程序烧的位置不对。下面是这个bootloader的说明文档,请高手看看,指点一下(bootloader见附件):<br />//<br />BIOS&nbsp;FOR&nbsp;4510<br />现在只对39VF160烧入,对其他FLASH可自改,注意要修改BIOS的驻留地址,现地址为0X1F0000.对不同的RAM而言,修改SYSINIT.S里的参数.现运行地址为0X7C0000,可在ADS中修改.<br /><br />1.将TFTP.BIN烧入到FLASH起始位置.<br />2.接好串口,使用代板是UART0,开SSCOM,设19200,复位,进入BIOS后输入<br />copy&nbsp;0&nbsp;1f0000&nbsp;6000,这一步是把FLASH&nbsp;从0位置开始的长度为6000H的BYTE&nbsp;COPY到&nbsp;1F0000处,输入Y确认.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这一步不太明白什么意思<br />3.输入ap&nbsp;进入TFTP接收数据,在主机终端执行&nbsp;tftp&nbsp;-i&nbsp;192.168.168.101&nbsp;put&nbsp;filename&nbsp;传送数据,结束后在SSCOM输入Y确认烧入,很快就完成了.<br />4.输入boot并确认,即可启动烧入的程序.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//程序烧入后boot没有反应<br />5.再复位后,又进入BIOS,可重新烧写FLASH,也可输入boot启动已烧入的程序.<br /><br />命令介绍<br />help&nbsp;及&nbsp;?&nbsp;列出所有命令<br />load&nbsp;[address]从主机TFTP接收数据,缺省地址为8000,接收完后问是否启动IMAGE<br />prog&nbsp;addr1&nbsp;addr2&nbsp;length&nbsp;[-no0]&nbsp;将RAM中ADDR2开始的数据烧入到FLASH中ADDR1开始的位置,长度为LENGTH,&nbsp;-no0指示不修改0地址的数据,只对FLASH&nbsp;0地址起始的烧写操作有效,此BIOS能将B&nbsp;XXXX指令转到B&nbsp;1F0000&nbsp;执行BIOS程序,所以复位后直接进入BIOS,若使用-no0则直接进入程序,下次再要BIOS时可在0地址写入<br />B&nbsp;1F0000命令<br />ap&nbsp;从TFTP接收数据到8000处完后将数据写入flash&nbsp;0地址开始的地方,并修改0地址的内容<br />copy&nbsp;<br />ipcfg&nbsp;显示IP地址<br />ipcfg&nbsp;xxx.xxx.xxx.xxx&nbsp;修改IP地址<br />boot&nbsp;启动程序<br /><br />注意:对与0地址命令为b&nbsp;xxxx或nop地程序,此BIOS比较好使,若要加入对MOV&nbsp;PC,&nbsp;xx,&nbsp;和LDR&nbsp;PC,&nbsp;XX的支持可自改BIOS<br />//<br /><br /><br /><br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20076/200761716575296.rar'>https://bbs.21ic.com/upfiles/img/20076/200761716575296.rar</a>
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的高手,指点一下啊。
sklar 发表于 2007-6-20 08:46 | 显示全部楼层

帮顶

我也很困惑
youcanh 发表于 2007-6-23 12:12 | 显示全部楼层

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

  
 楼主| leo198336 发表于 2007-6-23 16:07 | 显示全部楼层

问题已经解决

今天又重新调试了一下程序。由于这个4510的bios是由44B0修改来的,对照了44B0的bios,发现了问题所在。即将4510&nbsp;bios中bios.c程序中的:<br />bios_load_addr&nbsp;=&nbsp;(bios_load_addr-BIOS_LOAD-8)/4;<br /><br />bios_load_addr&nbsp;=&nbsp;(bios_load_addr&0xffffff)|0xea000000;<br />这2句程序注销掉,即可用boot来启动烧入的程序。具体原因还在研究中。<br /><br />但是又发现了一个问题,即我烧入的LED闪灯程序运行显然比正常要快,灯闪得很快。如果板子中只有LED程序的话,灯闪就正常了(或者烧入bios后,运行load命令下载LED程序,也可以正常运行)。请问这种情况是怎么回事?和ARM时钟频率设置有关?如何在程序中设置ARM的时钟频率?又如何使用?什么场合下需要设置ARM的时钟频率呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部