全球体积最小的64bit处理器——LS1012,LS1012A处理器针对电池供电或USB供电、空间受限的网络和物联网应用进行了优化,集成了运行频率高达1GHz的单核®Cortex®-A53,并配有硬件数据包转发引擎和高速接口,以1W典型功耗在超小型应用中提供可达网络线速的性能。LS1012A采用了与其他LS系列设备相同的体系结构和软件兼容性,利用通用的64位软件平台支持可扩展,以及安全的应用程序。其系统框图如下。
与LS1012A匹配的外部的电源芯片PMIC型号是:MC34VR5100A1EP。用于上电时序管理。
其SDK软件包下载链接如下:
http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq
processors:SDKLINUX?tab=Design_Tools_Tab
硬件管脚的处理(rev1.0 ls1012A):基本原则是没有用到的输出管脚可以悬空(NC),但建议给没有用到的输入管脚一个固定的电平(拉高或拉低)。故建议定制化RCW,将没有用到的管脚配成GPIO且为输出。 以下管脚在上电复位期间一定不可以被拉低:QSPI Clock,SPI Clock,Host to Card Clock(SDHC),Management Data Clock(EMI),EMI1_MDC(EMI)。同时,D1_MDIC必需下拉240ohm电阻到地。SCAN_MODE_B必需上拉100Ω到1kΩ的电阻到O1VDD。PROG_MTR必需下拉到地。 TD1_ANODE,TD1_CATHODE没有用到的话必需接到地SDHC1_CD_B在PORESET_B复位期间必需上拉 (2-10 KΩ) 到O2VDD。如需正常使用这CD脚,前面提到的上拉在PORESET_B为高时要为3态。 建议TJTAG_EN为可配置管脚(可拉高或接地)使得可通过JTAG调试。尽管CodeWarrior可以改写RCW,但还是建议cfg_rcw_src为可配置管脚,因为当需要用 CW 烧写flash时,有可能需要配为hardcode RCW模式。
更加详细的处理请参考最新版的design checklist,目前是“AN5192_RevC.pdf”(Rev.C)。
基于NXP最新的版本来设计自己的板,可以参考RDB的最新版本是“LS1012A-RDB-revD”,FRDM的最新版本是“LS1012A-FRDM-revC”。
LS1012A集成硬件的包转发引擎,提供了高性能的以太网接口,下面描述PFE 硬件,软件分解数据流,设置两个PFE以太网端口,通过PFE实现以太网包转发,以及如何修改PFE驱动程序和dts文件,在LS1012A板上建立PFE以太网端口。
在 kernel 配置选项里面要求使能 PPFE 支持,需要定义CONFIG_FSL_PPFE。
•使用 LSDK kernel, 从如下连接下载 https://source.codeaurora.org/external/qoriq/qoriq-components/linux/tree/
•使用NXP LSDK编译固件代码,构建对应目标。
https://docs.nxp.com/bundle/GUID-C3A436DA-E944-4F73-9811-2335DEBD04D6/page/GUID-47B8F1F5-3A8F-45F4-A096-4D3DCDE8D07C.html 这样可以确保 PPFE 固件文件包含在最终的映像文件中。
•在u-Boot的bootm起来前,停止 PPFE,执行如下两条命令:
=> pfe stop
Stopping PFE...
=> run bootcmd
•设备树的绑定在内核文档中指定,https://source.codeaurora.org/external/qoriq/qoriq-components/linux/tree/Documentation/devicetree/bindings/net/fsl_ppfe
•更多细节可以在LSDK在线文档中找到
https://docs.nxp.com/bundle/GUID-C3A436DA-E944-4F73-9811-2335DEBD04D6/page/GUID-D5F49021-986E-46D7-898F-9A709F87B50B.html
PFE在 QorIQ LS1012A 参考手册中并没有关于寄存器的详细描述,然而,在Uboot里面有描述其物理地址空间,是从CONFIG_SYS_FSL_PFE_ADDR (0x4000000)开始。PPFE表示Packet Processing and Forwarding Engine),在LSDK的开源的open source Linux驱动里面是否有硬件的的 PFE?它确实使用了PPFE,因为它包含其驱动程序。但是,只使用基本的PPFE函数。如果设备不支持SGMII自动协商PHY端,则可能需要调整SerDes寄存器。PPFE 是NXP专有的、微代码驱动的数据包处理硬件。NXP layerscape SDK(LSDK)包括一个开源的Linux驱动程序,它覆盖了基本的网络接口功能。支持典型的数据包处理任务硬件加速的高级驱动程序作为商业应用程序解决方案软件包(ASK)的一部分提供。
PFE 硬件架构
LS1012A PFE 包含两个以太网端口。这两个以太网端口都支持SGMII,其中一个端口支持 RGMII (10/100M 半双工模式或者是 1G 全双工模式),这些配置遵循 IEEE 802.3,支持10/100/1000/2500 Mbps下的全双工和双工操作。PFE 框图如下:
在LS1012A上有两个 MDIO 控制器,从PFE和每个MAC提供的MDIO。MDIO端口按如下方式连接在芯片中。
MDIO1:它可以连接外部片外PHY寄存器和片上SGMII1 PSC寄存器。根据SCFG_MDIOSELCR[MDIOSEL]位进行选择,如下所示:
0: MDIO来自SerDes
1: 来自外部以太网PHY的MDIO
MDIO2:它与片上SGMII2 PCS寄存器连接。
PFE 软件分解以及数据流
本节介绍支持以太网转发引擎(PFE)硬件的Linux驱动程序。EMACs是PFE-IP的一部分,要通过EMAC接口接收/传输数据包,通过编程PFE接口访问它。 在系统级块视图中,从网络设备的角度来看,PFE块可以描述如下: