资料介绍
描述
继续我的上一个项目,该项目涉及如何为带有 TE0701 基板的 TE0711 SoM 编写嵌入式 C 应用程序,最后一步是将应用程序编程为存在于 TE0711 的非易失性存储器中。
TE0711 配备了一个 32MByte 的 Cypress S25FL256S 外部闪存芯片,供其 Artix FPGA 使用。这是板上唯一用于存储应用程序和用户数据的非易失性存储器,它将在板的电源循环之间保留。
与 FPGA/Vivado 领域中的几乎所有东西一样,通常有几种不同的方法可以对外部闪存芯片进行编程。通常我使用 Vitis 的闪存芯片,但使用 TE0711 的特定电路板布局和 Cypress(又名 Spansion)芯片,我发现在 Vivado 中生成 MCS 并使用硬件管理器对闪存进行编程是我能得到它的唯一方法工作。
在 Vivado 中关联 ELF
首先,将来自 Vitis 的所需目标应用程序的 ELF 文件添加为 Vivado 中的设计源(Flow Navigator > Add Sources > Add or create design sources )。我喜欢使用它在 Vitis 工作区中的相对路径,因此当我在 Vitis 中重建应用程序时,我不必手动将 Vivado 看到的 ELF 文件替换为在 Vitis 中编译的新文件。
将 ELF 文件添加到 Vivado 项目后,需要将其与模块设计相关联,以便 Vivado 在生成下一个比特流时知道使用它。右键单击 Sources 选项卡中的块设计并选择Associate ELF Files...选项。
默认情况下,Vivado 中关联的 ELF 文件是为实际设计和仿真自动生成的 MicroBlaze 引导循环。通过将设计源中的关联 ELF 从 Vitis 切换到目标应用程序,生成的比特流将导致 FPGA 在启动时执行应用程序。
生成具有关联 ELF 的新比特流
在 Vivado 综合和实现中添加并关联目标应用的 ELF 文件后,需要重新运行,并且需要生成新的比特流。
旁注:每次在 Vivado 中添加和关联 ELF 文件后在 Vitis 中构建应用程序时,一旦运行初始的新综合和实现,就会导致比特流过时。
一旦生成了新的比特流,就需要生成实际存在于外部存储器中的 MCS 文件。这就是成功生成比特流后出现的对话框中的Generate Memory Configuration File选项。也可以随时从 Vivado 中的“工具”菜单选项访问它。
在 Vivado 中确定闪存的部件号
TE0711 通过 Cypress S25FL256S 芯片配备了 32MBytes 的外部闪存。根据部件号 S25FL256S,在 Vivado 和 Vitis 中有两个支持的选项:s25fl256sxxxxxx0-spi-x1_x2_x4和s25fl256sxxxxxx1-spi-x1_x2_x4 。
根据TE0711 的 TRM,连接到 Cypress S25FL256S 芯片的所有四条 SPI 数据线都已连接,因此支持所有不同的总线宽度进行闪存。但是,我找不到任何解释xxxxxx0和xxxxxx1 之间区别的文档。记录 Vivado 编程和调试的 UG908 识别了这两个选项,但仍然没有说明区别,如下面附录 E 的屏幕截图所示:
在浏览了 Trenz 的支持论坛后,我发现了一篇关于 TE0710 SoM 的帖子,其中 Trenz 工程师确认在 Vitis 中选择的适当闪存类型是s25fl256sxxxxxx0-spi-x1_x2_x4。
然后我花了一些时间检查 TE0710 的原理图并将其与 TE0711 的原理图进行比较。这表明 TE0710 和 TE0711 使用相同的部件号赛普拉斯 S25FL256S 芯片 (S25FL256SAGBHI20) 和相同的电路配置,并证实了我的怀疑s25fl256sxxxxxx0-spi-x1_x2_x4也是 Vivado 和 Vitis 中用于 TE0711 的部件号对闪存进行编程。
生成内存配置文件
在选择Generate Memory Configuration File选项后出现的对话框中,将输出文件的格式设置为 MCS,因为 TE0711 上的 Cypress S25FL256S 芯片需要将比特流转换为 .MCS 文件类型进行存储。在文件名框中为生成的 MCS 文件指定所需的文件名和目录路径。会生成。
鉴于 Vivado 支持 Cypress S25FL256S 芯片,选择Memory Part选项,单击 Memory Part空白框右侧的三个点,然后从列表中选择s25fl256sxxxxxx0-spi-x1_x2_x4 。
正如我之前提到的,连接到赛普拉斯 S25FL256S 芯片的所有四条 SPI 数据线都已连接,因此支持所有不同的总线宽度进行闪存。TE0711 的约束文件将总线宽度具体指定为 4,因此需要将Interface选项设置为SPIx4 。
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
最后,由于比特流现在包含所需应用程序的 ELF 文件,因此它是唯一需要存在于闪存中的文件。选中Load bitstream files复选框,将Start address保留在 00000000 并指向位于
添加配置存储设备
将 TE0711 + TE0701 连接到主机 PC 并在 Vivado 中启动硬件管理器。选择自动连接选项以建立与 TE0711 的连接。
右键单击硬件窗口中 localhost 下的 xc7a35t_0 部分,然后选择添加配置内存设备...选项。使用过滤器导航到列表中的 s25fl256sxxxxxx0-spi-x1_x2_x4 部件并从中选择。
程序配置存储设备
添加闪存芯片并被硬件管理器识别后,在“硬件”窗口中右键单击它并选择“程序配置存储设备...”选项。
对于Configuration file ,指向前面步骤中生成的 MCS,位于Write Memory Configuration File对话框窗口的 Filename 框中指定的目录路径。在该步骤中还生成了一个 PROM 文件,并以相同的文件名保存在指定位置,指向该文件以获取PRM 文件。
至少,检查Erase 、Program和Verify选项,然后单击Apply和OK以最终对 TE0711 进行编程。
编程可能需要几分钟。
重启和测试
出现指示闪存已成功编程的对话框后,关闭 Vivado 中的硬件管理器并重启 TE0711 + TE0701。
重新启动后,使用您选择的终端应用程序连接到电路板(我只是在 Vitis 中使用串行终端,因为我通常已经打开了 Vitis)。
我选择在应用程序的循环中添加“Hello TE0711”的打印输出,这样控制台中就会立即看到一些东西,同时仍然保持 UART 上的字符回显功能:
/*
* Just sits in this loop of echoing characters back to the terminal until
* ESC key is pressed.
*/
while(RecvChar != EscChar){
ReceivedCount = XUartLite_Recv(&UartLite, RecvChar, 1);
if (ReceivedCount != 0){
XUartLite_Send(&UartLite, RecvChar, 1);
} else {
xil_printf("Hello TE0711\n\r");
for(int i=0;i<3000000;i++){};
}
}
就是这样!TE0711 已编程并准备就绪。如上面的屏幕截图所示,周期性的“Hello TE0711”正在打印到控制台,并回显它接收到的字符。此应用程序的 UART 中的缓冲区仍设置为默认的较小大小,因此一次可以回显的字符长度存在限制。
- 博雅微电子机械系列NOR闪存BY25D80 42次下载
- EV-21569-SOM手册
- EV-21569-SOM Manual
- EV-21569-SOM Schematic
- SOM-TLZ7x工业核心板的数据手册免费下载 41次下载
- 如何将外部SPI Flash加载到FPGA内部ram然后复位MC8051
- TB3015中文手册之使用PIC32引导闪存扩展程序存储器
- SAMA5D27 SOM1 Kit1基础知识及操作指南
- TMS320VC5505 DSP外部存储器接口(EMIF)操作的详细概述 9次下载
- 如何从NAND闪存启动达芬奇EVM 9次下载
- TMS320F28x 外部接口(XINTF)参考指南 13次下载
- TMS320F2812学习总结 13次下载
- TMX320F2810/F2812阿尔法闪存编程工具 6次下载
- 支持多种闪存启动的U_Boot实现方法的改进_卞芸 0次下载
- LPC900外部晶体启动应用规格书 AN10289 data
- 基于瑞萨Arm Cortex-M85 MCU Feather SOM的解决方案 289次阅读
- 软启动器的启动方式有哪些 714次阅读
- PY25Q128HA串行接口闪存设备产品概述 756次阅读
- PY25Q64HA串行接口闪存设备产品概述 865次阅读
- i.MX RT1xxx从SD/eMMC启动 1130次阅读
- 如何从外部优化降压稳压器ICS的频率响应 854次阅读
- I.MXRT1170从FLEXSPI2启动 1228次阅读
- 从网络启动linux系统如何做调试 1571次阅读
- 使用ICAP在SPI模式下执行Spartan-3AN多重启动 676次阅读
- 一文了解window电脑控制面板的快速启动 8.3w次阅读
- dfrobot3.5" TFT触摸屏 4MB闪存简介 1722次阅读
- 如何使用高速NOR闪存配置FPGA 3153次阅读
- 怎么从USB驱动器加载运行Windows 10 2003次阅读
- ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件 7505次阅读
- 串行SPI Nor Flash启动流程 2w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多