Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
Question Regarding Critical Section Protection for OTP and NVM Access Services Hi, We previously encountered an issue caused by a background process when modifying the OTP (Secure Debug Password) and Life Cycle (LC) in HSE_B. As a result, we were advised to protect the OTP and LC update operations by using a critical section. In addition, would it also be necessary to protect service requests that access the NVM area, rather than the OTP, such as ImportKey, FormatKeyCatalogs, SmrEntryInstall, and CrEntryInstall, by using a critical section? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi @lukaszadrapa, thank you for your reply. In that case, instead of entering a critical section, would it be sufficient to check the HSE_CONFIG_GPR3 register before accessing the flash to ensure that flash access is available? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi @wodudwo  To have full picture, I recommend to read description in HSE Firmware reference manual rev. 2.7 in section: “14.6.5  Synchronizing flash read/write access between HSE and application core”: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 There are tables 149, 150 and 151 where you can find details about typical scenarios. In short: if HSE firmware is executing, it’s not possible to program a flash block from which the firmware is running from. In case of S32K344 and FULL_MEM version (just an example) it’s block 3, in case of AB_SWAP it’s block 1. It’s necessary to wait until HSE is in idle state and then do not trigger other HSE services. If HSE is performing flash operation on SYS-IMG (like key catalog formatting, importing a key, writing NVM attribute…) then, in addition, it is not possible to access data flash memory. If HSE is writing OTP data (attribute, life cycle advancing, programming password etc.) it is not possible to access UTEST and also flash block 0 because UTEST and flash block 0 are in the same read partition. And this seems to be the key point if you have a problem with ADKP programming and with life cycle advancing. Please take a look at this post where I described what needs to be relocated from flash block 0: https://community.nxp.com/t5/S32K/S32K324-HSE-Setting-ADKP-Issue/m-p/2369325/highlight/true#M58774 And when talking about synchronization between flash and HSE, notice that the support for synchronization between FLS and CRYPTO modules in RTD was added in version 5.0.0 and higher. Here is a screenshot from 6.0.0: If you use older RTD version, it needs to be handled by users. Notice that this synchronization does not solve the problem with programming OTP attributes to UTEST. The code still needs to be relocated from flash block 0. Regards, Lukas Re: Question Regarding Critical Section Protection for OTP and NVM Access Services It depends on scenario. “In addition, would it also be necessary to protect service requests that access the NVM area, rather than the OTP, such as ImportKey, FormatKeyCatalogs, SmrEntryInstall, and CrEntryInstall, by using a critical section?” For this scenario – no. HSE_CONFIG_GPR3 informs users if read/execute or program/erase is blocked for application by HSE on some flash block. But this is not a protection similar to critical section in your code. Critical section will ensure that there will be no interrupt which could access data flash or which could somehow interfere with the operations. But this has nothing to do with status of HSE_CONFIG_GPR3. Anyway, mentioned services like ImportKey, FormatKeyCatalogs, SmrEntryInstall, and CrEntryInstall are crucial configuration services which should be executed sequentially in controlled environment. It makes sense to use critical section. If it is necessary to handle some important interrupts in the meantime, it’s necessary to ensure that used interrupt resources does not interfere with HSE and flash blocks used by HSE. Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi, @lukaszadrapa  Thank you for your explanation. If I understand correctly, checking the HSE_CONFIG_GPR3 register alone is not sufficient, and protection using a critical section is still required. My understanding is that even if an interrupt occurs, checking the HSE_CONFIG_GPR3 register before accessing the flash should prevent the application core and the HSE core from accessing the same flash block simultaneously. If a critical section is not used, are there any other potential issues that could occur besides simultaneous flash access between the application core and the HSE core? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Conversely, is it also an issue if the application core performs a program/erase operation while HSE is already performing a program/erase operation? - Yes, it is an issue because no more flash operations can run at the same time.   If so, can this situation be prevented by checking not only bits 21:16 but also bits 29:24 of the HSE_CONFIG_GPR3 register before the application core starts the program/erase operation? - Yes. This would help in situation when HSE is already programming the flash and application core want to also start another flash operation.   If this approach is not sufficient to prevent such conflicts, would using a critical section be the recommended solution for protecting these service requests? - When HSE performs mentioned NVM operations (catalog format, key import…), application should not start other flash operations and should not access flash block which is being programmed by HSE. If anything like that is done by the interrupt handlers, yes, critical section would prevent this conflict.   Additionally, the tables do not explicitly describe the case where the application core is executing code from a code flash block while HSE is performing a program/erase operation on the same code flash block. Is this scenario considered safe without any synchronization, or does it also require some form of protection? - Code flash memory is being programmed by HSE only when HSE/SBAF installs/updates/recovers/erases HSE firmware. This is done either out of reset automatically or it is triggered by software. HSE firmware is located it the end of code flash (in FULL_MEM version) or at the end of active and passive block (AB_SWAP version). It is expected that the application starts from lower flash blocks and it also waits until initialization is done and until HSE finishes the initialization (and possible flash operations). So, there’s no risk in this case. If application triggers an update of HSE firmware, it’s up to user to ensure that corresponding flash block is not access during this operation. If protection is required for this scenario, what would be the recommended way to implement it? - As described above – after reset, do not access flash block which contains HSE firmware until initialization is completed. And do not access the flash block when your software initiates HSE firmware update.   Re: Question Regarding Critical Section Protection for OTP and NVM Access Services hi, @lukaszadrapa  Thank you for your explanation. Your answers have been very helpful.  Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi, @lukaszadrapa  Thank you for your reply. According to Tables 149, 150, and 151 in the HSE Firmware Reference Manual, which describe synchronization requirements for concurrent flash program/erase operations, the following is stated: No synchronization steps to be followed. It is expected that the M7_0/1 core does not issue any command to HSE which involves program/erase operation when it is programming data flash. Conversely, is it also an issue if the application core performs a program/erase operation while HSE is already performing a program/erase operation? If so, can this situation be prevented by checking not only bits 21:16 but also bits 29:24 of the HSE_CONFIG_GPR3 register before the application core starts the program/erase operation? If this approach is not sufficient to prevent such conflicts, would using a critical section be the recommended solution for protecting these service requests? Additionally, the tables do not explicitly describe the case where the application core is executing code from a code flash block while HSE is performing a program/erase operation on the same code flash block. Is this scenario considered safe without any synchronization, or does it also require some form of protection? If protection is required for this scenario, what would be the recommended way to implement it? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services We are getting back to tables 149, 150 and 151 from HSE firmware reference manual which I mentioned earlier. It's necessary to evaluate the program flow, compare it with scenarios described in the tables and decide if countermeasures are needed or not. Otherwise there could be a risk that HSE will disrupt application core(s) or vice versa.  Regards, Lukas
記事全体を表示
使用安卓操作系统时,NXP SD8987 Wi-Fi+蓝牙组合模块的蓝牙高频功能无法正常工作。 您好, 我正在使用 NXP 芯片 sd8987 (M2-JODY-W263-10C) 和 TI SoC am62p。我使用的是安卓系统。A2DP协议工作正常,但免提功能无法使用。我只有一个带音频解码功能的扬声器。 从引脚的角度来看,M2-JODY-W263-10C (sd8987) 模块有什么需要注意的地方吗? 此致 罗珊 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 请问您的安卓系统版本是多少? 您是否在 SD8987 M2-JODY-W263 - 10C 模块上使用 PCM/I2S 接口进行 SCO 控制? 请您提供设备启动后的完整日志,包括完整的“A2DP 已连接但 HFP 无法工作”的过程日志? 顺祝商祺! Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 嗨,克里斯汀, 我没有使用 pcm/i2s 引脚。基于 UART 的软件 HFP 路径。 我使用的是 TI am62p SoC,安卓版本为 16。 已附上蓝牙管理器日志。 此致 罗珊 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 感谢您提供的系统文件和信息。 从你的 dumpsys 文件中,我看到 RFCOMM 已经打开,SCO 也已成功创建,并且处理程序也已经启动。 为了进一步调试,请您提供以下信息: 1.蓝牙HCI监听日志,包括完整的连接过程、A2DP连接但HFP无法工作的过程? 在 Android 上,您可以通过启用此功能来捕获 HCI 日志。 蓝牙 HCI 窥探日志 在 开发者选项 ,切换一次蓝牙以开始捕获,然后导出日志  adb  。 步骤: 打开 开发者选项 使能够 蓝牙 HCI 窥探日志 切换蓝牙 断断续续地 正在尝试重现该问题。 使用 ADB 命令提取日志文件。 2. adb shell dumpsys media.audio_policy> audio_policy.txt adb shell dumpsys media.audio_flinger> audio_flinger.txt adb logcat -b all -d > logcat_log.txt(从设备启动时获取)   顺祝商祺! Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 请您提供所需的日志,以便我们继续处理此问题? 顺祝商祺! Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 您的问题解决了吗? 您仍然需要我们的支持吗? 如果可以,请您提供所需的日志,以便我们继续处理此问题? 顺祝商祺! Christine。
記事全体を表示
32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) I am currently trying to configure a 32-bit parallel Shifter to receive data from an external device with one of the pins (FLEX_D4/DATA_VALID) being used as a signal to Shift in the data.  The progress I have made has allowed me to read in the 32-bit data when DATA_VALID has triggered and move the data into an eDMA Ping-Pong buffer. I am currently testing through Printf statements of reading the buffer data to a console and if the Shifter has any errors (usually indicating Overrun according to the datasheet) they will print to the console as well.  I believe my main issue is with the TimerConfig as it is triggering the Shifter to read too many times on one rising edge of DATA_VALID but I have not found a configuration that allows me to read only once while actually moving the correct data.  Console Output:  Reading Buffer A: 0x3fffefff Shifter Error Code: 0x8 Shifter Status: 0x0 SHIFTSDEN: 0x8 DMA CSR: 0x0 DMA Error: 0x0 TCD BITER: 0x2 CSR: 0x12 CH_MUX: 0x40 Reading Buffer B: 0x3fffefff Shifter Error Code: 0x8 Shifter Status: 0x0 SHIFTSDEN: 0x8 DMA CSR: 0x0 DMA Error: 0x0 TCD BITER: 0x2 CSR: 0x12 My FLEX_IO setup is attached. Thank you. Clock|Timers Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) Development Board MCXN Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Update: I was able to deduce that "kFLEXIO_TimerDisableOnTriggerFallingEdge" was keeping my CPU in the callback. I believe I want to disable after a Timer Compare but with this option SHIFTBUF only reports a value of 0x0 but with no SHIFTERR flag.  Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Hi  @Flexin_On_The_IO  Thank you for your post! Could you please share the current behavior you see in your register?  Which test data are you trying to receive and what you currently get?  Could you please share which MCXN are you using?  Is it a custom board? if not, please specify the board you are using Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Hi @carlos_o thank you for the reply! I was able to get the Timer reading on DATA_VALID edge like I wanted but did not update the thread. My current code is attached. The problem I am facing now is getting the FlexIO to keep up with other devices. In my current setup I am basically sampling DATA_VALID and at higher speeds, the Shifter can get Overrun. My thinking is that my design requires a shared clock between the MCX & host device that would be sending the 32-bit data. I can use a pin within the 32-bit data bus to be this signal so I do not need to breakup the FlexIO pins. Any input on this idea would be welcome! To answer your previous questions: 1. The registers are populating as intended at lower speeds. On every DATA_VALID falling edge, the SHIFTBUF stores data from the 32 Pins and the EDMA transfers to my Ping-Pong buffer via a Scatter-Gather method. 2. I am simulating input through an Analog Discovery 2, since that only has 16 data pins I am just writing the upper values of the 32-bits, simulating a clock on the DATA_VALID pin, and tying the unused pins down. Test data is matching correctly at low speeds. 3. I am using the FRDM-MCXN947 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Hi @Flexin_On_The_IO  Apologize the late reply,  Could you please specify the speeds you are trying to achieve?  You could review AN14284: Timing Parameter Tuning for FlexIO Emulated Interface, this app note could have some helpful information to your goal.   
記事全体を表示
RAM retention not working across functional reset (S32K3xx) Hi Team, We are trying to retain a variable across functional reset on S32K3xx, but it is not working. Implementation: Variable placed in custom RAM section: __attribute__((section(".int_sram_results"))) uint32_t retain_var;               The value is being updated before reset (for testing retain_var= 0x11223344) . Reset type: Functional reset (software-triggered) Observed behaviour: But value is always 0 (cleared) RAM retention is not happening Reference checked: Already referred this discussion and tried the suggested approach: https://community.nxp.com/t5/S32K/S32K311-noinit-ram/td-p/2123035 The example provided there did not work in our case Request: Please share a working example or minimal snippet for retaining RAM across functional reset on S32K3xx Thanks, Yusup S32K3 S32DS-ARM S32K31XEVB-Q100  Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, The startup code most likely initializes the entire SRAM to zero (for ECC initialization) after every reset—I haven’t seen your specific startup code. You could consider skipping the ECC initialization when the reset is functional. Refer to this answer: https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/m-p/1764143 BR, Daniel Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, What do you mean by “it does not work”? The files you posted do not seem to reflect the latest changes. Can you step through the startup code and observe the variable in SRAM after a functional reset? This should clearly show where the variable gets overwritten. To attach the debugger after the functional reset, you can add a simple loop at the beginning of the startup code, for example: Loop: mov r0, #1 cmp r0, 0 /* Change r0 to 0 in register view */ bne Loop /* Capture after power-on reset */ Regards, Daniel Any support, information, and technology (“Materials”) provided by NXP are provided AS IS, without any warranty express or implied, and NXP disclaims all direct and indirect liability and damages in connection with the Material to the maximum extent permitted by the applicable law. NXP accepts no liability for any assistance with applications or product design. Materials may only be used in connection with NXP products. Any feedback provided to NXP regarding the Materials may be used by NXP without restriction. Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek I have simplified the setup to isolate the RAM retention behavior. I placed the variable in a dedicated SRAM section and used a minimal main function with LED indication and watchdog-triggered reset. The idea is: Green LED → value retained after reset Red LED → value lost Below is the test code being used: C __attribute__((section(".int_sram_results"), used)) volatile uint32_t retain_var; int main(void) { Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); DIO_Init(); WDT_Init(); if (retain_var == 0xAABBCCDD) { Siul2_Dio_Ip_SetPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); Siul2_Dio_Ip_ClearPins(LED_RED_PORT, (1UL << LED_RED_PIN)); } else { Siul2_Dio_Ip_SetPins(LED_RED_PORT, (1UL << LED_RED_PIN)); Siul2_Dio_Ip_ClearPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); } retain_var = 0xAABBCCDD; while (1) { /* watchdog reset */ } } Show less Observation: When running with debugger, the behavior is as expected. However, after power-on reset, there is no LED indication, which suggests the code may not be executing as expected. I have attached the latest linker and startup files for reference. Please let me know if you see anything missing on the startup or reset handling side. S32DS-ARM S32K31XEVB-Q100  Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek I replaced the startup instructions below with the changes you shared, but it did not work. For your reference, I have uploaded the relevant files. The .s and .ld files were uploaded with a .c extension. Please review them and let me know if you need any additional information. RamInit: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __RAM_INIT is not set */ beq SRAM_LOOP_END ldr r0, =MCRGM_DES ldr r1, [r0] ldr r2, =MCRGM_DES_F_POR and r1, r1, r2 cmp r1, 0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM The above instructions updated with  RamInit: /* Check MC_RGM DES register, if it's non-zero, jump to RAMInit_Start. (RAM init is needed if Destructive reset occurred) */ /* To make it work, customer should clear the MC_RGM DES register in application code. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] cmp r4, #0x0 bne RamInit_Start /* Check MC_RGM FES register, if the F_EXR bit or ST_DONE bit is set, jump to RAMInit_Start. */ /* RAM init is needed if external reset occurred, or BIST Done functional reset occurred. */ /* To make it work, customer should clear the MC_RGM FES F_EXR register bit in application code. */ ldr r4, =MC_RGM_BASE_ADDR ldr r4, [r4, #0x8] ldr r5, =MC_RGM_FES_MASK_RAM_INIT and r4, r4, r5 cmp r4, #0x0 bne RamInit_Start b SRAM_LOOP_END RamInit_Start: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __SRAM_INIT is not set */ beq SRAM_LOOP_END ldr r1, =__INT_SRAM_START ldr r2, =__INT_SRAM_END Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) Can you share the whole test project so that I can easily test it on my side? Thank you, Daniel Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek Below are the observations from our testing:  Debug mode behaviour: Power-on reset (RED LED): retain_var = 0x5AA55AA5 @ 0x20407B00 After watchdog reset (GREEN LED): retain_var = 0xAABBCCDD @ 0x20407B00 This confirms that RAM retention across functional reset is working when running under debugger. However, when running standalone (without debugger): After power-on reset, there is no LED indication. It appears that the program is not executing or not reaching the application code. Could you please help identify what might be causing this behaviour? Also, we are planning to use the complete .int_sram_results section to retain multiple parameters across functional reset. Please suggest if any additional changes are required for reliable retention. Additionally, could you please suggest if there is any API or recommended method to trigger a functional reset (alternative to watchdog)? For reference, I have included the changes made in the startup and linker files, and the same can be verified in the shared project. startup file (old code) RamInit:     /* Initialize SRAM ECC */     ldr  r0, =__RAM_INIT     cmp  r0, 0     /* Skip if __RAM_INIT is not set */     beq SRAM_LOOP_END     ldr r0, =MCRGM_DES     ldr r1, [r0]     ldr r2, =MCRGM_DES_F_POR     and r1, r1, r2     cmp r1, 0     beq NO_INIT_STANDBY_REGION     ldr r2, =__INT_SRAM_START     ldr r3, =__INT_SRAM_END     b   ZERO_64B_RAM startup file (new code) .equ MC_RGM_BASE_ADDR, 0x4028C000 .equ MC_RGM_FES_MASK_RAM_INIT, 0xFFFFFFFF RamInit:                /* Check MC_RGM DES register, if it's non-zero, jump to RAMInit_Start. (RAM init is needed if Destructive reset occurred) */                /* To make it work, customer should clear the MC_RGM DES register in application code. */                ldr r4, =MC_RGM_BASE_ADDR   /* 0x4028C000 */                ldr r4, [r4, #0x0]                cmp r4, #0x0                bne RamInit_Start                /* Check MC_RGM FES register, if the F_EXR bit or ST_DONE bit is set, jump to RAMInit_Start. */                /* RAM init is needed if external reset occurred, or BIST Done functional reset occurred. */                /* To make it work, customer should clear the MC_RGM FES F_EXR register bit in application code. */                ldr r4, =MC_RGM_BASE_ADDR                ldr r4, [r4, #0x8]                ldr r5, =MC_RGM_FES_MASK_RAM_INIT                and r4, r4, r5                cmp r4, #0x0                bne RamInit_Start                b SRAM_LOOP_END                RamInit_Start:                /* Initialize SRAM ECC */                ldr r0, =__RAM_INIT                cmp r0, 0                /* Skip if __SRAM_INIT is not set */                beq SRAM_LOOP_END                ldr r1, =__INT_SRAM_START                ldr r2, =__INT_SRAM_END     b   ZERO_64B_RAM linker file changes old code:     .int_results (NOLOAD):     {         . = ALIGN(4);         KEEP(*(.int_results))         . += 0x100;     } > int_sram_results new code:                    .int_results (NOLOAD):     {         . = ALIGN(4);         KEEP(*(.int_results))     } > int_sram_results    S32K31XEVB-Q100  Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, I have debugged it found that the code below was incorrect. It used R1 and R2 instead of R2 and R3: We need R2 and R3 because of this: Where did you get this startup code? With the debugger connected, the debugger initializes the SRAM ECC. Without the debugger, there was a Hardfault at 0x20400090. Regards, Daniel Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek  After fixing to use R2/R3, the application is running. However, RED LED always blinks and GREEN never turns ON, indicating the value is not retained after reset. I’ve applied the startup changes from your shared link, but retention is still not working as expected. S32K3 S32DS-ARM  https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/m-p/1764143 Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) @danielmartynek  Any update on this? S32DS-ARM S32K31XEVB-Q100  Thanks, Yusup. Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, Sorry for the delay; I wasn't able to get to the testing until now. I have now tested it and used the simple code below to skip the SRAM initialization when only a Functional Event Status (FES) reset occurred and no Destructive Event Status (DES) reset was detected. /* * Initialize SRAM ECC only after a Destructive Reset. * * Functional reset shall preserve SRAM content, so MC_RGM_FES is not used * here to trigger SRAM initialization. * * Note: * To make this check work correctly, the application should clear MC_RGM_DES * after processing the destructive reset reason. */ /* Check MC_RGM DES register. * If DES is non-zero, a destructive reset occurred and SRAM init is needed. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] /* MC_RGM_DES */ cmp r4, #0x0 bne RamInit_Start /* No destructive reset detected. * Skip SRAM ECC initialization to preserve SRAM content across Functional Reset. */ b SRAM_LOOP_END In main(), clear the DES register: IP_MC_RGM->DES = 0xFFFFFFFF; BR, Daniel
記事全体を表示
S32K3 の Trace32 によるセキュア デバッグのロック解除 こんにちは、S32K3チーム 現在、セキュア デバッグ ロック解除に関する問題が発生しています。 私が使用しているデバッガーは Trace32 と AUTOSAR os です。 ライフ サイクル (LC) が OEM に切り替えられ、セキュア デバッグがパスワード モード (チャレンジ レスポンスではない) で構成されています。 設定されたTESTパスワードは次のとおりです。 0xFFEEDDCCBBAA99887766554433221100 LCを切り替える前に、HASH値が正しく一致していることを確認しました。 セキュア デバッグのロックを解除するために、次の 2 つの方法を試しました。 Trace32 コマンドの使用: システムオプション キーコード %バイト 0xFF 0xEE 0xDD 0xCC 0xBB 0xAA 0x99 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11 0x00 S32_JTAG_WRITE.cmmスクリプトの使用 ただし、どちらの方法でもセキュア デバッグのロックを解除できませんでした。 次に何をチェックすべきか、または見落としている可能性のある原因についてご指導いただければ幸いです。 参考までにスクリプトを添付しました。 よろしくお願いいたします。 #HSE #セキュアデバッグ Re: S32K3 Unlock Secure Debug with Trace32 最近テストしてみました。添付のスクリプトを参照してください debug_authorization.cmm は、パスワードを入力して他のスクリプトを呼び出す方法を示します。 添付ファイルを直接送信します。 Re: S32K3 Unlock Secure Debug with Trace32 こんにちは、 私も同じ環境で同じ問題に直面しています。 ファイルも私に共有してもらえますか?ご協力いただけると大変ありがたいです。 ご回答をお待ちしています。
記事全体を表示
iMX93 building u-boot for a custom target We are using Yocto Scarthgap for a new imx93 board. We have a SOM that is very similar to the NXP SOM on the EVK, to the point that if I put the SDIO card for the EVK into our board it will boot. To avoid the annoyances of dealing with Yocto, I pulled u-boot-imx out and made it a stand-alone build using the SDK from Yocto. I can successfully build u-boot for the EVK and it boots. So I  for our board I: added board/freescale/imx93_nimbus/ and populated it with the contents of board/freescale/imx93_evk/ modified imx93_evk.c to imx93_nimbus.c, content unchanged modified Kconfig, to replace EVK/evk with NIMBUS/nimbus and added it to arch/arm/mach-imx/imx9/Kconfig modified Makefile, changing EVK/evk to NIMBUS/nimbus added arch/arm/dts/imx93-nimbus.dts, contents the same as imx93-11x11-evk.dts added include/configs/imx93_nimbus.h, changing EVK/evk to NIMBUS/nimbus added configs/imx93_nimbus_defconfig from imx93_11x11_evk_defconfig with the only differences being devicetree naming and TARGET naming make imx93_nimbus_defconfig make copied the imx-boot-tools over and created an imx93 directory under that copy u-boot.bin and spl/u-boot-spl.bin to imx-boot-tools/imx93 cd to imx-boot-tools/imx93 make -f ../soc.mak flash_singleboot sudo dd if=flash.bin of=/dev/sdb bs=1k seek=32 conv=fsync And now I have and SDIO card I should be able to boot with...but nothing happens, nothing on the console. If I follow this same process but use imx93-evk it will work on our board and boot. For flash.bin, the EVK is 24,576 bytes larger than for NIMBUS, so I fee like I'm missing something. Bl31.bin, tee.bin and mx93a1-ahab-container.img are all present. I tried an image that used the EVK u-boot-spl.bin and NIMBUS u-boot.bin; the SPL came up but then got stuck when it tried to run U-BOOT. Please Help! Re: iMX93 building u-boot for a custom target Thanks for the quick reply... My problem turned out to be a missing device tree file. The EVK has a file named "imx93-11x11-evk-u-boot.dtsi"; I have never heard of this file or seen it in any documentation in creating a new target. This file appears to describe the multi-file container. I copied the EVK file and changed the name to my new target, built and it booted. Hopefully this post will help someone in the future when they come across the same issue. Re: iMX93 building u-boot for a custom target Hello @davidpatton  I hope you are doing very well. The general steps to generate the correct flash.bin are in chapter 3.1.1 How to build U-Boot in standalone environment of the i.MX Porting Guide. And you can see the specific steps on chapter 4.5.13 How to build imx-boot image by using imx-mkimage of i.MX Linux User's Guide. Specific steps for i.MX93: You will find all the necessary packages on the table 3. BSP and multimedia standard packages of the i.MX Linux Release Notes. Best regards, Salas. Re: iMX93 building u-boot for a custom target Just came accross the same issue, and spent two days of trial and error until i found your post. This really needs to be documented somewhere.
記事全体を表示
OTPおよびNVMアクセスサービスのクリティカルセクション保護に関する質問 こんにちは。以前、HSE_B で OTP (セキュアデバッグパスワード) とライフサイクル (LC) を変更する際に、バックグラウンドプロセスが原因で問題が発生しました。 その結果、OTPおよびLCの更新処理を保護するためにクリティカルセクションを使用するよう助言を受けました。 さらに、 ImportKey、 FormatKeyCatalogs、 SmrEntryInstall、 CrEntryInstallなど、OTPではなくNVM領域にアクセスするサービスリクエストも、クリティカルセクションを使って保護する必要があるのでしょうか? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services こんにちは、 @lukaszadrapa さん。 ご返信よろしくお願いします。 CASE、クリティカルセクションに入る代わりに、フラッシュにアクセスする前にHSE_CONFIG_GPR3レジスタを確認してフラッシュアクセス可能かどうかを確認するだけで十分でしょうか? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services こんにちは、 @wodudwo さん。 全体像を把握するには、HSEファームウェアのリファレンスマニュアルの説明を読むことをお勧めします。2.7節: 「14.6.5HSEとアプリケーションコア間のフラッシュ読み書きアクセスの同期」: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 表149、150、151には典型的なシナリオの詳細が記載されています。 要するに、HSEファームウェアが実行されている場合、そのファームウェアが実行されているフラッシュブロックをプログラムすることはできません。S32K344 CASE や FULL_MEM CASE (あくまで例ですが) ではブロック3、AB_SWAP CASE ではブロック1です。HSEがアイドル状態になるまで待ち、その後他のHSEサービスを起動しないことが大切です。 HSEがSYS-IMGに対してフラッシュ操作(キーカタログのフォーマット、キーのインポート、NVM属性の書き込みなど)を行っている場合、さらにデータフラッシュメモリへのアクセスは不可能です。 HSEがOTPデータ(属性、ライフサイクル進行、パスワードのプログラミングなど)を書き込んでいる場合、UTESTとフラッシュブロック0の両方にアクセスすることはできません。なぜなら、UTESTとフラッシュブロック0が同じ読み取りパーティション内にあるからです。そして、ADKPプログラミングやライフサイクル進行に問題がある場合、これが重要なポイントとなるようです。フラッシュブロック0から移動する必要があるものについて説明したこちらの投稿をご覧ください。 https://community.nxp.com/t5/S32K/S32K324-HSE-Setting-ADKP-Issue/mp/2369325/highlight/true#M58774 また、フラッシュとHSEの同期について話す際、RTDのFLSとCRYPTOモジュール間の同期サポートがバージョン5.0.0以降に追加されたことに注目してください。 以下はバージョン6.0.0のスクリーンショットです。 古いRTDバージョンを使う場合は、ユーザーが対応する必要があります。この同期では、OTP属性をUTESTにプログラミングする際の問題は解決されないことに注意してください。コードはフラッシュブロック0から移動させる必要がある。 よろしくお願いいたします。 ルーカス Re: Question Regarding Critical Section Protection for OTP and NVM Access Services こんにちは、 @lukaszadrapa ご説明ありがとうございました。 私の理解が正しければ、HSE_CONFIG_GPR3レジスタのチェックだけでは不十分であり、クリティカルセクションを用いた保護が依然として必要となる。 私の理解では、割り込みが発生しても、フラッシュにアクセスする前にHSE_CONFIG_GPR3レジスタを確認することで、アプリケーションコアとHSEコアが同時に同じフラッシュブロックにアクセスするのを防ぐはずです。 クリティカルセクションが使われない場合、アプリケーションコアとHSEコア間の同時フラッシュアクセス以外に起こりうる問題はありますか? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 状況によります。 「さらに、 ImportKey、 FormatKeyCatalogs、 SmrEntryInstall、 CrEntryInstallなど、OTPではなくNVM領域にアクセスするサービスリクエストも、クリティカルセクションを使って保護する必要があるのでしょうか?」 このシナリオでは、答えはノーです。HSE_CONFIG_GPR3、HSEがフラッシュブロックで読み書き/実行やプログラム/消去をブロックした場合にユーザーに通知します。しかし、これはあなたのコードにおけるクリティカルセクションのような保護機能ではありません。クリティカルセクションは、データフラッシュにアクセスする割り込みや、操作に干渉する割り込みが起きないことを保証します。しかし、これはHSE_CONFIG_GPR3の状態とは何の関係もありません。 いずれにせよ、ImportKey、FormatKeyCatalogs、SmrEntryInstall、CrEntryInstallといったサービスは、管理された環境下で順番に実行する必要のある重要な構成サービスです。クリティカルセクションを使用するのは理にかなっている。その間に重要な割り込みを処理する必要がある場合には、使用される割り込みリソースがHSEおよびHSEで使用されるフラッシュブロックに干渉しないようにする必要があります。 Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 先ほど述べたHSEファームウェアリファレンスマニュアルの表149、150、151に戻ります。プログラムの流れを評価し、表に記載されているシナリオと比較し、対策が必要かどうかを判断する必要があります。そうでなければ、HSEがアプリケーションコアを妨害したり、その逆を妨げるリスクがあります。 よろしくお願いいたします。 ルーカス Re: Question Regarding Critical Section Protection for OTP and NVM Access Services こんにちは、 @lukaszadrapa ご説明ありがとうございました。あなたの回答は大変参考になりました。 Re: Question Regarding Critical Section Protection for OTP and NVM Access Services こんにちは、 @lukaszadrapa ご返信よろしくお願いします。 HSEファームウェアリファレンスマニュアルの表149、150、151によると、同時フラッシュプログラム/消去操作の同期要件を説明しています。 同期手順は不要です。M7_0/1コアは、データフラッシュをプログラムしている際にHSEに対してプログラム/消去操作に関するコマンドを出さないことが期待されています。 逆に、アプリケーションコアがプログラム/消去操作を行っている間にHSEがすでにプログラム/消去操作を行っている場合も問題になるのでしょうか? もしそうなら、アプリケーションコアがプログラム/消去操作を開始する前に、HSE_CONFIG_GPR3レジスタの21:16だけでなく29:24ビットもチェックすることでこの状況を防げますか? この方法ではこのような競合を防ぐのに十分でない場合、これらのサービス要求を保護するための推奨される解決策はクリティカルセクションを使用することでしょうか? さらに、表はアプリケーションコアがコードフラッシュブロックからコードを実行している間に、HSEが同じコードフラッシュブロックに対してプログラム/消去操作を行う場合を明示的に説明していません。 このシナリオは、同期処理なしでも安全だと考えられるのでしょうか、それとも何らかの保護対策が必要でしょうか? このシナリオにおいて保護が必要な場合、推奨される実装方法はどのようなものでしょうか? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 逆に、アプリケーションコアがプログラム/消去操作を行っている間にHSEがすでにプログラム/消去操作を行っている場合も問題になるのでしょうか? - はい、問題はあります。なぜなら、フラッシュ操作を同時に実行できなくなるからです。 もしそうなら、アプリケーションコアがプログラム/消去操作を開始する前に、HSE_CONFIG_GPR3レジスタの21:16だけでなく29:24ビットもチェックすることでこの状況を防げますか? - はい。これは、HSEがすでにフラッシュをプログラムしていて、アプリケーションコアが別のフラッシュ操作を始めたい場合に役立ちます。 この方法ではこのような競合を防ぐのに十分でない場合、これらのサービス要求を保護するための推奨される解決策はクリティカルセクションを使用することでしょうか? - HSEが前述のNVM操作(カタログ形式、キーインポートなど)を行う際、アプリケーションは他のフラッシュ操作を開始しず、HSEがプログラムしているフラッシュブロックにもアクセスしてはいけません。割り込みハンドラによってそのような処理が行われる場合、クリティカルセクションによってこの競合は防止されます。 さらに、表はアプリケーションコアがコードフラッシュブロックからコードを実行している間に、HSEが同じコードフラッシュブロックに対してプログラム/消去操作を行う場合を明示的に説明していません。 このシナリオは、同期処理なしでも安全だと考えられるのでしょうか、それとも何らかの保護対策が必要でしょうか? - コードフラッシュメモリは、HSE/SBAFがHSEファームウェアをインストール/更新/復旧/消去する場合にのみ、HSEによってプログラムされます。これはリセット後に自動的に行われるか、ソフトウェアによってトリガーされます。 HSEファームウェアは、コードフラッシュの末尾(FULL_MEMバージョン)またはアクティブブロックとパッシブブロックの末尾(AB_SWAPバージョン)に配置されます。アプリケーションは下位のフラッシュブロックから開始することが期待されており、初期化が完了し、HSEが初期化(および可能なフラッシュ操作)を完了するまで待ちます。ですので、このケースにはリスクはありません。アプリケーションがHSEファームウェアの更新をトリガーした場合、対応するフラッシュブロックがこの操作中にアクセスされないようにするのはユーザーが確認します。 このシナリオにおいて保護が必要な場合、推奨される実装方法はどのようなものでしょうか? - 前述の通り – リセット後は、初期化が完了するまでHSEファームウェアを含むフラッシュブロックにアクセスしないでください。また、ソフトウェアがHSEファームウェアアップデートを開始する際にフラッシュブロックにアクセスしないでください。
記事全体を表示
S32DS3.4 S32DS3.4のダウンロードリンクとアクティベーションキーを提供していただけますか? Re: S32DS3.4 はい、ありがとうございます。 Re: S32DS3.4 こんにちは、@ DontUnderstandRobotsさん S32 DSの旧バージョンを探すには、こちらをクリックしてください。 新しいバージョンへのSDKのインストールはテストしていません。RTM 3.0.Xの場合は、S32 DS V2.2でのみ使用可能です。RTM 4.0.XをS32 DS V3.6にインストールしたことはありません。 Re: S32DS3.4   えっと…バージョン3.4をクリックすると、なぜバージョン3.5のダウンロードページにリダイレクトされるのでしょうか? つまり、S32DS V3.6はS32K1シリーズのSDKバージョンをサポートしていないということですね? Re: S32DS3.4 こんにちは、@ DontUnderstandRobotsさん ダウンロードボタンをクリックするとダウンロードページに移動し、そこでさまざまなS32 DSバージョンを確認できます。 S32 DS V3.6の場合、S32K1の開発に使用したソフトウェアのバージョン(SDKかRTDか)によって異なります。 新しいアプリケーションを開発していて、RTDを使用している場合は、完全にサポートされます。 Re: S32DS3.4 あなたが提供したリンクは、このページに繋がっています... S32DS v3.6はS32K146チップをサポートしていますか? Re: S32DS3.4 また、S32 DS V3.6は旧バージョンとの互換性があります。 Re: S32DS3.4 こんにちは、@ DontUnderstandRobotsさん ダウンロードページのスクリーンショットを送ってください。確認させていただきます。 Re: S32DS3.4 公式サイトにはS32DSのバージョン3.5と3.6しか掲載されておらず、バージョン3.4が見つかりませんでした。 Re: S32DS3.4 こんにちは@不懂机器人 リリース版は NXPのウェブサイト および S32DS 3.4 から ダウンロードできます 。 このバージョン用の新しいアクティベーションIDを必ず取得してください。
記事全体を表示
关于 OTP 和 NVM 访问服务的关键部分保护的问题 您好,我们之前在修改 HSE_B 中的 OTP(安全调试密码)和生命周期 (LC) 时,遇到了由后台进程引起的问题。 因此,我们被建议使用临界区来保护 OTP 和 LC 更新操作。 此外,是否也需要使用临界区来保护访问 NVM 区域(而不是 OTP)的服务请求,例如ImportKey 、 FormatKeyCatalogs 、 SmrEntryInstall和CrEntryInstall ? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 嗨@lukaszadrapa , 感谢您的回复。 在这种情况下,与其进入临界区,不如在访问闪存之前检查 HSE_CONFIG_GPR3 寄存器以确保闪存访问可用,这样是否就足够了? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 嗨@wodudwo 为了获得完整的信息,我建议阅读 HSE 固件参考手册 rev. 中的描述。2.7 节: “14.6.5同步 HSE 和应用核心之间的闪存读/写访问: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 表 149、150 和 151 中提供了典型场景的详细信息。 简而言之:如果 HSE 固件正在执行,则无法对正在运行该固件的闪存块进行编程。以 S32K344 和 FULL_MEM 版本为例(仅举例),它是第 3 个块;以 AB_SWAP 为例,它是第 1 个块。必须等到 HSE 处于 IDLE状态后,才不要触发其他 HSE 服务。 如果 HSE 正在对 SYS-IMG 执行闪存操作(例如密钥目录格式化、导入密钥、写入 NVM 属性等),则此外,也无法访问数据闪存。 如果 HSE 正在写入 OTP 数据(属性、生命周期推进、编程密码等),则无法访问 UTEST 和闪存块 0,因为 UTEST 和闪存块 0 位于同一个读取分区中。如果你在使用 ADKP 编程和生命周期推进方面遇到问题,这似乎就是关键所在。请查看这篇帖子,其中我描述了需要从闪存块 0 迁移的内容: https://community.nxp.com/t5/S32K/S32K324-HSE-Setting-ADKP-Issue/mp/2369325/highlight/true#M58774 谈到闪存和 HSE 之间的同步时,请注意 RTD 中 FLS 和 CRYPTO 模块之间的同步支持是在 5.0.0 及更高版本中添加的。 以下是 6.0.0 版本的屏幕截图: 如果使用较旧的RTD版本,则需要用户自行处理。请注意,这种同步并不能解决将 OTP 属性编程到 UTEST 的问题。代码仍需从闪存块 0 迁移出来。 此致, Lukas Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 这要视具体情况而定。 “此外,是否也需要使用临界区来保护访问 NVM 区域(而不是 OTP)的服务请求,例如ImportKey 、 FormatKeyCatalogs 、 SmrEntryInstall和CrEntryInstall ?” 就这种情况而言——不。HSE_CONFIG_GPR3 通知用户,如果 HSE 阻止了对某些闪存块的读取/执行或编程/擦除操作。但这并不类似于代码中的临界区保护机制。临界区将确保不会发生任何可能访问数据闪存或以任何方式干扰操作的中断。但这与 HSE_CONFIG_GPR3 的状态无关。 总之,提到的 ImportKey、FormatKeyCatalogs、SmrEntryInstall 和 CrEntryInstall 等服务都是至关重要的配置服务,应该在受控环境中按顺序执行。使用临界区是合理的。如果在此期间需要处理一些重要的中断,则必须确保所使用的中断资源不会干扰 HSE 和 HSE 使用的闪存块。 Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 你好, @lukaszadrapa 谢谢你的解释。 如果我理解正确的话,仅仅检查 HSE_CONFIG_GPR3 寄存器是不够的,仍然需要使用临界区进行保护。 我的理解是,即使发生中断,在访问闪存之前检查 HSE_CONFIG_GPR3 寄存器也应该能够防止应用程序内核和 HSE 内核同时访问同一个闪存块。 如果不使用临界区,除了应用程序核心和 HSE 核心之间同时访问闪存之外,还会出现其他潜在问题吗? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 反过来,如果应用程序核心在 HSE 已经执行编程/擦除操作的同时执行编程/擦除操作,这是否也是一个问题? - 是的,这是一个问题,因为不能同时运行更多闪存操作。 如果是这样,是否可以通过在应用程序内核开始编程/擦除操作之前,不仅检查 HSE_CONFIG_GPR3 寄存器的第 21:16 位,而且检查第 29:24 位来防止这种情况发生? - 是的。这有助于解决 HSE 已经对闪存进行编程,而应用程序核心也想启动另一个闪存操作的情况。 如果这种方法不足以防止此类冲突,那么使用临界区是否是保护这些服务请求的推荐解决方案? - 当 HSE 执行上述 NVM 操作(目录格式、密钥导入等)时,应用程序不应启动其他闪存操作,也不应访问 HSE 正在编程的闪存块。如果中断处理程序执行了类似的操作,那么临界区可以防止这种冲突。 此外,表格没有明确描述应用程序核心正在执行代码闪存块中的代码,而 HSE 正在对同一个代码闪存块执行编程/擦除操作的情况。 在没有任何同步的情况下,这种方案是否安全?还是也需要某种形式的保护? - 代码闪存仅在 HSE/SBAF 安装/更新/恢复/擦除 HSE 固件时由 HSE 进行编程。这是通过自动复位实现的,也是由软件触发的。 HSE 固件位于代码闪存的末尾(在 FULL_MEM 版本中)或主动和被动块的末尾(AB_SWAP 版本中)。预计应用程序将从较低的闪存块开始,并且会等待初始化完成,以及 HSE 完成初始化(以及可能的闪存操作)。所以,这种情况没有风险。如果应用程序触发 HSE 固件更新,则用户有责任确保在此操作期间不会访问相应的闪存块。 如果需要针对这种情况采取保护措施,建议采用哪种实施方法? - 如上所述 - RESET后,在初始化完成之前,请勿访问包含 HSE 固件的闪存块。当您的软件启动 HSE 固件更新时,请勿访问闪存块。 Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 我们现在要回到我之前提到的 HSE 固件参考手册中的表 149、150 和 151。有必要评估程序流程,将其与表格中描述的情况进行比较,并决定是否需要采取应对措施。否则,HSE可能会干扰应用程序核心,反之亦然。 此致, Lukas Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 你好, @lukaszadrapa 感谢您的回复。 根据 HSE 固件参考手册中的表 149、150 和 151(其中描述了并发闪存编程/擦除操作的同步要求),规定如下: 无需遵循任何同步步骤。预计 M7_0/1 内核在对数据闪存进行编程时,不会向 HSE 发出任何涉及编程/擦除操作的命令。 反过来,如果应用程序核心在 HSE 已经执行编程/擦除操作的同时执行编程/擦除操作,这是否也是一个问题? 如果是这样,是否可以通过在应用程序内核开始编程/擦除操作之前,不仅检查 HSE_CONFIG_GPR3 寄存器的第 21:16 位,而且检查第 29:24 位来防止这种情况发生? 如果这种方法不足以防止此类冲突,那么使用临界区是否是保护这些服务请求的推荐解决方案? 此外,表格没有明确描述应用程序核心正在执行代码闪存块中的代码,而 HSE 正在对同一个代码闪存块执行编程/擦除操作的情况。 在没有任何同步的情况下,这种方案是否安全?还是也需要某种形式的保护? 如果需要针对这种情况采取保护措施,建议采用哪种实施方法? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services 嗨, @lukaszadrapa 谢谢你的解释。您的回答非常有帮助。
記事全体を表示
How do I build imx-optee-os from source and integrate it into the uboot FIT image? I am using the i.MX8MP SoC. I have cloned the imx-optee-ossource code from https://github.com/nxp-imx/imx-optee-os.gitand checked out the lf-6.6.36_2.1.0branch. How do I build imx-optee-osand package it into the flash.bin  image? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: How do I build imx-optee-os from source and integrate it into the uboot FIT image? Hello, I don't know exactly which BSP version you are using, but please have a look to the i.MX Linux User's Guide, section 4.5.13 How to build imx-boot image by using imx-mkimage, and look for i.MX 8M EVK section (i.MX8M is the family) Linux documentation: https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX i.MX Linux User's Guide: https://www.nxp.com/docs/en/user-guide/UG10163.pdf Best regards/Saludos, Aldo.
記事全体を表示
如何从源代码构建 imx-optee-os 并将其集成到 uboot FIT 镜像中? 我使用的是 i.MX8MP SoC。我从https://github.com/nxp-imx/imx-optee-os.git克隆了 imx-optee-os 源代码,并检出了 lf-6.6.36_2.1.0branch。如何版本 imx-optee-os 并将其软件包到 flash.bin 中图像? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: How do I build imx-optee-os from source and integrate it into the uboot FIT image? 你好, 我不太清楚您具体使用的是哪个 BSP 版本,但请参阅 i.MX Linux 用户指南的 4.5.13 节。如何使用 imx-mkimage 构建 imx-boot 镜像,并查找 i.MX 8M EVK 部分(i.MX8M 是系列名称) Linux 文档: https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX i.MX Linux 用户指南: https://www.nxp.com/docs/en/user-guide/UG10163.pdf 此致敬礼/Saludos, 阿尔多。
記事全体を表示
哪里可以找到30天的免费试用许可证? 大家好, 我正在寻找NXP MCAL的30天免费试用许可证。 过去我总能找到路。但现在网站更新了,我的许可证链接丢失了。 请问您能把许可证发给我吗?我正在使用 EB 29.0 和 RTD 6.0.0。 情况紧急,请您尽快提供帮助! BR 和谢谢, 志阳 Re: Where to find the free-trial license for 30days? 嗨,罗宾, 非常感谢! BR, 志阳 Re: Where to find the free-trial license for 30days? 嗨志扬, SW32K3_S32M27x_RTD_R21-11_6.0.0_D2506_ReleaseNotes.pdf文件中的“ 2.4.1 EB Tresos ”部分提到: 模块配置是使用 Tresos 配置工具版本“EB Tresos Studio 29.0.0 b220329-0119”开发和测试的。 请点击下载 EB Tresos Studio 29.0.0 b220329-0119。 S32K3 标准软件-> 汽车软件 - EB tresos Studio / AUTOSAR 配置工具 -> EB tresos Studio 29.0.0 此致敬礼, Robin
記事全体を表示
32 位并行接收上升沿引脚 (FRDM-MCXN947) 我目前正在尝试配置一个 32 位并行移位器,以从外部设备接收数据,其中一个引脚(FLEX_D4/DATA_VALID)用作移位数据的信号。 我取得的进展使我能够在 DATA_VALID 触发时读取 32 位数据,并将数据移动到 eDMA Ping-Pong 缓冲区。我目前正在通过 Printf 语句测试将缓冲区数据读取到控制台,如果移位器出现任何错误(通常根据数据手册指示为溢出),它们也会打印到控制台。 我认为我的主要问题出在 TimerConfig 上,因为它在 DATA_VALID 的一个上升沿触发 Shifter 读取过多次,但我还没有找到一种配置,允许我只读取一次,同时实际移动正确的数据。 控制台输出: 读取缓冲区 A:0x3fffefff 换挡器错误代码:0x8 换挡器状态:0x0 SHIFTSDEN:0x8 DMA CSR:0x0 DMA 错误:0x0 TCD BITER:0x2 CSR:0x12 CH_MUX: 0x40 读取缓冲区 B:0x3fffefff 换挡器错误代码:0x8 换挡器状态:0x0 SHIFTSDEN:0x8 DMA CSR:0x0 DMA 错误:0x0 TCD BITER:0x2 CSR:0x12 我的FLEX_IO设置已附上。谢谢。 时钟|计时器 通信与控制(I3C | I2C | SPI | FlexCAN | 以太网 | FlexIO) 开发板 MCX N Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) 更新:我推断出“ kFLEXIO_TimerDisableOnTriggerFallingEdge ”导致我的 CPU 一直处于回调状态。 我想在计时器比较后禁用它,但使用此选项后,SHIFTBUF 只报告值为 0x0,而没有 SHIFTERR 标志。 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) 嗨@carlos_o,谢谢你的回复! 我如愿以偿地在 DATA_VALID 边沿获取了定时器读数,但没有更新线程。我的代码已附上。 我现在面临的问题是如何让 FlexIO 跟上其他设备的运行速度。在我目前的设置中,我基本上是在对 DATA_VALID 进行采样,并且在更高的速度下,Shifter 可能会过载。我的想法是,我的设计需要 MCX 和发送 32 位数据的主机设备之间共享时钟。我可以使用 32 位数据总线中的一个引脚作为该信号,因此我不需要拆分 FlexIO 引脚。欢迎大家就这个想法提出任何意见! 回答你之前的问题: 1.寄存器正在按预期以较低速度填充数据。在每个 DATA_VALID 下降沿,SHIFTBUF 存储来自 32 个引脚的数据,EDMA 通过 Scatter-Gather 方法传输到我的 Ping-Pong 缓冲区。 2. 我正在通过 Analog Discovery 2 模拟输入,因为它只有 16 个数据引脚,所以我只写入 32 位的上限值,在 DATA_VALID 引脚上模拟时钟,并将未使用的引脚连接起来。低速测试数据匹配正确。 3. 我正在使用 FRDM-MCXN947 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) 嗨@Flexin_On_The_IO 感谢您的帖子! 请问您能否分享一下您在收银机中观察到的当前情况? 您想接收哪些测试数据?您目前接收到的数据是什么? 请问您使用的是哪个版本的MCXN? 这是定制电路板吗?否则,请说明您使用的板型号。 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) 嗨@Flexin_On_The_IO 很抱歉回复晚了。 请问您想要达到的速度是多少? 您可以查看AN14284:FlexIO 仿真接口的时序参数调整,这篇应用笔记可能对您的目标有所帮助。   
記事全体を表示
MCXW71 - 由于 2.4 GHz 共存/射频鲁棒性问题,2 Mbps 半双工模式下出现丢包和不稳定。 NXP社区的各位好, 我目前正在做一个使用 #MCXW71C 无线 MCU 的项目。我开发了一种在两个以 2 Mbps 数据速率运行的 MCXW71C 芯片之间进行半双工通信的协议。 虽然在干净的射频环境中通信非常稳定,但一旦其他 2.4 GHz 射频设备(例如智能手表、无线耳机或启用蓝牙的智能手机)靠近我们的硬件(在大约 30 厘米的距离内),就会出现严重的不稳定和严重的丢包。 以下是我们设备配置的一些重要细节: 硬件:这是定制的 PCB 设计(不是评估板)。我们自行设计并实现了射频前端的阻抗匹配网络。 PHY/协议:GENFSK NXP SDK 版本:SDK_2.25.09.00_MCXW716C 跳频:我们不支持 FHSS 鉴于我们的定制电路板在单独使用时效果很好,但在拥挤的射频环境中效果不佳,我们怀疑接收器可能被邻近的 2.4 GHz 干扰源降低灵敏度或饱和。 请问您能否提供一些指导? MCXW71 是否有特定的硬件调谐指南或寄存器,以优化接收机选择性、AGC(自动增益控制)行为或噪声环境下的 LNA 增益? 是否有推荐的软件共存配置或 CCA(清晰信道评估)阈值调整方法,以更好地处理数据包冲突? 我们定制的阻抗网络的轻微不匹配是否会降低收发器的选择性/阻塞性能,尤其是在存在强烈的带外/相邻干扰的情况下? 电路板设计 Re: MCXW71 - Packet loss and instability at 2 Mbps half-duplex due to 2.4 GHz co-existence / RF robu 你好, 希望你一切都好。   由于您使用的是定制板,我建议您在相同的传导测试设置下,将其性能与 FRDM-MCXW71 进行比较。在修改无线电寄存器之前,必须验证射频布局、接地、天线匹配网络、电源噪声以及任何与外壳相关的耦合效应等因素。 您还可以在扫描 CCA 阈值的同时运行 PER 测试,以找到一个实际的操作点。CCA 可以通过在信道繁忙时阻止传输来帮助减少数据包冲突,但阈值应在目标射频环境中进行经验验证。 以下文档描述了射频性能测试方法以及如何使用这些方法评估 CCA 行为: AN14399 MCXW71 802.15.4 应用连接测试 为了进一步验证您的射频设计,您可能还会发现以下文档很有用: UG10146 MCXW71 硬件设计指南 AN14374 FRDM-MCXW71 射频系统评估报告,适用于蓝牙低功耗和 IEEE 802.15.4 应用 AN2731 紧凑型平面天线,适用于 2.4 GHz 通信 此致, 索菲亚。
記事全体を表示
S32N55:如何版本 blob 映像以实现快速唤醒启动。 你好,团队、 众所周知,S32N55 支持快速唤醒启动。 我尝试使用与完全唤醒启动相同的格式构建 blob 映像,但启动过程失败了。 你能否指导我如何正确版本 Fast Wake-up 启动的 blob 镜像? 谢谢! 顺祝商祺! 唐生。 FSS_FW 优先级:中等 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@唐生_周、 该小组已受理此案,并将尽快给出答复。 致以最崇高的敬意, Radu Re: S32N55: How to build a blob image for fast wake-up boot. 你好@RaduBraga 我注意到该票已被关闭。有没有最新进展?   顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 我已经接手此案,并将尽快给予答复。   顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 如果您正在为直接客户提供支持,请提供以下信息: BSSM合同:是/否 客户公司*: 项目名称*: 客户联系人*(姓名和邮箱): 软件和硬件信息: 软件软件包信息*: 硬件*(主板/芯片组/平台): 软件版本*: *必需的 我仍在与开发团队合作处理此案例。 顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 此案与任何特定客户或项目无关。但是,我认为客户将来可能会遇到类似的问题,所以我提出了这个请求。   顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 感谢您提供的详细信息,我正在处理此案,会尽快给您答复! 顺祝商祺! 保罗
記事全体を表示
功能RESET后 RAM 数据保持功能失效 (S32K3xx) 大家好, 我们正在尝试在 S32K3xx 上进行 RESET 时保留一个变量,但它不起作用。 执行: 变量放置在自定义 RAM 部分: __attribute__ ((section(".int_sram_results"))) uint32_t retain_var; 在RESET之前更新该值(用于测试 retain_var= 0x11223344)。 RESET类型: 功能RESET(软件触发) 观察到的行为: 但该值始终为0(已清除) RAM 保留功能没有出现。 参考资料已核实: 我已经参考过这个讨论,并且尝试了建议的方法: https://community.nxp.com/t5/S32K/S32K311-noinit-ram/td-p/2123035 那里提供的例子在我们这里并不适用。 要求: 请提供一个可运行的示例或最小代码片段,说明如何在 S32K3xx 芯片上进行 RESET 后保留 RAM。 谢谢! Yusup S32K3 S32DS-ARM S32K31XEVB-Q100 Re: RAM retention not working across functional reset (S32K3xx) 你好@yusupkhan241 , 启动代码很可能在每次RESET后将整个 SRAM 初始化为零(用于 ECC 初始化)——我还没有看到你的具体启动代码。 如果RESET功能正常,您可以考虑跳过 ECC 初始化。 请参考此答案: https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/mp/1764143 BR,丹尼尔 Re: RAM retention not working across functional reset (S32K3xx) 你好@yusupkhan241 , 你说的“不起作用”是什么意思? 您上传的文件似乎没有反映最新的更改。 能否单步执行启动代码,并观察功能 RESET 后 SRAM 中的变量?这样就能清楚地显示变量被覆盖的位置。 要在功能复位后附加调试器,可以在启动代码的开头添加一个简单的循环,例如: Loop: mov r0, #1 cmp r0, 0 /* Change r0 to 0 in register view */ bne Loop /* Capture after power-on reset */ 此致, 丹尼尔 Any support, information, and technology (“Materials”) provided by NXP are provided AS IS, without any warranty express or implied, and NXP disclaims all direct and indirect liability and damages in connection with the Material to the maximum extent permitted by the applicable law. NXP accepts no liability for any assistance with applications or product design. Materials may only be used in connection with NXP products. Any feedback provided to NXP regarding the Materials may be used by NXP without restriction. Re: RAM retention not working across functional reset (S32K3xx) 嗨@danielmartynek 我简化了设置,以便隔离 RAM 保留行为。 我将变量放在专用的 SRAM 部分,并使用了一个最小的主函数,带有 LED 指示和看门狗触发的RESET。其理念是: 绿色 LED → RESET 后数值保持不变 红色 LED → 价值损失 以下是所使用的测试代码: C __attribute__ ((section(".int_sram_results"), used)) volatile uint32_t retain_var; int main(void) { Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); DIO_Init(); WDT_Init(); 如果 (retain_var == 0xAABBCCDD) { Siul2_Dio_Ip_SetPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); Siul2_Dio_Ip_ClearPins(LED_RED_PORT, (1UL << LED_RED_PIN)); } else { Siul2_Dio_Ip_SetPins(LED_RED_PORT, (1UL << LED_RED_PIN)); Siul2_Dio_Ip_ClearPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); } retain_var = 0xAABBCCDD; while(1) { /* 看门狗 RESET */ } } 显示更少 观察: 使用调试器运行时,行为符合预期。 然而,上电复位后,没有 LED 指示,这表明代码可能没有按预期执行。 我已附上最新的链接器和启动文件供您参考。 如果您发现启动或重置处理方面有任何缺失,请告诉我。 S32DS-ARM S32K31XEVB-Q100 谢谢, 优素福 Re: RAM retention not working across functional reset (S32K3xx) 嗨@danielmartynek 我已将下面的启动指令替换为您分享的更改,但它仍然不起作用。 供您参考,我已经上传了相关文件。.s 和 .ld上传的文件带有 .c 后缀。扩大。请您审阅一下,如有任何其他疑问,请随时联系我。 RamInit: /* 初始化 SRAM ECC */ ldr r0,=__RAM_INIT cmp r0, 0 /* 如果未设置 __RAM_INIT,则跳过 */ beq SRAM_LOOP_END ldr r0,=MCRGM_DES ldr r1,[r0] ldr r2,=MCRGM_DES_F_POR 以及 r1、r1、r2 cmp r1,0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM 以上说明已更新。 RamInit: /* Check MC_RGM DES register, if it's non-zero, jump to RAMInit_Start. (RAM init is needed if Destructive reset occurred) */ /* To make it work, customer should clear the MC_RGM DES register in application code. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] cmp r4, #0x0 bne RamInit_Start /* Check MC_RGM FES register, if the F_EXR bit or ST_DONE bit is set, jump to RAMInit_Start. */ /* RAM init is needed if external reset occurred, or BIST Done functional reset occurred. */ /* To make it work, customer should clear the MC_RGM FES F_EXR register bit in application code. */ ldr r4, =MC_RGM_BASE_ADDR ldr r4, [r4, #0x8] ldr r5, =MC_RGM_FES_MASK_RAM_INIT and r4, r4, r5 cmp r4, #0x0 bne RamInit_Start b SRAM_LOOP_END RamInit_Start: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __SRAM_INIT is not set */ beq SRAM_LOOP_END ldr r1, =__INT_SRAM_START ldr r2, =__INT_SRAM_END 谢谢! 优素福 Re: RAM retention not working across functional reset (S32K3xx) 能否分享一下整个测试项目,以便我这边也能轻松测试? 谢谢! 丹尼尔 Re: RAM retention not working across functional reset (S32K3xx) 嗨@danielmartynek 以下是我们测试得出的观察结果:  调试模式行为: 上电复位(红色 LED 指示灯亮起): retain_var = 0x5AA55AA5 @ 0x20407B00 看门狗复位后(绿色 LED 指示灯亮起): 保留变量 = 0xAABBCCDD @ 0x20407B00 这证实了在调试器下运行时,功能 RESET 后的 RAM 数据保持功能正常。 但是,当以独立模式运行(不使用调试器)时: 上电复位后,LED指示灯不亮。 程序似乎没有执行,或者没有到达应用程序代码。 请问您能否帮忙找出导致这种行为的原因?此外,我们计划使用完整的.int_sram_results。用于在功能RESET时保留多个参数的部分。请提出是否需要进行任何其他更改以确保可靠的数据保留。 另外,请问是否有任何 API 或推荐的方法来触发功能性重置(除了看门狗机制之外) ? 作为参考,我已将启动文件和链接器文件中的更改包含在内,您可以在共享项目中验证这些更改。 启动文件(旧代码) RamInit: /* 初始化 SRAM ECC */ ldr r0,=__RAM_INIT cmp r0, 0 /* 如果未设置 __RAM_INIT,则跳过 */ beq SRAM_LOOP_END ldr r0,=MCRGM_DES ldr r1,[r0] ldr r2,=MCRGM_DES_F_POR 以及 r1、r1、r2 cmp r1,0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM 启动文件(新代码) .equ MC_RGM_BASE_ADDR,0x4028C000 .equ MC_RGM_FES_MASK_RAM_INIT, 0xFFFFFFFF RamInit: /* 检查 MC_RGM DES 寄存器,如果它不为零,则跳转到 RAMInit_Start。(如果发生了破坏性重置,则需要进行 RAM 初始化) /* 要使其正常工作,客户应在应用程序代码中清除 MC_RGM DES 寄存器。*/ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] cmp r4,#0x0 bne RamInit_Start /* 检查 MC_RGM FES 寄存器,如果 F_EXR 位或 ST_DONE 位已设置,则跳转到 RAMInit_Start。*/ /* 如果发生外部复位,或者发生 BIST 完成功能复位,则需要进行 RAM 初始化。*/ /* 要使其正常工作,客户应在应用程序代码中清除 MC_RGM FES F_EXR 寄存器位。*/ ldr r4,=MC_RGM_BASE_ADDR ldr r4, [r4, #0x8] ldr r5,=MC_RGM_FES_MASK_RAM_INIT 以及 r4、r4、r5 cmp r4,#0x0 bne RamInit_Start b SRAM_LOOP_END RamInit_Start: /* 初始化 SRAM ECC */ ldr r0,=__RAM_INIT cmp r0, 0 /* 如果未设置 __SRAM_INIT,则跳过 */ beq SRAM_LOOP_END ldr r1, =__INT_SRAM_START ldr r2, =__INT_SRAM_END b ZERO_64B_RAM 链接器文件更改 旧代码: .int_results(NOLOAD):     { 。= ALIGN(4); KEEP(*(.int_results)) 。+= 0x100; } > int_sram_results 新代码: .int_results(NOLOAD):     { 。= ALIGN(4); KEEP(*(.int_results)) } > int_sram_results S32K31XEVB-Q100 谢谢, 优素福 Re: RAM retention not working across functional reset (S32K3xx) 你好@yusupkhan241 , 我已经调试过,发现下面的代码有误。 它使用了 R1 和 R2 而不是 R2 和 R3: 我们需要R2和R3的原因如下: 你从哪里弄到这段启动代码的? 连接调试器后,调试器会初始化 SRAM ECC。 如果没有调试器,则在 0x20400090 处出现硬故障。 此致, 丹尼尔 Re: RAM retention not working across functional reset (S32K3xx) 嗨@danielmartynek 修复使用 R2/R3 的问题后,应用程序可以运行了。 但是,红色 LED 指示灯始终闪烁,绿色指示灯始终不亮,表明 RESET 后该值无法保留。 我已经应用了您分享链接中的启动更改,但数据保留功能仍然没有按预期工作。 S32K3 S32DS-ARM https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/mp/1764143 谢谢, 优素福 Re: RAM retention not working across functional reset (S32K3xx) @danielmartynek 这件事有任何进展吗? S32DS-ARM S32K31XEVB-Q100 谢谢! 嗯。 Re: RAM retention not working across functional reset (S32K3xx) 你好@yusupkhan241 , 抱歉耽搁了,我直到现在才有时间进行测试。 我已经进行了测试,并使用下面的简单代码在仅发生功能事件状态 (FES) 复位而未检测到破坏性事件状态 (DES) 复位时跳过 SRAM 初始化。 /* * Initialize SRAM ECC only after a Destructive Reset. * * Functional reset shall preserve SRAM content, so MC_RGM_FES is not used * here to trigger SRAM initialization. * * Note: * To make this check work correctly, the application should clear MC_RGM_DES * after processing the destructive reset reason. */ /* Check MC_RGM DES register. * If DES is non-zero, a destructive reset occurred and SRAM init is needed. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] /* MC_RGM_DES */ cmp r4, #0x0 bne RamInit_Start /* No destructive reset detected. * Skip SRAM ECC initialization to preserve SRAM content across Functional Reset. */ b SRAM_LOOP_END 在 main() 函数中,清除 DES 寄存器: IP_MC_RGM->DES = 0xFFFFFFFF; BR,丹尼尔
記事全体を表示
機能リセット後もRAM保持機能が動作しない(S32K3xx) チームの皆さん、こんにちは。 S32K3xx で機能リセット後も変数を保持しようとしていますが、うまくいきません。 実装: カスタムRAMセクションに配置された変数: __attribute__ ((section(".int_sram_results"))) uint32_t retain_var; リセット前に値が更新されます(retain_var=0x11223344 のテスト用)。 リセットタイプ: 機能リセット(ソフトウェアトリガー) 観察された行動: しかし、値は常に0(クリア済み)です。 RAM保持が行われていません 参照情報を確認しました: 既にこの議論を参照し、提案された方法を試しました。 https://community.nxp.com/t5/S32K/S32K311-noinit-ram/td-p/2123035 そこで示した例は私たちのCASEでは通用しませんでした リクエスト: S32K3xxで機能リセット後もRAMを保持するための動作例または最小限のコードスニペットを共有してください。 ありがとうございます ユスアップ S32K3 S32DS-ARM S32K31XEVB-Q100  Re: RAM retention not working across functional reset (S32K3xx) こんにちは、@yusupkhan241 さん。 おそらく、起動コードはリセットのたびにSRAM全体をゼロに初期化する(ECC初期化のため)と思われます。あなたの具体的な起動コードは見ていないので、断言はできません。 リセットが機能するときにECCの初期化をスキップすることも検討できます。 この回答を参照してください。 https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/mp/1764143 BR、ダニエル Re: RAM retention not working across functional reset (S32K3xx) こんにちは、@yusupkhan241 さん。 「うまくいかない」とはどういう意味ですか? あなたが投稿したファイルは、最新の変更を反映していないようです。 機能リセット後にスタートアップコードを見てSRAMの変数を観察できますか?これにより、変数がどこで上書きされるかが明確に示されるはずです。 機能リセット後にデバッガーを取り付けるには、スタートコードの冒頭に簡単なループを追加できます。例えば: Loop: mov r0, #1 cmp r0, 0 /* Change r0 to 0 in register view */ bne Loop /* Capture after power-on reset */ よろしくお願いいたします。 ダニエル Any support, information, and technology (“Materials”) provided by NXP are provided AS IS, without any warranty express or implied, and NXP disclaims all direct and indirect liability and damages in connection with the Material to the maximum extent permitted by the applicable law. NXP accepts no liability for any assistance with applications or product design. Materials may only be used in connection with NXP products. Any feedback provided to NXP regarding the Materials may be used by NXP without restriction. Re: RAM retention not working across functional reset (S32K3xx) こんにちは、 @danielmartynek さん。 下記の起動手順を、あなたが共有してくれた変更内容に置き換えてみましたが、うまくいきませんでした。 ご参考までに、関連ファイルをアップロードしました。.s と .ld.c 拡張子のファイルがアップロードされました拡大。内容をご確認いただき、追加情報が必要な場合はお知らせください。 RamInit: /* SRAM ECCを初期化 */ ldr r0, =__RAM_INIT cmp r0、0 /* __RAM_INIT が設定されていない場合はスキップします */ beq SRAM_LOOP_END ldr r0、=MCRGM_DES ldr r1, [r0] ldr r2、=MCRGM_DES_F_POR r1、r1、r2 cmp r1、0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM 上記の手順が更新されました RamInit: /* Check MC_RGM DES register, if it's non-zero, jump to RAMInit_Start. (RAM init is needed if Destructive reset occurred) */ /* To make it work, customer should clear the MC_RGM DES register in application code. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] cmp r4, #0x0 bne RamInit_Start /* Check MC_RGM FES register, if the F_EXR bit or ST_DONE bit is set, jump to RAMInit_Start. */ /* RAM init is needed if external reset occurred, or BIST Done functional reset occurred. */ /* To make it work, customer should clear the MC_RGM FES F_EXR register bit in application code. */ ldr r4, =MC_RGM_BASE_ADDR ldr r4, [r4, #0x8] ldr r5, =MC_RGM_FES_MASK_RAM_INIT and r4, r4, r5 cmp r4, #0x0 bne RamInit_Start b SRAM_LOOP_END RamInit_Start: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __SRAM_INIT is not set */ beq SRAM_LOOP_END ldr r1, =__INT_SRAM_START ldr r2, =__INT_SRAM_END ありがとうございます ユスプ Re: RAM retention not working across functional reset (S32K3xx) こんにちは、 @danielmartynek さん。 RAM保持動作を分離するために、設定を簡略化しました。 私はその変数を専用のSRAM領域に配置し、LED表示とウォッチドッグによるリセット機能を備えた最小限のメイン関数を使用しました。その考え方は次の通りです: 緑色LED → リセット後も値が保持されます 赤色LED → 価値が失われる 以下に、使用されているテストコードを示します。 C __attribute__ ((section(".int_sram_results"), used)) volatile uint32_t retain_var; int main(void) { Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); DIO_Init(); WDT_Init(); if (retain_var == 0xAABBCCDD) { Siul2_Dio_Ip_SetPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); Siul2_Dio_Ip_ClearPins(LED_RED_PORT, (1UL << LED_RED_PIN)); } そうでない場合、 { Siul2_Dio_Ip_SetPins(LED_RED_PORT, (1UL << LED_RED_PIN)); Siul2_Dio_Ip_ClearPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); } retain_var = 0xAABBCCDD; while(1) { /* ウォッチドッグリセット */ } } 表示を減らす 観察: デバッガーを使用して実行した場合、動作は想定どおりです。 しかし、電源投入後のリセット後、LEDが点灯しないため、コードが期待どおりに実行されていない可能性がある。 参考までに、最新のリンカーファイルとスタートアップファイルを添付しました。 起動処理やリセット処理に関して何か不足している点があればお知らせください。 S32DS-ARM S32K31XEVB-Q100  ありがとう、 ユスプ Re: RAM retention not working across functional reset (S32K3xx) テストプロジェクト全体を共有してもらえますか?そうすれば自分の側でも簡単にテストできます。 ありがとうございました。 ダニエル Re: RAM retention not working across functional reset (S32K3xx) こんにちは、 @danielmartynek さん。 以下は、当社のテスト結果から得られた所見です。  デバッグモードの動作: 電源投入リセット(赤色LED): retain_var = 0x5AA55AA5 @ 0x20407B00 ウォッチドッグリセット後(緑色LED): 保持_var = 0xAABBCCDD @ 0x20407B00 これは、デバッガで実行している場合でも、機能リセット後のRAM保持機能が正常に動作していることを確認するものです。 ただし、スタンドアロン(デバッガーなし)で実行する場合: 電源投入後リセットしても、LED表示は点灯しません。 プログラムが実行されていないか、アプリケーションコードに到達していないようです。 この行動の原因を特定する手助けをしてもらえますか?また、完全な.int_sram_resultsを使用する予定です。機能リセット後も複数のパラメータを保持するためのセクション。確実なデータ保持のために、他に何か変更が必要かどうかご提案ください。 さらに、 ウォッチドッグの代替として機能リセットをトリガーするAPIや推奨方法があれば教えていただけますか? 参考までに、スタートアップファイルとリンカーファイルに加えた変更は共有プロジェクトで検証可能です。 起動ファイル(旧コード) RamInit: /* SRAM ECCを初期化 */ ldr r0, =__RAM_INIT cmp r0、0 /* __RAM_INIT が設定されていない場合はスキップします */ beq SRAM_LOOP_END ldr r0、=MCRGM_DES ldr r1, [r0] ldr r2、=MCRGM_DES_F_POR r1、r1、r2 cmp r1、0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM 起動ファイル(新規コード) .equ MC_RGM_BASE_ADDR、0x4028C000 .equ MC_RGM_FES_MASK_RAM_INIT、0xFFFFFFFF RamInit: /* MC_RGM DESレジスタをチェックし、ゼロでない場合はRAMInit_Startにジャンプします。(破壊的リセットが発生した場合は、RAM初期化が必要です) /* 動作させるには、お客様がアプリケーションコードの MC_RGM DES レジスタをクリアする必要があります。*/ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4、[r4、#0x0] cmp r4、#0x0 bne RamInit_Start /* MC_RGM FESレジスタをチェックし、F_EXRビットまたはST_DONEビットが設定されている場合は、RAMInit_Startにジャンプします。*/ /* 外部リセットが発生した場合、または BIST 完了機能リセットが発生した場合は、RAM 初期化が必要です。*/ /* 動作させるには、お客様はアプリケーションコード内のMC_RGM FES F_EXRレジスタビットをクリアする必要があります。*/ ldr r4、=MC_RGM_BASE_ADDR ldr r4、[r4、#0x8] ldr r5、=MC_RGM_FES_MASK_RAM_INIT r4、r4、r5 cmp r4、#0x0 bne RamInit_Start b SRAM_LOOP_END RamInit_Start: /* SRAM ECCを初期化 */ ldr r0, =__RAM_INIT cmp r0、0 /* __SRAM_INITが設定されていない場合はスキップします */ beq SRAM_LOOP_END ldr r1, =__INT_SRAM_START ldr r2, =__INT_SRAM_END b ZERO_64B_RAM リンカーファイルの変更 古いコード: .int_results (NOLOAD):     { 。= ALIGN(4); KEEP(*(.int_results)) 。+= 0x100; } > int_sram_results 新しいコード: .int_results(NOLOAD):     { 。= ALIGN(4); KEEP(*(.int_results)) } > int_sram_results S32K31XEVB-Q100 ありがとう、 ユスプ Re: RAM retention not working across functional reset (S32K3xx) こんにちは、@yusupkhan241 さん。 デバッグを行った結果、以下のコードに誤りがあることがわかりました。 R2とR3の代わりにR1とR2を使用しました。 R2とR3が必要な理由は以下のとおりです。 この起動コードはどこで入手したのですか? デバッガが接続された状態で、デバッガはSRAM ECCを初期化します。 デバッガーを使用しない場合、0x20400090でハードフォルトが発生しました。 よろしくお願いいたします。 ダニエル Re: RAM retention not working across functional reset (S32K3xx) こんにちは、 @danielmartynek さん。 R2/R3を使うように設定すると、アプリケーションは動作します。 しかし、赤色LEDは常に点滅し、緑色LEDは点灯しないため、リセット後に値が保持されないことを示しています。 共有いただいたリンクから起動時の変更を適用しましたが、保持機能が期待どおりに動作しません。 S32K3 S32DS-ARM  https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/mp/1764143 ありがとう、 ユスプ Re: RAM retention not working across functional reset (S32K3xx) こんにちは、@yusupkhan241 さん。 遅れて申し訳ありません。テストに取り掛かることができたのは今になってからです。 私は今、テストを行い、機能イベント状態(FES)リセットのみが発生し、破壊イベント状態(DES)リセットが検出されなかった場合、以下の簡単なコードを使ってSRAMの初期化をスキップしました。 /* * Initialize SRAM ECC only after a Destructive Reset. * * Functional reset shall preserve SRAM content, so MC_RGM_FES is not used * here to trigger SRAM initialization. * * Note: * To make this check work correctly, the application should clear MC_RGM_DES * after processing the destructive reset reason. */ /* Check MC_RGM DES register. * If DES is non-zero, a destructive reset occurred and SRAM init is needed. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] /* MC_RGM_DES */ cmp r4, #0x0 bne RamInit_Start /* No destructive reset detected. * Skip SRAM ECC initialization to preserve SRAM content across Functional Reset. */ b SRAM_LOOP_END main()関数内で、DESレジスタをクリアします。 IP_MC_RGM->DES = 0xFFFFFFFF; BR、ダニエル Re: RAM retention not working across functional reset (S32K3xx) @danielmartynek この件について何か進展はありますか? S32DS-ARM S32K31XEVB-Q100  ありがとうございます ユスプ。
記事全体を表示
S32DS3.4 能提供一下S32DS3.4的下载链接和激活密钥吗? Re: S32DS3.4 好的,谢谢 Re: S32DS3.4 Hi@不懂机器人 点击这个,可以找到旧版本的S32 DS。 新版本我没有测试过安装SDK,如果是RTM 3.0.X的你只能在S32 DS V2.2上用,RTM 4,0,X的话,我没有尝试过在S32 DS V3.6上安装。 Re: S32DS3.4   呃...... 这3.4版本点进去怎么跳转到3.5版本的下载了 也就是说S32DS V3.6不支持S32K1系列SDK版本是吧 Re: S32DS3.4 Hi@不懂机器人 继续点击下载,会跳转到下载页面,这里面可以看到不同的S32 DS版本。 对于S32 DS V3.6,这要看你开发S32K1所使用的软件版本是什么,是SDK还是RTD。 如果你是新开发的应用,使用RTD,这完全支持。 Re: S32DS3.4 从你提供的链接进去是这样的 S32DS v3.6 支持S32K146芯片吗? Re: S32DS3.4 还有就是,S32 DS V3.6是可以兼容旧版本的 Re: S32DS3.4 Hi@不懂机器人 你将你的下载页面的截图提供给我,我看一下 Re: S32DS3.4 你们官网进去只有S32DS3.5和3.6版本的,没找到3.4版本。 Re: S32DS3.4 嗨@不懂机器人 该版本可在NXP 网站和S32DS 3.4中下载。 请确保您已获取此版本的新激活码。
記事全体を表示
32ビット並列受信(立ち上がりエッジピン)(FRDM-MCXN947) 現在、32ビットパラレルシフターを構成して、外部デバイスからデータを受信するようにしようとしています。その際、ピンの1つ(FLEX_D4/DATA_VALID)をデータシフトのための信号として使用します。 これまでの進歩により、DATA_VALIDがトリガーされたときに32ビットデータを読み込み、そのデータをeDMA Ping-Pongバッファに移動させることが可能になりました。現在、Printf文を使用してバッファデータをコンソールに読み出すテストを行っています。Shifterにエラーが発生した場合(データシートによると通常はオーバーランを示す)、それもコンソールに出力されます。 私の主な問題はTimerConfigにあると考えています。DATA_VALIDの立ち上がりエッジでShifterが何度も読み取りをトリガーしてしまうのですが、正しいデータを実際に移動させながら一度だけ読み取りを行うような設定が見つかりません。 コンソール出力: 読み取りバッファA: 0x3fffefff シフトエラーコード: 0x8 シフターの状態: 0x0 SHIFTSDEN: 0x8 DMA CSR: 0x0 DMAエラー: 0x0 TCD BITER: 0x2 CSR: 0x12 CH_MUX: 0x40 バッファBの読み取り: 0x3ffffefff シフトエラーコード: 0x8 シフターの状態: 0x0 SHIFTSDEN: 0x8 DMA CSR: 0x0 DMAエラー: 0x0 TCD BITER: 0x2 CSR: 0x12 私のFLEX_IOの設定ファイルを添付します。ありがとう。 クロック|タイマー 通信・制御(I3C |I2C |SPI |FlexCAN |イーサネット |FlexIO) 開発ボード MCX N Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) 更新: 「 kFLEXIO_TimerDisableOnTriggerFallingEdge 」がCPUをコールバック内に留めていたことが分かりました。 タイマー比較後に無効にしたいのですが、このオプションでは SHIFTBUF は 0x0 の値のみを報告し、SHIFTERR フラグは報告しません。 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) こんにちは、 @carlos_oさん、返信ありがとうございます! 思ったようにタイマーをエッジで表示DATA_VALIDきましたが、Threadは更新しませんでした。現在使用しているコードを添付します。 私が現在直面している問題は、FlexIOを他のデバイスと同等の速度で動作させることです。今のセットアップでは基本的にサンプリングDATA_VALIDで、高速になるとシフターがオーバーランになることがあります。私の考えでは、私のデザインにはMCXとホストデバイス間で共有クロックが必要であり、ホストデバイスが32ビットデータを送る予定だと思います。32ビットデータバス内のピンをこの信号に使えるので、FlexIOのピンを分割する必要がありません。このアイデアについて何かご意見があればぜひお聞かせください! 以前のご質問にお答えします。 1.レジスタは、低速でも意図どおりにデータが格納されています。DATA_VALIDの降下エッジごとに、SHIFTBUFは32ピンからデータを保存し、EDMAは散布・採集方法でピンポンバッファに転送します。 2. アナログ Discovery 2で入力をシミュレートしています。アナログ Discovery 2はデータピンが16本しかないため、32ビットの上限値を書き込み、DATA_VALIDピンでクロックをシミュレートし、未使用のピンを固定しています。低速走行時におけるテストデータは正しく一致している。 3. 私はFRDM-MCXN947を使用しています Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) こんにちは、 @Flexin_On_The_IO さん。 投稿ありがとうございます! あなたのレジスターで現在の行動について教えていただけますか? どのようなテストデータを受信しようとしていますか?また、現在どのようなデータが受信されていますか? どのMCXNを使っているのか教えていただけますか? これはカスタムボードですか?そうでない場合は、使用しているボードを指定してください。 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) こんにちは、 @Flexin_On_The_IO さん。 返信が遅くなり申し訳ありません。 目指している速度を具体的に教えていただけますか? AN14284 『FlexIO Emulated インターフェース のタイミングパラメータチューニング』をレビューすると良いでしょう。このアプリのノートにはあなたの目標に役立つ情報が載っているかもしれません。   
記事全体を表示
S32N55: 高速ウェイクアップ ブート用の BLOB イメージを構築する方法。 こんにちは、チームの皆さん ご存知のとおり、S32N55 は Fast Wake-up Boot をサポートしています。 Full Wake-up Boot と同じ形式を使用して BLOB イメージをビルディングしようとしましたが、ブート プロセスが失敗しました。 Fast Wake-up Boot 用の BLOB イメージを正しく構築する方法を教えてください。 ご回答をお待ちしています。 よろしくお願いいたします。 唐生。 FSS_FW 優先度: 中 Re: S32N55: How to build a blob image for fast wake-up boot. こんにちは@Tangsheng_Zhouさん チームがこのCASEを引き受け、できるだけ早く回答を提供します。 よろしくお願いします、 ラドゥ Re: S32N55: How to build a blob image for fast wake-up boot. こんにちは、 @RaduBragaさん このチケットがクローズされていることに気づきました。進捗状況について何か最新情報はありますか?   よろしくお願いいたします。 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. こんにちは@Tangsheng_Zhouさん 私はこのCASEを引き継ぎ、できるだけ早く返答をいたします。   よろしくお願いいたします。 ポール Re: S32N55: How to build a blob image for fast wake-up boot. こんにちは@Tangsheng_Zhouさん 直接お客様を支援される場合は、以下の書類をご提供ください: BSSM契約:あり/なし 顧客会社*: プロジェクト名*: カスタマーコンタクトポイント*(氏名およびメールアドレス): ソフトウェアおよびハードウェア情報: SWパッケージ情報*: ハードウェア*(ボード/チップセット/プラットフォーム) ソフトウェアバージョン*: *必須 このケースの開発チームとはまだ協力しています よろしくお願いいたします。 ポール Re: S32N55: How to build a blob image for fast wake-up boot. こんにちは、 @PaulB0besさん。 このケースは特定の顧客やプロジェクトに縛られていません。しかし、FUTURE的に同様の質問に直面する可能性があると考えており、このリクエストを出したのです。   よろしくお願いいたします。 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. こんにちは@Tangsheng_Zhouさん 詳しい情報をありがとうございます。私はこの事件に取り組んでおり、できるだけ早く答えを提供いたします! よろしくお願いいたします。 ポール
記事全体を表示