首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» Adam Tayloy玩转MicroZed系列59:Zynq与PicoBlaze第4章
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Adam Tayloy玩转MicroZed系列59:Zynq与PicoBlaze第4章
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-12-18 22:09
|
只看该作者
Adam Tayloy玩转MicroZed系列59:Zynq与PicoBlaze第4章
软件应用
,
处理器
,
控制器
,
博客
,
程序
作者:Adam Taylor
在以前发布的玩转MicroZed系列博客中,我们建立了一个基于Zynq的系统,通过使用双端口RAMS和BRAM(块RAM)控制器将两个PicoBlaze处理器核连接到Zynq的PS部分,现在我们将学习一下怎样实现更新存储在双端口RAM中的PicoBlaze处理器的程序。
首先在执行程序的控制下,我们怎样实现自由的存储PicoBlaze程序包括软件应用程序然后将他们下载到CPU中执行。
当我们定义Zynq系统时,一个关键点就是使用Zynq SoC’s PS部分的俩个EMIO 端口控制PicoBlaze内核的复位输入信号。(我们要为每个PicoBlaze都提供一个复位输入来实现俩个内核的独立复位),当我们更新处理器的程序存储RAM的时候,两个复位管脚允许我们能够独立复位每一个PicoBlaze处理器模块。当处理器的程序存储空间处在一个不确定或者混合的状态时,这个处理器就不能够继续执行程序了。
在一个实例化的处理器内更新PicoBlaze程序代码的基本算法如下:
1.为将要更新处理器声明复位管脚
2.通过从Zynq PS到BRAM控制器的写操作更新处理器的块RAM空间
3.一旦完成BRAM的写操作,取消处理器的复位,允许处理器重启并执行新的程序代码
尽管上面的步骤很简单,但是首先我们必须以正确的格式生成新的PicoBlaze程序,并且也能够包含到Zynq SoC PS部分的ARM Cortex-A9 MPCore处理器的程序代码中。解决这个问题的最简单方式就是将新程序以数组的形式写入到ARM处理器的C程序代码中。 为了实现这个功能,我们必须处理一下由PicoBlaze汇编器生成的hex格式的文件,我们可以手动处理但是对于大型程序就显得比较笨拙了,因此我编写了一个简单的TCL脚本,将hex格式的文件转化为C的头文件,这个头文件可以加入到你的编译环境中。(这个脚本和所有程序我已经上传到Github中了,会在本篇博客的结尾备注的)
准备好了正确格式的文件,并且包含到了ARM Cortex-A9 MPCore的程序当中,我们就可以轻松的读取这个数组内容,将它写入到合适的BRAM当中。因为我们使用的是32位的地址,每四个字节都是独立可编址的,并且每四个字节都是一个独立的地址空间。例如第一个32位的地址是0,第二个地址是4,第三个地址是8,这样一直进行下去。
我们可以使用下面这个函数将内容写入到BRAM当中:
XBram_WriteReg(PICO_0_BASE, ram_addr, test2[read_out]);
我们可以使用for循环遍历整个数组,如下图所示:
以我们以前创建的系统示例为基础,使用这些结构,我们就能够简单快速的编写一个简单的程序,允许我们更新任意一个PicoBlaze内核的程序存储空间,本博客的程序实现的功能是每个PicoBlaze处理器控制他们各自的LED灯,以或快或慢的频率闪烁。
当然这并不意味着在处理器执行期间我们能够下载新的镜像文件到PicoBlaze处理器中, 如果要实现这样的功能,我们必须编写一个稍有不同的程序和TCL脚本,我们将在下一篇博客当中介绍。
快要有60篇博客了,我觉得如果有一个Git Hub存储空间将是一个非常好的想法,所以我已经创建了一个,地址是“
https://github.com/ATaylorCEngFIET/MicroZed-Chronicles
”,我会将以前博客的代码上传,但是现在这个存储空间中只有本次博客的程序源代码。
原文链接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...
© Copyright 2014 Xilinx Inc
如需转载,请注明出处
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
LED技术
测试测量
汽车电子
资料共享
示波器技术
X86
职场驿站
电源与功率管理
MCU 单片机技术
ARM
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议