Board logo

标题: 请教!用户设计如何固化? [打印本页]

作者: kzw    时间: 2004-8-31 18:01

指导书的说法没有错误,是因该那样做,你的bootrom中的代码是什么,是从falsh地址开始运行吗。
作者: luoxf7    时间: 2004-9-1 11:40     标题: 为什么要把两个flash文件合起来呢?

你可以分两次用nr指令分别下载srec.falsh和hexout.flash,试一下。
作者: cjing888    时间: 2004-9-1 16:26

在sopcbuilder里面指定的boot_rom是从0x00000000开始的,还有Program ,data和vector table是指向的ext_ram也就是地址0x00040000,至于flash的地址是自动分配的:0x0010000。
luoxf7:
我会试一下,而且我对现在他的这种下载原理和工作方式还是不清楚,我也只是按这它的指导来做的,并不知道为什么要这么做,但是考虑到一般pc机和嵌入式系统的工作原理对于它的这种方式很费解。
kzw:
能告诉我我们设计的硬线电路如何固化在内部的吗?还有在装入了用户程序后又是如何调用和运行的。监控程序的作用和运行机理。谢谢了!
作者: yyd999    时间: 2004-9-2 17:17

你在前面提到的第三步中,用nr把flash文件写入Flash memory时,Nios SDK Shell中有什么提示信息吗?还是一切都正常?
作者: yyd999    时间: 2004-9-2 17:18

你在前面提到的第三步中,用nr把flash文件写入Flash memory时,Nios SDK Shell中有什么提示信息吗?还是一切都正常?
作者: cjing888    时间: 2004-9-2 20:08

写入后进入了终端模式,没有什么特别的信息.而且整个下载过程很顺利,没有出现任何停顿和错误.
作者: iceworld    时间: 2004-9-2 23:01

20KE的开发板用的是29LV800Flash,FPGA的配置数据和用户软件代码都存在其中,所以首先要检查hexout文件保证这两部分内容不能覆盖。其次,该开发板是用CPLD来配置的,过程是:上电后,CPLD获得Flash使用权,待配置完FPGA后将flash使用权归还FPGA。因此需要将Nios的Reset地址设为Flash中的用户程序地址
作者: cjing888    时间: 2004-9-17 17:20

楼上所说并没有错,不果不知道如何设置,我同学用修改hexout文件,并总结出以下操作方法:
将配置文件(my_name.hexout)和用户自编程序下载到flash的几点注意事项:

1.当我们使用sopc builder对flash和sram进行地址分配时,flash的基地址应指定为0x00100000,
  sram的基地址应指定为0x00040000.这些都是系统默认的分配。

2.将sopc builder产生的配置文件(my_name.hexout)转换为my_name.hexout.flash文件时,应指
  定基地址为0x00180000,因为hexout2flash指令默认的基地址是0x600000,
  指令的格式是hexout2flash -b 0x00180000 my_name.hexout ,或者不指定基地址而对生成的
  my_name.hexout.flash文件进行修改。修改的方法是:
  e00600000
  e00610000
  e00620000
  e00630000
  e00640000
  e00650000
  e00660000
  e00670000
  e00680000
  e00690000
  e006a0000
  修改为:e00180000
          e00190000
          e001a0000
          e001b0000
          e001c0000
          e001d0000
          e001e0000
          e001f0000
          e00200000
          e00210000
          e00220000
  将r00600000修改为r00180000。
  最后,做了以上修改后即可用指令nr  my_name.hexout.flash 将配置文件下载到flash中。

3.将我们编的用户程序下载到flash中时,因程序的格式是.s或.c,应先将其转换为.srec格式。
  转换时应指定基地址为0x140000,指令格式为nb -b 0x140000 your_program.s或.c 。
  转换后就可以直接用nr  your_program.srec下载到flash中,而不需再用srec2flash指令将
  your_program.srec转换为your_program.flash而后进行下载。
作者: kzw    时间: 2004-9-18 10:33

在配置nios的时候,应该设置program,data,vector,reset空间。program地址就是在编译(nb)的时候的默认地址(可以仔细看一下.falsh和.serc文件的格式),如果你想修改程序地址,一般要加上地址编译。data地址一般是ram空间(可以用片上的,也可以用片外的)。vector一般放在ram的高位地址空间。reset比较重要,我一般是把它指向片内rom空间(在配置cpu的时候得指令译码我选择片上rom),然后我修改监控程序,在监控程序中添加,如果复位时一个按键(或者调线没跳)没有按下,就到flash地址运行,否则就是shell控制模式,可以下载,编译,调试等。如果把复位地址指向flash的起始地址,最终东西作完可以这样,只要运行,这是我的看法,我一直也是这样用的。
作者: kzw    时间: 2004-9-18 10:46

在监控程序里,又对各种指令的解析都有,像g,e,r,m(就是为什么叫germs的原因了)等的解析,可以看一下,有助于对指令的了解,也可以知道e指令擦写flash的时序,是否是你的班子上的flash的时许。
作者: bluemelodyer    时间: 2004-9-24 09:31

cjing888,你好,能否把他们提供的pwm.v这个文件传给我一份?
作者: cjing888    时间: 2004-9-26 12:50     标题: 请教!用户设计如何固化?

我用的是ALTERA的APEX20KE开发板,每次工程文件下载后能写入自己的软件运行,也可以通过SDKShell看到自己设计的CPU代号。但是重启之后或是掉电后在芯片里面的又成了std_32.2.0的那个cpu了。我想知道如何在掉电了之后也能保存住我自己设计的cpu。
他们提供给我的指导书上面一个实验:Flash Programing说可以在掉电后再上电可以自动运行用户程序,做法如下,但是我做了几次都没有成功,而且我认为这个做法本身就是错的。
前提:nios32 cpu:1kbyte的boot_rom;一个uart1( 中断号27,115200波特率,在33.333mhz下0.12%的误码率,1位停止位,8数据,1奇偶);一个用户逻辑pwm.v
(这个是他公司提供的,没错的);其他是板子上的256KBYTE的sdrm和1MB的flash。
操作:1,用Hexout2flash standard.hexout,将此文件转成flash文件。
      2,把用户文件先编译: nb pwm.c, srec2flash pwm.srec,将得到的文件用记事    本打开后复制里面全部的内容粘贴到standard.hexout.flash 那个文件的后面并存    储为一个新的flash文件。
       3,将新的FLASH文件用nr指令下载到开发板上去。
       4,断电后上电“now you can see your program auto-run after re-apply.”这是书上的原话,可是我做了几遍都无法得到向他说的结果。
       5,中间几步就是对那个正在运行的程序的操作了,包括按那个键就可以看到LED 变暗,变亮之类的。
       6,最后必须把standard_32_devboard.flash 下载到开发板里面去,这个我不知道启什么作用,但是考虑到是不是对原来开发板的恢复,所以即使前面没有成功,我也作了这步工作。

首先肯定不做这个实验,而做其他的在quartus4.1中下载,然后下载用户程序运行的试验都是成功的。

谢谢不吝赐教
!!!
作者: pagalwang    时间: 2004-9-26 12:50

www.bdhongyuan.com一个好网站




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0