[X]关闭

[米联客-安路飞龙DR1-FPSOC] SDK入门篇连载-01 FPSoc开发入门

文档创建者:FPGA课程
浏览次数:740
最后更新:2024-08-05
文档课程分类-安路-DR1
安路-DR1: FPSOC-DR1-SOC部分 » 1_SDK应用方案(仅旗舰型号) » 1-SDK基础入门方案
软件版本:Anlogic -TD5.9.1-DR1_ES1.1
操作系统:WIN10 64bit
硬件平台:适用安路(Anlogic)FPGA
实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板
板卡获取平台:https://milianke.tmall.com/
登录"米联客"FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!
1概述1.1背景介绍
由于 FPSoc属于异构器件,同时包含处理器(Central Processing Unit,CPU)和可编程逻辑门阵列(Field Programmable Gate Array,FPGA)。故其应用开发具备特殊性,通常需要两步:
1、在 TD 中进行PL 侧的FPGA 开发,包括硬核IP 的配置和使用RTL 设计数字逻辑电路,并生成对应的比特流文件。
2、在 FD 中进行PS 侧嵌入式应用的开发、调试(这里特指裸机应用,即直接运行在开发板中,而非开发板的操作系统中,以下提到的应用、app等用语都是指裸机应用)。对应的开发流程为:
2504661-20240805190345435-588740738.jpg
由上图中可以看出,FPSoc的开发需要经过以下步骤:
1、硬件设计:开发FPSoc应用时,推荐在硬件设计中使用IP Catalog和Design Integrator 来实例化IP,以便能正确生成HPF 文件。两者的区别是前者一次只能定制一个IP,需要手动生成IP 间连接的RTL;后者为一个图形化的集成工具,能帮助用户生成 IP 间连接的RTL。
2、生成比特流文件。该步骤可选,在需要用到p1端的情况下,需要完成此步骤。
3、导出 HPF 文件,该文件包含了硬件设计的信息,包括比特流文件(PL端的设计)和寄存器配置文件(PS 端的外设初始化)。
4、在 FD 中创建platform 工程。
5、在 FD 中创建、调试app 工程:
其中1~3 在TD 中进行,4、5 在FD 中进行。
2实验目的
    本实验是我们开始Anlogic FPSoc学习的第一个入门demo。
    实验目的:
    1:掌握基于FD-TD创建SoC工程
    2:掌握基于图形化Design Intergrator的设计方法
    3:掌握ARM IP核的调用
    4:掌握ARM IP核的参数配置方法
    5:掌握生成一个基于ARM IP核的最小系统方法
    6:导出硬件参数HPF文件
    7:使用FD-TD创建soc base工程
    8:使用FD-TD创建自带sdk helloworld APP工程
    10:使用FD-TD创建以太网测试程序
