【Xilinx AX7103 MicroBalze学习笔记2】MicroBlaze 串口发送 Hello World 实验

2023-10-31

目录

 

实验介绍

硬件设计(Vivado部分)

创建工程

搭建Block Design

MicroBlaze部分

外围模块部分

时钟模块

Uart部分

管脚绑定、时钟约束

生成Bit流文件

软件设计(SDK部分)

板级验证

总结

往期系列博客


 

实验介绍

本节介绍最简单的实验工程,用串口打印helloworld。

实验工程基于Vivado2018.2实现

下图是实验工程的框图,非常简单,MicroBlaze作为处理软核,搭载着片上存储器BRAM,MB通过AXI互联接到AXI-UART,通过控制就可以在串口打印信息了。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

硬件设计(Vivado部分)

创建工程

点击Vivado的Creat Project,创建一个新的工程,命名为hello_world,注意命名不能含有中文空格等字符,只允许字母和下划线组成,存储位置自己定义,同样需要注意的是路径不能过长,否则综合可能不通过。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

选择先不指定设计文件

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

选定自己使用器件的型号,可以在器件的使用手册中查询到,我使用的是黑金的AX7103,器件型号为xc7a100tfgg484-2。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

在这里就可以看到汇总信息,点击Finish即可。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

搭建Block Design

点击左侧菜单栏中的creat block design

dc019bc55cdb48a98af1a6d6b7e6de28.png

MicroBlaze部分

点击+号搜索MicroBlaze,双击添加到BD中

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_18,color_FFFFFF,t_70,g_se,x_16

双击MB模块查看其中的配置信息

第一页

Predefined Configurations:配置模板,点击 Select Configuration 右侧的目录框能够看到多个模板选项(Minimum Area、Maximum Performance 等),但本次实验不需要用到模板,因此保持默认选项“Current settings”就可以。

Select implementation optimization;用于使能面积优化功能,打开其右侧的目录,可以看到有PERFORMANCE、AREA 和 FREQUENCY 三个选项表示三种优化方式,其中 AREA(区域)表示三级优化,速度最慢占用资源最少;FREQUENCY(频率)表示八级优化,速度最快占用资源最多;PERFORMANCE(性能)是五级优化,速度和资源占用量在 AREA 和 FREQUENCY 两者之间,本实验选择PERFORMANCE。

Enable MicroBlaze Debug Module Interface:使能调试功能,一般情况下都开启该功能,只有在资源十分紧张的情况下才会禁止此功能。

Use Instruction and Data Caches:使用指令和数据缓存。当使用外部存储时,激活这个选项可以明显地改善性能,由于本次实验使用的是本地存储,该选项对实验没影响,因此不选择。

Enable Exceptions:异常功能的使能。

Enable Discrete Ports:使能软核上的独立端口。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

第二页

配置完成后点击“Next”进入第二页 General 页面,General 页面能够选择单元的选择和优化。直接保持默认就可以了,点击“Next”进入 Debug 页面。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

第三页

这一页也是保持默认即可,这一页的配置内容是只有在第一种选择了debug才会出现的。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

第四页

在Local Memory Bus Interfaces的选项中,两个都勾选,分别表示使能指令接口以及数据接口,AXI and ACE Interfaces中选择AXI接口,并且只需要勾选数据接口,指令接口大多数的情况下是不需要的,只有在特殊情况下才需要勾选上。Stream Interfaces 和 Other Interfaces 分别用于开启 Stream 流接口和一些其它接口,本实验中直接保持默认,配置完成后点击OK完成 MicroBlaze 的配置。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

外围模块部分

点击Run Block Automation

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

在这个界面中,需要将Local Memory选择为64kb,尽量选大点,因为MicroBlaze自身是没有存储单元的,需要在片上添加存储,如果选太小的话,程序可能无法运行。点击ok。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

然后会生成多模块界面,该界面可以看到自动生成了四个模块。clk_wiz_1 模块提供系统时钟,rst_clk_wiz_1_100M 是系统复位模块,用以给系统各个模块提供复位信号,mdm_1 是 MicroBlaze调试模块,microblaze_0_local_memory 模块是片上存储模块。

时钟模块

再对时钟模块clk_wiz_1进行配置

双击打开配置界面,再输入时钟将输入时钟配置成200Mhz,Source栏选择Differential clock capable pin,也就是差分时钟。注意!我只是按照我是用的板子进行配置参数,需要根据自己实际使用的板子所需要的输入时钟进行配置,可以查询板子的手册,否则实验可能不通过

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

