请教大虾,关于裸奔的问题,

[复制链接]
3062|9
 楼主| oiu 发表于 2008-1-10 22:10 | 显示全部楼层 |阅读模式
各位大侠现在遇到一个问题请教大家:<br />我现在写了一个小程序就是让led灯闪,通过ads&nbsp;生成了flash.bin&nbsp;文件,<br />开发板上已经下载有了bios,功能如下:<br />Please&nbsp;select&nbsp;function&nbsp;:&nbsp;<br />0&nbsp;:&nbsp;USB&nbsp;download&nbsp;file<br />1&nbsp;:&nbsp;Uart&nbsp;download&nbsp;file<br />2&nbsp;:&nbsp;Write&nbsp;Nand&nbsp;flash&nbsp;with&nbsp;download&nbsp;file<br />3&nbsp;:&nbsp;Load&nbsp;Pragram&nbsp;from&nbsp;Nand&nbsp;flash&nbsp;and&nbsp;run<br />4&nbsp;:&nbsp;Erase&nbsp;Nand&nbsp;flash&nbsp;regions<br />5&nbsp;:&nbsp;Write&nbsp;NOR&nbsp;flash&nbsp;with&nbsp;download&nbsp;file<br />6&nbsp;:&nbsp;Set&nbsp;boot&nbsp;params<br />7&nbsp;:&nbsp;Set&nbsp;AutoBoot&nbsp;parameter,1:linux&nbsp;2:wince<br />通过bios,把flash.bin文件下载到开发板上sdram中,并跑起来一切ok,也可以借助bios把flash.bin文件烧写道nand中。现在的问题是,拔掉电源,在上电后,bios执行完了以后flash.bin&nbsp;文件没有执行,问什么如果下载的是linux那么bios执行完了以后会自动启动linux&nbsp;而下载的是flash.bin&nbsp;就不会?那样怎样做才能使执行完bios后自动执行flash.bin?<br />x谢谢了,很是郁闷啊
平常人 发表于 2008-1-10 22:23 | 显示全部楼层

哈哈,大虾没有问题,是你有问题。

用的是什么开发板,什么软件,你也没有说,谁也不知道你是什么问题~~~~~~
s321k 发表于 2008-1-10 23:13 | 显示全部楼层

在bios里面添个语句

先把你的程序复制到ram,然后调用它就行了
 楼主| oiu 发表于 2008-1-10 23:31 | 显示全部楼层

忧龙的板子fs2410

刚买回来的时候板子上面nand中烧写了bios,linux.原本上电后(nand启动)dnw看到启动bios,也就是上面的7点功能,在等上几秒钟他就自动进入linux,z这些从dnw上可以看到。我把跳线拔了让他从nor启动,把nand里面的东西全部擦除了(做实验),现在我把bios重新烧写到了nand,nand里面没有了linux,然后把开发板的跳线接上让他从nand&nbsp;启动,把flash.bin下载到ram中并run,可以看到led&nbsp;闪。但是reset&nbsp;后就不闪了,就是把flash.bin烧写的nand中,reset后也不行。<br />现在的问题是怎么才能reset&nbsp;后还能闪,也就是说怎样才能使flash.bin&nbsp;也能够像linux一样,启动bios后果几秒钟就自动run.<br />
农民讲习所 发表于 2008-1-11 09:44 | 显示全部楼层

裸奔要自己做boot

或者自己修改VIVI代码 <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2295374&tp=%u7ED9%u4F60%u4E00%u4E2A%u6700%u7B80%u5355ADS%u5199%u7684%u7684BOOT%u5F15%u5BFC%u7A0B%u5E8F'>https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2295374&tp=%u7ED9%u4F60%u4E00%u4E2A%u6700%u7B80%u5355ADS%u5199%u7684%u7684BOOT%u5F15%u5BFC%u7A0B%u5E8F</a>
 楼主| oiu 发表于 2008-1-11 15:08 | 显示全部楼层

还有2个问题,相信初学者和我一样迷茫

