S32G PFE_M_Master_A_Slave_Simple_Demo

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

S32G PFE_M_Master_A_Slave_Simple_Demo

S32G PFE_M_Master_A_Slave_Simple_Demo

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的标准参考。

Labels (1)
Tags (1)
Attachments
Comments

Hello, 

Is there an English version of this Demo?

updated eng. version

Hi john,

我在参考文档《S32G_Bootloader_V*》的指导下,在bootloader里添加了PFE MAC2的时钟初始化,PFE MAC2相关引脚的初始化,并在bootloader源文件中时钟初始化之前设置了RGMII模式,并且在PFE MCAL层驱动中把时钟初始化和引脚初始化相关代码注释了,上电启动代码后,通过打印能看到PFE初始化通过,但是网口就是ping不通。

在PFE MCAL层驱动中,clock初始化保留,程序启动后PFE MAC2口能ping通,可以定位到应该是时钟问题吧,但是我不知道具体是哪个时钟没有配好,下面是我在bootloader中的相关配置,您可否提供一点建议屏幕截图 2023-08-15 091501.png屏幕截图 2023-08-15 091622.png屏幕截图 2023-08-15 091643.png屏幕截图 2023-08-15 091721.png屏幕截图 2023-08-15 091749.png屏幕截图 2023-08-15 091816.png

1:你在bootloader中将PFE时钟的根源配置后,PFE自己的时钟由他自己来配置即可。

2:  在pfe自己的sample中:

1.1    PFE_PreInit

在Demo代码中的调用顺序是:

\example_application\src\sample_app_ethswt_initialization.c

SampleAppInitTask

|-> Eth_43_PFE_PreInit

|-> Mcu_InitClock

|-> Serdes_Init

|-> SampleAppEthInit

|    |-> Eth_43_PFE_Init

      所以Eth_43_PFE_PreInit是先于Mcu_InitClock调用的,在集成文档:C:\NXP\SW32G_RTD_4.4_3.0.2\eclipse\plugins\Eth_43_PFE_TS_T40D11M09I7R0\doc\ AUTOSAR_MCAL_ETH_43_PFE_IM.pdf说明如下:

Johnli_0-1692064714958.png

 

Eth_43_PFE_PreInit->Eth_PFE_LLD_InitInterfaces->

*(uint32_t *)(uintptr_t)(S32G_GPR_BASE + PFE_EMACX_INTF_SEL_OFF) |= PFE_EMACX_SET(u8EmacIdx, u8MiiMode);

      

Johnli_1-1692064714970.jpeg

 

0x460a411高四位为“0000”时,表示接口为GMII or MII “0001”时表示接口为RGMII“0010”表示接口为SGMII

因为大部分量产产品,会将clock初始化在bootloader中一次完成,所以相当于函数Eth_43_PFE_PreInit的实现需要由PFE驱动移植到bootloader中的Mcu_InitClock调用前,请注意。

hi john,

   感谢您能回复!

   PFE_PreInit是指把 *(uint32_t *)(uintptr_t)(S32G_GPR_BASE + PFE_EMACX_INTF_SEL_OFF) |= PFE_EMACX_SET(u8EmacIdx, u8MiiMode);这句话放在bootloader 程序中的Mcu_InitClock调用前对吗?“PFE自己的时钟由他自己来配置即可”具体是啥意思?应该不用在PFE应用中再去调用Mcu_InitClock了吧

这个函数的执行,需要在pfe clock inital之前执行。

 

hi john,

还是不行,我用的是s32g2 rdb开发板,目前没有头绪。我还有其它需要注意的地方吗

我的意思是:

你的回复“在PFE MCAL层驱动中,clock初始化保留,程序启动后PFE MAC2口能ping通

我的回复:“1:你在bootloader中将PFE时钟的根源配置后,PFE自己的时钟由他自己来配置即可。

这样也行,就是bootloader不需要去配置pfe mcal时钟,只保证他的源时钟配置正确就可以了。

然后pfe自己去初始化自己的时钟,在他的代码里,PFE_PreInit是在时钟初始化之前的。

 

hi john,

  如何去配置pfe mcal时钟呢?如果在pfe程序中调用Clock_Ip_Init()这个API函数去配置时钟,相当于对整个soc的时钟树又初始化了一遍吧,当boot A核Linux镜像时,是否会发生时钟冲突?

你只要保证bootloader, pfe sample, linux中的clock配置是一模一样的,就不会冲突,后面的配置时钟函数会先读,后配置,如果读出来的值和配置值是一样的,就会直接返回,不会再操作硬件。

john,

   明白了,多谢大佬宝贵时间!