时钟输出选项中,选择输出时钟为100Mhz,复位类型选择低有效,注意!因为我的板子是复位键按下时低电平,未按下是高电平,所以设定为低有效,根据自己的板子实际情况定

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

clk_wiz_1 模块配置完成后,可以看到 clk_wiz_1 模块的输入时钟变成了单端输入,复位为低电平有效。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

鼠标右击时钟模块的时钟和复位管脚,选择make external,将其管脚引出。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

还可以对管脚的名称进行修改。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

将复位引脚于复位模块的ext_reset_in相连

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

Uart部分

既然将实现串口打印信息的实验,因此需要有uart模块进行串口通信,添加uart模块,点击+号搜索uart双击添加。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_12,color_FFFFFF,t_70,g_se,x_16

双击uart模块进行配置,将波特率选择115200,需要与之后串口的波特率大小保持一致,其余保持默认即可。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

再点击自动连线即可完成Block Design的设计。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

管脚绑定、时钟约束

点击左侧菜单栏中的Open Elaborated Design。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_11,color_FFFFFF,t_70,g_se,x_16

点击上方的windows选项中的I/O ports,进行管脚分配。

根据自己的板子的原理图或者手册进行分配即可。CTRL+S保存XDC文件。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

点开Sources中的约束文件,并添加一句时序约束,目的是创建一个时钟频率为200Mhz即周期为5ns,因为我使用的板子不是官方的板子,而是黑金的第三方板子,因此需要额外添加一句时钟约束,不添加可能实验会出错。

完整的约束文件如下所示:

set_property PACKAGE_PIN T6 [get_ports reset_n]
set_property IOSTANDARD LVCMOS15 [get_ports reset_n]
set_property PACKAGE_PIN N15 [get_ports uart_txd]
set_property PACKAGE_PIN P20 [get_ports uart_rxd]
set_property IOSTANDARD LVCMOS33 [get_ports uart_rxd]
set_property IOSTANDARD LVCMOS33 [get_ports uart_txd]
set_property PACKAGE_PIN R4 [get_ports diff_clk_clk_p]
set_property IOSTANDARD DIFF_SSTL15 [get_ports diff_clk_clk_p]
create_clock -period 5 [get_ports diff_clk_clk_p]

生成Bit流文件

直接点击左侧菜单栏中的Generate Bitstream生成比特流文件。

点击上方菜单栏中的File->Export->Export Hardware,将硬件设计部分的信息导入到硬件,再带年纪Launch SDK,进入到软件部分的设计。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

软件设计(SDK部分)

进入到SDK中,点击上方的File->New->Application Project,创建一个新工程

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

命名为helloworld,点击Next。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

选择Hello World模板,点击Finish即可。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

点击文件中的src中helloworld.c文件。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_15,color_FFFFFF,t_70,g_se,x_16

可以看到导入的模板,就是很简单的利用C语言写的helloworld,其中头文件中"platform.h"和''xil_printf.h''是Xilinx官方的头文件信息,直接拿来用即可。

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"


int main()
{
    init_platform();

    print("Hello World\n\r");

    cleanup_platform();
    return 0;
}

板级验证

点击SDK Terminal中的+号添加端口。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

Port选择端口号,波特率设定为115200,与前面的uart模块的波特率值设定一致。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_9,color_FFFFFF,t_70,g_se,x_16

右击文件选择Run As->Run Configurations。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

在Run Configurations的界面中,双击GDB,选择跳出的GDB,在右侧勾选Reset entire system以及Program FPGA,复位整个系统并启动FPGA,点击Apply,最后点击Run。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

最后在端口可以看到Hello World的字样,实验成功!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

总结

通过运行打印hello world 的实验,不仅可以对MicroBlaze的开发流程有个初步的认识,也可以验证板子是否可用,熟悉板子的一些参数配置,为之后的实验打好基础。

往期系列博客

