rt-thread-official/bsp/zynq/zynq7000
a1012112796 c92e437a69 Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
..
applications Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
bootgen Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
bsp Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
drivers Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
figures Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
.config Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
Kconfig Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
README.md Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
SConscript Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
SConstruct Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
Xilinx.spec Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
lscript.ld Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
rtconfig.h Add zynq7000 bsp 2023-12-29 22:13:09 +08:00
rtconfig.py Add zynq7000 bsp 2023-12-29 22:13:09 +08:00

README.md

正点原子启明星开发板 BSP 说明

简介

本文档是为 正点原子启明星开发板提供的 BSP (板级支持包) 说明。

主要内容如下:

  • 开发板资源介绍
  • 开发流程说明

开发板介绍

正点原子开发的基于 zynq7000 生成的开发板, 注: 理论上也可以适用于其它 zynq7000的开发板.

board

开发板更多详细信息请参考官方文档

外设支持

本 BSP 目前对外设的支持情况如下:

核心 支持情况 备注
cortex-a9 支持 运行系统的为cortex-a9核的CPU0
板载外设 支持情况 备注
片上外设 支持情况 备注
GPIO 支持
UART 支持 UART0, UART1
SPI FLASH 支持
EMMC / SDIO 支持
CAN 即将支持

使用说明

本 bsp 驱动基于之前的 zynq7000 bsp 的基础上,除了定时器仍然沿用之前的寄存器写法外,其余驱动均基于 vivado sdk 2017.4 生成的驱动库开发。具体开发使用流程如下:

1. 创建 vivado 工程 & pl 部分开发

使用 vivado 创建工程, 完成 pl 部分开发, 此部分与 rtt 软件开发无关, 故省略具体说明. 注意 zynq ps 部分必须启用 MIO, UART0Quad SPI FLASH.

2. 启动 sdk 生成 bsp 和 fsbl

完成第一步后, 导出硬件到 sdk, 然后启动 sdk, 创建 fsbl 工程

step2 step3

由于后续即将添加的复杂驱动依赖于usleep.c 的接口函数, 故需要对 sdk 中的 bsp\ps7_cortexa9_0\libsrc\standalone_v6_5\src\usleep.c 做如下修改:

@@ -63,6 +63,15 @@
 /* Global Timer is always clocked at half of the CPU frequency */
 #define COUNTS_PER_USECOND  (XPAR_CPU_CORTEXA9_CORE_CLOCK_FREQ_HZ / (2U*1000000U))
 
+typedef void (*usleep_hook_t) (unsigned long useconds);
+
+static usleep_hook_t usleep_hook;
+
+void zynq_set_usleep_hook(usleep_hook_t hook)
+{
+	usleep_hook = hook;
+}
+
 /*****************************************************************************/
 /**
 *
@@ -78,6 +87,12 @@
 ****************************************************************************/
 int usleep(unsigned long useconds)
 {
+	if (usleep_hook)
+	{
+		usleep_hook(useconds);
+		return 0;
+	}
+
 	XTime tEnd, tCur;
 
 	XTime_GetTime(&tCur);

修改完成后保存文件等待sdk 自动完成编译.

3. 拷贝 sdk 下的 bsp, 完成 app 编译

拷贝 sdk bsp 文件夹下的 includelib 文件夹到 bsp 文件夹下

step4

然后 scons 编译app, 得到 rtthread-zynq7000.elf

4. 调试运行

方式1: sdk 调试运行

  1. 点击 SDK Run -> Debug Configurations... step5

  2. 右键 new 创建新的 debug stp6

  3. 配置 debug, 选择 app 所在路径 step7 step8

  4. 随后点击 debug 就可以运行了.效果如下图所示: step9 step9_1

方式2: 生成 BOOT.BIN 拷贝到 sd 卡运行

参见 vivado bootgen 使用方法,将 app 换成 scons 编译生成的 rtthread-zynq7000.elf 即可

联系人信息

维护人: