首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» Xilinx FPGA 嵌入式系统程序引导和启动的流程---参加年度达人
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Xilinx FPGA 嵌入式系统程序引导和启动的流程---参加年度达人
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-2-19 08:59
|
只看该作者
Xilinx FPGA 嵌入式系统程序引导和启动的流程---参加年度达人
解决方案
,
嵌入式
,
Flash
,
程序
,
blog
这篇blog想弄清楚FPGA上电配置后程序引导和启动的整个流程是怎么样的,不是谈论如何编写bootloader。
主题的引出
本人创建了一个基于MicroBlaze的嵌入式系统(类似于如图1所示,当然没有图1那么复杂)。片上BRAM仅仅是64KB,而本人生成的程序镜像有2MB多,所以这样的话,程序镜像不能跟用于配置FPGA的bit流文件融合直接配置到片上的BRAM中。解决的方案是用外部非易失性存储介质来存储程序镜像和bit流文件,如PROM,或者Flash。Xilinx提供了一种SystemACE 配置解决方案,那整个工作流程又是如何的呢?
图1. 基于MicroBlaze的SOPC架构
问题的解决
在参考文献1中,有这样一句话,
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。
总结,SystemACE配置方案,需要硬件的支持,即SystemACE控制器和CF卡,当然在嵌入式系统中还需要添加Debug模块。优点显而易见,不用编写bootload类似的引导程序,也不用关心程序镜像的大小,因为CF卡的容量很大,满足了绝大多数的嵌入式应用的要求。
问题的延伸
还有一种情况就是通过PROM/FLASH存储程序镜像和bitstream文件配置FPGA,并引导程序启动。具体的流程如下:
图2 Spartan6的配置和启动的过程
这里不关心如何去配置FPGA,而关心的是系统是如何引导的。以在FPGA运行Linux为例作说明。如图3所示,具体步骤如下:
第一步,CPU从0x0地址(BRAM)执行Loader1 (注意,Loader1放在BRAM中,在配置FPGA过程中就加在进去)
第二步,Loader1读取SPI Flash中Loader2程序,然后复制到内存中。
第三步,Loader1程序跳至在内存中执行Loader2
第四步,Loader2读取SPI Flash中压缩的内核镜像
第五步,Loader2程序解压缩内核到另一块内存空间
第六步,Loader2程序跳至解压缩的内核镜像
第七步,Linux内核启动
图3 Linux引导流程
由上面的流程可知,通过PROM或者Flash进行配置的话,需要Bootload作支持,即需要完成将程序镜像从Flash或者PROM中读取至内存上。当然嵌入式系统中需要添加PROM或者Flash控制器。
参考文献:
http://www.xilinx.com/itp/xilinx9/help/platform_studio/html/ps_p_dld_downloading_design_bootloaders_systemace.htm
http://www.xilinx.com/support/documentation/application_notes/xapp1146.pdf
http://www.xilinx.com/support/documentation/user_guides/ug380.pdf
http://www.xilinx.com/support/documentation/application_notes/xapp482.pdf
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
2
#
pengpengpang
发表于 2014-2-20 22:57
|
只看该作者
共同努力,共同学习!-----------中电网技术论坛
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
TOP
返回列表
在线座谈交流区
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议