【Xilinx AX7103 MicroBalze学习笔记1】MicroBlaze介绍

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Xilinx AX7103 MicroBalze学习笔记2】MicroBlaze 串口发送 Hello World 实验 的相关文章

  • JESD204B(RX)协议接口说明。

    解释一下Vivado IP协议中的Shared Logic in Example 与 Shared Logic in Core 首先 什么是Shared Logic 字面意思很好理解 就是共享逻辑 主要包括时钟 复位等逻辑 当选择Share
  • BUCK电路分析(二)

    BUCK电路分析 二 PSIM仿真同步BUCK电路 在上片文章中 初步的分析了BUCK电路的工作原理 本章使用PSIM软件仿真BUCK电路 观察分析BUCK电路器件关键波形 图1是同步BUCK电路图 开关频率设置为200K 固定占空比 在仿
  • FPGA学习笔记(一)__电平知识

    常见电平标准 文章目录 1 TTL电平标准 2 LVTTL电平标准 1 LVTTL3V3 2 LVTTL2V5 3 CMOS电平标准 4 LVCOMS电平标准 1 LVCOMS3V3 2 LVCOMS2V5 3 LVCOMS1V8 4 LV
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • FPGA功耗估计(二)

    针对于Altera的Cyclone III 做出了静态功耗 对于Altera 其提供了一个功耗早期估计工具 可以在官网上下到 首先需要将宏设置为安全 在excel选型中选择文件 之后便可看到 根据相应的选择 红框部分 可以查看静态功耗 对于
  • 画时序图软件——TimeGen和Timing Designer下载

    在写实验报告的时候需要画波形图 但是手头没有很好的软件 就上网搜了一些 分享出来 这里分享的是TimeGen和Timing Designer两个软件 资源均来自网上 有侵权请联系 TimeGen使用和安装都比较简单 我发的应该里面有破解方法
  • [从零开始学习FPGA编程-24]:进阶篇 - 基本组合电路-编码器与译码器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 125247358 目录 前言 Veri
  • FPGA_MIG驱动DDR3

    FPGA MIG驱动DDR3 说明 FPGA zynq 7z100 DDR3 MT41K256M16TW 107 内存大小为512MB 数据接口为16bit 环境 Vivado2018 2 IP核 Memory Interface Gene
  • VHDL——连接开关和LED

    我有 Xilinx Spartan6 和下一个 VHDL 代码 library ieee use ieee std logic 1164 all use ieee numeric std all entity Switches Leds i
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • 在 C 中操作 80 位数据类型

    我正在用 C 实现一些加密算法 其中涉及 80 位密钥 特定操作涉及将密钥旋转移位 x 个位数 我已经尝试过 long double 类型 如果我没记错的话 它是 80 位 但这不适用于位移运算符 我能想到的唯一替代方案是使用 10 个元素
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • 如何在Altera Quartus中生成.rbf文件?

    什么是 rbf 文件以及如何在 Windows 上从 Quartus 输出文件 sof 生成它们 An RBF is a 原始二进制文件例如 它代表原始数据 这些数据将被加载到闪存中 以便在上电时初始化 FPGA A SOF is an S
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • 在 Verilog 程序中使用连续分配?

    在 Verilog 程序中使用连续赋值是否可能和 或有用 例如 是否有任何理由将assign里面一个always堵塞 例如这段代码 always begin assign data in Data end 此外 是否可以用这种方法生成顺序逻

