找回密码
 注册
关于网站域名变更的通知
查看: 550|回复: 1
打印 上一主题 下一主题

编写软件程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-8 10:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 A-Lin 于 2018-10-8 10:39 编辑 4 R1 J* v' E  {; j6 P

* D/ M: \% D% W% e( l/ p
转——编写软件程序

1 O" M2 \" {! i3 ?7 p2 @7 B! o1 y: G
         下面将为前面构建的嵌入式系统硬件编写软件应用程序,功能是写zebboard 板上的LED灯。通过修改链接脚本文件,将从BRAM运行脚本程序。
   (1)创建应用工程
         本节将导出硬件到SDK,然后创建应用工程。在Vivado主界面的Flow Navigator 窗口下,点击Open Block Design,或者在源文件下打开system.bd文件。同时找到Implementation选项,单击Open Implementation Design,打开实现后的设计;在viavdo 主菜单,执行File,Export,Export Hardware,在弹出的对话框中,选中Include bitstream 前面的复选框,单击OK。弹出 Module Already Exported 对话框,提示已经存在导出文件,是否覆盖文件信息,单击Yes,覆盖前面的的导出文件。
         Vivado 的主界面的主菜单下,依次点击File,Launch SDK,弹出对话框,在该对话框中,单击OK。在SDK主界面的左侧Project Explorer 窗口下,选中system_wrapper_hw_platform_1.单击鼠标右键,出现浮动菜单,执行命令Delete。类似的,分别选择standalone_bsp_0和TestApp,将其从磁盘删除。
         SDK主界面菜单下,执行File,New, Application Project,弹出对话框,下面的参数配置:Projact name:lab4;点击Next按钮,弹出New Project-Templates对话框,选择Empty Application选项,单击Finish按钮。
         SDK主界面下,找到lab4,在展开项中找到src,选中src,单击鼠标右键,出现浮动菜单。执行Import,弹出对话框,展开General文件夹。选中File System。单击Next,单击Browse按钮,选择lab4.c文件,单击Finish
lab4.c代码如下
#include "xparameters.h"
4 Y. h- p. }" l! x$ p, ]
#include "xgpio.h") i2 o' y$ T, Y2 S7 P1 I2 \# @2 u
#include "led_ip.h"5 f) G* i8 ^( z7 [3 D* `- L
8 N; d  e1 z3 @$ H9 {- A/ h. C" b; t6 p5 Z
int main(void)/ a) r7 C2 U- k7 k1 e  [( r
{
# N, X5 ]$ o; v, L7 y# H1 n
XGpio dip,push;
; d5 w& l. ~) A8 O+ C
int i, psb_check,dip_check;
6 ~6 F+ v: x+ G" M& k* g% F
3 Z$ b/ F5 \7 h
xil_printf("--Start of the Program--\r\n");
1 Q  P/ d- m' q# D
/ A! C1 a$ [9 b2 b
XGpio_Initialize(&dip,XPAR_SWITCHES_DEVICE_ID);
- u: ^! d+ V( g) H( k0 q
XGpio_SetDataDirection(&dip,1,0xffffffff);4 n# i/ A, s0 C* Q

7 C( T# A4 b7 g' D8 V" G9 |
XGpio_Initialize(&push,XPAR_BUTTONS_DEVICE_ID);
& H2 b: w  B$ ?: m6 I% U
XGpio_SetDataDirection(&push,1,0xffffffff);
' l  P+ g* a) e- a; L1 b  V
7 r: T0 r0 c$ R+ ~3 Z
while(1)
- e& q: y) _' L2 w& a+ Y" ~3 @
{
7 Y! q; f# e6 I' H: W! l( g
psb_check = XGpio_DiscreteRead(&push,1);) T4 E6 p  d$ U& ?
xil_printf("Push Buttons Status %x\r\n",psb_check);( l* {# V) h0 U# C! ~
dip_check = XGpio_DiscreteRead(&dip,1);8 w6 G' I* E2 M
xil_printf("DIP Switch Status %x\r\n",dip_check);
0 Y8 O1 t' h( H( m6 I4 R5 Z) z0 a! B
% N0 _7 i5 t9 P' X# W
LED_IP_mWriteReg(XPAR_LED_IP_S00_AXI_BASEADDR,0,dip_check);* b$ N  t/ p& M; t7 k+ R; |
for(i=0;i<9999999;i++);
  ?2 K* [/ ^! A
+ D  n8 `' h& A
}
8 P1 z& t' A0 j; j/ O! U3 E4 M  q' v9 R1 `5 w& {# O! k
}
; Y* x8 s: v. m6 Z2 L, A
   (2)为LED_IP分配驱动
         SDK主界面菜单下,执行菜单命令Xilinx Tools,Reposiories,弹出Preferences 对话框,单击 New 按钮看,定位路径到 LED IP的路径。
         SDK主界面,点击Xilinx Tools,Board Support Package Settings,弹出Select a board support package 对话框,选择lab4_bsp;
         单击OK按钮,弹出Board Support Package Settings 对话框,在该对话框左侧选择drivers。
         单击OK按钮。当创建IP 模板时,自动创建驱动程序代码,驱动程序包含更高级的函数,这些函数可以通过用户程序进行调用。驱动程序用于实现更低层次的功能,用于控制外设。
   定位到如下目录,E:\vivadoProject\zynq_3\led_ip\ip_repo\led_ip_1.0\drivers\led_ip_v1_0\src,打开led_ip.c文件,它只包含用于IP的头文件。
' i. V) v( i! l% J
  (3)分析汇编目标文件
         下面启动shell 和 objdump lab4.elf,查看不同的段。
         SDK主界面,单击Xilinx Tools,Launch Shell,先后输入
cd lab44 \' a- r6 D1 `1 |/ X7 y, v/ b. {
cd debug

7 x- |2 T# ^% ~4 M3 ]' w
输入下面的命令
ARM-xilinx-eabi-objdump –h lab4.elf
- S' H, r3 T( B
如图可以看到不同的段分配
   (3)验证设计
         连接PC 和 Zedboard之间的JTAG和UART。
         选择SDK Terminal 标签,按前几篇文章的方法设置UART参数。
         SDK主界面,执行Xilinx Tools,Program FPGA,弹出对话框。单击Program按钮,将比特流下载到FPGA。
         在SDK主界面左侧,选择lab4,单击鼠标右键,在浮动菜单内,执行Run As ,Launch on Hardware(GDB),把应用程序下载到板子,并且执行ps7_init 和 lab4.elf。
* k+ D) Z* T' H) p; A2 Z  r  E5 A

6 W# F7 ~: W" Y, x/ y" Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-6 13:15 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表