2系统框图
本方案构建基于ARM IP核的最小系统,包含了PS DDR、FLASH、EMMC、TF-Card、Uart、USB、ETH以太网
2504661-20240805190346183-731313995.jpg
3搭建SoC系统工程
在 FPSoc中,CPU 资源作为整个SOC资源的一个硬核 IP(以下简称PS),与其他IP 的使用没有任何区别,可以对其接口、IO等进行定制,后文会详细介绍。IP 的定制在TD 中进行,可以使用IP Catalog 和Design Integrator 工具。
3.1创建soc_prj工程1:创建工程路径
米联客新版本资料里面SoC工程一级目录一般包含3个文件夹,用于管理各类文件:
soc_hw:文件夹放hdf文件
soc_prj:文件夹放FPGA工程
soc_sdk:文件夹放SDK相关的开发文件
2504661-20240805190346593-101647043.jpg
2:新建TD工程
双击打开TD软件
2504661-20240805190346948-1048834028.jpg
2504661-20240805190347378-535186970.jpg
3:创建FPSoc硬件工程
由于已经创建好了路径,所以不需要让软件再次创建以工程命名的路径
2504661-20240805190347796-345272759.jpg
这一步选择默认的FPGA芯片型号,指定整个TD工程的路径,输入工程名,我们米联客习惯使用fpga_prj作为TD工程的工程名,点击OK,工程创建完成。
2504661-20240805190348172-1212381223.jpg
2504661-20240805190348559-1551942504.jpg
3.2创建图形化模块1:使用Design Integrator 工具
2504661-20240805190348940-46132251.jpg
进入Design Integrator 工具界面
2504661-20240805190349322-992774033.jpg
下面我们可以选择新建一个图形化界面设计文件,或者我们也可以直接导入已经完成的图形化界面工程。这里我们先点击新建。
2504661-20240805190349703-1415950441.jpg
我们米联客习惯将图形化界面设计文件命名为system,并且选择路径保存在/uisrc/01_rtl中方便管理和调用。
2504661-20240805190350086-1486448856.jpg
点击OK,创建成功。
2504661-20240805190350620-1144033715.jpg
点击+号,选择ARM定制IP。
2504661-20240805190351020-393906478.jpg
双击ARM Processor System IP(以下简称ARM IP)
2504661-20240805190351642-246631635.jpg
未配置的IP就已经添加成功,可自定义IP名,这边我们保持默认,其他IP的添加也相同,后面就不再赘述。
2504661-20240805190352080-351429399.jpg
2:配置IP的参数
双击IP对IP的各个功能参数进行配置,这个配置必须参考硬件原理图完成,所以FPGA或者SOC工程师必须具备一定的硬件分析能力,可以阅读原理图,实现对硬件资料在软件上的定义分配。
2504661-20240805190352879-1003167302.jpg
3.3 ARM IP的配置参数
以下我们针对主要的外设资源对IP的配置说明。
1:PSIOBANK电压
AD101开发板的MIO BANK200设置3.3V, 核心板硬件原理图上的BANK201设置1.8V
2504661-20240805190353295-1056387712.jpg
2:PSIO接口功能定义
2-1:QSPI-FLASH接口
2504661-20240805190353679-1494487582.jpg
2-2:PS以太网接口
2504661-20240805190354278-795838583.jpg
2-3:USB接口
2504661-20240805190354691-1873322158.jpg
2-4:SDIO0-EMMC
2504661-20240805190355127-1752688339.jpg
2-5:SDIO1-SD卡
2504661-20240805190355537-579442727.jpg
2-6:串口1
2504661-20240805190355928-1038276338.jpg
2-7:剩余IO
2504661-20240805190356284-1020628241.jpg
2-8:DDR配置
2504661-20240805190356670-2071402630.jpg
2-9:时钟配置
2504661-20240805190357061-1197274162.jpg
2-10:取消PS-PL交互接口
2504661-20240805190357441-387253164.jpg
相关PL的设置本demo没有用到,后面相关demo用到的时候再进行配置,点击OK完成配置。
3.4完成连线
完成配置后,可以引出接口,右键该接口
2504661-20240805190357852-656765223.jpg
选择Create Design Port,引出接口
2504661-20240805190358254-1633616795.jpg
该界面保持默认,点击Add,添加完成后点击Close
2504661-20240805190358669-1042597218.jpg
图形化界面部分配置完成
2504661-20240805190359022-1437891354.jpg
3.5检验BD工程
点击ValidateDesign可以快速初步排查工程是否有错误
2504661-20240805190359379-1459915640.jpg
点击Design Navigation,选择Generate Design,完成图形化界面到TD的同步。
2504661-20240805190359815-752249290.jpg
点击Generate,完成同步
2504661-20240805190400186-1371763512.jpg
3.6地址空间分配
由于没有使用任何PL资源,本demo中不需要地址分配,后续用到了我们再详细介绍。
2504661-20240805190400567-1800612809.jpg
3.7编译并导出平台文件
1:回到TD界面,双击可查看自动生成的TD顶层文件,如果没有任何PL逻辑使用的情况下,此时就能直接编译。但是为了我们后续工程的可拓展性和可重复利用性,所以我们依旧添加TOP文件。
2504661-20240805190401012-1441293855.jpg
2:添加我们准备好的TOP文件,点击OK添加完成
2504661-20240805190401604-1976199182.jpg
3:右键->Set As Top,注意该步骤非常重要,如果不设置,系统默认Generate产生的文件为Top文件,后续的demo中,会出现编译报接口错误的现象。
2504661-20240805190402043-1564679710.jpg
设置完成后,由于本demo不需要调用PL资源,所以不需要添加管教约束文件,直接编译即可。
4:依次双击,生成Bit文件。
2504661-20240805190402484-1017208826.jpg
5:导出到硬件: ProjectExport Hardware Platform
在 SoC 的应用开发过程中,需要将硬件设计信息通过文件的形式传递到软件开发工具(FD)中使用,该文件被称之为HPF(Hardware Platform File)文件。
2504661-20240805190402838-1469250826.jpg
2504661-20240805190403216-190623170.jpg
6:勾选Include bitstream,位置选择/soc_hw,点击OK,导出成功
2504661-20240805190403674-1917627758.jpg
6:导出完成后,对应工程路径的soc_hw路径下有硬件平台文件:fpga_prj.hpf的文件。根据硬件平台文件fpga_prj.hpf来创建需要Platform平台。
2504661-20240805190404030-1252322408.jpg
4搭建SDK工程
创建soc_base sdk platform和APP工程。
4.1创建SDK Platform工程
双击打开FD软件
2504661-20240805190404366-1757153740.jpg
设置好路径/soc_sdk文件夹后点击Launch
2504661-20240805190404895-534635392.jpg
米联客资料中的路径规范如下图:
soc_prj里面是基于SOC的硬件工程源码
soc_hw里面是hpf格式文件,soc_prj编译会导出fpga_prj.hpf到这个文件
soc_sdk里面是裸机的sdk工程,sdk工程创建依赖soc_hw中的fpga_prj.hpf
2504661-20240805190405476-1958855255.jpg
打开后,先显示的是Welcome界面,关闭
2504661-20240805190405887-887459405.jpg
新建Platform Project
2504661-20240805190406496-204773260.jpg
添加之前创建的hpf文件,名称我们根据米联客习惯,命名为soc_base,点击finish
2504661-20240805190406997-1822944416.jpg
创建完成后
2504661-20240805190407389-1275917432.jpg
展开soc_base可以看到
2504661-20240805190407777-73426064.jpg
4.2创建hello_world APP工程
2504661-20240805190408243-1814336743.jpg
命名为hello_world,选择自带的工程模板,点击finish完成
2504661-20240805190408797-1342398707.jpg
添加完成后,点击build编译
2504661-20240805190409220-1678897722.jpg
编译完成后,等待测试
4.3以太网测试1:创建lwip ping APP工程
创建lwip_ping工程,创建的时候发现缺少库文件,lwip工程需要添加库文件。
2504661-20240805190409668-1868513363.jpg
在soc_base中添加lwip库,勾选lwip库文件
2504661-20240805190410127-877750170.jpg
点击ok,确认添加成功
2504661-20240805190410526-264496839.jpg
添加成功后,再次添加lwip_ping APP,发现没有报错,成功添加,build之后等待测试
2504661-20240805190410963-176845459.jpg
5方案演示5.1硬件准备
本实验需要用到JTAG下载器、USB转串口外设,另外需要把SW1模式开关设置到JTAG模式。(模式开关错误,无法下载程序)
2504661-20240805190411374-104352001.jpg
如下图所示把SW1模式开关切换到ON-ON,就是设置JTAG模式
2504661-20240805190411822-708251578.jpg
注意:在使用FD OpenOCD调试之前,需要先关闭TD中的One Cable Hardware Server,否则One Cable处于占用状态,FD将无法进入调试模式。
2504661-20240805190412189-633654946.jpg
点击stop server,关闭TD One Cable Server,点击Apply,修改完需重新插拔一下载器
2504661-20240805190412739-648883788.jpg
具体One Cable下载器的安装以及使用方法,可以参考《快速入门篇》,本章节不再重复赘述。One Cable下载器安装较为复杂,如果安装错误,将无法完成下载)


