Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
为什么NPU tflite模型和tflite模型的结果不同? 我有一个量化分类模型。我使用命令将其转换为 NPU tflite 模型 ./neutron-converter \ --输入 QAT.tflite \ --输出 QAT_NPU.tflite \ --target imxrt700 \ --dump-header-file-output \ --dump-header-file-input \ --使用序列器 之后,我使用了 2 个生成的模型头文件,分别用于 NPU 和 CPU。 我使用了针对我们模型修改过的示例 tflm_cifar10_cm33_core0。我使用了示例 image_data.h(已将图像调整大小以适应模型输入尺寸)。但是两个模型(在 CPU 和 NPU 模式下)的最终结果却不同: - 在大多数情况下,预测的类别相同,概率也相似(数值不完全匹配)。 - 在某些情况下,两种模式下的预测类别不同 ==>您对此问题有什么看法?抱歉,我无法分享我的模型。 Re: Why results from NPU tflite model and tflite model are different? 我尝试使用示例tflm_cifar10_cm33_core0来验证这个问题。但在这个示例中,只有 NPU tflite 模型,我没有看到另一个(CPU tflite 模型)。我想用不同的图像比较预测结果,看看这个问题是否也出现在 NXP 预训练的模型中。 如果您有 CPU tflite 型号(对应 NPU tflite 型号tflm_cifar10_cm33_core0),请与我分享。 我很好奇从 tflite 模型转换为 NPU tflite 模型是否会导致推理结果的差异。 谢谢!
記事全体を表示
How much internal RAM does the MIMXRT1052CVL5B actually have? Is it true that the internal RAM is only 512KB at most? Is the total RAM (ITCM/DTCM/SRAM) 512KB? Or is it 512K SRAM + 512K TCM? Re: MIMXRT1052CVL5B 内部RAM到底有多大? Hi @SDFDSFSF , Thank you for your question! The MIMXRT1052CVL5B is not "512KB SRAM + 512KB TCM". Its total on-chip SRAM should be understood as 512KB; this 512KB is FlexRAM, which can be reallocated among ITCM, DTCM, and OCRAM. You can find detailed instructions in AN12077 . Best regards, Gavin
記事全体を表示
S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled Hello NXP Technical Support Team, I have a question regarding the FIRC clock configuration on the S32K328. I configured the FIRC clock source for the STM2 module to 3MHz (DIV 16) in a single-core setup. In the single-core configuration, I confirmed that the FIRC clock source is correctly output at 3MHz. However, once I enable multicore, the FIRC clock source is output at 48MHz instead of 3MHz, even though the divider is still set to 16. In my current architecture, MCU Init and Set Mode can only be executed on Core 0. My question is whether the MCU clock can also be accessed (or reconfigured) from Core 1, and whether this could be the cause of the issue. Additional context on my setup: I am working in an AUTOSAR environment and have added the RM (Resource Manager) module for multicore support. Domain0 master: Core 0, Domain1 master: Core 1. All memory and peripheral access permissions have been granted for each domain. Tool environment: MCAL RTD 3.0.0 EB Tresos 27.1.0 Findings from my own analysis: When reading the FIRC_DIV_SEL field in the CONFIG_REG_GPR register at runtime, the value is 3, which corresponds to 48MHz according to the driver code (DividerValue mapping: 48MHz→3, 24MHz→1, 3MHz→2). I also noticed that the divider write path in the clock driver includes an APP_CORE_ACC permission check and a wait for the Secure BAF (CORE2) to enter WFI (by polling PRTN0_CORE2_STAT). I suspect the divider write may be skipped in the multicore configuration. Could you please advise on the following: Why the FIRC divider setting (DIV 16) is not applied when multicore is enabled, resulting in 48MHz output instead of 3MHz? Whether accessing or reconfiguring the MCU clock from Core 1 is supported or required in this scenario. Whether the divider write could be skipped due to the APP_CORE_ACC permission check or the Secure BAF WFI timeout in the multicore configuration, and how to ensure the divider is correctly applied. Thank you for your support. I look forward to your response. Best regards, AWS-LIBRARIES-S32K3  Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled Hello, I have found the root cause on my side. Please see the relevant driver function below (Clock_Ip_SetFircDivSelHSEb in \Mcu_TS_T40D34M30I0R0\src\Clock_Ip_IntOsc.c 😞 c /* Application can write this divider */ if ( ((IP_CONFIGURATION_GPR->CONFIG_REG_GPR & CONFIGURATION_GPR_CONFIG_REG_GPR_APP_CORE_ACC_MASK) >> CONFIGURATION_GPR_CONFIG_REG_GPR_APP_CORE_ACC_SHIFT) == CLOCK_IP_APP_CAN_WRITE) { ... /* FIRC_DIV_SEL write happens here */ } else { /* HSE firmware doesn't allow to write FIRC post divider. */ Clock_Ip_ReportClockErrors(CLOCK_IP_REPORT_WRITE_PROTECTION_ERROR, Config->Name); } The problem is that in my multicore configuration, the code never enters this if (APP_CORE_ACC == CLOCK_IP_APP_CAN_WRITE) block when running at full speed. I verified this by placing a while(1) inside the block — it is never reached. As a result, the FIRC_DIV_SEL write is skipped and the register stays at its reset value 3 (48MHz) instead of the configured 2 (3MHz). This makes my STM tick run 16x faster than intended. However, when I run in debug mode (stepping / with breakpoints), the same block executes correctly and FIRC_DIV_SEL is properly set to 2 (3MHz). This difference between full-speed and debug execution is the key symptom. So the APP_CORE_ACC bit in CONFIG_REG_GPR is not set to CLOCK_IP_APP_CAN_WRITE at the moment Mcu_InitClock reads it during a full-speed multicore boot, but it does become writable when I slow execution down with the debugger. Additional context on my setup: Mcu_InitClock and Mcu_SetMode are called only on Core 0. Core 1 (CM7_1) does not call any MCU clock API. Core 1 is brought up from Core 0 via MC_ME (PRTN0_CORE1_*). I am not loading any HSE application firmware. The same configuration works correctly in single-core (FIRC_DIV_SEL = 2 / 3MHz). Tool environment: MCAL RTD 3.0.0, EB Tresos 27.1.0. Could you help me understand the following: What controls the APP_CORE_ACC bit in CONFIG_REG_GPR? Under what conditions does the SBAF grant application-core write access to FIRC_DIV_SEL? Why would this bit be set correctly in single-core but NOT be set (at full speed) in a multicore configuration? Does bringing up CM7_1 or adding the multicore boot flow change when/whether the SBAF grants this access? Since the block executes correctly under the debugger but not at full speed, this strongly suggests a timing/ordering issue between the SBAF granting write access and Core 0 calling Mcu_InitClock. What is the recommended way to ensure the SBAF has granted APP_CORE_ACC = APP_CAN_WRITE before Core 0 performs the clock initialization? Is there a specific boot configuration (IVT, lifecycle, or SBAF-related setting) that determines whether the application core is granted this access in a multicore setup? Thank you for your support. I look forward to your guidance. Best regards, Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled Hello, Thank you for testing this on your side and for the detailed response. To answer your questions about my implementation: 1. How I configure FIRC_DIV_SEL: In my Clock_Ip_IrcoscConfigurations_0 structure, the FIRC clock is configured with the IRCOSC range set to CLOCK_IP_SUPPORTS_3MHZ_FREQUENCY. So the intended configuration is 3MHz, the same as in your test. 2. How I initialize the second core / whether I call clock initialization on the other core: Mcu_InitClock and Mcu_SetMode are both called only on Core 0. On Core 1, I do not call any MCU clock-related API. That said, I will double-check this behavior through further debugging on my side to confirm that no clock reconfiguration is unintentionally happening on Core 1. Additional observations: In single-core, FIRC_DIV_SEL reads as 2 (3MHz) and works correctly. In multicore, FIRC_DIV_SEL reads as 3 (48MHz), which results in an STM tick that is 16x faster than expected. I will also evaluate migrating to the latest RTD release as you recommended. I will get back to you with the debugging results. In the meantime, if you have any suggestions on what could cause FIRC_DIV_SEL to end up as 3 (48MHz) even though clock initialization is performed only on Core 0 with the 3MHz configuration, I would appreciate your input. Best regards, Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled Hi @dpsdprtmvl  First, the software version being used is several releases behind the current version, so I would recommend migrating to the latest software release. Regarding FIRC_DIV_SEL, I performed a simple test using the IPCF_Example_S32K358 from S32K3 IPCF v4.3.0 on an S32K3X8EVB-Q289 board. For this test, I modified the IRCOSC configuration structure (Clock_Ip_IrcoscConfigurations_0), changing the IRCOSC range from CLOCK_IP_SUPPORTS_48MHZ_FREQUENCY to CLOCK_IP_SUPPORTS_3MHZ_FREQUENCY. After running the application and allowing the ping-pong communication between the cores to complete, I verified that CONFIG_REG_GPR[FIRC_DIV_SEL] was correctly configured to the expected value (10b), as shown in the image below. Could you provide more details on your implementation? How are you configuring FIRC_DIV_SEL? How are you initializing the second core? Are you calling the clock initialization on the other core as well? BR, VaneB
記事全体を表示
LS2160A 串行器/解串器时钟 我正在使用LX2160A SerDes1,采用RCW SerDes协议2: E–H 道:SGMII 通道 A–D:PCIe.2 x4(仅限 Gen2) 根据参考手册,所有通道似乎都使用 PLLS,因此 SGMII 和 PCIe 必须共享同一个参考时钟。我原本想让 SGMII 以 125 MHz 的频率运行,PCIe 以 100 MHz 的频率运行,使用单独的快/慢时钟输入,但由于此特定协议选项将两个协议都放在 PLLS 上,它们必须共享一个相同的参考频率,因此我现在计划向 SD1 PLLS 输入提供一个 100 MHz 的时钟,并将 PLLF 留空。 是否有可能使用单个 100 MHz PLLS 参考信号同时运行 SGMII 和 PCIe Gen1/Gen2 协议 2,而无需在 RCW 之外进行额外的 SerDes 配置? 当 SGMII 和 PCIe 共享同一个 PLLS 时,是否存在协议特定的问题(抖动、SSC 等)? 我的 SGMII 链路伙伴是 LAN9645,它使用自己的本地 125 MHz 参考频率。由于 SGMII 使用 CDR,只要两侧都能生成正确的 1.25 Gbaud 线路速率,一侧源自 100 MHz,另一侧源自 125 MHz 是否正常? 由于协议 2 不使用 PLLF,SD1 快速参考时钟输入可以不连接吗?还是应该仍然驱动它?
記事全体を表示
S32 Design Studio for ARM 2.2 – License activation error (CLLReason errorNo=27) Hello NXP License Team, My S32 Design Studio for ARM v2.2 license will expire and I would like to continue using it. Both the License Expiration and the Entitlement Expiration dates show July 5, 2026, so the entitlement itself will expire and re-activating with the existing activation code no longer produces a valid license. Details : Product: S32 Design Studio for ARM v2.2 Activation Code: CCB1-BEC2-FF96-4859 If I click Activate and enter my activation code, I immediately get the following error: CLLReason [errorNo=27, errorString=Error sending an return request to a remote activation server and processing the response. The maximum number of returns is reached, contact your product vendor if you need help. (FNP error 0), flxActMajorErrNo=0, flxActMinorErrNo=0, flxActSysErrNo=0, flxCommErrNo=0] Could you please reset the return counter for this activation code or issue a new activation code so that I can activate S32 Design Studio for ARM 2.2 on my current PC? Thank you very much for your great help.
記事全体を表示
MC33772CのFMEDA結果に関する説明 現在MC33772CTC1AEコンポーネントを扱っており、AN12638の機能安全ドキュメントを参照しています。文書には、MC3377xCデバイス( x が1または2で表される)に適用されると記載されています。ただし、掲載されているFMEDAの結果はMC33771Cのみのものであり、MC33772CまたはMC3377xCの両バリアントについては含まれていません。 MC33771Cに提供されたFMEDAの結果がMC33772Cにも適用されるのか、誰か説明していただけますか? Re: Clarification on FMEDA Results for MC33772C こんにちは、 すでにサポートチケット00990450に返答を提出しています。引き続き、そのチケットを通してご連絡させていただきます。
記事全体を表示
S32K3の低電力ウェイクアップ問題 最近、S32K314の低消費電力ウェイクアップ機能をデバッグしていたところ、外部ウェイクアップ方法を使用してもスリープモードから復帰できないことがわかりました。 通常の状況下では、DIは外部刺激に反応するが、休眠状態に入ると全く反応しなくなる。 添付ファイルにコードが含まれています。この問題の原因は何でしょうか?また、どのように解決すればよいでしょうか? Re: S32K3 低功耗唤醒问题 こんにちは、ジュリアン あなたの提案に従ってみたところ、目が覚めるようになりました。これは、私が本当にスタンバイモードに入ったということでしょうか? もう一つ質問したいのですが、スタンバイモードに入った後、I/Oポートの状態は以前と同じままなのでしょうか? もう一つの疑問は、回路設計において、MCUから定期的にデータ供給を受ける必要があるハードウェアウォッチドッグが存在することです。これを低消費電力でどのように実現できるでしょうか? ありがとう、 Joker_Y Re: S32K3 低功耗唤醒问题 こんにちは、 @Joker_Y さん。 あなたが共有してくれたプロジェクトはかなり大規模なようですね。すべてを確認したわけではありませんが、あなたが対応するウェイクアップソースを有効にしていないのはわかります。以下の行がコメントアウトされています。 Wkpu_Ip_EnableInterrupt(0,Wkpu_Ip_ChannelConfig_PB[0].hwChannel); また、スタンバイモードに入る前に、Clock_Ip_Init() APIを使用してメインクロックをFIRCに変更してください。 低出力の例を参照できます;クロック設定の変更方法やWKPUチャネルの有効化方法が示されています。 S32K3の低消費電力管理ANとデモ [RTD600 MCAL & IP]S32K3 低消費パワーマネージメントANとデモ よろしくお願いします、 ジュリアン Re: S32K3 低功耗唤醒问题 こんにちは、 @Joker_Y さん。 1.スタンバイ中かどうかはMC_MEを見て確認できます。MODE_STAT[PREV_MODE]。これは、前回のモードがリセット(任意のリセット)だったか、スタンバイだったかを示します。 また、MCUの現在の消費電力を測定することもできます。典型的なスタンバイ値は、S32K3XXのデータシート第 6 章.7(供給電流)に記載されています。 2. すべてのピンは、スタンバイモード中も、実行モードで最後に設定された状態を保持します。ただし、リセットイベント後はすべてのピンがデフォルト状態に戻されます。パッドキーピングを有効にすると、ピンがウェイクアップから状態を保ち、ユーザーが再度初期化するまで保つことができます。 S32K3XXのリファレンスマニュアル にある 41.12パッドの記録 を参照してください。 3. これはデザインやアプリケーションによると思います。私の意見では、ウォッチドッグが対応している場合にしてスリープに設定するか、RTCやその他のウェイクアップでS32K3を継続的に起動させ、ウォッチドッグをサービスし、低消費電力に戻す方法があります。 よろしくお願いします、 ジュリアン
記事全体を表示
LX2080 LX2080プロセッサが高温環境で一定時間動作した後、搭載の温度センサーは86°Cを示します。電源を入れ直すと「Fixed DDR on board」というメッセージで印刷がフリーズし、シリアルポートが反応しなくなります。 Re: LX2080 お返事ありがとうございます。このロットの基板のうち、この問題が発生したのは1枚だけです。この問題は全くの再起動後に再現するが、カーネル経由での再起動では発生しない。高温環境では検証ツールを実行できませんが、基板は室温では正常に動作します。@ June_Lu Re: LX2080 DDRが正常に動作することを確認するため、QCVS DDRを使用して高温環境下でのDDRの検証を行ってください。 よろしくお願いします。
記事全体を表示
LS2160A Serdes クロッキング 私はLX2160A SerDes1とRCW SerDesプロトコル2を使用しています。 E~Hレーン:SGMII レーンA~D:PCIe.2 x4(Gen2のみ) リファレンスマニュアルによると、すべてのレーンがPLLSを使用しているため、SGMIIとPCIeは同じリファレンスクロックを共有しているはずです。当初は、高速/低速のクロック入力を別々に使用して、SGMIIを125MHz、PCIeを100MHzで動作させたいと考えていましたが、この特定のプロトコルオプションでは両方のプロトコルがPLLSのみを使用するため、同一の基準周波数を共有する必要があります。そのため、現在はSD1のPLLS入力に100MHzのクロックを1つ供給し、PLLFは使用しないことにしました。 RCW以外のSerDes設定を追加することなく、SGMIIとPCIe Gen1/Gen2の両方で単一の100MHz PLLSリファレンスを使用してプロトコル2を実行することは可能ですか? SGMIIとPCIeが同じPLLSを共有する場合、プロトコル固有の問題(ジッター、SSCなど)は発生しますか? 私のSGMIIリンクパートナーは、独自のローカル125MHzリファレンスを使用するLAN9645です。SGMIIはCDRを使用するため、片側が100MHz、もう片側が125MHzから生成される場合でも、両方とも正しい1.25Gbaudの回線速度を生成する限り、それは正常な動作なのでしょうか? プロトコル2はPLLFを使わないので、SD1の高速参照クロック入力は接続せずに放置してもよいのでしょうか、それとも駆動し続けるべきでしょうか?
記事全体を表示
LS1043AXN8QQB DVFS 親愛なるサポートへ、 お客様はLS1043AXN8QQBプラットフォームを使用し、CPUの動的周波数調整を1.6GHzから800MHz、500MHzに設定しました。CPUが500MHzで動作しているときに、RCUの停止とPCIE通信の異常が発生することが判明した。 RMおよびチップのデータシートによると、LS1043は1GHzから1.6GHzをサポートしています。公式文書には、動的周波数調整でサポートされる最小周波数については記載されていない。500MHzに対応しているかどうかは不明です。 CPU LS1043A正常に稼働しているときに動的周波数調整に対応していますか? Re: LS1043AXN8QQB DVFS CPUクロック分周器/cpufreqパスによって500MHzのCPUランタイム動作が実現される場合にサポートされ、CGA PLL自体を1GHz未満に下げることによって実現される場合にはサポートされません。 PCIeの異常について:周波数変更が通常のCPU DFSパスを介して行われる場合、NXPの証拠によれば、CPU周波数のみが影響を受け、AHB/APBは変更されないとのことです。したがって、PCIeはCPU DFSのみによって影響を受けるべきではない。PCIeが異常になった場合、実装がプラットフォーム/SYSCLK/PLL比率も変更していないか確認してください。なぜなら、データシートではプラットフォームクロック設定が有効範囲内に収まることを要求し、適切なPCIe動作のためのPCIeプラットフォームクロック要件が明記されているからです。 LS1043A実行時CPU周波数の500 MHzへのスケーリングをサポートしていますが、CGA PLLは≥1 GHzに保たれ、PCIe/プラットフォームクロックを乱してはいけません。
記事全体を表示
MIMXRT1052CVL5B 内部RAM到底有多大? 是不是内部最多只有512K的RAM? ITCM/DTCM/SRAM 总共是512K? 还是说是512K的SRAM + 512K的TCM? Re: MIMXRT1052CVL5B 内部RAM到底有多大? Hi @SDFDSFSF , 感谢您的提问! MIMXRT1052CVL5B 不是“512KB SRAM + 512KB TCM”。它的片内 SRAM 总量应按 512KB 理解;这 512KB 是 FlexRAM,可在 ITCM、DTCM、OCRAM 之间重新分配。 您可以在AN12077中,找到详细的说明。 Best regards, Gavin
記事全体を表示
LS2160A Serdes Clocking I'm using LX2160A SerDes1 with RCW SerDes Protocol 2: Lanes E–H: SGMII Lanes A–D: PCIe.2 x4 (Gen2 only) From the Reference Manual, it appears all lanes use PLLS, so both SGMII and PCIe must share the same reference clock. I originally wanted to run SGMII at 125 MHz and PCIe at 100 MHz using separate fast/slow clock inputs, but since this specific protocol option puts both protocols on PLLS only, they must share one identical reference frequencyso now I plan to provide a single 100 MHz clock to the SD1 PLLS input and leave PLLF unused. Is it possible to run Protocol 2 with a single 100 MHz PLLS reference for both SGMII and PCIe Gen1/Gen2, with no additional SerDes configuration beyond the RCW? Are there any protocol-specific issues (jitter, SSC, etc.) when SGMII and PCIe share the same PLLS? My SGMII link partner is a LAN9645 using its own local 125 MHz reference. Since SGMII uses CDR, is it normal for one side to be derived from 100 MHz and the other from 125 MHz, as long as both generate the correct 1.25 Gbaud line rate? Since Protocol 2 doesn't use PLLF, can the SD1 fast reference clock input be left unconnected, or should it still be driven?
記事全体を表示
S32K328 – マルチコアが有効な場合、FIRCクロック分周器(DIV16)は適用されません NXPテクニカルサポートチームの皆様、こんにちは。 S32K328のFIRCクロック設定について質問があります。 STM2モジュールのFIRCクロックソースを3MHz(DIV 16)にシングルコアセットアップで設定しました。シングルコア構成では、FIRCクロックソースが正しく3MHzで出力されていることを確認しました。 しかし、マルチコアを有効にすると、分周器が16に設定されているにもかかわらず、FIRCクロックソースの出力が3MHzではなく48MHzになります。 現在のアーキテクチャでは、MCUの開始モードとセットモードはCore 0上でしか実行できません。私の質問は、Core 1からMCUクロックにもアクセス(または再設定)できるのか、そしてこれが問題の原因になるのかということです。 私の環境設定に関する補足情報: 私はAUTOSAR環境で作業しており、マルチコアサポートのためにRM(Resource Manager)モジュールを追加しました。 Domain0 マスター: コア 0、Domain1 マスター: コア 1。各ドメインに対してすべてのメモリおよびペリフェラルアクセス権限が付与されています。 ツール環境: MCAL RTD 3.0.0 EB Tresos 27.1.0 私自身の分析からの発見: 実行時にCONFIG_REG_GPRレジスタのFIRC_DIV_SELフィールドを読み取ると、値は3となり、これはドライバーコードに基づき48MHzに対応します(DividerValueマッピング:48MHz→3、24MHz→1、3MHz→2)。また、クロックドライバーのディバイダー書き込みパスにはAPP_CORE_ACC権限チェックと、Secure BAF(CORE2)がWFIに入るまでの待ち時間(ポーリングPRTN0_CORE2_STAT)が含まれていることに気づきました。マルチコア構成では、除算器への書き込みがスキップされる可能性があると推測されます。 以下の点についてアドバイスいただけますか: マルチコアが有効になっている場合、FIRC分周器の設定(DIV 16)が適用されず、3MHzではなく48MHzの出力になるのはなぜですか? このシナリオでは、Core 1からのMCUクロックへのアクセスや再設定がサポートされているか、または必須かは不明です。 マルチコア構成におけるAPP_CORE_ACC権限チェックやSecure BAF WFIタイムアウトによって、ディバイダー書き込みをスキップできるかどうか、そしてディバイダーが正しく適用されているかを確実にする方法についてです。 サポートありがとうございます。ご回答をお待ちしております。 よろしくお願いします、 AWSライブラリS32K3 Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled こんにちは、 根本原因 は 自分の側にある。 該当するドライバー機能は 以下の(Clock_Ip_SetFircDivSelHSEb in \Mcu_TS_T40D34M30I0R0\src\Clock_Ip_IntOsc.c をご覧ください😞 c /* Application can write this divider */ if ( ((IP_CONFIGURATION_GPR->CONFIG_REG_GPR & CONFIGURATION_GPR_CONFIG_REG_GPR_APP_CORE_ACC_MASK) >> CONFIGURATION_GPR_CONFIG_REG_GPR_APP_CORE_ACC_SHIFT) == CLOCK_IP_APP_CAN_WRITE) { ... /* FIRC_DIV_SEL write happens here */ } else { /* HSE firmware doesn't allow to write FIRC post divider. */ Clock_Ip_ReportClockErrors(CLOCK_IP_REPORT_WRITE_PROTECTION_ERROR, Config->Name); } 問題は 、 私のマルチコア構成では 、 フルスピードで動作しているときにコードが(APP_CORE_ACC == CLOCK_IP_APP_CAN_WRITE)ブロックに入らないことです。 ブロック 内に while(1)を入れて確認 しました が、その時間は一度も到達しません 。その結果、 FIRC_DIV_SEL書き込みがスキップされ、 レジスタは設定された2(3MHz)ではなくリセット値3(48MHz) のままになります 。これにより、私のSTMティックは意図した16倍速く動作 します。 しかし、デバッグモード(ステップ実行/ブレークポイント設定)で実行すると、同じブロックが正しく実行され、FIRC_DIV_SELも適切に2(3MHz)に設定されます。このフルスピード実行とデバッグ実行の違いが、問題の重要な症状です。 So the APP_CORE_ACC bit in CONFIG_REG_GPR is not set to CLOCK_IP_APP_CAN_WRITE at the moment Mcu_InitClock reads it during a full-speed multicore boot, but it does become writable when I slow execution down with the debugger. 私の環境設定に関する補足情報: Mcu_InitClockとMcu_SetModeはコア0でのみ呼び出されます。Core 1(CM7_1)はMCUクロックAPIを呼び出しません。 コア1は、 MC_ME (PRTN0_CORE1_*) を介してコア0から起動されます 。 HSEアプリケーションのファームウェア は 一切読み込んで いません。 同じ構成 は シングルコア(FIRC_DIV_SEL = 2 / 3MHz)でも正しく 動作します。 ツール環境:MCAL RTD 3.0.0、EB Tresos 27.1.0。 以下の点を理解する手助け をしてもらえます か? CONFIG_REG_GPRのAPP_CORE_ACCビット を制御するものは何 でしょうか?SBAFはどのような条件下で アプリケーションコアの書き込みアクセス をFIRC_DIV_SELに付与 しますか? なぜこのビットはシングルコアでは正しく設定されるのに、マルチコア構成では(フルスピードで)設定されないのでしょうか?CM7_1を起動したりマルチコアブートフローを追加したりすると、SBAFがこのアクセスを許可するタイミングや変更は変わりますか? ブロックは デバッガ下では正しく 実行 されますが、フルスピードではないため、 SBAFが 書き込みアクセスを許可し、Core 0 がMcu_InitClockを呼び出す場合のタイミングや順序の問題 が強く示 唆 されます。 Core 0がクロック 初期化を行う 前に SBAFがAPP_CORE_ACC = APP_CAN_WRITEを付与していることを確認する 推奨方法は 何でしょうか? マルチコア環境 で アプリケーションコアが このアクセス権を付与 される かどうかを決定する 特定の ブート構成(IVT、 ライフサイクル、またはSBAF関連 の設定)はありますか? Thank you for your サポート. I look forward to your guidance. よろしくお願いします、 Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled こんにちは、 そちら側でのテストと 詳細なご回答、 ありがとうございました 。 私の実装に関する ご質問にお答えします 。 1. FIRC_DIV_SELの設定方法: 私のClock_Ip_IrcoscConfigurations_0 構造 では 、FIRCクロック は IRCOSCの範囲をCLOCK_IP_SUPPORTS_3MHZ_FREQUENCYに設定 しています 。つまり 、意図された構成は3MHzで、 あなたのテストと同じです。 2. 2番目のコアの初期化方法 / もう一方のコアでクロック初期化を呼び出すかどうか: Mcu_InitClock とMcu_SetModeはどちらも Core 0でのみ呼び出されます。 Core 1では、MCU クロック関連のAPI は一切呼び出していません 。 とはいえ、 コア1で意図しない クロック再構成が発生していないことを 確認するため、私の側でさらにデバッグを 行い 、この動作を再確認します 。 その他の観察事項: シングルコアでは、FIRC_DIV_SEL 2 (3MHz)として読み取られ、正しく動作します。 マルチコアでは、FIRC_DIV_SELが3(48MHz)と読み取られ、STMティックは予想の16倍速くなります。 ご指摘いただいたとおり、最新のRTDリリース への移行についても検討いたします 。 デバッグ結果 はまた お知らせ します。その間に、 クロック初期化がCore 0の3MHz 構成 でのみ行われ ているにもかかわらず、 FIRC_DIV_SELが3( 48MHz)になる原因について何か アドバイス をいた だけるとありがたいです。 よろしくお願いします、 Re: S32K328 – FIRC Clock Divider (DIV16) Not Applied When Multicore Is Enabled こんにちは、 @dpsdprtmvl まず、使われているソフトウェアのバージョンは現在のバージョンより数リリース遅れているので、最新のソフトウェアリリースへの移行をお勧めします。 FIRC_DIV_SELに関して、S32K3 IPCF v4.3.0のIPCF_Example_S32K358を使用して、S32K3X8EVB-Q289ボード上で簡単なテストを実施しました。このテストでは、IRCOSC構成構造(Clock_Ip_IrcoscConfigurations_0)を変更し、IRCOSCの範囲をCLOCK_IP_SUPPORTS_48MHZ_FREQUENCYからCLOCK_IP_SUPPORTS_3MHZ_FREQUENCYに変更しました。 アプリケーションを実行し、コア間のピンポン通信が完了するのを確認した後、CONFIG_REG_GPR[FIRC_DIV_SEL]が下の画像のように期待値(10b)に正しく設定されていることを確認しました。 実装についてもう少し詳しく教えていただけますか?FIRC_DIV_SELはどのように設定していますか?2つ目のコアはどのように初期化していますか?他のコアでもクロック初期化を呼び出していますか? BR、VaneB
記事全体を表示
MIMXRT1052CVL5Bには、実際にはどれくらいの内蔵RAMが搭載されているのでしょうか? 内蔵RAMは最大でも512KBしかないというのは本当ですか?合計RAM容量(ITCM/DTCM/SRAM)は512KBですか? それとも、512K SRAM + 512K TCMでしょうか? Re: MIMXRT1052CVL5B 内部RAM到底有多大? こんにちは、 @SDFDSFSF さん、 ご質問ありがとうございます! MIMXRT1052CVL5Bは「512KB SRAM + 512KB TCM」ではありません。オンチップSRAMの合計容量は512KBと理解してください。この512KBはFlexRAMであり、ITCM、DTCM、OCRAM間で再割り当て可能です。 詳細な手順については、 AN12077をご覧ください。 よろしくお願いします、 ギャビン
記事全体を表示
TJA1050, CAN loss Hello, We have a product used TJA1050 used TJA1050, the schematic is as below. We found there is a high-frequency CAN loss during the test. Lost one or two frames in operation. The busload is around 16%. I attached the HW schematic and CAN loss data below. Question 1. What's the possibly root cause of the CAN loss? 2. Is there any issue about the HW schematic? 3. What action I can do in the next step I can try more test or provide more information if necessary. Thank you for your support.  Re: TJA1050, CAN loss 1:If this board of yours is not at the end of the bus, it is recommended to disconnect DR6/DR7 first or change it to an optional jumper 2: For test purpose please remove DR8/DR9/DD1/DD2 3:Whether the data rate and propagation delay of the isolator SI8421 satisfy the CAN bit timing margin
記事全体を表示
S32K358 EVK board CAN not working Hello,  I am trying to run the code to use the CAN0 or CAN1 of S32K3x8EV8 board but I am not able to do so. But CAN is not working at all, I am trying read the can messages via Waveshare USB-CAN-A. Pasted the code as well,  Add screenshot of CAN Config /* * Copyright 2019 NXP * * All rights reserved. * * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ /* ################################################################### ******************************************************************************** * File: main.c * Owner: Petr Stancik * Version: 1.0 * Date: Oct-22-2024 * Classification: General Business Information * Brief: FlexCAN TX/RX ISR test * ******************************************************************************** ******************************************************************************** The purpose of this demo application is to show you the usage of the FlexCAN module configured to use CAN FD using the S32 RTD API. - This demo application requires two boards, or single board connected with CAN tool. - CAN FD is enabled with bitrate 500/2000 kbps - It configures FlexCAN0 module and its transceiver (TJA1153). - MB0 is used to transmit CANFD std. ID - MB1 is configured to receive any std. ID - Callback function is used as well to handle TX and RX process in MBs. Received ID is echoed back. - setupCanXCVR function is called to Init TJA1153 connected to FlexCAN0 on the board. It expects transceiver in Vanilla state and set TPL to pass all std and ext ID and do not block any message coming from bus. Finally leaving configuration mode without writing to non-volatile memory nor locking the transceiver. * * ------------------------------------------------------------------------------ * Test HW: S32K3X8EVB-Q289 rev B2 * MCU: P32K358HVS 0P14E * Compiler: S32DS.ARM.3.5 * SDK release: S32K3_RTD_4.0.0_D2311 * Debugger: Lauterbach * Target: internal_FLASH * ******************************************************************************** Revision History: 1.0 Oct-22-2024 Petr Stancik Initial Version based on RTD FlexCAN_Ip_example *******************************************************************************/ /* Including necessary configuration files. */ #include "Mcal.h" #include "Clock_Ip.h" #include "FlexCAN_Ip.h" #include "IntCtrl_Ip.h" #include "Siul2_Port_Ip_Cfg.h" #include "Siul2_Dio_Ip_Cfg.h" #include "Siul2_Dio_Ip.h" #include "Siul2_Port_Ip.h" #include "OsIf.h" #define MSG_ID 20u #define RX_MB_IDX 1U #define TX_MB_IDX 0U volatile int exit_code = 0; /* User includes */ Flexcan_Ip_DataInfoType tx_info = { .msg_id_type = FLEXCAN_MSG_ID_STD, .data_length = 1u, .fd_enable = FALSE, .fd_padding = FALSE, .enable_brs = FALSE, .is_polling = FALSE, .is_remote = FALSE }; Flexcan_Ip_DataInfoType rx_info = { .msg_id_type = FLEXCAN_MSG_ID_STD, .data_length = 1u, .fd_enable = FALSE, .fd_padding = FALSE, .enable_brs = FALSE, .is_polling = FALSE, .is_remote = FALSE }; Flexcan_Ip_MsgBuffType rxData; uint8 dummyData[8]; volatile uint32 g_canErrorStatus = 0; /* live ESR1 snapshot for debugger watch */ volatile Flexcan_Ip_StatusType g_tja1153Status[3]; /* [0]=auto-baud, [1]=FEC whitelist, [2]=exit config */ /*! \brief The main function for the project. \details The startup initialization sequence is the following: * - startup asm routine * - main() */ extern void CAN0_ORED_0_31_MB_IRQHandler(void); void setupCanXCVR_TJA1153(void); static void CAN_DelayMs(uint32 ms) { uint32 ticks = OsIf_MicrosToTicks(ms * 1000U, FLEXCAN_IP_SERVICE_TIMEOUT_TYPE); uint32 start = OsIf_GetCounter(FLEXCAN_IP_SERVICE_TIMEOUT_TYPE); uint32 elapsed = 0U; while (elapsed < ticks) { elapsed += OsIf_GetElapsed(&start, FLEXCAN_IP_SERVICE_TIMEOUT_TYPE); } } void flexcan0_Callback(uint8 instance, Flexcan_Ip_EventType eventType, uint32 buffIdx, const Flexcan_Ip_StateType *flexcanState) { (void)flexcanState; (void)instance; switch(eventType) { case FLEXCAN_EVENT_RX_COMPLETE: dummyData[0]++; if(buffIdx==1) // MB1 received { FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, rxData.msgId, (uint8 *)&dummyData); FlexCAN_Ip_Receive(INST_FLEXCAN_0, RX_MB_IDX, &rxData, false); } break; case FLEXCAN_EVENT_RXFIFO_COMPLETE: break; case FLEXCAN_EVENT_TX_COMPLETE: break; case FLEXCAN_EVENT_ENHANCED_RXFIFO_COMPLETE: break; case FLEXCAN_EVENT_ENHANCED_RXFIFO_WATERMARK: break; default: break; } } void setupCanXCVR_TJA1153(void) { /** * The TJA1153 transceiver does not come ready to use as most CAN transceivers * It enters configuration mode initially if it has not been configured before, * in this initial state, it is ready for receiving additional security * setups such as an TPL/BBL for example. * * In this example, it set TPL to pass all std and ext ID and do not block any message * coming from bus. Finally leaving configuration mode without writing to non-volatile * memory nor locking the transceiver. * * Refer to the NXP's TJA1153 data sheet for further detail. * */ #define TJA1153_START_ID (uint32_t)(0x555u) #define TJA1153_CONFIG_ID (uint32_t)(0x18DA00F1u) uint8 sendData[8]={0,0,0,0,0,0,0,0}; uint32_t errors; /* Allow configuration from local host via TXD pin for CAN0 transceiver, STB = 0 (PTC20) */ Siul2_Dio_Ip_WritePin(PTC_H_HALF, 4, 0U); CAN_DelayMs(1000); /* Auto bit rate detection initial CAN Classic frame with ID 0x555 for CAN0 */ tx_info.is_polling = TRUE; tx_info.msg_id_type = FLEXCAN_MSG_ID_STD; tx_info.data_length=8; g_tja1153Status[0] = FlexCAN_Ip_SendBlocking(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, TJA1153_START_ID, sendData, 1000); /* Filter Element Configuration (FEC) frame for setting up the transmission whitelist. * NOTE: ID_TX is the NXP reference example's placeholder (0xC0FFEE), not MSG_ID - * this whitelists that single extended ID only. Confirm this baseline works first, * then adjust ID_TX/Extended_Filter_Config per the TJA1153 datasheet for your real ID(s). */ { uint32_t ID_Stinger = TJA1153_CONFIG_ID; uint32_t PAYLOAD_FEC[2]; uint8_t COMMAND_BYTE_FEC = 0x10; uint8_t Filter_Element_Index_0 = 0; uint8_t Filter_Element_Type = 1; uint8_t Extended_Filter_Config = 3; /* Both TWL and BBL */ uint32_t ID_TX = 0xC0FFEE; uint32_t Filter_Element_Contents = (Extended_Filter_Config << 29) | ID_TX; PAYLOAD_FEC[0] = (COMMAND_BYTE_FEC << 24) | (Filter_Element_Index_0 << 16) | (Filter_Element_Type << 15) | (Filter_Element_Contents >> 16); PAYLOAD_FEC[1] = (Filter_Element_Contents & 0xFFFF) << 16; sendData[0] = (uint8)((PAYLOAD_FEC[0] >> 24) & 0xFFU); sendData[1] = (uint8)((PAYLOAD_FEC[0] >> 16) & 0xFFU); sendData[2] = (uint8)((PAYLOAD_FEC[0] >> 8) & 0xFFU); sendData[3] = (uint8)(PAYLOAD_FEC[0] & 0xFFU); sendData[4] = (uint8)((PAYLOAD_FEC[1] >> 24) & 0xFFU); sendData[5] = (uint8)((PAYLOAD_FEC[1] >> 16) & 0xFFU); tx_info.msg_id_type = FLEXCAN_MSG_ID_EXT; tx_info.data_length = 6; g_tja1153Status[1] = FlexCAN_Ip_SendBlocking(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, ID_Stinger, sendData, 1000); CAN_DelayMs(5); } /* Last command frame for exiting configuration mode without writing to non-volatile memory nor * locking the transceiver, i.e. Development mode */ sendData[0]= 0x71; // command byte sendData[1]= 0x2; sendData[2]= 0x3; sendData[3]= 0x4; sendData[4]= 0x5; sendData[5]= 0x6; sendData[6]= 0x7; sendData[7]= 0x8; tx_info.msg_id_type = FLEXCAN_MSG_ID_EXT; tx_info.data_length=8; g_tja1153Status[2] = FlexCAN_Ip_SendBlocking(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, TJA1153_CONFIG_ID, sendData, 1000); /* After the last frame, the transceiver exits configuration mode and goes to standby mode, exit * to normal operation mode is done by setting the STB pin of CAN0 transceiver to HIGH (pin is negated) */ Siul2_Dio_Ip_WritePin(PTC_H_HALF, 4, 1U); CAN_DelayMs(1000); errors = FlexCAN_Ip_GetErrorStatus(INST_FLEXCAN_0); FlexCAN_Ip_ClearErrorStatus(INST_FLEXCAN_0,errors); } int main(void) { /* Write your code here */ Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0); IntCtrl_Ip_EnableIrq(FlexCAN0_1_IRQn); IntCtrl_Ip_InstallHandler(FlexCAN0_1_IRQn, CAN0_ORED_0_31_MB_IRQHandler, NULL_PTR); FlexCAN_Ip_Init(INST_FLEXCAN_0, &FlexCAN_State0, &FlexCAN_Config0); FlexCAN_Ip_SetRxMaskType_Privileged(INST_FLEXCAN_0,FLEXCAN_RX_MASK_INDIVIDUAL); FlexCAN_Ip_SetRxIndividualMask_Privileged(INST_FLEXCAN_0,RX_MB_IDX,0x0<<18); // clear mask register to allow receiving all std IDs FlexCAN_Ip_SetStartMode(INST_FLEXCAN_0); setupCanXCVR_TJA1153(); tx_info.is_polling = FALSE; tx_info.msg_id_type = FLEXCAN_MSG_ID_STD; tx_info.data_length=8; tx_info.fd_enable = false; tx_info.enable_brs = false; FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX, &rx_info, MSG_ID); FlexCAN_Ip_Receive(INST_FLEXCAN_0, RX_MB_IDX, &rxData, false); FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID, (uint8 *)&dummyData); while(1) { g_canErrorStatus = FlexCAN_Ip_GetErrorStatus(INST_FLEXCAN_0); } return 0; } /* END main */ /*! ** @} */ Re: S32K358 EVK board CAN not working Hi@Yash2530 The attached file contains tests I conducted on RTD version 3.0.0 P07, which you can refer to. Re: S32K358 EVK board CAN not working Hi Senlent,  The Can transmission TX is working I am able to receive the data from NXP to Waveshare USB CAN device but RX does not seem to be working.  I am sending 0x001 as id and 01 01 01 01 01 01 01 01 as data.  Is there something that I am missing or the code you provided is only for TX. 
記事全体を表示
S32K3X4EVB-Q257 开发板上的 K26 固件缺失。 我的 S32K3X4EVB-Q257 开发板上的 OpenSDA 无法工作。我已经安装了 PEmicro 驱动程序,但是我的电脑设备管理器中仍然无法识别 OpenSDA。我确信这是因为缺少 K26 固件。请问您能提供给我那个固件吗? Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. 如果更换包含 D+ 和 D- 信号的 USB 电缆后问题仍然存在,我建议联系 PEMicro 技术支持。https://www.pemicro.com/support/index.cfm Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. 我的开发板采用 K26 芯片,但 PEFirmwareConfig.exe 无法识别板载调试器。K26的OpenSDA固件肯定缺失。 Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. HI 首先,检查 U63 上的 K26 是否焊接牢固。由于 K26 芯片短缺,有一批开发板上没有焊接 K26 芯片,因此必须使用外部调试器。 第二步,下载 USB 多链路资源安装 来自多链路调试探针。不使用 USB 集线器,将 USB 连接到 S32K3X4EVB-Q257 的 J55; PEFirmwareConfig.exe能否识别板载调试器? 此致敬礼, Robin
記事全体を表示
The K26 firmware on the S32K3X4EVB-Q257 development board is missing. The OpenSDA on my S32K3X4EVB-Q257 development board is not working. I have already installed the PEmicro driver, but OpenSDA is still not recognized in my computer's Device Manager. I am sure it is because the K26 firmware is missing. Could you please provide me with that firmware? Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. If the problem persists after replacing the USB cable with one that includes D+ and D- signals, I recommend contacting PEMicro technical support. https://www.pemicro.com/support/index.cfm Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. My development board has a K26 chip, and PEFirmwareConfig.exe cannot recognize the onboard debugger. The K26's OpenSDA firmware is definitely missing. Re: The K26 firmware on the S32K3X4EVB-Q257 development board is missing. Hi First, check if the K26 on the U63 is soldered. There was a batch of development boards that did not have the K26 soldered on them because of a shortage of K26, so an external debugger had to be used. Second, download the  USB Multilink Resources Install  from the Multilink Debug Probes. Without using a USB hub, connect the USB to the J55 of S32K3X4EVB-Q257; can the onboard debugger be recognized in PEFirmwareConfig.exe? Best Regards, Robin
記事全体を表示
S32K344 FreeRTOS 示例链接失败 你好; 我刚开始使用 S32K344 EVK(S32K344MINI-EVB),目前使用的是 IDE 3.6.5 和 FreeRTOS 7.0.0。(D2511)包含在软件包管理器创建的 FRDM 汽车软件包中。 我正在尝试通过“S32DS 项目示例”构建一个为 344 提供的示例应用程序,即 FreeRTOS_Toggle_Led_Example_S32K344。 我使用 ConfigTools 更新了代码,但到目前为止,这是我对代码所做的唯一修改。 但这段代码直接运行在链接阶段就失败了: c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o:在函数“vPortStoreTaskMPUSettings”中: C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: 未定义的引用“__FreeRTOS_code_data_start__” c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: 未定义的引用“__FreeRTOS_code_data_end__” c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o:在函数“prvSetupMPU”中: C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: 未定义的引用“__FreeRTOS_code_data_end__” c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: 未定义的引用“__FreeRTOS_code_data_start__” 我推测这些是链接器部分,但它们似乎在示例代码、软件包内的 FreeRTOS 文件夹或其他地方都没有定义。 “S32DS 项目示例”是否已过时?或者这个问题有我没注意到的简单解决方法吗? 提前致谢, 乔·希德尔 Re: S32K344 FreeRTOS example fails to link 你好,乔·希德尔, 给您带来的不便,我们深表歉意! 我重现了示例由于 Ld 错误而无法正确构建的问题,他们的解决方案是正确的: 根本原因:S32CT 中默认启用了 MPU。这会导致代码生成器生成支持 MPU 的代码(包括对 FreeRTOS MPU 链接器符号的引用)。但是Toggle_Led_Example_S32K344的链接器脚本 (linker_flash_s32k344.ld) 并未定义这些 MPU 内存区域或其边界符号——这些仅存在于 MPU 特定示例中(例如 FreeRTOS_MPU_Example_S32K389/linker_flash_s32k389.ld)。生成的代码需要 MPU 符号,而链接器脚本则不需要 MPU 符号,这导致了未定义引用错误。 禁用“use mpu”选项后,示例程序可以正确编译: 副作用说明:默认情况下禁用 MPU 意味着需要 MPU 的用户必须在 S32CT 中显式启用它并配置内存区域。 此致敬礼, Robin
記事全体を表示
LPC1778 checksum in vector table invalid need recover 你好,我在调试LPC1778的FLM时,调用FLM向0x0-0x400写入数据之后发现数据不正确。现在我的调试器无法连接芯片,我查阅了资料,认为是vector table写入的数据出错了,和我想要写入的数据不一致,导致checksum不合法。资料显示checksum不合法会导致芯片进入ISP模式等待下载程序。 1.我想知道这个状态要怎么恢复? 2.为什么FLM写0x0-0x400会引发问题,我尝试了写0x400-0x7FFFF都是正常的。翻看FLM源码,其中有个SET_VALID_CODE的参数会自动修改校验和,是不是这部分有什么问题? Re: LPC1778 checksum in vector table invalid need recover Hi @BianHaopeng1  0x0000–0x0400 不只是普通 flash 数据区,它包含启动向量表、0x1C 的 valid-code checksum,以及 0x2FC 的 CRP 配置字 。checksum 错会让 ROM bootloader 判定 user code invalid 并进入 ISP;如果 0x2FC 被误写成 CRP pattern,还会导致 JTAG/SWD 访问受限甚至不可恢复到普通调试状态。 您可以优先按 ISP 恢复 处理: 拉低 P2[10],然后复位芯片 ,bootloader 接管并进入 ISP mode。 通过 UART0:P0[2] / P0[3] 连接 FlashMagic 或等价 ISP 工具,执行全片擦除或重新下载一个有效镜像。 如果只是 checksum 不合法 ,进入 ISP 后应能擦除并恢复;如果误写了 CRP1/CRP2 ,JTAG 会被禁用,但 ISP 仍有受限恢复路径;如果误写成 CRP3 ,文档说明它会完全禁止 JTAG 和 ISP,这种情况下基本不能再通过常规 ISP/JTAG 恢复。 BR Harry
記事全体を表示