谢谢各位指教,<br />现在我把flash.bin(小于4k)烧写道nand&nbsp;的0x0000000的起始位置,然后让开发板从nand启动,就可以看到led灯在闪了(裸奔,bios也不要了),不过闪的频率变了,我还要改一下里面的时钟设置才行。<br />如果flash.bin大于4k就需要bios把flash.bin拷贝到sdram中才能执行了,<br />现在有2个疑问<br />1,譬如开发板上跑的是linux系统,也就是nand中烧写了bios和linux系统,设定从nand启动,那么bios里面必须要有把linux系统拷贝到sdram的代码,这段代码也就是通常bios在初始化堆栈,和中断向量表后的所谓copy&nbsp;to&nbsp;ram&nbsp;(与Image$$RO$$Base,Image$$RO$$Limit,相关的代码)??我的理解是好像copy&nbsp;bios自身到sdram,而不是copy&nbsp;linux到sdram中(因为bios&nbsp;一般都大于4k),何况bios根本不知道nand中linux内核的起始位置和大小,怎么copy?<br />2,bios启动完成后他要启动linux,bios&nbsp;是怎么找到linux的启动入口点的?既然nand中的linux内核必须要copy&nbsp;2&nbsp;sdram&nbsp;中才能run,也就是说内核的大小不能超过sdram&nbsp;的大小?而不像windows&nbsp;那样把需要执行的才调入内存。
dld2 发表于 2008-1-11 15:16 | 显示全部楼层

两级

bios&nbsp;&lt&nbsp;4KB,放在NAND的0地址。<br />&nbsp;&nbsp;&nbsp;&nbsp;功能:拷贝laoder到SDRAM。<br /><br />loader&nbsp;&gt&nbsp;4KB,放在NAND的某固定位置。<br />&nbsp;&nbsp;&nbsp;&nbsp;功能:可以通过通讯通道下载程序到SDRAM,然后去执行。
 楼主| oiu 发表于 2008-1-11 18:44 | 显示全部楼层

可不可详细一点

从nand&nbsp;启动时,内置的NAND&nbsp;Flash&nbsp;将访问控制接口,并将代码自动<br />加载到内部SRAM(此时该SRAM&nbsp;定位于起始地址空间0x00000000,容量为4KB)并且运行。之后,SRAM&nbsp;中的引导程序将操作系统镜像加载到SDRAM&nbsp;中,操作系统就能够在SDRAM&nbsp;中运行。是不是该这样理解:<br />1,bios&nbsp;大于4k,bios&nbsp;也应该放在nand&nbsp;的0x00000000的起始位置,reset时,bios的前4k被自动加载到了sram中(sram的起始地址空间为0x0000000),bios&nbsp;4k以后的代码以及linux内核都要被copy&nbsp;到sdram&nbsp;中。而实现把部分bios&nbsp;和内核copy&nbsp;到sdram的代码,就是在bios初始化完堆栈后的那些代码?
dld2 发表于 2008-1-12 08:28 | 显示全部楼层

re:

bios为什么一定要大于4K呢?<br />我的意思是,写两个程序。<br />第一个程序小于4K,仅实现将第二个程序copyToRam。<br />第二个程序可实现较复杂的加载功能,可通过串口下载应用或内核,将其拷贝到RAM去执行,或者写FLASH等等。<br />这两个程序都是通过仿真器烧写到NAND&nbsp;flash的。<br /><br />你说的“1,bios&nbsp;大于4k,bios&nbsp;也应该放在nand&nbsp;的0x00000000的起始位置,reset时,bios的前4k被自动加载到了sram中(sram的起始地址空间为0x0000000),bios&nbsp;4k以后的代码以及linux内核都要被copy&nbsp;到sdram&nbsp;中。而实现把部分bios&nbsp;和内核copy&nbsp;到sdram的代码,就是在bios初始化完堆栈后的那些代码?”<br />我认为即时能够实现,也很麻烦。
high 发表于 2008-1-12 13:10 | 显示全部楼层

要用分散加载来实现

vivi是一个例子.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

oiu

28

主题

81

帖子

0

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