NXP Designs Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

NXP Designs Knowledge Base

Discussions

Sort by:
本文探讨了如何解决i.MX8MP EMC测试遇到的问题,主要针对辐射超标问题。除了硬件方案,着重探讨了LVDS展频等软件方案。
View full article
This application note explain how to run M kernel PFE master and A kernel PFE slave demo without bootloader support. chinese version: 在真实的产品中,一般会使用一个基于M7_0核的bootloader来启动M和A核,这个bootloader负责所有M核和A核资源的初始化,解决M核和A核的资源冲突,并且启动M和A核。所以理论上运行M PFE Master Mcal驱动加A PFE Slave Linux驱动也是需要一个bootloader的。参考文档《S32G_Bootloader_V*》,Johnli,可以在公开community上搜索获得。 本文讨论一种简易的办法,就是: S32G3 RDB3板子配置为SDcard启动,插入SDcard,里面放有PFE SLAVE驱动的Linux镜像。 上电启动后运行PFE Master工程的lauterbach调试脚本:run_main_G3_REV1_1.cmm,这个脚本会重启整个S32G3。 然后在脚本中用wait 10S的操作,这个时候Linux已经启动,并且使用Uboot的代码调用ATF来完成PFE相关pre-init, partition reset和时钟与管脚初始化(如上分析, EMAC0~2的RGMII IOMUX已经配置好),然后Slave驱动会等待一段时间,等MCAL Master驱动加载,继续运行PFE Master MCAL代码后,Linux端Slave驱动也加载正确。然后就可以测试整个M Master/A Slave Demo。 总结:以上办法实际上是把bootloader应该做的PFE相关硬件初始化工作由Linux来完成,以便快速搭建Demo,这样客户在做真实的产品开发时,可以做为一个NXP release的标准参考。
View full article
This doc explain how to build a PFE master project on M7 and how to integration. chinese version. 目录 1 需要的软件与工具 ...................................................... 2 2 Master Demo编译说明 ............................................... 2 2.1 安装RTD_MCAL驱动 ............................................. 2 2.2 安装PFE_MCAL驱动 .............................................. 3 2.3 编译PFE master工程 .............................................. 3 3 修改为支持RDB板的RGMII接口 ................................ 4 3.1 硬件连接 ................................................................. 4 3.2 软件修改 ................................................................. 5 4 Master Demo测试 ...................................................... 7 4.1 硬件连接 ................................................................. 7 4.2 PFE_EMAC1(RGMII)测试过程 ............................... 7 5 Master Demo代码说明 ............................................... 8 6 集成中注意点 ........................................................... 11 6.1 PFE_PreInit .......................................................... 11 6.2 S32G3中的GENCTRL1的配置 ............................. 12 6.3 RX CLOCK重新锁定 ............................................ 13 7 Demo Debug建议 .................................................... 14 7.1 PFE相关寄存器说明 ............................................. 14   Contents 1 Required software and tools ...................................... 2 2 Master Demo compiling ............................................. 2 2.1 Install RTD_MCAL driver........................................ 2 2.2 Install PFE_MCAL driver ........................................ 3 2.3 Compile PFE master project .................................. 3 3 Change the demo to support RDB3 board RGMII port4 3.1 Hardware design .................................................... 4 3.2 Software modification ............................................. 5 4 Master DemoTest ...................................................... 7 4.1 Hardware design .................................................... 7 4.2 PFE_EMAC1(RGMII) test steps ............................. 7 5 Master Demo code flow ............................................. 8 6 Notes in integration .................................................. 11 6.1 PFE_PreInit .......................................................... 11 6.2 The GENCTRL1 configruation of S32G3 ............. 12 6.3 RX CLOCK relock ................................................ 13 7 Demo Debug suggestion ......................................... 14 7.1 PFE related registers ........................................... 14
View full article
This article explains the details and customization of the S32G M7 core Standby demo. And how to porting to Autosar Mcal demo. Contents 1    Description of reference materials. 2 2    Demo creation and running process. 2 2.1  Demo checkpoints. 2 2.2  The difference between Standby and StandbyRAMboot 4 3    S32G Standby principle and Code Description. 5 3.1  Peripheral initialization function. 5 3.2  standbyramc_cpy(optional) 5 3.3  WKPU_set 8 3.4  standby_modechange. 13 4    VR5510 PMIC Standby principle and code description. 15 4.1  PMIC_initConfig. 15 4.2  PMIC_standbyEntry. 17 5    Customization modification. 18 5.1  Do not enable RTC wakeup feaure. 18 5.2  Eable CAN1_RX wakeup feature. 19 5.3  Only support full boot 21 5.4  Open the DDR related power 21 5.5  Modify debug serial port to UART1. 24 5.6  Modify the device drive clock. 26 5.7  close other non-main core. 30 6    Build a new MCAL demo. 34 6.1  Modify the UART driver 35 6.2  Implement the clock shutdown code. 36 6.3  Configure the power mode switching driver 37 6.4  Confgure the wakeup source. 42 6.5  Add PMIC driver 51 6.6  Main function call routine. 59 6.7  Test 61 6.8  Future development plan. 62 本文说明S32G M7核Standby demo 详细情况及定制,以及如何新建一个mcal demo 录 1    参考资料说明... 2 2    Demo创建运行过程... 2 2.1  创建运行... 2 2.2  Standby和StandbyRAMboot的区别... 4 3    S32G Standby原理与代码说明... 5 3.1  外设初始化函数... 5 3.2  standbyramc_cpy(可选) 5 3.3  WKPU_set 8 3.4  standby_modechange. 13 4    VR5510 PMIC Standby原理与代码说明... 14 4.1  PMIC_initConfig. 14 4.2  PMIC_standbyEntry. 16 5    定制修改... 17 5.1  关闭RTC唤醒功能... 17 5.2  打开CAN1_RX唤醒功能... 19 5.3  只支持full boot 20 5.4  打开DDR相关电源... 21 5.5  修改调试串口为UART1. 23 5.6  修改设备驱动时钟... 25 5.7  事先关掉所有其它的非主核... 29 6    修改为MCAL Demo. 33 6.1  修改UART驱动... 34 6.2  实现时钟关闭代码... 35 6.3  配置电源模式切换驱动... 36 6.4  配置唤醒源... 41 6.5  加入PMIC驱动... 50 6.6  主函数逻辑实现... 58 6.7  运行测试... 60 6.8  未来开发计划... 61   attachment include chinese/english doc, s32ds codes with 2 zip package(remove the .7z), mcal codes.  
View full article
This doc explain how to modify the bootloader to boot linux&mcal, to solve the conflict between bootloader, mcal and linux   本文说明在S32G2 RDB2板上如何定制开发Bootloader,本文示例主要实现功能是: Bootloader启动一个M核,MCAL驱动测试程序,本文分别测试了MCU,DIO,UART的MCAL驱动示例代码。 Bootloader同时启动A53 Linux 目录 1    需要的软件,工具,文档与说明... 3 1.1  软件与工具... 3 1.2  参考文档... 3 1.3  开发说明... 3 2    测试软件安装编译说明... 4 2.1  安装RTD_MCAL驱动... 4 2.2  编译MCAL驱动测试程序(以MCU为例) 5 2.3  优化重排M7 demo镜像及与MPU设置的配合... 5 2.4  去掉CLOCK INIT. 7 2.5  去掉MCU相关INIT. 8 2.6  DIO MCAL程序去掉PORT INIT. 9 2.7  UART MCAL程序去掉PORT INIT. 10 2.8  UART MCAL程序修改CLOCK TREE.. 10 2.9  解决中断冲突... 11 2.10 准备A53 Linux镜像... 12 3    Bootloader工程说明... 13 3.1  关掉XRDC支持... 13 3.2  关掉eMMC/SD支持(可选) 14 3.3  关掉secure boot(可选) 14 3.4  增加MCAL驱动所需要的PORT的初始化... 15 3.5  解决Bootloader,MCAL与Linux的clock冲突... 17 3.6  配置A53 Boot sources: 34 3.7  配置M7 Boot sources: 35 3.8  关闭调试软断点:... 36 3.9  编译Bootloader工程... 37 3.10 制造Bootloader的带IVT的镜像... 38 3.11 烧写镜像... 41 4    测试... 42 4.1  硬件连接... 42 4.2  MCU MCAL+Linux测试过程... 42 4.3  DIO MCAL+Linux测试过程... 43 4.4  UART MCAL+Linux测试过程... 43 5    Bootloader源代码说明... 43 6    Bootloader定制说明... 45 6.1  QSPI NOR驱动说明... 45 6.2  eMMC/SDcard启动支持... 46 6.3  DDR初始化... 46 6.4  Secure Boot支持... 46 7    调试说明... 46 7.1  Bootloader的调试... 46 7.2  MCAL驱动的调试... 46   add one more doc to explain how to modify atf to boot on G3.
View full article
IEEE 1588协议简单理解        IEEE 1588 是一个精密时间协议 (PTP),用于同步计算机网络中的时钟。 在局域网中,它能将时钟精确度控制在亚微秒范围内,使其适于测量和控制系统。 IEEE 1588 标准为时钟分配定义了一个主从式架构,由一个或多个网段及一个或多个时钟组成。 ​       TSN 网络中时间同步协议使用 IEEE 802.1AS 协议,它基于 IEEE 1588 协议进行精简和修改,也称为 gPTP 协议。 ​       IEEE 1588 协议简称精确时钟协议 PTP(Precision Timing Protocol),它的全称是“网络测量和控制系统的精密时钟同步协议标准”(IEEE 1588 Precision Clock Synchronization Protocol)。其工作的基本原理,是通过主从节点之间进行同步数据帧的发送,记录数据帧的发送时间和接收时间信息进行,并且将该时间信息添加到该数据帧中。从节点获取这些时间信息,并计算从节点本地时钟与主时钟的时间偏差和网络节点之间的传输延时,对本地时钟进行纠正,使之与主节点时钟同步。一个 PTP 网络只能存在一个主时钟。 ​ PTP 协议主要分为两大部分来实现时钟同步功能: ​ 1、建立同步体系: ​       协议使用最佳主时钟算法(Best Master Clock Algorithm,BMCA),通过选取主时钟,建立主从拓扑关系,进而在整个 PTP 网络中建立起同步体系。 ​ 2、同步本地时钟: ​       协议使用本地时钟同步算法(Local Clock Synchronization Algorithm,LCS),通过 PTP 数据报文在网络主从节点之间的交换,计算各从节点本地时钟与主时钟间的时间偏差,调整本地时钟,使之与主时钟同步。 IEEE 1588v1 ​       整个 PTP 网络内的时钟可按照其上 PTP 通信端口的数目来划分成普通时钟(Ordinary Clock,OC)与边界时钟(Boundary Clock,BC):普通时钟只存在一个,而边界时钟则存在多个。一般在确定性不高的网络节点处使用边界时钟,例如交换机或者路由器一般用作边界时钟,如下图所示。在每个端口上,PTP 通信都是独立进行的。 1、边界时钟: ​      边界时钟上只允许存在一个从端口,与上级节点的主端口通信,将其本地时钟与级主端口进行同步。其余端口为主端口,与下游节点的从端口进行通信。边界时钟可以连接不同的网络协议。 ​ 2、同步体系建立流程: ​   (1)初始状态,各个节点端口会在指定的时间内侦听网络中的 Sync 数据帧; 若接收到 Sync 数据帧,节点端口将根据最佳主时钟算法决定端口状态。若没有收到 Sync 数据帧,该节点状态变更为 Pre_Master,并将自己假定为主时钟节点。此时节点端口状态表现为主时钟,但是并不发送 Sync 帧。 ​   (2)端口状态在一定时间内保持 Pre_Master: 若在端口指定时间内接收到 Sync 数据帧,则该端口状态由最佳主时钟算法决定。 若判定端口为主时钟,则将周期性地发送 Sync 帧;若判定为从时钟,则接受 Sync 帧,并计算偏差,纠正本地时钟。 ​ 若在该时间段内端口没有收到 Sync 数据帧,则将状态变更为主时钟,并且开始定时发送 Sync 数据帧。 ​   (3)主时钟和从时钟的状态随着时钟性能与运行状态的变化而变化。下图展示了 BMCA 中状态转移。 3、时间同步建立流程: ​ 如下图PTP同步原理         如图所示,Master为网路中的同步时钟源,可以认为其与UTC或者GPS时无限接近。Slave为网络中需要被同步设备。假设从Master到Slave的路径符合对称路径,那么路径上的延时我们设Delay,然后设备Master和设备Slave之间待同步的时间差值为Offset,即Slave比Master在同一时刻慢Offset。         Slave设备根据算出的Offset即可以进行本地时钟校准。但是1588V1协议依赖于链路的对称性,即Master到Slave与Slave到Master时延一致,这在实际网络状况下很难满足,故需要额外的不对称算法进行链路延时差计算和补偿校准。   IEEE 1588v2 ​IEEE1588V2在IEEE1588V1版本上做了改进和扩展。主要包括: ​ 1.新增点到点路径延时测量的独立消息模式。 端口 A 与端口 B 间的路径延迟时间 Delay 为: ​        在 PTPv1 中,平均路径延迟测量时通过 Sync 帧与 Delay_Req 帧配合使用的,但是在 PTPv2 中却不需要 Sync 帧的参与,仅通过 PDelay_Req 数据帧系列来进行测量。这是一个独立的延迟测量过程,不依赖 Sync 帧和同步体系建立的参与,使得测量精度有所提高,并且可以经过多次测量求得平均值得到更为准确的路径延迟。另一方面,如果网络中的同步体系发生改变,这时不需要重新计算该节点间的路径延迟,直接使用之前已测得的延迟数据,大大增强了协议执行的效率,使得协议更为方便灵活。在PTPv2 中,利用 PDelay_req 数据帧系列已成为主要的测量路径延迟方法。 ​ 2、新增透明时钟模型 ​        在 PTPv1 中,网络中间节点均采用边界时钟模型。与网络中唯一的主时钟,即一个普通时钟连接的边界时钟,其上唯一的从端口接收主节点发送的同步数据帧,与主时钟实现同步,其余的主端口和与之相连的其他边界时钟发送同步数据帧,最后同步到网络边缘的普通时钟,这样便实现了整个网络的时间同步。这种方法虽然可行,但是由于这种方式是逐级同步,所以距离主时钟越远的节点,同步精度越低。 ​        当网络中的一些节点不需要进行时钟同步或者不具备同步功能时,便可采用透明时钟模型。透明时钟不像 BC/OC 模式那样,需要每个节点都与主时钟进行同步,它的端口只对协议数据帧进行转发,并将计算出的数据帧滞留时间添加在校正域中。这种方式将 PTP 数据帧的处理变得更为简单,降低了网络中 PTP 协议的实施难度,同时提高了各从节点的同步精度。 ​ 透明时钟有模型两种:端对端透明时钟,和点对点透明时钟。 ​     (1)端对端(E2E)透明时钟 ​ E2E 透明时钟对网络中普通数据帧不做任何处理,仅进行转达让其正常通过。但是对于 PTP 事件数据帧,则将他们从接收端口到发送端口间的驻留延迟时间累加到数据帧中的修正域,用以弥补 PTP 数据帧在经过其自身所带来的延迟误差。 ​     (2)点对点(P2P)透明时钟 ​ 点对点(P2P)透明时钟只转发特定的 PTP 报文,包括 Sync 帧、Follo_Up 帧和Announce 帧等。并且会采用 Pdelay_Req 数据帧系列计算每个端口与所连接的端口间的路径延迟时间,再与端口间延迟时间合并添加到时间修正域,来补偿数据帧从源端口到点对点透明时钟出端口的时间延迟。 ​ 3、增加单步时钟模型 ​        单步时钟模型解决了 Follow_Up 帧与 Sync 帧匹配问题。PTP 协议基本的同步过程采用双步模式,即主时钟节点发送 Sync 帧,和带有 Sync 帧发送时间的Follow_Up帧。这种方式虽然能提高 Sync 帧时间戳标记的精度,提高同步效果,但是在网络负载较大的情况下,数据帧很有可能发生丢失或者阻塞,造成两种数据帧的匹配出现差错。 ​        在 PTP 数据帧中设置一个标志,来使用单步模式,将 Sync 帧的发送时间与数据帧中的时间标签的差值作为传输延迟,并将其累加到修正域中。这样主时钟便通过单独的 Sync 帧而不需要 Follow_Up 进行时间的同步校准工作。 ​        单步模式可以减少网络流量,提高网络负载较大时同步的可靠性。单步模式需要额外的辅助硬件,来帮助计算时间修正值并将其累加到校正域中,这对网络的实时性有比较高的要求。 BMCA ​        BMCA,即最佳主时钟算法,它选择网络中性能最佳的时钟作为主时钟,并以 此建立网络拓扑,生成同步体系,进而实现时钟同步功能。 ​        最佳主时钟的选取是通过Announce帧在网络中各节点的传输,比较各个节点上的时钟属性(比如是否将时钟指定为主或者从时钟),用于标识精度的时钟等级,以及用于标识时钟源类型的时钟类型(比如铷钟、铯钟等),还有表示时钟偏移、方差等的时钟特性、时钟地址以及时钟端口号等特征来选择最佳主时钟,当其他时钟特征都一样是,协议会将端口号最小的节点时钟作为主时钟。IEEE 1588协议会以主时钟节点作为根节点形成树形拓扑结构,并且为避免生成回路,那些竞争失败的节点端口,协议将他们定义为被动或者禁用状态。
View full article
         随着近年来人们对日常出行品质的提高,电动自行车(包括共享类)市场得到了飞速发展,其功能日趋复杂智能。作为电控部分的“三大件”,电驱,主控和仪表也在不断升级迭代,其中电驱发展经历了最早期的直流有刷电机驱动到直流无刷方波驱动再到如今的 FOC 正弦波驱动,主控从以前附属在电驱或者仪表里的边缘化概念到如今独立出来的中心化,仪表则从普通的段式 LED 显示到如今尺寸越来越大功能越来越丰富的彩屏显示,而相对应的负责沟通互联“三大件”的通信总线也从传统的单总线到 TTL UART 到 RS485 再到如今逐渐展露头脚的 CAN 总线。对于电动自行车这种大众型消费市场来说,这些电控部分的升级换代给MCU 带来新的机遇的同时也对其性能,外设资源和价格带来了极大挑战。基于此, 针对三大件之一的仪表市场,NXP 开发了一套基于高性价比 LPC5506 系列 MCU 的 E-Bike 迈速表中低端显示屏方案。 系统框图: 主要特性: 4.5v~85v宽范围电压输入,支持24v,36v和48v锂电池组电源直接接入; 主控LPC5506支持CAN通信,8080 16bit/8bit LCD接口,且封装为LQFP 10*10mm,利于仪表小型化; 支持3.5寸320*480 16bit及以下尺寸的TFT LCD显示屏,预留I2C接口的电阻屏触摸控制芯片; 支持开源免费的ZLG AWTK GUI和LittleVgl GUI框架; 板载光敏传感器,可用于根据环境光自动调节LCD背光亮度; 板载六轴Motion Sensor(MPU6050),可用于转把方向检测,防盗检测和自行车摔倒检测等; 板载GPS和BLE模块,可用于定位,精确授时校准,行车轨迹离线存储或者与手机蓝牙通信; 板载4MB SPI Flash,用于图片和字体资源,GPS坐标轨迹存储和其他重要信息存储; 预留了USB Type-C电源供电端口和调试串口,方便工程师调试。 软件环境:        当前版本的软件代码工程有三份,一份为基于ZLG AWTK GUI的完整E-Bike迈速表工程,可显示车速仪表盘,里程,档位和电池电压等行车参数,也可以进入简单的功能设置界面浏览当前系统信息,且支持通过指定的CAN帧格式更新当前GUI界面的参数信息。一份为基于NXP GUIGuider图形化工具设计开发的LVGL版本E-Bike迈速表工程,分为3个子界面显示车速和骑行状态等详细信息。第三份为移植到本参考设计上的LVGL官方Demo例程,里面包含了配置好的EZH驱动库和LittleVgl基本的设备输入输出框架,用户可以基于此例程灵活开发定制自己的LVGL based其他GUI应用。        目前基于ZLG AWTK和LVGL GUI的E-Bike迈速表显示屏方案在经过优化之后对主控MCU的资源的占用以及GUI整体刷新性能如下表1,由于两个工程所使用的GUI素材和布局不一样,所以不要对两者的资源占用和性能参数做对比。他们都可以满足大部分客户的应用需求(>15fps)。如果将显示屏的分辨率降低到320*240及以下小尺寸的情况下,整个系统的资源占用会相应的减小,刷新性能也会得到更大的提升。 表1 方案资源占用及GUI刷新性能(分辨率320*480 16bit) Demo Code Flash RAM Refresh Rate AWTK GUI Version 202KB 61KB 22fps LVGL GUI Version 206KB 78KB 17fps 写在最后:        本参考设计的初衷是针对E-Bike中低端仪表显示屏市场提供一个高性价比的选择,同时也可以作为一个对于显示,CAN通信和小封装有类似需求的平台性的参考方案推广,比如电摩,带显示屏的便携式医疗设备和工业IoT设备等,希望此方案能给市场带来更好的用户体验和高性价比的选择。 注:由于代码工程超过25M,不能上传到该Community,如有需要请联系NXP销售或FAE索取。