%3CLINGO-SUB%20id%3D%22lingo-sub-1637946%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ES32G%20PFE_M_Master_A_Slave_Simple_Demo%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1637946%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%0A%3CP%3EThis%20application%20note%20explain%20how%20to%20run%20M%20kernel%20PFE%20master%20and%20A%20kernel%20PFE%20slave%20demo%20without%20bootloader%20support.%20chinese%20version%3A%3C%2FP%3E%0A%3CP%3E%E5%9C%A8%E7%9C%9F%E5%AE%9E%E7%9A%84%E4%BA%A7%E5%93%81%E4%B8%AD%EF%BC%8C%E4%B8%80%E8%88%AC%E4%BC%9A%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%9F%BA%E4%BA%8EM7_0%E6%A0%B8%E7%9A%84bootloader%E6%9D%A5%E5%90%AF%E5%8A%A8M%E5%92%8CA%E6%A0%B8%EF%BC%8C%E8%BF%99%E4%B8%AAbootloader%E8%B4%9F%E8%B4%A3%E6%89%80%E6%9C%89M%E6%A0%B8%E5%92%8CA%E6%A0%B8%E8%B5%84%E6%BA%90%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96%EF%BC%8C%E8%A7%A3%E5%86%B3M%E6%A0%B8%E5%92%8CA%E6%A0%B8%E7%9A%84%E8%B5%84%E6%BA%90%E5%86%B2%E7%AA%81%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%90%AF%E5%8A%A8M%E5%92%8CA%E6%A0%B8%E3%80%82%E6%89%80%E4%BB%A5%E7%90%86%E8%AE%BA%E4%B8%8A%E8%BF%90%E8%A1%8CM%20PFE%20Master%20Mcal%E9%A9%B1%E5%8A%A8%E5%8A%A0A%20PFE%20Slave%20Linux%E9%A9%B1%E5%8A%A8%E4%B9%9F%E6%98%AF%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AAbootloader%E7%9A%84%E3%80%82%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3%E3%80%8AS32G_Bootloader_V*%E3%80%8B%EF%BC%8CJohnli%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%85%AC%E5%BC%80community%E4%B8%8A%E6%90%9C%E7%B4%A2%E8%8E%B7%E5%BE%97%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%9C%AC%E6%96%87%E8%AE%A8%E8%AE%BA%E4%B8%80%E7%A7%8D%E7%AE%80%E6%98%93%E7%9A%84%E5%8A%9E%E6%B3%95%EF%BC%8C%E5%B0%B1%E6%98%AF%EF%BC%9A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3ES32G3%20RDB3%E6%9D%BF%E5%AD%90%E9%85%8D%E7%BD%AE%E4%B8%BASDcard%E5%90%AF%E5%8A%A8%EF%BC%8C%E6%8F%92%E5%85%A5SDcard%EF%BC%8C%E9%87%8C%E9%9D%A2%E6%94%BE%E6%9C%89PFE%20SLAVE%E9%A9%B1%E5%8A%A8%E7%9A%84Linux%E9%95%9C%E5%83%8F%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E4%B8%8A%E7%94%B5%E5%90%AF%E5%8A%A8%E5%90%8E%E8%BF%90%E8%A1%8CPFE%20Master%E5%B7%A5%E7%A8%8B%E7%9A%84lauterbach%E8%B0%83%E8%AF%95%E8%84%9A%E6%9C%AC%EF%BC%9Arun_main_G3_REV1_1.cmm%EF%BC%8C%E8%BF%99%E4%B8%AA%E8%84%9A%E6%9C%AC%E4%BC%9A%E9%87%8D%E5%90%AF%E6%95%B4%E4%B8%AAS32G3%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E7%84%B6%E5%90%8E%E5%9C%A8%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%94%A8wait%2010S%E7%9A%84%E6%93%8D%E4%BD%9C%EF%BC%8C%E8%BF%99%E4%B8%AA%E6%97%B6%E5%80%99Linux%E5%B7%B2%E7%BB%8F%E5%90%AF%E5%8A%A8%EF%BC%8C%E5%B9%B6%E4%B8%94%E4%BD%BF%E7%94%A8Uboot%E7%9A%84%E4%BB%A3%E7%A0%81%E8%B0%83%E7%94%A8ATF%E6%9D%A5%E5%AE%8C%E6%88%90PFE%E7%9B%B8%E5%85%B3pre-init%2C%20partition%20reset%E5%92%8C%E6%97%B6%E9%92%9F%E4%B8%8E%E7%AE%A1%E8%84%9A%E5%88%9D%E5%A7%8B%E5%8C%96(%E5%A6%82%E4%B8%8A%E5%88%86%E6%9E%90%EF%BC%8C%20%3CSPAN%3EEMAC0~2%3C%2FSPAN%3E%E7%9A%84RGMII%20IOMUX%E5%B7%B2%E7%BB%8F%E9%85%8D%E7%BD%AE%E5%A5%BD)%EF%BC%8C%E7%84%B6%E5%90%8ESlave%E9%A9%B1%E5%8A%A8%E4%BC%9A%E7%AD%89%E5%BE%85%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%EF%BC%8C%E7%AD%89MCAL%20Master%E9%A9%B1%E5%8A%A8%E5%8A%A0%E8%BD%BD%EF%BC%8C%E7%BB%A7%E7%BB%AD%E8%BF%90%E8%A1%8CPFE%20Master%20MCAL%E4%BB%A3%E7%A0%81%E5%90%8E%EF%BC%8CLinux%E7%AB%AFSlave%E9%A9%B1%E5%8A%A8%E4%B9%9F%E5%8A%A0%E8%BD%BD%E6%AD%A3%E7%A1%AE%E3%80%82%E7%84%B6%E5%90%8E%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%B5%8B%E8%AF%95%E6%95%B4%E4%B8%AAM%20Master%2FA%20Slave%20Demo%E3%80%82%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%E6%80%BB%E7%BB%93%EF%BC%9A%E4%BB%A5%E4%B8%8A%E5%8A%9E%E6%B3%95%E5%AE%9E%E9%99%85%E4%B8%8A%E6%98%AF%E6%8A%8Abootloader%E5%BA%94%E8%AF%A5%E5%81%9A%E7%9A%84PFE%E7%9B%B8%E5%85%B3%E7%A1%AC%E4%BB%B6%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B7%A5%E4%BD%9C%E7%94%B1Linux%E6%9D%A5%E5%AE%8C%E6%88%90%EF%BC%8C%E4%BB%A5%E4%BE%BF%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BADemo%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%AE%A2%E6%88%B7%E5%9C%A8%E5%81%9A%E7%9C%9F%E5%AE%9E%E7%9A%84%E4%BA%A7%E5%93%81%E5%BC%80%E5%8F%91%E6%97%B6%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%81%9A%E4%B8%BA%E4%B8%80%E4%B8%AANXP%20release%E7%9A%84%E6%A0%87%E5%87%86%E5%8F%82%E8%80%83%E3%80%82%3C%2FP%3E%0A%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1637946%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EAutomotive%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1704935%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20S32G%20PFE_M_Master_A_Slave_Simple_Demo%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1704935%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%8F%AA%E8%A6%81%E4%BF%9D%E8%AF%81bootloader%2C%20pfe%20sample%2C%20linux%E4%B8%AD%E7%9A%84clock%E9%85%8D%E7%BD%AE%E6%98%AF%E4%B8%80%E6%A8%A1%E4%B8%80%E6%A0%B7%E7%9A%84%EF%BC%8C%E5%B0%B1%E4%B8%8D%E4%BC%9A%E5%86%B2%E7%AA%81%EF%BC%8C%E5%90%8E%E9%9D%A2%E7%9A%84%E9%85%8D%E7%BD%AE%E6%97%B6%E9%92%9F%E5%87%BD%E6%95%B0%E4%BC%9A%E5%85%88%E8%AF%BB%EF%BC%8C%E5%90%8E%E9%85%8D%E7%BD%AE%EF%BC%8C%E5%A6%82%E6%9E%9C%E8%AF%BB%E5%87%BA%E6%9D%A5%E7%9A%84%E5%80%BC%E5%92%8C%E9%85%8D%E7%BD%AE%E5%80%BC%E6%98%AF%E4%B8%80%E6%A0%B7%E7%9A%84%EF%BC%8C%E5%B0%B1%E4%BC%9A%E7%9B%B4%E6%8E%A5%E8%BF%94%E5%9B%9E%EF%BC%8C%E4%B8%8D%E4%BC%9A%E5%86%8D%E6%93%8D%E4%BD%9C%E7%A1%AC%E4%BB%B6%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1655170%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20S32G%20PFE_M_Master_A_Slave_Simple_Demo%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1655170%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Eupdated%20eng.%20version%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1654746%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20S32G%20PFE_M_Master_A_Slave_Simple_Demo%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1654746%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%26nbsp%3B%3C%2FP%3E%3CP%3EIs%20there%20an%20English%20version%20of%20this%20Demo%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E
100% helpful (2/2)
Version history
Last update:
‎09-20-2023 11:19 PM
Updated by: