microblaze使用

前阵子LD要求,做一个项目的microblaze部分。

特意写个记录一下调试过程,记录过程中遇到的坑:

1.问题1:xil_printf 替代printf打印

裸机vitis调试的时候,发现串口打印不正常,后面定位到是这个打印函数的问题。

2.问题2:microblaze导出始终有问题,导出的uartlite的打印乱码

同事帮忙定位到是开发板的时钟选择错误

3.microblaze导出AXI GPIO点灯功能

Block Design里面选择microblaze和AXI GPIO,AXI GPIO的宽度是灯的数量,即数据宽度为7是对应7个灯

4.点灯参考代码,参考的链接是MicroBlaze:Xilinx官方软核学习与一些实验测试_microblaze 编译后 程序存储-CSDN博客

#include "xparameters.h"
#include "xgpio.h"
#include "xil_printf.h"
#include "sleep.h"
#define LED_ID XPAR_GPIO_0_DEVICE_ID // led器件ID
#define LED_CHANNEL 1                // LED通道
XGpio Gpio; // GPIO实例

int main(void)
{
    int i = 0;
    xil_printf("GPIO LED TEST\n\r");
    // 初始化GPIO
    XGpio_Initialize(&Gpio, LED_ID);
    // 为指定的信道设置方向 ,0 输出 ,1输入
    XGpio_SetDataDirection(&Gpio, LED_CHANNEL, 0);
    while (1)
    {
        // 向指定通道写入数据,LED每0.5秒流转一次
        XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 0x01 << i);
        // 循环计数,表示第几个灯亮
        if (i == 3)
            i = 0;
        else
            i = i + 1;
        // 延时0.5秒
        usleep(500000);
    }
    return 0;
}

5.如果发现vitis编译的microblaze始终编译不过的时候

多半是因为对于zynq7000系列的microblaze项目,需要添加PS部分(即使不使用)。可以添加个zynq核,但不使用即可,编译生成wrapper,重新导入vitis。

6.读写寄存器

// 参考代码
#include <stdio.h>
#include "platform.h"
#include "xil_io.h"
#include "xparameters.h"
#include "xil_printf.h"
int main(void)
{
    int word1,word2,word3,word4;
    int offset = 0x14000;
    int addr = 0;
    addr = XPAR_USP_RF_DATA_CONVERTER_0_BASEADDR + offset + 0x8;
    Xil_Out16(addr, 0xb);//写寄存器
    word1 = Xil_In32(addr);//读寄存器
    xil_printf("0x%08x , baseaddr = 0x%08x, Word1 = 0x%08x\n\r", 8, addr, word1);
    return(0);
}

7.目前自己写的vivado工程有问题,查一下,时钟也修改过了

主要是没有create新的wrapper,导致里面的gpio其实没有生成最新的,绑定xdc没用到

在生成新工程时使用的是vivado->file->save as新工程,重新generate会导致多生成wrapper文件,没事,可以删掉,重新生成应该是新的了,可以查看有无新的引脚

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值