ADKP Programming with HSE returning HSE_SRV_RSP_INVALID_PARAM

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

ADKP Programming with HSE returning HSE_SRV_RSP_INVALID_PARAM

ソリューションへジャンプ
731件の閲覧回数
Bhushan1312
Contributor I

Hello Team,

I am trying to program ADKP using HSE FW installed on MCU, but getting HSE_SRV_RSP_INVALID_PARAM error.

Same sequence works well (HSE_SRV_RSP_OK) if i do Step-In using debugger inside HSE_ProgramAdkp() function.

I can read HSE FW Version, Auth mode without any issue.

Only for ADKP programming i am getting HSE_SRV_RSP_INVALID_PARAM error.

Attached is my Linker file. I have mapped all HSE variables to int_sram_no_cacheable region. Also, stack is mapped to int_sram_no_cacheable.  

Please let me know where its going wrong.

 

 

0 件の賞賛
返信
1 解決策
533件の閲覧回数
lukaszadrapa
NXP TechSupport
NXP TechSupport

Yes, this approach is correct. The question is why you are getting HSE_SRV_RSP_INVALID_PARAM. I would step this down to the HSE_IP_ServiceRequest to check the HSE descriptor and address which is sent to MU. And I would try to disable the cache completely to see if it makes a difference. 

What to force to RAM:

HSE_IP_ServiceRequest – be aware that this function calls some other functions.

 

This is the critical part of code inside the function when using synchronous mode:

 