View full article
  本文说明S32G  RDB2板Linux板级开发包BSP32 的ATF细节,以帮助客户了解S32G的ATF是如何运行的,以及如何修改到客户的新板上。   从BSP32开始,默认启动需要ATF支持,所以部分定制需要移动到ATF中,Uboot会简单很多。 请注意本文为培训和辅助文档,本文不是官方文档的替代,请一切以官方文档为准。   目录如下: 目录 1    S32G Linux文档说明... 2 2    创建S32G RDB2 Linux板级开发包编译环境... 3 2.1  创建yocto编译环境: 3 2.2  独立编译... 8 3    NXP ATF 原理... 13 3.1  AArch64 Exception Leve: 13 3.2  ATF原理... 14 3.3  ATF目录 结构... 16 3.4  ATF初始化流程... 25 3.5  NXP ATF的SCMI支持... 28 3.6  NXP ATF的PSCI支持... 32 3.7  NXP ATF OPTEE接口(未来增加)... 36 4    ATF 定制... 36 4.1  修改 DDR配置... 36 4.2  修改调试串口与IOMUX定制说明... 39 4.3  启动eMMC定制说明... 48 4.4  I2C与PMIC定制说明... 58
View full article
This doc explain how to install S32G design studio& RTD SDK. contributed by Tony.Zhang
View full article
This project include the codes and doc to support optimize the EMI of S32G by frequency changing and SSC. Contents as follows: 目录 1 展频的基本概念 ......................................................... 2 2 获取测试用uboot源代码 ............................................. 5 3 DDR_PLL的改频 ........................................................ 5 4 DDR_PLL的展频 ........................................................ 9 5 总结修改后的源代码 ................................................ 17
View full article
This doc explain how to support a new QSPI nor for boot, SDK and Linux, Contents as follows: 目录 1 硬件设计 .................................................................... 2 2 所需工具和相关资料 .................................................. 5 3 ROM Code的启动流程 ............................................... 5 4 S32G QSPI NOR flash配置表头定制 ......................... 7 4.1 S32G QSPI NOR启动配置表信息 .......................... 7 4.2 目前支持的配置表头分析说明 ............................... 10 4.3 LUT构成与Flash write Data说明 ........................... 16 4.4 具体分析已有的配置表头的LUT与Flash write Data的 配置方法 ...................................................................... 22 4.5 支持一款新的QSPI NOR Flash示例1:Micron........ 28 4.6 支持一款新的QSPI NOR Flash示例2:Winbond .... 31 5 使用IVT打包配置头 .................................................. 33 6 使用IVT工具中的flash image工具烧写镜像到QSPI NOR 中 34 7 软件定制M7 ............................................................. 35 8 软件定制uboot ......................................................... 37 9 软件定制Linux Kernel .............................................. 40 9.1 支持美光8bit DDR 模式(未验证) .......................... 44 9.2 支持1bit SDR fast read 模式 ............................... 46 10 Debug过程中需要注意的几点 .................................. 49 10.1 启动时ROM Code读取QSPI NOR时钟仅有12Mhz左 右 49 10.2 比较大的镜像如果不加参数头,无法从QSPI-NOR上启 动 55   add a new doc for lauterbach driver: S32G How to Develop the QSPI-Nor Lauterbach Script 目录 1    背景和参考资料... 2 1.1  背景说明... 2 1.2  参考资料... 2 2    高速读开发流程... 3 2.1  时钟相关修改... 5 2.2  Lut配置说明... 6 2.3  QSPI NOR控制器配置... 12 2.4  QuadSPI_Write32BytesDOPI读函数分析... 15 2.5  增加AHB read寄存器配置... 17 2.6  测试结果... 18 3    高速写开发流程... 19 3.1  Erase lut分析及调用... 19 3.2  Write lut分析及调用... 21 3.3  测试结果... 22 3.4  Lauterbach烧写镜像脚本说明... 22
View full article
This doc explain how to optimize the Linux boot time, Contents as follows: 目录 1 默认BSP28 Linux内核的启动时间分析和优化方向 ..... 2 2 UBoot的优化 .............................................................. 3 2.1 缩小Uboot的DTS尺寸 ............................................ 3 2.2 缩小Uboot的尺寸 .................................................... 4 2.3 去掉等待3S输入时间 .............................................. 4 2.4 配合内核修改的Uboot参数 ..................................... 4 2.5 关闭串口调试信息 .................................................. 5 2.6 MMC read的方法来读取内核和DTB ....................... 5 3 Kernal的优化 ............................................................. 5 3.1 DTB中去掉不用的驱动和代码 ................................. 5 3.2 内核中去掉不用的平台与驱动及相关代码 ............... 6 3.3 内核中去掉不用功能,缩小内核大小 ...................... 7 3.4 去掉initramfs支持 ................................................... 7 3.5 关闭调试信息 .......................................................... 7 3.6 提前eMMC驱动加载时间 ........................................ 7 3.7 将Kernel与DTB打包在一起..................................... 8 4 Rootfs+应用程序的优化 ............................................. 8 5 最终全部启动时间比较 ............................................. 12
View full article
This doc explain our Linux BSP driver and how to custom them. Contests as follows: include bsp30/32 目录 1 S32G Linux文档说明 ................................................. 2 2 创建S32G RDB2 Linux板级开发包编译环境 .............. 2 2.1 创建yocto编译环境: ................................................ 2 2.2 独立编译 ................................................................. 8 3 Device Tree ............................................................. 11 3.1 恩智浦的device Tree结构 ..................................... 11 3.2 device Tree的由来(no updates) ............................ 13 3.3 device Tree的基础与语法(no updates) ................. 15 3.4 device Tree的代码分析(no updates) .................... 37 4 恩智浦S32G BSP 包文件目录结构 .......................... 70 5 恩智浦Linux BSP的编译(no updates) ...................... 72 5.1 需要编译哪些文件 ................................................ 72 5.2 如何编译这些文件 ................................................ 73 5.3 如何链接为目标文件及链接顺序 ........................... 74 5.4 kernel Kconfig ...................................................... 76 6 恩智浦BSP的内核初始化过程(no updates) .............. 76 6.1 初始化的汇编代码 ................................................ 78 6.2 初始化的C代码 ..................................................... 82 6.3 init_machine ......................................................... 94 7 恩智浦BSP的内核定制 ............................................. 97 7.1 DDR修改 .............................................................. 98 7.2 IO管脚配置与Pinctrl驱动 .................................... 100 7.3 新板bringup ........................................................ 121 7.4 更改调试串口 ...................................................... 125 7.5 uSDHC设备定制(eMMC flash,SDcard, SDIOcard) 129 7.6 GPIO驱动 ........................................................... 137 7.7 GPIO_Key 驱动定制 .......................................... 145 7.8 GPIO_LED 驱动定制 ......................................... 150 7.9 芯片内thermal驱动 ............................................. 155 7.10 CAN接口驱动 ..................................................... 157 7.11 I2C及外设驱动 .................................................... 162 7.12 SPI与SPI Slave驱动 ........................................... 183 7.13 Watchdog test. ................................................... 190 7.14 汽车级以太网驱动定制 (未验证) (未完成) ........... 191
View full article
This doc explain our Mcal driver and how to custome them. contents as follows: 目录 1 AutoSAR MCAL基本概念 .......................................... 2 1.1 AutoSAR目标 ......................................................... 2 1.2 AutoSAR概念 ......................................................... 2 1.3 AutoSAR基本方法 .................................................. 2 1.4 BSW(Basic Software) ............................................. 4 1.5 NXP Basic AutoSAR软件 ....................................... 4 1.6 RTE与BSW的配置 ................................................. 5 1.7 BSW的配置流程 ..................................................... 6 1.8 MCAL驱动 .............................................................. 7 2 MCAL工具 ................................................................. 7 3 MCAL说明 ................................................................. 8 3.1 MCAL的下载与说明 ................................................ 8 3.2 EB Tresos的下载,安装 ....................................... 13 3.3 RTD-MCAL安装 ................................................... 16 3.4 Trace32的下载与安装 .......................................... 18 3.5 样例工程的编译,运行 ......................................... 20 4 MCAL驱动配置与定制 ............................................. 40 4.1 MCU ..................................................................... 45 4.2 PORT ................................................................... 59 4.3 DIO ....................................................................... 69 4.4 FlexCAN ............................................................... 71 4.5 FlexLin ................................................................. 87 4.6 GMAC .................................................................. 93 4.7 I2C ..................................................................... 101 4.8 PMIC .................................................................. 108 4.9 PMIC WDOG ...................................................... 127 4.10 WDOG ............................................................... 137 4.11 UART ................................................................. 144 4.12 SPI ..................................................................... 149 4.13 PWM .................................................................. 165 4.14 ADC ................................................................... 171 4.15 Thermal .............................................................. 177
View full article
This doc explain  where is the design resource and what they are of S32G in Chinese,  Contents as follows: 目录 1 www.nxp.com 官网资源 ............................................. 2 1.1 www.nxp.com Documentation ................................ 4 1.2 www.nxp.com Tools&Software ............................. 10 2 Flexera资源 ............................................................. 18 2.1 Automotive HW-S32G Evaluation Board .............. 21 2.2 Automotive HW-S32G GoldBox ........................... 22 2.3 Automotive HW-S32G RDB2(RDB不再说明) ....... 22 2.4 Automotive SW-S32G2 Standard Software.......... 23 2.5 Automotive SW-S32G2 reference Software ......... 28 2.6 Automotive SW-S32G2 Tools .............................. 30 3 Docstore资源 ........................................................... 31
View full article
         LittleVgl作为一款开源免费的嵌入式GUI得到越来越多工程师的厚爱,我们可以看到很多小型HMI项目或者一些开源社区都在使用它作为GUI的框架,同时也受益于用户群的不断扩大以及一些半导体原厂的青睐(通俗点就是说有赞助有钱儿了),LittleVgl本身也在快速的不断更新迭代,易用的组件和相关的辅助开发工具在不断的增加,而RT1050/1060/1170系列作为一款带有LCD控制器的平台,自然成为了LittleVgl最佳的载体之一了。         LittleVgl本身的组件已经很丰富了,但是遗憾的是一直没有加入对中文输入法Keyboard的支持(看了下它在Github上的Contributor List没有华人),这让它在我们国内的应用有了一些限制(注意在某组件上显示中文和真正的中文输入法是不同的概念),所以本项目旨在解决该问题,即把一个简单轻量的中文输入法框架嵌入到LittleVgl并跑在RT1050平台上,并把它开源开放出来,所以不要小看了我的“公益心”,哈哈。下图是该示例设计的UI界面        下面进入正题,首先把测试环境给出来,方便有兴趣有能力的朋友可以自行搭建(当然应一部分偷懒的强烈需求,我随本文档也附赠了完整的移植好的工程),然后我再一步一步地给出如何移植这套框架到用户自己的工程里,当然我已经把代码本身做了很多优化,尽量减小环境依赖,力求最少步骤的移植过程,理论上来讲不太会出现移植后编译出一堆Error的问题,咳咳。。。下面我们赶紧开整吧: 测试环境: SDK版本:SDK_v2.9.1 SDK参考例程:boards\evkbimxrt1050\littlevgl_examples\littlevgl_demo_widgets LittleVgl版本:v7.4.0 IDE工具:Keil_v5.31 开发板:MIMXRT1050-EVK + 480*272 RGB LCD屏 软件说明: 我们先看下这套中文输入法所需的几个文件,如下图所示,.c和.h文件加起来一共7个,其中nxp_logo.c只是我额外加的一个NXP的官方logo图标转成的C数组文件供littleVgl调用显示,属于锦上添花的东西,可有可无,真正跟输入法相关的是剩下的6个文件,下面我们逐一介绍下这几个文件的作用: 1. qwerty_py.c/.h:        实际上这两个文件才是这套全键盘拼音中文输入法的核心框架,实现了对输入的拼音字母进行索引匹配对应的汉字候选列表,这部分我是移植了如下链接中网友分享的代码,所以这两个文件我的角色只是一个大自然搬运工,不过说实话我是很感激该网友的无私分享的(这也是我一直推崇开源分享精神的源动力),之前对平时使用的各种输入法里面的算法原理一直充满好奇,直到看了这篇文章后才豁然开朗,“So that is what it is!”,让我获益匪浅(可能人的学习曲线和知识体系就是这样一点一滴的积累吧),而且更关键的是,如果让我继续往下开发诸如拼音联想和多汉字输入等功能的话,我更多关心的可能只是逻辑搭建的工作量问题,而不是纠结于Yes or No的问题了,因为咱已经了解了其最底层的工作原理了,所以很多复杂的事情,我们如果能抽丝剥茧的找到其最底层的本质(虽然这真的很难),那很多让人抓耳挠腮的问题很快就可以理清思路。说到这里我思维又发散了,呵呵,我想起让Linus Torvalds等一波老大神们一直头疼的Linux内核维护后继无人的问题,其实我的个人理解有很大一部分原因是如今的Linux太庞大了以至于几乎没有后辈的人对Linux的理解能赶上这些老辈大神,而这些老辈大神的最大优势是他们创建了Linux最早期的底层框架而且难能可贵的是一直在follow Linux每个版本的历史。总之,推荐大家看看如下这篇文章吧(实际上主要内容也都是代码),希望能各有所获; https://www.amobbs.com/thread-5668320-1-1.html?_dsign=0939dcbd 2. lv_chs_keyboard.c/.c文件:        这部分就是我的工作了(咱也不能啥都搬运…,这是体现咱的value的东西不是),我把它当作littleVgl的一个补充组件来写的,里面的大多数API参考官方littlevgl的lv_keyboard.c,所谓的文章开头的嵌入中文输入法到LittleVgl GUI环境中实际上就是这两个文件干的活,即将上面提到qwerty.c/.h实现的拼音输入法与LittleVgl框架结合到一块,起到一个桥梁的作用,所以如果你想把这套中文输入法嵌入到其他GUI环境中的话(比如emWin,GUIX,TouchGFX等),那主要的工作就是参考这两个文件的内容了; 3. lv_font_NotoSansCJKsc_Regular.c字体文件:        虽然littleVgl官方源码包里自带了一个中文字体文件(\lvgl\src\lv_font\lv_font_simsun_16_cjk.c),但是它只包含了1000个左右最常用的字,我实际体验了下很多我们想用的字都找不到,所以这个时候就需要自己去做一个更全一点的字体库了。这里面涉及到两个问题需要考虑,第一是很多我们常见的中文字体是收费的(咱PC机的Microsoft Office套件里的中文字体都是微软付费买的,所以咱也理解下早年正版Windows为啥辣么贵了,那你问为啥现在便宜了?因为人家现在不靠这个赚钱了呗),第二个是字体转换工具的问题,我们网上找到的字体都是TTF或者OTF格式的,但littleVgl是不认的,需要转换成它支持的字体格式。        对于第一个问题,我网上搜了好久最终选择了目前用的比较多的Google开源免费的字体,Google真乃金主也,它维护的网站里面字体各种各样啥都有且是开源免费的,如下链接,我选择的是NotoSansCJKsc字体(最后面的sc表示simplified Chinese,简体中文),然后它里面又包含了各种字形(regular, bold, light等),可以根据需要自行选择,整个包很大(100多MB),拆分成不同字形的就小了(每个14~16MB左右); https://www.google.com/get/noto/        对于第二个字体转换工具的问题,LittleVgl官方自带了一个字体转换工具(online font converter),我个人觉着不太好用(对OTF字体支持的不行),这里推荐阿里大神自己做的一个LittleVgl字体转换工具(LvglFontTool),非常方便好用,且支持加入Awesome图标; http://www.lfly.xyz/forum.php?mod=viewthread&tid=24&extra=page%3D1        关于字体这部分我需要再补充个问题,就是它占用的memory大小,毕竟我们是在嵌入式MCU平台Flash和RAM的资源是受限的,如下图所示,该字体文件占用大概1Mbytes的rodata空间(即可寻址的Flash空间,当然该大小可以通过在上图转换工具中增减一些文字来调 整),所以在移植本套输入法之前需要预留足够的Flash空间,当然对RT平台来说这部分还好,毕竟其本身就外扩至少几MB空间的QSPI Flash作为存储空间的。 4. lv_demo_chineseinput.c/.h文件:        这两个文件属于应用层实现了,主要关注该文件中下图的ta_event_cb函数(即textarea事件的callback,点击文本框的输入时回调),在里面我们需要按照1,2,3去调用即可(这三步的API均在lv_chs_keyboard.c/h文件里实现);        至此,这套全键盘拼音中文输入法框架所需的几个文件就介绍完了,用户只需要把这几个文件放到自己的工程设置好文件搜索路径,并参考随本文档附带的代码工程示例,再结合自己产品的GUI样式,把这套中文输入法嵌入到自己应用当中。
