Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
i.MX8MPLUS uSDHC HS400 模式,带增强型频闪功能 HS400 是否有推荐的激活增强型频闪功能的步骤?是否只需在 MIX_CTRL 寄存器中设置 EN_HS400_MODE 即可,还是需要在 STROBE_DLL_CTRL 寄存器中进行一些额外的修改? 此致, 斯特凡 Re: i.MX8MPLUS uSDHC HS400 mode with enhanced strobe 嗨@Stefan_CIT HS400ES 需要同时在 eMMC 端和主机端进行配置。单独设置 EN_HS400_MODE 只是主机端配置的一部分,不足以启用 HS400 增强型频闪功能。 如果您使用的是 Linux BSP,驱动程序会自动完成 DLL 和调优配置。 此致, 志明
記事全体を表示
MCXW71 - Packet loss and instability at 2 Mbps half-duplex due to 2.4 GHz co-existence / RF robustne Hi NXP Community, I am currently working on a project using the  #MCXW71C wireless MCU. I have developed a half-duplex communication protocol between two MCXW71C chips running at a 2 Mbps data rate. While the communication is perfectly stable in a clean RF environment, I am experiencing severe instability and significant packet loss as soon as other 2.4 GHz RF devices (such as smartwatches, wireless earbuds, or smartphones with Bluetooth enabled) are brought close to our hardware (within a distance of about 30 cm). Here are some important details about our setup: Hardware: This is a custom PCB design (not an evaluation board). We designed and implemented the impedance matching network ourselves for the RF front-end. PHY / Protocol: GENFSK NXP SDK Version: SDK_2.25.09.00_MCXW716C Frequency Hopping: not us FHSS Given that our custom board works well in isolation but suffers in congested RF environments, we suspect the receiver might be desensitized or saturated by adjacent 2.4 GHz interferers. Could you please provide some guidance? Are there specific hardware tuning guidelines or registers for the MCXW71 to optimize receiver selectivity, AGC (Automatic Gain Control) behavior, or LNA gain in noisy environments? Is there a recommended software Coexistence configuration or CCA (Clear Channel Assessment) threshold tuning to better handle packet collisions? Could a slight mismatch in our custom impedance network degrade the selectivity/blocking performance of the transceiver specifically in the presence of strong out-of-band/adjacent interferers? Board Design Re: MCXW71 - Packet loss and instability at 2 Mbps half-duplex due to 2.4 GHz co-existence / RF robu Hello, Hope you are doing well.   Since you are using a custom board, I would recommend comparing its performance against the FRDM-MCXW71 under the same conducted test setup. Before modifying radio registers, it is important to verify factors such as the RF layout, grounding, antenna matching network, power supply noise, and any enclosure-related coupling effects. You can also run PER tests while sweeping the CCA threshold to find a practical operating point. CCA can help reduce packet collisions by preventing transmission when the channel is already busy, but the threshold should be validated empirically in the target RF environment. The following document describes RF performance testing methods and how to use them to evaluate CCA behavior: AN14399 MCXW71 Connectivity Test for 802.15.4 Applications To further validate your RF design, you may also find the following documents useful: UG10146 MCXW71 Hardware Design Guide AN14374 FRDM-MCXW71 RF System Evaluation Report for Bluetooth LE and IEEE 802.15.4 Applications AN2731 Compact Planar Antennas for 2.4 GHz Communication Best regards, Sofia.
記事全体を表示
TJA1120A RGMII Auto-Ethernet We are working on TJA1120A RGMII Auto-Ethernet on our Custom Board based on TI AM62A7 Kindly help us with how to enable this interface on Yocto Linux  We have tried following DTS node format as in https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/net/nxp%2Ctja11xx.yaml But driver didnt probe on Kernel dmesg We understand that this PHY has vendor ID D001B:B031 We have also enabled CONFIG_NXP_TJA11XX_PHY in kernel config CONFIG_NXP_C45_TJA11XX_PHY Re: TJA1120A RGMII Auto-Ethernet Hello @vikyhre , To narrow this down, could you please share: 1) Does U-Boot detect the PHY on the MDIO bus at the expected address? (e.g. output of “mdio list” / “mii info”) 2) Please share the relevant DTS snippets for the CPSW port node and the MDIO/PHY node (phy-handle, phy-mode, PHY reg/address), plus the boot log lines related to MDIO/PHY init: dmesg | egrep -i "mdio|cpsw|phy|tja|nxp" With these two items we can quickly determine whether the PHY is not visible on MDIO (HW/pinmux/reset/address) or if it’s a DT binding/reference issue. Best regards, Pavel Re: TJA1120A RGMII Auto-Ethernet We are using AM62A7 based iWave SoM, we didnt touch the u-boot/bootloader firmware residing in the eMMC as of now U-Boot SPL 2023.04-g2b8a667ace (May 24 2024 - 11:27:05 +0000) SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)') am62a_init: board_init_f done SPL initial stack usage: 17040 bytes am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Trying to boot from MMC1 am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed Starting ATF on ARM64 core... NOTICE: BL31: v2.9(release):d7a7135d3-dirty NOTICE: BL31: Built : 09:34:15, Aug 24 2023 U-Boot SPL 2023.04-g2b8a667ace (May 24 2024 - 11:27:05 +0000) SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)') am62a_init: board_init_f done am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Trying to boot from MMC1 am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed U-Boot 2023.04-g2b8a667ace (May 24 2024 - 11:27:05 +0000) SoC: AM62AX SR1.0 HS-FS Model: iW-RainboW-G55M-TI-AM62AX OSM DRAM: 2 GiB Core: 60 devices, 29 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial@2800000 Out: serial@2800000 Err: serial@2800000 Board Info: BSP Version : iW-PRHAZ-SC-01-R2.0-REL1.0-Linux6.1.46 SOM Version : iW-PRHAZ-AP-01-R2.0 Net: eth0: ethernet@8000000port@1 Hit any key to stop autoboot: 0 iWave-G55M > mdio list mdio@f00: ethernet@8000000port@1: 4 - Generic PHY <--> ethernet@8000000port@1 iWave-G55M > mii info  U-Boot firmware is something we didnt change, we just boot our Linux from SD-Card I have attached k3-am62a7-iwg55m.dtsi, where both ethernets eth0,eth1 are disabled &cpsw3g { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_rgmii1_pins_default>, <&main_rgmii2_pins_default>; cpts@3d000 { /* MAP HW3_TS_PUSH to GENF1 */ ti,pps = <2 1>; }; }; &cpsw_port1 { status = "disabled"; phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "disabled"; phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy1>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { reg = <4>; adi,rx-internal-delay-ps = <2000>; }; cpsw3g_phy1: ethernet-phy@1 { reg = <5>; qca,disable-smarteee; vddio-supply = <&vddio0>; vddio0: vddio-regulator { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; }; }; In k3-am62a7-iwg55s-prgjj-41.dts, i enabled both eth0 and eth1 with appropiate DT entries &cpsw_port1 and &cpsw3g_phy0 corresponds to our Auto-Ethernet &cpsw_port1 { status = "okay"; phy-mode = "rgmii"; }; &cpsw_port2 { status = "okay"; phy-mode = "rgmii"; }; &cpsw3g_phy0 { //compatible = "ethernet-phy-id001b.b031", "ethernet-phy-ieee802.3-c45"; compatible = "ethernet-phy-id001b.b030"; nxp,rmii-refclk-in; reg = <4>; }; &cpsw3g_phy1 { compatible = "ethernet-phy-id0022.1620"; reg = <0>; txc-skew-ps = <900>; rxc-skew-ps = <900>; rxd0-skew-ps = <420>; rxd1-skew-ps = <420>; rxd2-skew-ps = <420>; rxd3-skew-ps = <420>; txd0-skew-ps = <420>; txd1-skew-ps = <420>; txd2-skew-ps = <420>; txd3-skew-ps = <420>; rxdv-skew-ps = <420>; txen-skew-ps = <420>; }; Here, my PHY TJA1120A has PHY Identification Register 1: 1B and PHY Identification Register 2: B030. So appropiate driver should be  compatible = "ethernet-phy-id001b.b030" Response for dmesg | egrep -i "mdio|cpsw|phy|tja|nxp" root@am62ax-iwg55m-osm:/sys/class/hwmon/hwmon0# dmesg | egrep -i "mdio|cpsw|phy|tja|nxp" [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys). [ 1.349271] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000 [ 1.358577] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver Micrel KSZ9031 Gigabit PHY [ 1.368066] davinci_mdio 8000f00.mdio: phy[4]: device 8000f00.mdio:04, driver unknown [ 1.375925] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006 [ 1.388839] am65-cpsw-nuss 8000000.ethernet: Use random MAC address [ 1.395108] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5 [ 1.402236] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512 [ 1.412875] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1 [ 1.422952] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19 [ 6.876699] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:00] driver [Micrel KSZ9031 Gigabit PHY] (irq=POLL) [ 6.893353] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii link mode [ 6.937861] am65-cpsw-nuss 8000000.ethernet eth0: validation of rgmii with support 00000000,00000000,00006280 and advertisement 00000000,00000000,00002280 failed: -EINVAL I have also attached dmesg Re: TJA1120A RGMII Auto-Ethernet Hello @vikyhre , Please note that Community threads are actively monitored for 7 days after the last post. After this period, we only receive subscription email notifications for further updates, and such notifications can occasionally be missed.   If you need additional assistance in the future, we recommend creating a new Community query or supporting ticket https://support.nxp.com/s/?language=en_US . Anyway, here's my analyses. Please note that the Linux commands below are provided as suggested diagnostic checks. Since I do not have access to your exact build and runtime environment, I cannot directly verify them on your setup and minor adaptations may be needed depending on your system configuration. The following thread might be useful as a reference: No packet transmission with TJA1120 and i.MX8 Eval hardware From the log, the MDIO access itself seems to be working, because Linux detects two PHY devices on the MDIO bus: [ 1.358577] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver Micrel KSZ9031 Gigabit PHY [ 1.368066] davinci_mdio 8000f00.mdio: phy[4]: device 8000f00.mdio:04, driver unknown So the TJA1120A appears to be visible at MDIO address 4, but it is not bound to the NXP C45 TJA11xx PHY driver yet. This is likely why the CPSW port later fails during RGMII validation. As a first step, please try updating the TJA1120A PHY node to explicitly specify Clause 45: &cpsw_port1 {     status = "okay";     phy-mode = "rgmii";      /* or rgmii-id / rgmii-rxid / rgmii-txid depending on your board delay design */     phy-handle = <&cpsw3g_phy0>; };   &cpsw3g_phy0 {     compatible = "ethernet-phy-id001b.b030", "ethernet-phy-ieee802.3-c45";     reg = <4>;     status = "okay"; }; Also, please remove this property from the TJA1120A node:  nxp,rmii-refclk-in; This property is related to RMII reference clock configuration and should not be used for your RGMII TJA1120A setup.   After rebuilding and booting with the updated DTB, please check whether the driver is attached, for example: dmesg | egrep -i "mdio|cpsw|phy|tja|nxp"   The expected result is that the PHY at address 4 is no longer shown as driver unknown , but is attached to the NXP C45 TJA11xx/TJA1120 driver. If it still remains driver unknown , please also confirm that the running kernel really contains the driver support: zcat /proc/config.gz | egrep "NXP.*TJA|C45|PHYLIB" find /lib/modules/$(uname -r) -name "*tja*"   Best regards, Pavel
記事全体を表示
S32N55: How to build a blob image for fast wake-up boot. Hello Team, As we know, the S32N55 supports Fast Wake-up Boot. I tried building a blob image using the same format as Full Wake-up Boot, but the boot process failed. Could you please guide me on how to correctly build a blob image for Fast Wake-up Boot? Thank you! Best regards, Tangsheng. FSS_FW Priority: MEDIUM Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou, The team has picked up the case and will provide an answer as soon as possible.  Best regards, Radu  Re: S32N55: How to build a blob image for fast wake-up boot. Hello @RaduBraga  I noticed that this ticket has been closed. Is there any update on the progress?   Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , I took over the case and will provide a response as soon as possible.   Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , If you are supporting a Direct Customer, please provide: BSSM Contract: Yes / No Customer Company*: Project Name*: Customer Contact Point* (Name & Email): Software & Hardware Information: SW Package Info*: HW* (Board/Chipset/Platform): SW Version*: *required I am still working with the development team for this case Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , Thank you for these details, I am working on this case and will provide an answer as soon as possible! Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  This case is not tied to any specific customer or project. However, I believe customers may encounter similar questions in the future, which is why I raised this request.   Best regards, Tangsheng.
記事全体を表示
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,丹尼尔
記事全体を表示