4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-02-25 20:07:11 +08:00
2023-12-29 22:13:09 +08:00

126 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 正点原子启明星开发板 BSP 说明
## 简介
本文档是为 正点原子启明星开发板提供的 BSP (板级支持包) 说明。
主要内容如下:
- 开发板资源介绍
- 开发流程说明
## 开发板介绍
正点原子开发的基于 zynq7000 生成的开发板, 注: 理论上也可以适用于其它 zynq7000的开发板.
![board](figures/board.jpg)
开发板更多详细信息请参考[官方文档](http://www.openedv.com/docs/boards/fpga/zdyz_qimxing(V2).html)。
## 外设支持
本 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`, `UART0``Quad SPI FLASH`.
### 2. 启动 sdk 生成 bsp 和 fsbl
完成第一步后, 导出硬件到 sdk, 然后启动 sdk, 创建 fsbl 工程
![step2](figures/step_2.png)
![step3](figures/step_3.png)
由于后续即将添加的复杂驱动依赖于usleep.c 的接口函数, 故需要对 sdk
中的 `bsp\ps7_cortexa9_0\libsrc\standalone_v6_5\src\usleep.c` 做如下修改:
```DIFF
@@ -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 文件夹下的 `include``lib` 文件夹到 [bsp](bsp) 文件夹下
![step4](figures/step_4.png)
然后 scons 编译app, 得到 `rtthread-zynq7000.elf`
### 4. 调试运行
#### 方式1: sdk 调试运行
1. 点击 SDK `Run` -> `Debug Configurations...`
![step5](figures/step_5.png)
2. 右键 new 创建新的 debug
![stp6](figures/step_6.png)
3. 配置 debug, 选择 app 所在路径
![step7](figures/step_7.png)
![step8](figures/step_8.png)
4. 随后点击 debug 就可以运行了.效果如下图所示:
![step9](figures/step_9.png)
![step9_1](figures/step_9_1.png)
#### 方式2: 生成 BOOT.BIN 拷贝到 sd 卡运行
参见 vivado bootgen 使用方法,将 app 换成
scons 编译生成的 `rtthread-zynq7000.elf` 即可
## 联系人信息
维护人:
- [a1012112796](https://github.com/a1012112796)