关于FPGA嵌入式系统设计的配置、bootloader等问题

[复制链接]
3706|13
 楼主| vergil_gxw 发表于 2011-11-13 17:09 | 显示全部楼层 |阅读模式
最近一直在看文档,今天在电脑前坐了一天看英文文档看到头昏脑胀了都没有找到自己想知道的,所以又来麻烦论坛的里的高手们了,希望大家不吝赐教!(给个参考文档都行!关键就是我都没找到我想知道的东西在哪里)
1、如果用户程序太大,希望放在platform flash中加载执行(硬件流配置文件也在里面),应该怎么做呢?查了资料是说需要在initial bram中放一个bootloader,那么bootloader有没有办法通过EDK产生呢?还是完全需要自己写?这个应该怎么写呢?求文档。

2、同上,如果希望使用ACE配置方案,则应该如何是好?

不胜感激啊,我看了一天xilinx的官网都没有找到。。。也可能是我英语不太好。。
GoldSunMonkey 发表于 2011-11-13 17:40 | 显示全部楼层
这个就是参考设计。不过我还得多说两句。有这样一句话,SystemACE解决方案是通过JTAG将程序下载到debug(对于MicroBlaze也就是,
MicroBlaze debug module)。看到这句话,一时没反应过来。要知道SystemACE解决方案是将用于
配置FPGA的bitsteams文件和程序可执行二进制文件融合生成一个*.ace。在看了genace.tcl这个用于生
成ace文件的脚本后,终于明白了,刚才提到的那句话。

首先说明一下SystemACE文件是如何生成的?
1. 通过iMPACT工具将bitstream文件转为SVF文件
该SVF文件包含了配置FPGA的JTAG指令序列
2.通过XMD将elf可执行文件转为SVF文件
该SVF文件包含了通过XMD将ELF文件下载带内存或许片上BRAM的JTAG指令序列
3.通过XMD将数据/二进制代码转为SVF文件
4.连结第一步和第二步中生成的SVF文件
5.通过iMPACT工具利用结合的SVF文件生成systemACE文件
整个生成过程一目了然了,SystemACE解决替代了这样一个在线调试的流程:通过iMPACT将含有

bootloop的程序的bitstream文件通过JTAG下载到FPGA中,这个时候FPGA在空转,等待运行程序的
加载。接下来通过XMD先跟debug和CPU通信,然后将程序下载到指定的内存或者BRAM中,然后运
行CPU。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1威望 +2 收起 理由
SuperX-man + 2

查看全部评分

GoldSunMonkey 发表于 2011-11-13 17:41 | 显示全部楼层
系统是如何引导的?
以在FPGA运行Linux为例作说明。如图3所示,具体步骤如下:

第一步,CPU从0×0地址(BRAM)执行Loader1 (注意,Loader1放在BRAM中,在配置FPGA过程中就加在进去)

第二步,Loader1读取SPI Flash中Loader2程序,然后复制到内存中。

第三步,Loader1程序跳至在内存中执行Loader2

第四步,Loader2读取SPI Flash中压缩的内核镜像

第五步,Loader2程序解压缩内核到另一块内存空间

第六步,Loader2程序跳至解压缩的内核镜像

第七步,Linux内核启动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1威望 +1 收起 理由
lelee007 + 1

查看全部评分

GoldSunMonkey 发表于 2011-11-13 17:42 | 显示全部楼层
由上面的流程可知,通过PROM或者Flash进行配置的话,需要Bootload作支持,即需要完成将程序镜像
从Flash或者PROM中读取至内存上。当然嵌入式系统中需要添加PROM或者Flash控制器。
AutoESL 发表于 2011-11-14 09:19 | 显示全部楼层
有点像电脑启动的过程呵
AutoESL 发表于 2011-11-14 09:20 | 显示全部楼层
个人感觉bootloader不需要自己专门写,可能配置一下就可以了
GoldSunMonkey 发表于 2011-11-14 13:18 | 显示全部楼层
GoldSunMonkey 发表于 2011-11-14 13:19 | 显示全部楼层
个人感觉bootloader不需要自己专门写,可能配置一下就可以了
AutoESL 发表于 2011-11-14 09:20

学学X-MAN给我加加分
zch_genius 发表于 2011-11-17 21:58 | 显示全部楼层
这个其实跟计算机启动一个道理。外部FLASH相当于BIOS芯片,SDRAM当然相当于内存条了;最初RAM和DRAM是没有任何内容的,那怎么办呢;谁来启动外部的FLASH程序呢?
   答案是硬件配置;其实你只要按照芯片要求设置好硬件地址,通过硬件指定可执行代码的地址,你才可能真正的进行加载程序。
   由此可知,Bootload不是设计者关心的重点,而如何保证外部配置正确 ,加载时序正确才是重点;Bootload的实现有很多方法,具体到不同芯片不同CPU有不同的实现方法,但肯定有相同的机制。
  既然不是我们关心的, 那就不一一询论之了。
GoldSunMonkey 发表于 2011-11-17 22:59 | 显示全部楼层
 楼主| vergil_gxw 发表于 2011-11-18 19:49 | 显示全部楼层
谢谢各位给我的帮助啊!特别是版主,辛苦了,这几天比较忙所以没有上来回复,不好意思啊~~
GoldSunMonkey 发表于 2011-11-18 21:16 | 显示全部楼层
不客气,叫我猴哥~
 楼主| vergil_gxw 发表于 2011-11-19 11:15 | 显示全部楼层
12# GoldSunMonkey 猴哥,呵呵,感觉这么叫像八戒
GoldSunMonkey 发表于 2011-11-19 12:24 | 显示全部楼层
13# vergil_gxw 别乱想即可。
嘿嘿,不过你应该结下贴。把分数给俺
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

45

帖子

1

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