if (HSE_IP_REQTYPE_SYNC == pRequest->eReqType)

        {

            /* Convert from microseconds to ticks */

            u32TimeoutTicks = OsIf_MicrosToTicks(pRequest->u32Timeout, (OsIf_CounterType)HSE_IP_TIMEOUT_OSIF_COUNTER_TYPE);

            /* Send the service request to HSE */

            Mu_Ip_SetTxRegister(Hse_Ip_apMuBase[u8MuInstance], u8MuChannel, (uint32)pHseSrvDesc);

            /* Read the current value of the counter */

            u32CurrentTicks = OsIf_GetCounter((OsIf_CounterType)HSE_IP_TIMEOUT_OSIF_COUNTER_TYPE);

            /* Wait for the HSE response */

            while ((FALSE == Mu_Ip_IsResponseReady(Hse_Ip_apMuBase[u8MuInstance], u8MuChannel)) && (u32ElapsedTicks < u32TimeoutTicks))

            {

                /* Update the elapsed ticks, current ticks will be updated too by the OsIf function */

                u32ElapsedTicks += OsIf_GetElapsed(&u32CurrentTicks, (OsIf_CounterType)HSE_IP_TIMEOUT_OSIF_COUNTER_TYPE);

            }

 

The Mu_Ip… functions are inlined, so there’s no problem. But OsIf functions from BaseNXP module are not inlined, so you need to move them to RAM too. I recommend to step the function to see that all the code executed in this area is running from RAM. Or you can check the map file as well.

Regards,

Lukas

元の投稿で解決策を見る

0 件の賞賛
返信
4 返答(返信)
411件の閲覧回数
Bhushan1312
Contributor I

Hello @lukaszadrapa.

ADKP programming seems to be working with Linker changes (linker attached). As in previous linker i made too much of changes by mapping all data variables to SRAM section, also the stack was mapped to non-cacheable region.

I have not moved any of the functions to RAM or other flash section.

I am yet to confirm LC stage advancement. 

Thank You for your support.

 

 

0 件の賞賛
返信
634件の閲覧回数
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi @Bhushan1312 

Are you forcing HSE descriptors to DTCM?

lukaszadrapa_0-1767359890040.png

DTCM memory at address 0x2000_0000 is visible only for core. Other bus masters can access DTCM only via backdoor addresses at 0x2100_0000. So, I do not recommend to use DTCM for HSE variables, use normal non-cacheable SRAM instead. 

And next point - when programming ADKP, be aware that this service programs UTEST memory. And that UTEST memory is in the same partition as flash block 0. That means the code should be executed from another flash block or from RAM. Otherwise it could lead to read-while-write errors. 

Regards,

Lukas

 

0 件の賞賛
返信
547件の閲覧回数
Bhushan1312
Contributor I

Hello @lukaszadrapa,

Thank you for the reply.

Yes, HSE descriptors are forced to DTCM and accessed same with offset as below:

Bhushan1312_0-1767586452894.png

Let me know if this is fine to work with.

For 2nd point: Do i need to move all the functions (given below) responsible for ADKP programming to other Flash Sector or RAM?

HSE_ProgramAdkp -> SetAttr -> HSE_Send -> Hse_Ip_ServiceRequest.
 
 

 

 

0 件の賞賛
返信
534件の閲覧回数
lukaszadrapa
NXP TechSupport
NXP TechSupport

Yes, this approach is correct. The question is why you are getting HSE_SRV_RSP_INVALID_PARAM. I would step this down to the HSE_IP_ServiceRequest to check the HSE descriptor and address which is sent to MU. And I would try to disable the cache completely to see if it makes a difference. 

What to force to RAM:

HSE_IP_ServiceRequest – be aware that this function calls some other functions.

 

This is the critical part of code inside the function when using synchronous mode:

 

if (HSE_IP_REQTYPE_SYNC == pRequest->eReqType)

        {

            /* Convert from microseconds to ticks */

            u32TimeoutTicks = OsIf_MicrosToTicks(pRequest->u32Timeout, (OsIf_CounterType)HSE_IP_TIMEOUT_OSIF_COUNTER_TYPE);

            /* Send the service request to HSE */

            Mu_Ip_SetTxRegister(Hse_Ip_apMuBase[u8MuInstance], u8MuChannel, (uint32)pHseSrvDesc);

            /* Read the current value of the counter */

            u32CurrentTicks = OsIf_GetCounter((OsIf_CounterType)HSE_IP_TIMEOUT_OSIF_COUNTER_TYPE);

            /* Wait for the HSE response */

            while ((FALSE == Mu_Ip_IsResponseReady(Hse_Ip_apMuBase[u8MuInstance], u8MuChannel)) && (u32ElapsedTicks < u32TimeoutTicks))

            {

                /* Update the elapsed ticks, current ticks will be updated too by the OsIf function */

                u32ElapsedTicks += OsIf_GetElapsed(&u32CurrentTicks, (OsIf_CounterType)HSE_IP_TIMEOUT_OSIF_COUNTER_TYPE);

            }

 

The Mu_Ip… functions are inlined, so there’s no problem. But OsIf functions from BaseNXP module are not inlined, so you need to move them to RAM too. I recommend to step the function to see that all the code executed in this area is running from RAM. Or you can check the map file as well.

Regards,

Lukas

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2270415%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHSE%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%20ADKP%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%20HSE_SRV_RSP_INVALID_PARAM%20%E3%81%8C%E8%BF%94%E3%81%95%E3%82%8C%E3%82%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2270415%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E7%9A%86%E3%81%95%E3%82%93%3C%2FP%3E%3CP%3EMCU%20%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%95%E3%82%8C%E3%81%9F%20HSE%20FW%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20ADKP%20%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81HSE_SRV_RSP_INVALID_PARAM%20%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%3EHSE_ProgramAdkp()%20%E9%96%A2%E6%95%B0%E5%86%85%E3%81%A7%E3%83%87%E3%83%90%E3%83%83%E3%82%AC%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%82%A4%E3%83%B3%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%3C%2FSPAN%3E%E5%90%8C%E3%81%98%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E3%81%8C%E6%AD%A3%E5%B8%B8%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%20(%20%3CSPAN%3EHSE_SRV_RSP_OK%3C%2FSPAN%3E%20)%E3%80%82%3C%2FP%3E%3CP%3EHSE%20FW%20%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%80%81%E8%AA%8D%E8%A8%BC%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E5%95%8F%E9%A1%8C%E3%81%AA%E3%81%8FCAN%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3EADKP%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AE%E3%81%BF%E3%80%81HSE_SRV_RSP_INVALID_PARAM%20%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E6%B7%BB%E4%BB%98%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%AF%E7%A7%81%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%99%E3%80%82%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20HSE%20%E5%A4%89%E6%95%B0%E3%82%92%20int_sram_no_cacheable%20%E9%A0%98%E5%9F%9F%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%BE%E3%81%9F%E3%80%81%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%AF%20int_sram_no_cacheable%20%E3%81%AB%E3%83%9E%E3%83%83%E3%83%97%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%A9%E3%81%93%E3%81%8C%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2270791%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20ADKP%20Programming%20with%20HSE%20returning%20HSE_SRV_RSP_INVALID_PARAM%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2270791%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F258016%22%20target%3D%22_blank%22%3E%40Bhushan1312%3C%2FA%3E%3C%2FP%3E%0A%3CP%3EHSE%20%E8%A8%98%E8%BF%B0%E5%AD%90%E3%82%92%20DTCM%20%E3%81%AB%E5%BC%B7%E5%88%B6%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22lukaszadrapa_0-1767359890040.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22lukaszadrapa_0-1767359890040.png%22%20style%3D%22width%3A%20238px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22lukaszadrapa_0-1767359890040.png%22%20style%3D%22width%3A%20238px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F371618iF1030A047FC1D793%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22lukaszadrapa_0-1767359890040.png%22%20alt%3D%22lukaszadrapa_0-1767359890040.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%200x2000_0000%20%E3%81%AE%20DTCM%20%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AF%E3%82%B3%E3%82%A2%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AE%E3%81%BF%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E3%83%90%E3%82%B9%E3%83%BB%E3%83%9E%E3%82%B9%E3%82%BF%E3%81%AF%E3%80%810x2100_0000%20%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%83%89%E3%82%A2%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E7%B5%8C%E7%94%B1%E3%81%A7%E3%81%AE%E3%81%BF%20DTCM%20%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82SO%E3%80%81HSE%20%E5%A4%89%E6%95%B0%E3%81%AB%E3%81%AF%20DTCM%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%8A%E5%8B%A7%E3%82%81%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%E9%80%9A%E5%B8%B8%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AA%20SRAM%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%AC%A1%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%20-%20ADKP%20%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E3%81%93%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%8C%20UTEST%20%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E6%B3%A8%E6%84%8F%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82UTEST%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AF%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF0%E3%81%A8%E5%90%8C%E3%81%98%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%A4%E3%81%BE%E3%82%8A%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E5%88%A5%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%BE%E3%81%9F%E3%81%AFRAM%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%86%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%80%81%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E4%B8%AD%E3%81%AE%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%83%AB%E3%83%BC%E3%82%AB%E3%82%B9%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2290121%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20ADKP%20Programming%20with%20HSE%20returning%20HSE_SRV_RSP_INVALID_PARAM%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2290121%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F37795%22%20target%3D%22_blank%22%3E%40lukaszadrapa%3C%2FA%3E%20%E3%80%82%3C%2FP%3E%3CP%3EADKP%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AF%E3%80%81%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%E3%81%AE%E5%A4%89%E6%9B%B4%20(%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%E3%81%8C%E6%B7%BB%E4%BB%98%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99)%20%E3%81%AB%E3%82%88%E3%82%8A%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E4%BB%A5%E5%89%8D%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%E3%81%A8%E5%90%8C%E6%A7%98%E3%81%AB%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E5%A4%89%E6%95%B0%E3%82%92%20SRAM%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E5%A4%89%E6%9B%B4%E3%82%92%E5%8A%A0%E3%81%88%E3%81%99%E3%81%8E%E3%80%81%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%8C%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AA%E9%A0%98%E5%9F%9F%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%84%E3%81%8B%E3%81%AA%E3%82%8B%E6%A9%9F%E8%83%BD%E3%82%82%20RAM%20%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3ELC%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E3%81%AE%E9%80%B2%E8%A1%8C%E3%81%AF%E3%81%BE%E3%81%A0%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%E5%86%8D%E9%96%8B%E3%81%BE%E3%81%A7%E4%BB%8A%E3%81%97%E3%81%B0%E3%82%89%E3%81%8F%E3%81%8A%E5%BE%85%E3%81%A1%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E