View full article
Introduction Background There is not an official data for PCIe latency and performance, while some customers pay attention to and request these data. This paper utilizes Lmbench lat_mem_rd tool and DPDK qdma_demo to test the PCIe latency and performance separately. Requirement 1) Plug Advantech iNIC (LX2160A) into LX2160ARDB. 2) Configure EP ATU outbound window at console. 3) Apply the patch to lmbench-3.0-a9, and recompile lmbench tool. 4) There is qdma_demo in iNIC kernel rootfs by default. Test Environment     PCIe Latency Overview   Direction Description Latency(ns) PCIe(Gen3 x8) – DDR read from EP to RC 900 PCIe – PCIe – DDR Read from EP to EP (through CCN-508) 1550 PCIe – PCIe – DDR Read from EP to EP (through HSIO NOC) 1500 Setup 1) LX2160ARDB 2) iNIC – PCIe EP Gen3 x8 with LX2160A 3) Test App running at iNIC: Lmbench lat_mem_rd   # ./lat_mem_rd_pcie -P 1 -t 1m   PCIe Performance Overview    Direction Throughput (Gbps) PCIe EP to EP 50   Setup 1) LX2160ARDB 2) iNIC – PCIe EP Gen3 x8 with LX2160A 3) Test App : qdma_demo running at iNIC   $./qdma_demo -c 0x8001 -- --pci_addr=0x924fa00000 --packet_size=1024 --test_case=mem_to_pci Peer to Peer On LX2 Rev. 2      Products   Product Category NXP Part Number URL MPU LX2160A https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/layerscape-processors/layerscape-lx2160a-lx2120a-lx2080a-processors:LX2160A LSDK software Layerscape Software Development Kit https://www.nxp.com/design/software/embedded-software/linux-software-and-development-tools/layerscape-software-development-kit:LAYERSCAPE-SDK   Tools    NXP Development Board URL LX2160ARDB https://www.nxp.com/design/qoriq-developer-resources/layerscape-lx2160a-reference-design-board:LX2160A-RDB Advantech ESP2120 Card      
View full article
        S32G just support serial download a M7 image to run by internal rom codes, our S32G DS IDE have a flash tools to use this feature to burn the image to external device. So current image burn method will divide into 2 step: 1: burn a uboot into the external device by S32G DS flash tools. 2: reboot the codes with uboot and run with network to burn the linux image into external device.      which need two working place on manufacture line, and customer wish to have a one time on-line tools, which means we need use serial port to boot uboot directly but S32G rom codes do not support it.       We have a reference tools of S32V but which IP difference is big between on S32V and S32G, So we can not reuse it and have to develop a new one.       The development working include: 序号 开发工作 说明 开发者 1 开发 根据S32G的serial boot协议要求,开发PC端的串口工具来下载M7镜像 John.Li 2 开发 根据自定义协议要求,开发PC端的串口工具来下载A核Bootloader到SRAM中 John.Li 3 开发 根据自定义协议要求,开发M7镜像的串口接收与Checksum逻辑 John.Li 4 开发 修改M7镜像支持串口0 John.Li 5 开发 开发实现M7镜像的串口单字节同步收发函数 John.Li 6 开发 开发实现A53启动功能 John.Li 7 调试与Debug 调试解决串口接收乱码问题(Serial boot rom codes仍然在回送消息串口) John.Li 8 调试与Debug 提供 解决A核启动串口halt思路(Serial boot rom codes仍然占用串口) John.Li 9 调试与Debug 优化M7镜像,缩小大小 Tony.Zhang 10 调试与Debug 根据M7镜像和A核 Uboot在SRAM中的内存分配要求,重排M7镜像位置,避免冲突 Tony.Zhang 11 调试与Debug 在M7中初始化SRAM空间 Tony.Zhang 12 调试与Debug 在M7中设置SRAM可执行空间 Tony.Zhang 13 调试与Debug 调试解决由于cache没有及时回写导致的下载镜像错误的问题 Tony.Zhang 14 调试与Debug 集成,调优与文档 John.Li   Pls check the attachment for the doc/codes/binary release which include:    Release      |->M7: Linflexd_Uart_Ip_Example_S32G274A_M7: S32DS M7工程。      |->PC: s32gSerialBoot_Csharp: PC端的Visual Studio的C#的串口工具工程。      |->Test:      |    |-> 115200_bootloader.bin: S32DS M7工程编译出来的bin文件,波特率为115200      |    |-> 921600_bootloader.bin: S32DS M7工程编译出来的bin文件,波特率为921600      |    |->load_uboot.bat: 运行工具的批处理文件,运行成功后打开串口可以看到Uboot执行,默认使用的波特率是115299         |    |->readme.txt:其它测试命令 |    |->s32gSerialBoot.exe:编译出来的PC端串口工具 |    |->u-boot.bin: BSP29默认编译出来的u-boot.bin.      Product Category NXP Part Number URL Auto MPU     S32G274     https://www.nxp.com/s32g    
View full article
Most of the Ethernet PHY support multi-functions and provide much more flexible configure capability to fine tune timing or function enable by configure their registers. Ethernet PHY registers tool provide a simple way to read/write PHY registers by MDC/MDIO. This will help in development or issue debug. 
View full article
  i.MXRT系列具有内部ROM,并且ROM中暴露出了一些功能接口可供用户直接使用。 本文介绍了Flexspi Nor ROM APIs, 并且列举了API相关的参数及示例程序。 通过这些API可以很方便的操作外部Flexspi Nor Flash。用户无需关系细节。   Products Product Category NXP Part Number URL MCU MIMXRT1060 https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-... MCU MIMXRT600 https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-...   Tools NXP Development Board URL i.MX RT1060 Evaluation Kit https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/mimxrt1060-evk-... i.MX RT600 Evaluation Kit https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt600-eval...   SDK SDK Version URL MCUXpresso SDK Builder https://mcuxpresso.nxp.com/en/welcome
View full article