2504661-20240805190413164-28766109.jpg
5.2hello_world实验结果
2504661-20240805190413611-2144536189.jpg
展开GDB OpenOCD Debugging,可以看到下方有我们的工程(目前仅支持此一种debug方式),点击debug
2504661-20240805190414035-1127945641.jpg
程序进入带触发状态。
2504661-20240805190414484-1274589548.jpg 此时,把串口线插入PS Uart接口,为了观察实现结果,需要打开串口。如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动
2504661-20240805190414930-1958886063.jpg
在FD软件中,连接上串口,点击OK
2504661-20240805190415336-1867435878.jpg
点击run,触发程序
2504661-20240805190415884-714797093.jpg
成功输出Hello world
2504661-20240805190416316-945507384.jpg
5.3以太网测试
给开发板通电,连接网口, 并且根据以下步骤,设置电脑端IP地址
2504661-20240805190416703-459124056.jpg
2504661-20240805190417098-1930961508.jpg 2504661-20240805190417481-1651816282.jpg
修改本地IP地址,确保与开发板在同一个IP域内,同时通过详细信息二次确认,防止IP被占用现象。
2504661-20240805190417885-1565681011.jpg 2504661-20240805190418266-1182382799.jpg
调试程序
2504661-20240805190418626-662761992.jpg
2504661-20240805190419047-1631155407.jpg
打开命令终端,输入ping指令:ping 192.168.31.222 -t,ping指令用法如下
2504661-20240805190419447-217894460.jpg
Ctrl+c结束
2504661-20240805190419824-1490799978.jpg

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则