随机推荐

  • 用python读写.mat文件——使用scipy库的scipy.io和h5py库

    python 中的scipy库和h5py库 1 读 mat文件 1 1 用scipy io读取 在用python处理matlab的mat文件时 发现数据量较小的文件可以直接通过scipy库的scipy io读取 import scipy i
  • linux 安装 yum etcd,安装etcd - Go语言中文网 - Golang中文社区

    etcd是一个golang编写的分布式 高可用的一致性键值存储系统 用于提供可靠的分布式键值 key value 存储 配置共享和服务发现等功能 etcd可以用于存储关键数据和实现分布式调度 在现代化的集群运行中能够起到关键性的作用 etc
  • VSCode官网无法下载

    因为不是国内的服务器 所以有可能无法下载或者下载失败 将下载地址https stable之间的部分更改为vscode cdn azure cn 重新复制地址下载就可以
  • 语音信号加噪频域分析与滤波处理(MATLAB GUI)

    语音信号加噪频域分析与滤波处理 MATLAB GUI 文章目录 语音信号加噪频域分析与滤波处理 MATLAB GUI GUI功能界面如图所示 部分代码展示 IIR高通滤波结果 IIR带通滤波结果 联系方式 email Jaceshuai j
  • python重复执行_python scrapy重复执行实现代码详解

    这篇文章主要介绍了python scrapy重复执行实现代码详解 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友可以参考下 Scrapy是一个为了爬取网站数据 提取结构性数据而编写的应用框架 我们只需
  • windows使用rdp远程连接deepin

    deepin版本是截止目前最新的15 11 可以安装xrdp和x11vnc来使用windows可以远程连接 首先开启ssh sudo apt get install openssh server 开启服务 sudo systemctl st
  • 云计算 第七章 云安全(3)概述 云计算面临的安全问题 云安全问题的深层原因 云安全关键技术 云计算信息安全的国内外标准化

    关注公众号凡花花的小窝 收获更多的考研计算机专业编程相关的资料 加密与解密 目前 云服务提供商般采用密码学中的技 术来保证数据安全 常用技术之一就是对数招进1加8和联名密码技术不仅服务于信息的加密和解密 也是身份认证 访问控制和数排签名等多
  • 根据E-R图设计数据库表

    上图是一个E R图 一共有三个实体 司机 车辆 车队 并且这几个实体之间互相具有一定的联系 我们首先把所有实体的表写出来 数据类型的选择请参考文章 https blog csdn net qq 61659383 article detail
  • 最完整梳理:SSL证书的诞生和历史

    HTTPS加密已经成为主流的网络传输协议 但是 SSL证书的诞生和历史你了解吗 跟着本文一起了解一下SSL证书的进化史 SSL TLS协议进化史 SSL协议 Secure Sockets Layer 安全套接层 是一套网络通信安全协议 具有
  • Nginx(二十一)nginx配置python

    一 scgi wsgi uwsgi 1 scgi gt 了解 SCGI是一种 与语言无关 的连接 web服务器 和 web应用程序 的方法 2 wsgi gt 协议 wsgi 一种 实现python解析 的通用 接口标准 协议 实现了 py
  • nginx的简单介绍 什么是nginx,为什么使用nginx,nginx的优点

    一 什么是nginx 1 Nginx是一款轻量级的Web 服务器 反向代理服务器及电子邮件 IMAP POP3 代理服务器 在BSD like 协议下发行 其特点是占有内存少 并发能力强 事实上nginx的并发能力在同类型的网页服务器中表现
  • Java高级面试题解析(二):百度Java面试题前200页(精选)

    基本概念 操作系统中 heap 和 stack 的区别 heap是堆 stack是栈 是两种不同的数据结构 堆是队列优先 先进先出 栈是先进后出 在java多线程中 每个线程都有自己的栈 不同的线程共享一个堆 在java内存中 栈中存放的大
  • 国庆在家写了个简易版的在线简历网站

    一个可在线编辑的简历页面 放在github Page上托管 在线编辑 可生成PDF 从此跑路没烦恼 目录 一 GitHub Page托管简历 二 修改简历 三 简历下载 一 GitHub Page托管 1 页面样式 这个简历单纯页面技术含量
  • tcpclient和tcplistener通信

    服务器和客户端的代码都在在vs中编写并运行的 功能上实现了一个客户端和服务器互发消息 如果哪位大神知道多个客户端怎么搞 请留个思路给我 感谢 服务器的代码 using System using System Collections Gene
  • Git commit格式 详解

    我们在使用git进行版本控制的时候 commit的格式是有要求的 我们可以先去看一些顶级项目他们的commit的格式是怎样的 angular在github上的commit信息 我们可以发现 commit都有一些前缀 比如说 feat tes
  • VRTK简要说明

    1 导入VRTK开发包 下方三个为基础控件 用于识别硬件设备以及相关配置 2 移动功能简介 3 ui交互事件 将VRTK UICanvas 组件添加到Canvas下可用ui所有事件 1 问题容易出现ui穿透 所以在做的时候要防止穿透 最好不
  • sqli-labs通关大全(更新至Less60)

    sqli labs通关 less1 less10 箭雨镜屋 CSDN博客 sqli labs通关 less11 less20 箭雨镜屋 CSDN博客 sqli labs通关 less21 less30 箭雨镜屋 CSDN博客 sqli la
  • config:fail,Error: 系统错误,错误码:63002,invalid signature

    经过半天的尝试 终于把这个解决了 本文章比较是和 前端用 hash分享下这个问题吧 看了好多文章都没解决了我的问题 直接上干货 1 首先出一张基本的问题图 2 针对上面这个图第2点内 hash 做个讲解 因为我前端用的 hash模式 一般网
  • 编码之Base64编码

    Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法 目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一 为什么会有 Base64 编码呢 因为有些网络传送渠道并不支持所有的字节 例如 传统的
  • 【Xilinx AX7103 MicroBalze学习笔记2】MicroBlaze 串口发送 Hello World 实验

    目录 实验介绍 硬件设计 Vivado部分 创建工程 搭建Block Design MicroBlaze部分 外围模块部分 时钟模块 Uart部分 管脚绑定 时钟约束 生成Bit流文件 软件设计 SDK部分 板级验证 总结 往期系列博客 实