Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
SC16IS740:需要帮助配置自动RTS SC16IS740_750_760 我目前正在编写一个MicroPython库,以支持通过SPI接口使用SC16IS740。 我正在使用分线板测试与 MAX3237 连接的 SC16IS740。 所有基本功能均有效(包括 RX & TX FiFo),并通过物理 TX > RX 环回(以及我的示波器)进行了测试。 现在,我想测试/实现自动RTS功能。 为了验证这一点:我放置了一个示波器,通道 1 接 RX,通道 2 接 RTS。 我向接收缓冲区发送大量数据,期望示波器上的RTS信号变为高电平……但这种情况并没有发生。 以下是 Halt_trigger 和 resume_trigger 的值(以字符为单位)的 MicroPython 代码。代码主要读取和写入给定通道(“ch”参数)的寄存器。 数据手册里好像漏掉了什么,但我找不到原因。 备注:最后一条指令强制 RTS 为高电平,以便在瞄准镜上检查手动激活。然后它的值会降到很低,并且永远不会被自动RTS激活……可以肯定的是,RX FIFO已满。 def enable_rts( self, halt_trigger, resume_trigger ): assert 4<=halt_trigger<=60, "RTS trigger must be within 4-60 range" assert 4<=resume_trigger<=60, "RTS trigger must be within 4-60 range" assert (halt_trigger%4) + (resume_trigger%4) == 0, "Trigger level are step by 4!" assert halt_trigger > resume_trigger, "halt_trigger must be greater than resume_trigger!" _halt = halt_trigger//4 _resume = resume_trigger//4 # Set LCR=0xBF to access EFR register _old_lcr = self.owner.bus_wrapper.read_reg( REG_LCR, ch=self.ch ) # store transmission config (eg: 8n1) self.owner.bus_wrapper.write_reg( REG_LCR, 0xBF, ch=self.ch ) # activate enhanced feature _efr = self.owner.bus_wrapper.read_reg(REG_EFR, ch=self.ch) _efr = _efr | 0b00010000 self.owner.bus_wrapper.write_reg(REG_EFR, _efr, ch=self.ch) print( "EFR:" , bin(self.owner.bus_wrapper.read_reg(REG_EFR, ch=self.ch)) , 'Enhanced function activation') # Close access to EFR & restore transmission config (eg:8n1) self.owner.bus_wrapper.write_reg( REG_LCR, _old_lcr, ch=self.ch ) # Enable TCR & TLR register access _mcr = self.owner.bus_wrapper.read_reg(REG_MCR, ch=self.ch) _mcr = _mcr | 0b00000100 self.owner.bus_wrapper.write_reg(REG_MCR, _mcr, ch=self.ch) print( "MCR:" , bin(self.owner.bus_wrapper.read_reg(REG_MCR, ch=self.ch)), 'Enable TCR & TLR register') # Set TCR trigger values _tcr = self.owner.bus_wrapper.read_reg(REG_TCR, ch=self.ch) _tcr = _tcr | (_resume<<4) _tcr = _tcr | _halt self.owner.bus_wrapper.write_reg(REG_TCR, _tcr, ch=self.ch) print( "TCR:", bin(self.owner.bus_wrapper.read_reg(REG_TCR, ch=self.ch)), "Transmission Control register (resume & halt levels)") # TLR must be cleared (to use TCR) self.owner.bus_wrapper.write_reg(REG_TLR, 0x00, ch=self.ch) print( "TLR:", bin(self.owner.bus_wrapper.read_reg(REG_TLR, ch=self.ch)), "Disable TLR values (so use TCR)") # Disable TCR & TLR register access _mcr = self.owner.bus_wrapper.read_reg(REG_MCR, ch=self.ch) _mcr = _mcr & 0b11111011 self.owner.bus_wrapper.write_reg(REG_MCR, _mcr, ch=self.ch) print( "MCR:" , bin(self.owner.bus_wrapper.read_reg(REG_MCR, ch=self.ch)), 'Disable TCR & TLR register') self.owner.bus_wrapper.write_reg( REG_LCR, 0xBF, ch=self.ch ) # Enable auto RTS flow control _efr = _efr | 0b01000000 self.owner.bus_wrapper.write_reg(REG_EFR, _efr, ch=self.ch) print( "EFR:" , bin(self.owner.bus_wrapper.read_reg(REG_EFR, ch=self.ch)) , 'Enable auto RTS') # Close access to EFR & restore transmission config (eg:8n1) self.owner.bus_wrapper.write_reg( REG_LCR, _old_lcr, ch=self.ch ) # Initial State of RTS bit in Modem (MCR) _mcr = self.owner.bus_wrapper.read_reg( REG_MCR, ch=self.ch ) _mcr = _mcr | 0x02 self.owner.bus_wrapper.write_reg( REG_MCR, _mcr, ch=self.ch ) 非常欢迎提出建议和意见。 干杯, 多米尼克 Re: SC16IS740 : Need help to configure Auto-RTS 你好, 根据数据表,我建议检查以下几点: 请确认 EFCR[4] = 0。EFCR[4] 启用自动 RS-485 RTS 控制。当此位被设置时,发射器将控制 RTS 引脚,并且此功能优先于手动 RTS 控制和硬件流控制电路。因此,在使用 Auto-RTS 硬件流控制时,应清除 EFCR[4]。 TLR 未定义 Auto-RTS 停止/恢复阈值。对于 Auto-RTS,接收器 FIFO 触发电平取自 TCR,如果 TCR 位被清除,则取自 FCR。TLR 用于与中断生成相关的可编程发送和接收 FIFO 触发电平。因此,自动RTS操作不应要求清除TLR。
View full article
iMx.95 FRDM ポスト量子アルゴリズムのサポート 私はiMX.95 FRDM開発ボードを持っており、ポスト量子アルゴリズムのハードウェアアクセラレーションを使いたいと考えています。 私はこのコマンドを試しました: PKCS11-tool --module /USR/lib/libsmw_pkcs11.so.5 --list-mechanism しかし、ML-KEMやML_DSAはリストに載っていません。 現在、YoctoでIMXイメージ #m 構築しています。 ポスト量子アルゴリズムのサポートを有効にするにはどうすればいいですか? Re: iMx.95 FRDM post quantum algorithms support こんにちは、 Linuxカーネルオプションで単に「PQCを有効にする」だけで済むわけではありません。 i.MX 95機能はEdgeLockのセキュア・エンクレーブ/ハードウェアの信頼の基点に統合されています。 i.MX 95 Advanced Profile セキュア・エンクレーブは、ポスト量子ハードウェアの信頼の基点を可能にし、NXP署名付きセキュア・エンクレーブファームウェア向けのハイブリッドML-DSA + ECDSAをサポートします。 SPSDKおよびML-DSAハイブリッドセキュアブート実装を備えた i.MX 95があり、一般的なPQCドキュメントよりもはるかに有用です。 i.MX 95 セキュアブート(SPSDK搭載) NXP PQCの一般的なアーキテクチャは以下のとおりです。 NXPのポスト量子暗号
View full article
USB 3.0ペンドライブの i.MX RT1050の問題 こんにちは、NXPコミュニティの皆さん、 USBホストとして i.MX RT1050(SDKバージョン2.11.0)とUSBペンドライブを使っています。特にUSB 3.0対応のUSBメモリを使用している際に、断続的に問題が発生しています。 私が指摘する問題点は以下のとおりです。 1) f_write() は、ペン ドライブへのデータのアップロード/ダウンロード/書き込み中に失敗することがあります。 2)データ転送中にUSBデバイスがフリーズすることがあります。 3) 場合によっては、USB 3.0ペンドライブを接続するとRT1050システムが再起動します。 4) 同じアプリケーションがUSB 2.0ペンドライブでより安定して動作するようです。 5) 2.0および3.0のUSBペンドライブ技術をファームウェアで識別する方法? i.MX RT1050はUSB 2.0高速に対応しているため、USB 3.0ペンドライブはUSB 2.0インターフェース経由で動作するはずです。しかし、i.MX RT1050でUSB 3.0ペンドライブを使用する場合、互換性、電源、USB Host MSC、FATFS(#define FF_DEFINED 86631)、またはタイミングの問題などが既知のものかどうか知りたいです。 特にUSB Host MSC、f_write()の故障、USBリセット/切断の処理、VBUS/電源の安定性、USB 2.0高速交渉に関して、何を確認・デバッグすべきかご存知の方はいませんか? i.MX RT1050でUSB 3.0ペンドライブを安定して動作させるためのおすすめや既知の問題、または構成例があればぜひ教えてください。 よろしくお願いします。
View full article
Where are Bluetooth Channel Sounding Examples for the KW47-EVK board Where are Bluetooth Channel Sounding Examples for the KW47-EVK board with the daughter card (KW47-001-M10)?  I've looked in the repos at https://github.com/nxp-mcuxpresso/ but cannot find any specific examples for the KW47-EVK board. I've also found a Channel Sounding example for the FRDM-MCXW72 FRDM-MCXW72: Hands-On 8: Channel Sounding FRDM to Phone.  I also used the NXP AI help, but it came up with links that did not exist. I have the Eclipse based MCUXpresso installed along with the SDKs for the KW47-EVK board with the daughter card (KW47-001-M10). Thanks in advance! --Paul Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board Hello, Hope you are doing well. Thanks for reaching out. To access the Channel Sounding examples for the KW47-EVK, the recommended approach is to use the MCUXpresso for VS Code extension along with the MCUXpresso SDK GitHub repository, rather than browsing the repos manually. Here are the steps: Install the MCUXpresso for VS Code extension Download and install it from the VS Code Marketplace or from the NXP page: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code:MCUXPRESSO-VSC Import the SDK from the repository In VS Code, open the MCUXpresso Quickstart Panel, click "Import example from Repository", and select the KW47-EVK board. The extension will pull the SDK directly from the GitHub repository. Use SDK version 26.06.00 (LTS) We recommend using SDK version 26.06.00, which is the current LTS release and includes the latest BLE stack updates for the KW47, including Channel Sounding support.   Specifically, I would recommend checking this documentation: Running the Bluetooth Low Energy Localization Scenario — MCUXpresso SDK Documentation Hope this helps! Best Regards, Ricardo Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board Thanks Ricardo! That worked and I was able to import the mcxw72evk_loc_reader_bm using the Visual Studio Code Extension.
View full article
i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached iMXR1176 SDK 25.09.00 Manifest 3.15.0 Goal I am acquiring data from an LTC2164 16-bit ADC on an i.MX RT1176. The data path is: LTC2164 (full-rate CMOS output) → FlexIO2 (parallel RX) → eDMA → external SDRAM Hardware setup LTC2164 configured in full-rate CMOS output mode, clocked by an external 100 MHz oscillator (so 100 MSPS, 16-bit parallel). ADC data outputs D0–D15 connected to GPIO_AD_00 … GPIO_AD_15. ADC CLKOUT+ connected to GPIO_AD_30, used as the FlexIO timer clock (external pin clock source). Software setup FlexIO2 configured as a parallel receiver, data latched into shifter 7; shifters 7->0 are chained so that 32 bytes are buffered before the DMA request is asserted. eDMA triggered by kDmaRequestMuxFlexIO2Request0Request1, using two TCDs in ping-pong (scatter/gather) mode. An interrupt is raised on each major loop completion, i.e. every 16384 samples. FlexIO2 functional clock: 120 MHz. Bus clock (eDMA / SEMC side): 240 MHz. Problem At 100 MSPS, 16384 samples should take 163.84 µs. Measuring the time between two consecutive DMA interrupts (GPIO toggle + scope), I consistently get 338 µs, i.e. a factor of ~2.06. This corresponds to an effective sustained rate of about 48 MSPS, which suggests the bottleneck is on the FlexIO side rather than the ADC or the SDRAM. Questions Is there a documented maximum shift clock frequency for FlexIO in parallel receive mode on the RT1176? I could not find any such figure in the RM or the datasheet. When the timer clock source is an external pin, what is the required ratio between the FlexIO functional clock and the external shift clock? My FlexIO clock (120 MHz) is only 1.2× the incoming 100 MHz clock — is that sufficient, or does the input synchronization logic require 2× or 4×? Given the almost exact ×2 ratio I observe, could this come from the FlexIO timer decrementing on both edges of the clock (TIMCMP convention), meaning my timer compare value effectively halves the throughput? Any guidance on the maximum realistic sustained throughput of FlexIO + eDMA on this part would be very helpful, since this determines whether I need to move to a different peripheral or an external FIFO. Thanks in advance. Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hello, thank you for your reply. I was indeed able to achieve the desired performance, but only by exceeding the maximum recommended clock frequency for the Flexio peripheral; specifically, instead of configuring the clock at 120 MHz, a clock speed greater than 200 MHz is required to achieve 100 MSps acquisition, whereas a 120 MHz configuration results in missed clock edges. The problem is that, even though it works at 200 MHz (despite the Reference Manual specifying a 120 MHz maximum), I have no guarantee of reliable operation under varying temperature conditions or across different production batches. Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hello @azed38,   Please keep in mind that when an external pin is used as the clock source, a small synchronization latency is introduced. According to Section 67.3.3.2 of the RM, this latency can range from 0.5 to 1.5 FlexIO clock cycles: Habib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.png Regarding the maximum throughput achievable with FlexIO and DMA, there is not a performance test for the FlexIO  and DMA. However, you may find the AN12686 useful, as it demonstrates a parallel communication implementation using FlexIO and DMA, this may provide guidance relevant to your use case. BR Habib Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hello @azed38, I noticed that you are already receiving support through another channel regarding this topic, so the support will continue there to keep all communication centralized. I would only like to add that operating FlexIO beyond its maximum frequency specifications could cause unexpected behaviors affecting your end application. Based on the information provided in Table 15-4 "Clock Roots" of the RM, I recommend using a maximum frequency of 120 MHz. BR Habib Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hi, The issue is likely due to the pin synchronization delays that are described on section "67.3.3.2 Pin Synchronization" of the Reference Manual. Considering the setup mentioned before, the root cause of the issue is the ratio between the incoming data frequency, and the operating clock frequency on the FlexIO, from the aforementioned pin synchronization delays of this module. For example, because of the pin synchronization delays that exists, the FlexIO emulated peripherals like SPI Master can only operate at a maximum baud rate of one fourth of the FlexIO operating clock frequency. As noted on the RM on section 67.4.3: "Due to synchronization delays, the setup time for the serial input data is 1.5 FlexIO clock cycles, so the maximum baud rate is divided by 4 of the FlexIO clock frequency." In this case, the throughput is expected to be decremented, and as the pin synchronization delays are an inherent behavior of the FlexIO module, there is no workaround. Because of this, combined with the maximum operating frequency of the FlexIO module of 120MHz to ensure proper operation, an expected 100MSPS will not be possible on the RT1170. BR Habib Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached > Given the almost exact ×2 ratio I observe, could this come from the FlexIO timer decrementing on both edges of the clock (TIMCMP convention), meaning my timer compare value effectively halves the throughput? Just wanted to mention that yes, FlexIO timers are dual-edge sensitive when clocked from a Pin or Trigger. So, if your external signal makes one rising and one falling edge, your timer will count twice towards its compare value.  Also, based on my general experience with FlexIO so far, I'd guess that you can only work with external signals up to half the FlexIO clock rate. How else could it sense dual edges? It has to sample the external pin twice per clock period in order to detect the edge.
View full article
KW47-EVKボードのBluetoothチャンネルサウンディング例はどこにありますか? daughterカード(KW47-001-M10)を搭載したKW47-EVKボードのBluetoothチャンネルサウンディング例はどこにありますか? https://github.com/nxp-mcuxpresso/ のリポジトリを調べましたが、KW47-EVKボードの具体的な例は見つかりませんでした。また、FRDM-MCXW72FRDM-MCXW72のチャネルサウンディングの例も見つけました:実践形式 8: チャネルサウンディング FRDMから電話への対応。   NXP AIのヘルプも利用してみましたが、存在しないリンクが表示されました。 私はEclipseベースのMCUXpressoと、d8terカード(KW47-001-M10)のKW47-EVKボード用SDKをインストールしています。 前もって感謝します!--ポール Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board こんにちは、 あなたの調子が良いといいのですが。ご連絡ありがとうございます。KW47-EVKのチャンネルサウンディング例にアクセスするには、手動でリポジトリを閲覧するのではなく、MCUXpresso for VS Code拡張機能とMCUXpresso SDKのGitHubリポジトリを併用することが推奨されます。 手順は以下の通りです。 MCUXpressoのVS Code拡張機能をダウンロードしてVS CodeマーケットプレイスまたはNXPページからインストールしてください: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code:MCUXPRESSO-VSC リポジトリからSDKをインポートしてください VS Codeで、MCUXpressoクイックスタートパネルを開き、「リポジトリからサンプルをインポート」をクリックし、KW47-EVKボードを選択します。拡張機能はGitHubリポジトリからSDKを直接取得します。 SDKバージョン26.06.00(LTS)の使用を推奨します。これは現在のLTSリリースで、KW47向けの最新のBLEスタックアップデート(チャネルサウンディングサポートを含む)を含んでいます。   具体的には、以下のドキュメントを確認することをお勧めします: Bluetooth Low Energy Localization Scenarioの実行 — MCUXpresso SDK ドキュメント お役に立てば幸いです! よろしくお願いいたします。 リカルド Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board リカルドさん、ありがとう!うまくいき、Visual Studio Code拡張機能を使用してmcxw72evk_loc_reader_bmをインポートすることができました。
View full article
Regarding Flash Programming for the FRDM-A-S32K144N I was debugging using the FRDM-A-S32K144N when the following symptoms occurred: * Unable to write to flash memory. * Since the write failure, the power LED and reset LED have remained constantly lit. I attempted recovery by performing the following steps: 1. Tried writing to the flash memory by unplugging and replugging the USB cable while holding down the reset button, aiming to catch the window before the infinite loop started. * Attempted this dozens of times but was unsuccessful. 2. Connected the USB cable while holding down the reset button to enter bootloader mode. * Flashed "BOOTUPDATEAPP_Pemicro_v111.SDA". * Then flashed "MSD-DEBUG-EVB-S32K144_PEmicro_v125.SDA". * The situation did not improve. 3. Attempted flash recovery using "Kinetis_Recovery_Utility.exe". * Unplugged and replugged the USB cable several times, but the process did not complete. I am unsure what to try next. If anyone knows how to restore the board, could you please advise me on the procedure? Re: Regarding Flash Programming for the FRDM-A-S32K144N Hi Fukuda, I don't have the newly released FRDM-A-S32K144N development board on hand, so I haven't tested it myself. If you aren't in a rush, I can help you troubleshoot the issue now, and then perform tests on my end once I receive the board—which I expect to arrive in mid-October. After plugging the cable into the J1 USB Type-C port, please take a photo of the top side of the board and share it with me. I am not sure which two LEDs you are referring to, as the SPF-96556_B.pdf document only lists D5 (Red) and D4 (Orange). If D4 is lit, it indicates that the onboard OpenSDA debugger is functioning correctly. However, if D5 is lit, it indicates that the S32K144N is in a reset state (The RESET_MCU signal may go low); please use an oscilloscope to observe the signal and check for the frequency of periodic low pulses.  Additionally, I am unsure what program was previously flashed onto the S32K144N. If it is a blank chip and the RESET_MCU signal shows periodic high-level pulses with a period of ~118µs, you can recover the MCU by executing a "mass erase" command via the SWD/JTAG debug interface. Since the onboard debugger is provided by PEMicro, it is recommended to download the latest "USB Multilink Resources Installer" from the "Support & Downloads" category of the "Multilink Debug Probes". After installation, open PEFirmwareConfig.exe located in C:\PEMicro\Multilink_Resources to check the firmware version. Select Hardware Type: Multilink ACP Embedded - OnBoard ARM Debug Interface  Then, check for available updates. It appears you have already refer to the discussion "S32K144 D2 RED LED is ON always". Please note that the Kinetis_Recovery_Utility (Version 8.17) previously provided on the PEMicro website did not work correctly; the Kinetis_Recovery_Utility (Version 1.06)—which I uploaded as an attachment in that discussion—works properly. When using the Kinetis_Recovery_Utility, It is recommended to keep the PEMicro debugger powered on and repeatedly power-cycle reset only the S32K chip. If you have an external debugger like the Multilink connected to the J3, you can repeatedly plug and unplug J1 to cycle power to the S32K144N while keeping the external Multilink active. However, if you do not have an external Multilink and are relying solely on the onboard OpenSDA debugger, the design of the FRDM-A-S32K144N presents some inconvenience. Jumper SJ10 is not as convenient as J107 on the S32K144EVB for repeatedly cycling power to the S32K144. I am not certain whether repeatedly pressing SW2 alone would allow the Kinetis_Recovery_Utility to successfully halt the S32K144N at the right moment. Best Regards, Robin
View full article
LX2160ARDB SD卡启动,LSDK FitImage 您好, 我已经安装了 LSDK 21.08,并且 atf、rcw、u-boot、ddr-phy 文件夹都已存在,但是为什么源代码不在其中,而需要为每个源代码进行 git clone 操作? 为了实现完整的 SD 卡启动,我已将以下文件部署到下面提到的区块中。 1. bl2_sd.pbl - 0x8 2. fip.bin - 0x800 3. fip_ddr_all.bin - 0x4000 4. mc_lx2160a_10.40.0.itb - 0x5000 5. dpc-usxgmii.dtb - 0x7000 6. fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin - 0x8000 我已在 SD 卡(64GB)上创建了如下分区。 1. /dev/mmcblk0p1 - 扇区 409600 至扇区 42352640 2. /dev/mmcblk0p2 - 扇区 42352640 至扇区 121534463 并使用 u-boot 的 bootargs 命令将根文件系统“fsl-image-networking-full-lx2160ardb-rev2-20260310091147.rootfs.tar.gz”挂载到 /dev/mmcblk0p1 分区。 -> setenv bootcmd 'setenv bootargs root=/dev/mmcblk0p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 0x90000000 0x8000 0x14000; bootm 0x90000000' 这样做对吗?请提出任何更好的方法。 在 LSDK 中,如何为内核和 dtb 生成 fitImage 二进制文件,就像 LSDK 中 distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ 目录下的 fitImage 文件一样,例如 fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin。 Re: LX2160ARDB SD Card Booting, LSDK FitImage 您好, 感谢您的详细解释。 我们按照 UG10374 中给出的 Yocto 项目构建了 LSDK 环境。 1.对于 SD 卡启动,在我们遵循的步骤中,我们创建了分区并提取了您提到的 rootfs,其中包含有效的 /sbin/init。通过在 emmc 闪存中创建分区 (/dev/mmcblk1p1)、提取根文件系统并能够将系统挂载到其分区中,但无法将其挂载到 SD 卡中,也验证了这一点。 能否通过将启动映像以块写入方式加载到 SD 卡,并将根文件系统挂载到分区(/dev/mmcblk0p1)上来实现启动? 因为在 SD 卡分区挂载失败后,从 qspi 启动后使用 lsblk 命令检查分区时,不会列出这些分区。 2. 实际的 fitImage 二进制文件大小约为 16MB,块大小为 0x8000……但启动时的日志如下: => setenv bootcmd 'setenv bootargs root=/dev/mmcblk1p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 90000000 8000 8800; bootm 90000000' => => => 启动 切换到分区 #0,成功 mmc0 是当前设备 MMC 读取:设备 # 0,块 # 32768,计数 35000 ... 已读取 35000 个块:成功 ## Loading kernel from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Created: 2023-02-08 3:38:28 UTC Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 16608244 Bytes = 15.8 MiB Architecture: AArch64 OS: Linux Load Address: 0x80080000 Entry Point: 0x80080000 Hash algo: sha256 Hash value: 59af2bda187c7e19bd0a37818f1c22c24d30562979041f7bee01288661ae5bee Verifying Hash Integrity ... sha256+ OK ##从位于 90000000 的 FIT 图像加载 fdt... 使用“conf-freescale_fsl-lx2160a-rdb.dtb”配置 尝试使用 'fdt-freescale_fsl-lx2160a-rdb.dtb' fdt 子映像 描述:扁平化的设备树斑点 创建时间:2023年2月8日 3:38:28 UTC 类型:扁平设备树 压缩:未压缩 数据起始地址:0x90fd6e28 数据大小:33857 字节 = 33.1 KiB 建筑:AArch64 哈希算法:sha256 哈希值:32858f2c5f385a1a4410b8d4bff2414b1c4d36a13493cc8242eab6464e8d1d82 正在验证哈希完整性……sha256+ 通过 使用位于 0x90fd6e28 的 fdt blob 启动 解压缩内核图像 正在加载设备树至 000000009fff4000,结束于 000000009ffff440 ... 成功 fsl-mc:DPL 未部署,DPAA2 以太网无法工作 正在启动内核... “同步中止”处理程序,esr 0x02000000 elr: 000000000636a000 lr: 0000000082005fd0 (重定位) elr: 0000000080080000 lr: 00000000fbd1bfd0 x0 : 000000009fff4000 x1 : 0000000000000000 x2 : 0000000000000000 x3 : 0000000000000000 x4:0000000080080000 x5:0000000000000001 x6 : 0000000000000008 x7 : 0000000000000000 x8:00000000fbb0e7c8 x9:0000010000000000 x10: 000000000a200023 x11: 0000000000000002 x12: 0000000000000002 x13: 00000000fbdfffff x14: 000000009fff4000 x15: 00000000fbd18be8 x16: 00000000fbd52f58 x17: 00000000fbb31560 x18: 00000000fbb11d90 x19: 00000000fbde6c98 x20: 0000000000000000 x21: 0000000000000400 x22: 0000000000000001 x23: 00000000fbb16538 x24: 00000000fbb16538 x25: 00000000fbdd1978 x26: 0000000000000000 x27: 00000000fbd1bff8 x28: 0000000090000114 x29: 00000000fbd1bf98 代码:00000000 00000000 00000000 00000000 (00000000) 正在重置CPU... ### ERROR ### Please RESET the 板 ### 3. 将检查 sd_bootcmd 序列,并尝试通过生成的固件映像启动。 4. 根据 TRM 中 Flash 布局表中提到的位置加载 fip.bin 和 fip_ddr_all.bin。 感谢您提供生成 FIT 图像的步骤。 Re: LX2160ARDB SD Card Booting, LSDK FitImage 你好, 你的方法并非 LSDK 推荐的方法。单个原始映像可以使用,但您还必须为 LX2160A 重现完整的 U-Boot 环境和启动顺序。更安全的方法是生成并刷写复合固件镜像: flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     这将生成: build/images/firmware_lx2160ardb_rev2_sdboot.img     然后将其写入SD卡: sudo flex-installer -f firmware_lx2160ardb_rev2_sdboot.img -d /dev/mmcblk0     备选: sudo dd if=firmware_lx2160ardb_rev2_sdboot.img \ of=/dev/mmcblk0 bs=1k seek=4 conv=fsync   所提程序存在的问题 只有当分区 1 包含提取的 Linux 根文件系统时, root=/dev/mmcblk0p1 才有效。 .tar.gz 文件本身并不是已挂载的根文件系统;它必须被解压到分区中: sudo mkfs.ext4 /dev/mmcblk0p1 sudo mount /dev/mmcblk0p1 /mnt sudo tar -xpf fsl-image-networking-full-lx2160ardb-rev2-*.rootfs.tar.gz \ -C /mnt sudo umount /mnt 狂欢   该命令假定 FIT 图像正好占用 0x14000 个块: mmc read 0x90000000 0x8000 0x14000     该大小必须与实际的 FIT 文件大小相符,向上取整到 512 字节扇区。否则,U-Boot 可能会读取的数据过少或覆盖相邻的内存。 你绕过了正常的 sd_bootcmd 序列。标准序列还会加载管理复合体固件、DPC 和其他所需元器件。LSDK 指南定义了复合 SD 卡布局,并建议通过生成的固件映像启动,而不是手动放置每个组件。 您的 fip.bin 和 fip_ddr_all.bin 条目不应视为可以互换。它们正确的位置和加载命令取决于生成的 U-Boot 环境和固件布局。 安装复合镜像后,更好的手动启动测试方法是: => run sd_bootcmd     或者直接重置电路板,并将启动开关配置为 SD 卡启动。 为什么源目录为空 LSDK 包将构建框架与组件源代码树分离。 components/firmware 目录下可能包含清单、配置、配方或参考资料,而实际的 ATF、U-Boot、RCW、DDR PHY 和 Linux 源代码是根据 LSDK 清单/配置获取的。因此,从源代码构建时,需要克隆组件存储库。请使用 LSDK 版本中指定的精确修订版本,而不是任意上游分支。 例如,使用 Flexbuild 进行构建,而不是独立克隆和构建每个元器件: flex-builder -c atf -m lx2160ardb_rev2 -b sd flex-builder -c linux -m lx2160ardb_rev2 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     对于生产环境版本,请使用官方的 flexbuild_lsdk2108.tgz 归档文件,因为它包含与版本匹配的配置和元器件修订。 生成 FIT 图像 使用 U-Boot 的 mkimage 工具,根据 ITS 描述生成 FIT 镜像: mkimage -f lx2160.its lx2160.fit     ITS 文件描述了内核、设备树、可选的 initramfs、加载地址、压缩、哈希和配置。LSDK 指南对此过程进行了详细记录,并给出了上述命令格式。 一个最小的内核加 DTB 示例是: /dts-v1/; / { description = "LX2160A kernel and device tree FIT"; #address-cells = <1>; images { kernel { description = "Linux kernel"; data = /incbin/("Image"); type = "kernel"; arch = "arm64"; os = "linux"; compression = "none"; load = <0x81080000>; entry = <0x81080000>; hash-1 { algo = "sha256"; }; }; fdt { description = "LX2160ARDB Rev2 device tree"; data = /incbin/("fsl-lx2160a-rdb.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; load = <0x90000000>; hash-1 { algo = "sha256"; }; }; }; configurations { default = "conf"; conf { kernel = "kernel"; fdt = "fdt"; }; }; };     使用 LSDK U-Boot 工具提供的 mkimage 构建它: mkimage -f lx2160.its fitImage     对于压缩内核,请使用 Image.gz 并进行如下设置: compression = "gzip";     确保内核、FDT、initramfs 和 U-Boot 加载区域不重叠。 tmp/deploy/images/.../fitImage-*.bin 中生成的文件通常是 Yocto 生成的 FIT 工件;其时间戳和 Git 哈希值是打包元数据,而不是特殊的二进制格式。FIT 格式本身是由 mkimage 生成的。 最后,请注意,文档中记录的 LSDK 21.08 FIT 示例包括 initramfs/rootfs 以及内核和 DTB。如果使用 root=/dev/mmcblk0p1 启动,则可以省略 initramfs,但必须正确提取根文件系统并包含有效的 /sbin/init 。 此致
View full article
LX2160ARDB SD Card Booting, LSDK FitImage Hi, I have installed the LSDK 21.08 and the atf, rcw, u-boot, ddr-phy folders are already available but why the source isn't available in it and have to git clone for each source? For complete SD card booting, i have deployed the following files at blocks mentioned below 1. bl2_sd.pbl - 0x8 2. fip.bin - 0x800 3. fip_ddr_all.bin - 0x4000 4. mc_lx2160a_10.40.0.itb - 0x5000 5. dpc-usxgmii.dtb - 0x7000 6. fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin - 0x8000 And I have made partitions in SD card(64GB) as below 1. /dev/mmcblk0p1 - sector 409600 to sector 42352640 2. /dev/mmcblk0p2 - sector 42352640 to sector 121534463 and mounting the rootfs "fsl-image-networking-full-lx2160ardb-rev2-20260310091147.rootfs.tar.gz" on /dev/mmcblk0p1 partition using the bootargs command at u-boot as => setenv bootcmd 'setenv bootargs root=/dev/mmcblk0p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 0x90000000 0x8000 0x14000; bootm 0x90000000' is this the right approach do it?? Please suggest any better approach that can be done. And in LSDK how to generate the fitImage binary file for kernel and dtb, like the fitImages present in the LSDK under distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ directory like fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin. Re: LX2160ARDB SD Card Booting, LSDK FitImage Hi, Thanks for the detailed explanation. We have build the LSDK setup using yocto project as given in UG10374 1. For SD card booting, in the procedure we followed we have created the partition and extracted the rootfs as mentioned by you and contains a valid /sbin/init. This was also verfied by making partition(/dev/mmcblk1p1) in emmc flash, extracting the rootfs and able to mount the system in its partition but not getting when its in SD. Is the booting possible by loading the boot images through block write into SD card and mounting rootfs on the partition(/dev/mmcblk0p1)?? Because after the mounting on SD card partition gets failed, the partitions are not listed when checked by the command lsblk after booting from qspi. 2. The actual file size fitImage binary is around 16MB and block size of 0x8000...but the log is as follows when booted => setenv bootcmd 'setenv bootargs root=/dev/mmcblk1p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 90000000 8000 8800; bootm 90000000' => => => boot switch to partitions #0, OK mmc0 is current device MMC read: dev # 0, block # 32768, count 35000 ... 35000 blocks read: OK ## Loading kernel from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Created: 2023-02-08 3:38:28 UTC Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 16608244 Bytes = 15.8 MiB Architecture: AArch64 OS: Linux Load Address: 0x80080000 Entry Point: 0x80080000 Hash algo: sha256 Hash value: 59af2bda187c7e19bd0a37818f1c22c24d30562979041f7bee01288661ae5bee Verifying Hash Integrity ... sha256+ OK ## Loading fdt from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'fdt-freescale_fsl-lx2160a-rdb.dtb' fdt subimage Description: Flattened Device Tree blob Created: 2023-02-08 3:38:28 UTC Type: Flat Device Tree Compression: uncompressed Data Start: 0x90fd6e28 Data Size: 33857 Bytes = 33.1 KiB Architecture: AArch64 Hash algo: sha256 Hash value: 32858f2c5f385a1a4410b8d4bff2414b1c4d36a13493cc8242eab6464e8d1d82 Verifying Hash Integrity ... sha256+ OK Booting using the fdt blob at 0x90fd6e28 Uncompressing Kernel Image Loading Device Tree to 000000009fff4000, end 000000009ffff440 ... OK fsl-mc: DPL not deployed, DPAA2 ethernet not work Starting kernel ... "Synchronous Abort" handler, esr 0x02000000 elr: 000000000636a000 lr : 0000000082005fd0 (reloc) elr: 0000000080080000 lr : 00000000fbd1bfd0 x0 : 000000009fff4000 x1 : 0000000000000000 x2 : 0000000000000000 x3 : 0000000000000000 x4 : 0000000080080000 x5 : 0000000000000001 x6 : 0000000000000008 x7 : 0000000000000000 x8 : 00000000fbb0e7c8 x9 : 0000010000000000 x10: 000000000a200023 x11: 0000000000000002 x12: 0000000000000002 x13: 00000000fbdfffff x14: 000000009fff4000 x15: 00000000fbd18be8 x16: 00000000fbd52f58 x17: 00000000fbb31560 x18: 00000000fbb11d90 x19: 00000000fbde6c98 x20: 0000000000000000 x21: 0000000000000400 x22: 0000000000000001 x23: 00000000fbb16538 x24: 00000000fbb16538 x25: 00000000fbdd1978 x26: 0000000000000000 x27: 00000000fbd1bff8 x28: 0000000090000114 x29: 00000000fbd1bf98 Code: 00000000 00000000 00000000 00000000 (00000000) Resetting CPU ... ### ERROR ### Please RESET the board ### 3. Once will check the sd_bootcmd sequence and try to boot through the generated firmware image 4. fip.bin and fip_ddr_all.bin are loaded according to the locations mentioned in the Flash layout table in TRM. Thanks for providing the procedure for generating a FIT image. Re: LX2160ARDB SD Card Booting, LSDK FitImage Hello, Your approach is not the recommended LSDK method. The individual raw images can work, but you must also reproduce the complete U-Boot environment and boot sequence for LX2160A. The safer method is to generate and flash the composite firmware image: flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     This generates: build/images/firmware_lx2160ardb_rev2_sdboot.img     Then write it to the SD card: sudo flex-installer -f firmware_lx2160ardb_rev2_sdboot.img -d /dev/mmcblk0     Alternatively: sudo dd if=firmware_lx2160ardb_rev2_sdboot.img \ of=/dev/mmcblk0 bs=1k seek=4 conv=fsync   Problems in the proposed procedure root=/dev/mmcblk0p1 is valid only if partition 1 contains an extracted Linux root filesystem. A .tar.gz file itself is not a mounted root filesystem; it must be extracted into the partition: sudo mkfs.ext4 /dev/mmcblk0p1 sudo mount /dev/mmcblk0p1 /mnt sudo tar -xpf fsl-image-networking-full-lx2160ardb-rev2-*.rootfs.tar.gz \ -C /mnt sudo umount /mnt bash   This command assumes that the FIT image occupies exactly 0x14000 blocks: mmc read 0x90000000 0x8000 0x14000     That size must match the actual FIT file size, rounded up to 512-byte sectors. Otherwise, U-Boot may read too little or overwrite adjacent memory. You are bypassing the normal sd_bootcmd sequence. The standard sequence also loads the Management Complex firmware, DPC, and other required components. The LSDK guide defines a composite SD layout and recommends booting through the generated firmware image rather than manually placing each component. Your fip.bin and fip_ddr_all.bin entries should not be treated as interchangeable. Their correct locations and loading commands depend on the generated U-Boot environment and firmware layout. A better manual boot test, after the composite image is installed, is: => run sd_bootcmd     or simply reset the board with the boot switches configured for SD boot. Why source directories are empty The LSDK package separates the build framework from component source trees. The directories under components/firmware may contain manifests, configuration, recipes, or references, while the actual ATF, U-Boot, RCW, DDR PHY, and Linux sources are fetched according to the LSDK manifest/configuration. Therefore, cloning the component repositories is expected when building from source. Use the exact revisions specified by the LSDK release rather than arbitrary upstream branches. For example, build through Flexbuild instead of independently cloning and building each component: flex-builder -c atf -m lx2160ardb_rev2 -b sd flex-builder -c linux -m lx2160ardb_rev2 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     For a production build, use the official flexbuild_lsdk2108.tgz archive because it contains the release-matched configuration and component revisions. Generating a FIT image A FIT image is generated from an ITS description using U-Boot’s mkimage utility: mkimage -f lx2160.its lx2160.fit     The ITS file describes the kernel, device tree, optional initramfs, load addresses, compression, hashes, and configuration. The LSDK guide explicitly documents this process and gives the command format above. A minimal kernel-plus-DTB example is: /dts-v1/; / { description = "LX2160A kernel and device tree FIT"; #address-cells = <1>; images { kernel { description = "Linux kernel"; data = /incbin/("Image"); type = "kernel"; arch = "arm64"; os = "linux"; compression = "none"; load = <0x81080000>; entry = <0x81080000>; hash-1 { algo = "sha256"; }; }; fdt { description = "LX2160ARDB Rev2 device tree"; data = /incbin/("fsl-lx2160a-rdb.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; load = <0x90000000>; hash-1 { algo = "sha256"; }; }; }; configurations { default = "conf"; conf { kernel = "kernel"; fdt = "fdt"; }; }; };     Build it with the mkimage supplied by the LSDK U-Boot tools: mkimage -f lx2160.its fitImage     For a compressed kernel, use Image.gz and set: compression = "gzip";     Ensure that the kernel, FDT, initramfs, and U-Boot load regions do not overlap. The generated file in tmp/deploy/images/.../fitImage-*.bin is normally a Yocto-generated FIT artifact; its timestamp and Git hash are packaging metadata, not a special binary format. The FIT format itself is produced by mkimage . Finally, note that the documented LSDK 21.08 FIT example includes an initramfs/rootfs as well as kernel and DTB. If you boot with root=/dev/mmcblk0p1 , you can omit the initramfs, but the root filesystem must be properly extracted and contain a valid /sbin/init . Regards
View full article
LX2160ARDB SDカードブート、LSDK FitImage こんにちは、 LSDK 21.08をインストールしましたが、atf、rcw、u-boot、ddr-phyフォルダは既に存在しているのに、なぜソースコードがその中に含まれておらず、各ソースコードをgit cloneする必要があるのでしょうか? SDカードの完全なブートのために、以下のブロックに次のファイルを配置しました。 1. bl2_sd.pbl - 0x8 2. fip.bin - 0x800 3. fip_ddr_all.bin - 0x4000 4. mc_lx2160a_10.40.0.itb - 0x5000 5. dpc-usxgmii.dtb - 0x7000 6. fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin - 0x8000 SDカード(64GB)に以下のようにパーティションを作成しました。 1. /dev/mmcblk0p1 - セクター409600~セクター42352640 2. /dev/mmcblk0p2 - セクター42352640からセクター121534463 u-boot で bootargs コマンドを使用して、rootfs "fsl-image-networking-full-lx2160ardb-rev2-20260310091147.rootfs.tar.gz" を /dev/mmcblk0p1 パーティションにマウントします。 => setenv bootcmd 'setenv bootargs root=/dev/mmcblk0p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 0x90000000 0x8000 0x14000; bootm 0x90000000' これは正しいやり方でしょうか?もっと良い方法があれば教えてください。 また、LSDK では、カーネルと dtb 用の fitImage バイナリ ファイルを生成する方法、例えば distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ ディレクトリにある fitImage のようなファイルを生成する方法、例えば fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin のようなファイルを生成する方法。 Re: LX2160ARDB SD Card Booting, LSDK FitImage こんにちは、 詳しい説明をありがとうございました。 UG10374で示されたYoctoプロジェクトを使ってLSDKのセットアップを構築しました 1.SD カードからのブートについては、ご指摘のとおり、パーティションを作成し、rootfs を抽出しました。rootfs には有効な /sbin/init が含まれています。これは、emmc フラッシュにパーティション (/dev/mmcblk1p1) を作成し、ルートファイルシステムを抽出して、システムをそのパーティションにマウントできるが、SD にある場合はマウントできないことでも検証されました。 SDカードにブロック書き込みによってブートイメージをロードし、パーティション(/dev/mmcblk0p1)にrootfsをマウントすることでブートは可能ですか? SDカードパーティションへのマウントが失敗した後、qspiから起動した後にlsblkコマンドで確認してもパーティションが表示されないためです。 2. fitImageバイナリの実際のファイルサイズは約16MBで、ブロックサイズは0x8000ですが、起動時のログは次のようになります。 => setenv bootcmd 'setenv bootargs root=/dev/mmcblk1p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 90000000 8000 8800; bootm 90000000' => => => ブート パーティション#0に切り替える、OK MMC0は現在のデバイスです MMC読み込み:dev # 0、ブロック#32768、カウント35000 ...35000ブロック読み込み:OK ## Loading kernel from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Created: 2023-02-08 3:38:28 UTC Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 16608244 Bytes = 15.8 MiB Architecture: AArch64 OS: Linux Load Address: 0x80080000 Entry Point: 0x80080000 Hash algo: sha256 Hash value: 59af2bda187c7e19bd0a37818f1c22c24d30562979041f7bee01288661ae5bee Verifying Hash Integrity ... sha256+ OK ## FITからFDTを読み込み中 90000000 の画像 ... 'conf-freescale_fsl-lx2160a-rdb.dtb'構成の使用 'fdt-freescale_fsl-lx2160a-rdb.dtb' のfdtサブイメージを試しています 説明:平坦なデバイスツリーの塊 作成日:2023-02-08 3:38:28 UTC タイプ:フラットデバイスツリー 圧縮:非圧縮 データ開始:0x90fd6e28 データサイズ:33857バイト = 33.1 KiB アーキテクチャ:AArch64 ハッシュアルゴリズム:sha256 ハッシュ値:32858f2c5f385a1a4410b8d4bff2414b1c4d36a13493cc8242eab6464e8d1d82 ハッシュ整合性の検証中...sha256+ OK 0x90fd6e28のFDTブロブを使って起動します カーネルイメージの非圧縮 デバイスツリーを0000000009fff4000にロード、終了00000009ffff440 ...OK FSL-MC:DPL未展開、DPAA2イーサネットが動作しない カーネルを起動中… 「同期中止」ハンドラ、esr 0x02000000 elr: 000000000636a000 lr : 0000000082005fd0 (再配置) elr: 0000000080080000 lr : 00000000fbd1bfd0 x0 : 000000009fff4000 x1 : 0000000000000000 x2 : 0000000000000000 x3 : 0000000000000000 x4 : 0000000080080000 x5 : 0000000000000001 x6 : 0000000000000008 x7 : 0000000000000000 x8 : 00000000fbb0e7c8 x9 : 0000010000000000 x10: 000000000a200023 x11: 0000000000000002 x12: 0000000000000002 x13: 00000000fbdfffff x14: 000000009fff4000 x15: 00000000fbd18be8 x16: 00000000fbd52f58 x17: 00000000fbb31560 x18: 00000000fbb11d90 x19: 00000000fbde6c98 x20: 0000000000000000 x21: 0000000000000400 x22: 0000000000000001 x23: 00000000fbb16538 x24: 00000000fbb16538 x25: 00000000fbdd1978 x26: 0000000000000000 x27: 00000000fbd1bff8 x28: 0000000090000114 x29: 00000000fbd1bf98 コード: 00000000 00000000 00000000 00000000 (00000000) CPUをリセットしています... # ## ERROR ## # ボードをリセットしてください ### 3. sd_bootcmdシーケンスを確認し、生成されたファームウェアイメージを介して起動を試みます。 4. fip.bin と fip_ddr_all.bin は、TRM の Flash レイアウト テーブルに記載されている場所に従ってロードされます。 FITイメージを生成する手順を教えていただき、ありがとうございます。 Re: LX2160ARDB SD Card Booting, LSDK FitImage こんにちは、 あなたの方法は推奨される LSDK方法ではありません。個々のRAW画像は動作しますが、LX2160AにはU-Bootの環境と起動シーケンスを完全な再現しなければなりません。より安全な方法は、コンポジットファームウェアイメージを生成し、フラッシュすることです。 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     これにより以下が生成されます。 build/images/firmware_lx2160ardb_rev2_sdboot.img     次に、それをSDカードに書き込みます。 sudo flex-installer -f firmware_lx2160ardb_rev2_sdboot.img -d /dev/mmcblk0     または: sudo dd if=firmware_lx2160ardb_rev2_sdboot.img \ of=/dev/mmcblk0 bs=1k seek=4 conv=fsync   提案された手順における問題点 root=/dev/mmcblk0p1 はパーティション1に解凍されたLinuxルートファイルシステムが含まれている場合にのみ有効です。 .tar.gz ファイル自体はマウントされたルートファイルシステムではありません。パーティションに展開する必要があります。 sudo mkfs.ext4 /dev/mmcblk0p1 sudo mount /dev/mmcblk0p1 /mnt sudo tar -xpf fsl-image-networking-full-lx2160ardb-rev2-*.rootfs.tar.gz \ -C /mnt sudo umount /mnt バッシュ   このコマンドは、FITイメージが正確に 0x14000 ブロックを占めることを前提としています。 mmc read 0x90000000 0x8000 0x14000     そのサイズは、実際のFITファイルのサイズを512バイトセクターに切り上げた値と一致する必要があります。そうしないと、U-Bootが読み込むメモリ量が少なすぎたり、隣接するメモリを上書きしてしまう可能性があります。 通常の sd_bootcmd シーケンスをバイパスしています。標準シーケンスはまた、マネジメント Complexのファームウェア、DPC、その他必要なコンポーネントを読み込みます。LSDKガイドでは、複合SDカードのレイアウトを定義しており、各コンポーネントを手動で配置するのではなく、生成されたファームウェアイメージを使用して起動することを推奨しています。 fip.bin と fip_ddr_all.bin のエントリは、互換性のあるものとして扱ってはなりません。それらの正しい配置場所とロードコマンドは、生成されたU-Boot環境とファームウェアのレイアウトによって異なります。 複合イメージのインストール後に行う、より適切な手動ブートテストは次のとおりです。 => run sd_bootcmd     または、ブートスイッチをSDブート用に設定したままボードをリセットするだけでもいいです。 ソースディレクトリが空なのはなぜですか? LSDKパッケージはビルドフレームワークをコンポーネントソースツリーから分離しています。 components/firmware のディレクトリにはマニフェスト、設定、レシピ、参照が含まれることがあり、実際のATF、U-Boot、RCW、DDR PHY、LinuxのソースはLSDKのマニフェスト/設定に従って取得されます。したがって、ソースから構築する際にはコンポーネントリポジトリのクローン作成が期待されます。任意のアップストリームブランチではなく、LSDKリリースで指定されている正確なリビジョンを使用してください。 例えば、各コンポーネントを独立してクローンしてビルドするのではなく、Flexbuildでビルドするのが良いでしょう。 flex-builder -c atf -m lx2160ardb_rev2 -b sd flex-builder -c linux -m lx2160ardb_rev2 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     本番ビルドの場合は、リリースマッチされた構成やコンポーネントのリビジョンを含む公式の flexbuild_lsdk2108.tgz アーカイブを使用してください。 FITイメージを生成する U-Bootの mkimage ユーティリティを使用して、ITS記述からFITイメージが生成されます。 mkimage -f lx2160.its lx2160.fit     ITSファイルには、カーネル、デバイスツリー、オプションのinitramfs、ロードアドレス、圧縮、ハッシュ、および構成に関する情報が記載されています。LSDKガイドにはこのプロセスが明確に記載されており、上記のコマンド形式が示されています。 カーネルとDTBを組み合わせた最小限の例は以下のとおりです。 /dts-v1/; / { description = "LX2160A kernel and device tree FIT"; #address-cells = <1>; images { kernel { description = "Linux kernel"; data = /incbin/("Image"); type = "kernel"; arch = "arm64"; os = "linux"; compression = "none"; load = <0x81080000>; entry = <0x81080000>; hash-1 { algo = "sha256"; }; }; fdt { description = "LX2160ARDB Rev2 device tree"; data = /incbin/("fsl-lx2160a-rdb.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; load = <0x90000000>; hash-1 { algo = "sha256"; }; }; }; configurations { default = "conf"; conf { kernel = "kernel"; fdt = "fdt"; }; }; };     LSDK U-Bootツールに付属の mkimage を使用してビルドしてください。 mkimage -f lx2160.its fitImage     圧縮カーネルの場合は、 Image.gz を使用し、以下のように設定してください。 compression = "gzip";     カーネル、FDT、initramfs、およびU-Bootのロード領域が重複しないようにしてください。 tmp/deploy/images/.../fitImage-*.bin で生成されるファイルは通常、Yoctoが生成したFITアーティファクトであり、そのタイムスタンプやGitハッシュは特別なバイナリ形式ではなく、パッケージングされたメタデータです。FITフォーマット自体は mkimage によって生成されます。 最後に、ドキュメントに記載されているLSDK 21.08 FITの例には、カーネルとDTBだけでなく、initramfs/rootfsも含まれていることに注意してください。 root=/dev/mmcblk0p1 で起動する場合はinitramfsを省略できますが、rootファイルシステムは正しく解凍され、有効な /sbin/init を含める必要があります。 よろしくお願いします。
View full article
关于 FRDM-A-S32K144N 的闪存编程 我在使用 FRDM-A-S32K144N 进行调试时,出现了以下症状: 无法写入闪存。 * 自写入失败以来,电源指示灯和RESET指示灯一直亮着。 我尝试通过以下步骤进行恢复: 1. 尝试通过拔下并重新插入 USB 电缆,同时按住重置按钮,向闪存写入数据,目的是在无限循环开始之前抓住这个机会。 * 尝试了几十次,但都失败了。 2. 按住重置按钮,同时连接 USB 数据线,进入引导加载程序模式。 * 已刷写“BOOTUPDATEAPP_Pemicro_v111.SDA”。 然后刷入“MSD-DEBUG-EVB-S32K144_PEmicro_v125.SDA”。 情况并未好转。 3. 尝试使用“Kinetis_Recovery_Utility.exe”进行闪存恢复。 * 多次拔下并重新插上 USB 数据线,但该过程仍未完成。 我不知道接下来该尝试什么。 如果有人知道如何修复主板,能否请您指导一下步骤? Re: Regarding Flash Programming for the FRDM-A-S32K144N 嗨福田, 我手头没有新发布的 FRDM-A-S32K144N 开发板,所以我自己还没有测试过。如果您不着急,我现在可以帮您排查问题,然后在我收到主板后(预计10月中旬到货)再进行测试。 将数据线插入J1 USB Type-C 接口后,请拍摄主板正面的照片并与我分享。 我不确定您指的是哪两个 LED,因为 SPF-96556_B.pdf 文档只列出了D5 (红色)和D4 (橙色)。 如果D4亮起,则表示板载OpenSDA调试器运行正常。但是,如果D5亮起,则表示 S32K144N 处于 RESET 状态( RESET_MCU信号可能变为低电平);请使用示波器观察信号并检查周期性低脉冲的频率。 此外,我不确定之前在S32K144N上刷入的是什么程序。如果芯片是空白的,并且RESET_MCU信号显示周期约为 118µs 的周期性高电平脉冲,则可以通过 SWD/JTAG 调试接口执行“批量擦除”命令来恢复 MCU。 由于板载调试器由 PEMicro 提供,建议 从“ 多链路调试探针”的“支持与下载”类别 下载最新的“ USB 多链路资源安装程序” 。安装完成后,打开 位于 C:\PEMicro\Multilink_Resources 的 PEFirmwareConfig.exe 文件 以检查固件版本。选择硬件类型: Multilink ACP Embedded - OnBoard ARM Debug Interface然后,检查是否有可用更新。 看来您已经参考了“ S32K144 D2 红色 LED 始终亮着”的讨论。请注意,之前在 PEMicro 网站上提供的Kinetis_Recovery_Utility (版本8.17 )无法正常工作; Kinetis_Recovery_Utility (版本1.06 )——我已将其作为附件上传到该讨论中——运行正常。 使用Kinetis_Recovery_Utility时,建议保持 PEMicro 调试器通电,并反复对 S32K 芯片进行断电重启复位。 如果您有像Multilink这样的外部调试器连接到J3 ,您可以反复插拔J1来循环给S32K144N供电,同时保持外部Multilink处于活动状态。 但是,如果您没有外部Multilink ,并且仅依赖板载OpenSDA调试器,则 FRDM-A-S32K144N的设计会带来一些不便。对于S32K144EVB来说,跳线SJ10不如J107方便,可以反复循环给 S32K144 供电。我不确定单独反复按下SW2是否能让Kinetis_Recovery_Utility在正确的时间成功停止 S32K144N。 此致, 罗宾
View full article
USB 3.0 Pen drive Issues with i.MX RT1050 Hi NXP Community, I am using an i.MX RT1050(SDK Version 2.11.0) as a USB Host with a USB pen drive. I am facing intermittent issues specifically when using USB 3.0 pen drives. The issues I observe are: 1)f_write() sometimes fails while uploading/downloading/writing data to and from the pen drive. 2)Sometimes the USB device gets stuck during data transfer. 3)In some cases, the RT1050 system restarts when I connect a USB 3.0 pen drive. 4)The same application appears to work more reliably with USB 2.0 pen drives. 5)How to Identify the USB Pen drive Technology for 2.0 and 3.0 through firmware? Since the i.MX RT1050 supports USB 2.0 High-Speed, I understand that a USB 3.0 pen drive should operate through its USB 2.0 interface. However, I would like to understand whether there are any known compatibility, power, USB Host MSC, FATFS(#define FF_DEFINED 86631), or timing issues with USB 3.0 pen drives when used with the i.MX RT1050. Could anyone please suggest what I should check or debug, particularly regarding USB Host MSC, f_write() failures, USB reset/disconnect handling, VBUS/power stability, and USB 2.0 High-Speed negotiation? Any recommendations, known issues, or example configurations for reliable USB 3.0 pen drive operation with the i.MX RT1050 would be greatly appreciated. Thank you.
View full article
i.MX RT1050 USB 3.0 U盘问题 NXP社区的各位好, 我正在使用 i.MX RT1050(SDK 版本 2.11.0)作为 USB 主机,并连接一个 U 盘。我发现使用 USB 3.0 U 盘时会遇到间歇性问题。 我观察到的问题有: 1)f_write() 在向 U 盘上传/下载/写入数据时有时会失败。 2)有时USB设备在数据传输过程中会卡住。 3)在某些情况下,当我连接 USB 3.0 闪存盘时,RT1050 系统会重新启动。 4)同样的应用程序似乎对 USB 2.0 U 盘的兼容性更好。 5)如何通过固件识别U盘的2.0和3.0技术? 由于 i.MX RT1050 支持 USB 2.0 高速,我理解 USB 3.0 U 盘应该可以通过其 USB 2.0 接口运行。但是,我想了解一下,当使用 i.MX RT1050 时,USB 3.0 U盘是否存在任何已知的兼容性、电源、USB Host MSC、FATFS(#define FF_DEFINED 86631) 或时序问题。 请问各位能否建议我应该检查或调试哪些方面,特别是关于 USB 主机 MSC、f_write() 故障、USB 重置/断开连接处理、VBUS/电源稳定性以及 USB 2.0 高速协商? 对于 i.MX RT1050 的可靠 USB 3.0 U 盘操作,任何建议、已知问题或示例配置都将不胜感激。 谢谢!
View full article
Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK Hi Team, Could you please help me enable Secure Boot in Falcon Mode? I have successfully achieved Falcon Mode with the help of the meta-imx-fastboot GitHub repository. However, I observed that the meta-imx-fastboot implementation intentionally removes OP-TEE during the Falcon Mode boot flow. Since OP-TEE is also required for my use case, I raised a query on the NXP forum, where @elena_popa provided a solution to retain and enable OP-TEE. I have attached the forum link for reference. Currently, I am facing an issue with enabling Secure Boot, as I could not find any document for Secure Boot with falcon mode for my current kernel version. Environment details: Board: i.MX8M Plus EVK (i.MX8MP EVK) Kernel Version: 6.12.49 Yocto Environment: Yocto-based NXP BSP Boot Mode: Falcon Mode Requirement: Falcon Mode + OP-TEE + Secure Boot Yocto Project Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK Hello, Could you please share which error are you getting? Best regards. Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK Hi @JorgeCas What I did: Extended the imx-boot-signature recipe to also sign our Falcon FIT bundles (kernel-atf-dtb.itb, u-boot-atf.itb) using imx_signer + the same sign.cfg used for the main imx-boot container. Issue: With HAB open (no fuses burned), hab_status shows: u-boot=> hab_status Secure boot disabled HAB Configuration: 0xf0, HAB State: 0x66 --------- HAB Event 1 ----------------- event data: 0xdb 0x00 0x14 0x45 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x1f 0xdd 0xc0 0x00 0x00 0x00 0x20 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 2 ----------------- event data: 0xdb 0x00 0x14 0x45 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x1f 0xad 0xc0 0x00 0x00 0x00 0x04 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 3 ----------------- event data: 0xdb 0x00 0x3c 0x45 0x33 0x18 0xc0 0x00 0xca 0x00 0x34 0x00 0x02 0xc5 0x00 0x00 0x00 0x00 0x0b 0x50 0x40 0x1f 0xad 0xc0 0x00 0x00 0x30 0x20 0x40 0x20 0x00 0x00 0x00 0x12 0x12 0xb8 0x40 0x32 0x12 0xb8 0x00 0x01 0x44 0x68 0x00 0x97 0x00 0x00 0x00 0x00 0xbd 0x00 0x56 0x00 0x00 0x00 0x00 0x09 0x57 0x50 STS = HAB_FAILURE (0x33) RSN = HAB_INV_SIGNATURE (0x18) CTX = HAB_CTX_COMMAND (0xC0) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 4 ----------------- event data: 0xdb 0x00 0x3c 0x45 0x33 0x18 0xc0 0x00 0xca 0x00 0x34 0x00 0x02 0xc5 0x00 0x00 0x00 0x00 0x0b 0x50 0x40 0x1f 0xad 0xc0 0x00 0x00 0x30 0x20 0x40 0x20 0x00 0x00 0x00 0x12 0x12 0xb8 0x40 0x32 0x12 0xb8 0x00 0x01 0x44 0x68 0x00 0x97 0x00 0x00 0x00 0x00 0xbd 0x00 0x56 0x00 0x00 0x00 0x00 0x09 0x57 0x50 STS = HAB_FAILURE (0x33) RSN = HAB_INV_SIGNATURE (0x18) CTX = HAB_CTX_COMMAND (0xC0) ENG = HAB_ENG_ANY (0x00) The failing block addresses/sizes match exactly u-boot-atf.itb's loadables (U-Boot, ATF, OP-TEE). This is deterministic across clean rebuilds. Meanwhile the signed imx-boot SPL+ATF+U-Boot container (signed via the same recipe/tool) authenticates fine. Question: Does signing a Falcon-mode u-boot-atf.itb (multi-loadable FIT: U-Boot + ATF + OP-TEE) need a different CSF structure than what imx_signer's default csf_hab4.cfg produces for the standard imx-boot SD container? Is there a reference for signing Falcon u-boot-atf.itb/kernel-atf-dtb.itb specifically? Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK Hello, I apologize for the delay. As mentioned in repository, the secure Boot support is enabled in lf-6.6.36-2.1.0-secure branch and can be used as reference but, unfortunately, unfortunately, lf-6.12.20-2.0.0-secure Falcon branch explicitly states that Secure Boot is not supported for that BSP and newer. There is no documentation available for porting the secure Falcon implementation from the 6.6 secure branch. The authentication of the imx-boot container suggests a mismatched FIT CSF block map or CSF insertion offset. Best regards. Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK Please help here..!
View full article
Falconモードでセキュアブートを有効にする(カーネルバージョン6.12.49)|| iMX8MP_EVK チームの皆さん、こんにちは。 Falcon ModeでSecure Boot を有効にするのを手伝ってもらえます か? meta-imx-fastboot GitHubリポジトリ の助けを借りて、Falcon Modeの実現に成功しました 。しかし、meta-imx-fastbootの実装では 、Falcon Modeのブートフロー中に 意図的に OP-TEE が削除されていることがわかりました。 OP-TEEも私のユースケースに必要なので、NXPフォーラムで質問をしました。@elena_popa OP-TEEを保持・有効化するソリューションを提供してくれました。参考のためにフォーラム のリンク を添付しました。 現在、Secure Bootを有効にする際に問題に直面しています 現在のカーネルバージョンでファルコンモード付きのセキュアブートに関するドキュメントが見つからなかったためです。 環境詳細: ボード: i.MX8M Plus EVK(i.MX8MP EVK) カーネルバージョン: 6.12.49 Yocto Environment: Yocto拠点のNXP BSP ブートモード:ファルコンモード 要件:ファルコンモード + OP-TEE + セキュアブート Yocto Project Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK こんにちは、 どのエラーが出ているのか教えていただけますか? よろしくお願いいたします。 Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK こんにちは、@JorgeCasさん 私がやったこと: imx-boot-signature レシピを拡張して、Falcon FIT バンドル (kernel-atf-dtb.itb、u-boot-atf.itb)imx_signerと、メインのimx-bootコンテナで使用されているものと同じsign.cfgを使用します。 問題: HABが開いている状態(ヒューズが焼損していない状態)で、hab_statusには以下が表示されます。 u-boot=> hab_status セキュアブートが無効になっています HAB 構成:0xf0、HAB 状態:0x66 --------- HABイベント1 ----------------- イベントデータ: 0xdb 0x00 0x14 0x45 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x1f 0xdd 0xc0 0x00 0x00 0x00 0x20 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) --------- HABイベント2 ----------------- イベントデータ: 0xdb 0x00 0x14 0x45 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x1f 0xad 0xc0 0x00 0x00 0x00 0x04 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) --------- HABイベント3 ----------------- イベントデータ: 0xdb 0x00 0x3c 0x45 0x33 0x18 0xc0 0x00 0xca 0x00 0x34 0x00 0x02 0xc5 0x00 0x00 0x00 0x00 0x0b 0x50 0x40 0x1f 0xad 0xc0 0x00 0x00 0x30 0x20 0x40 0x20 0x00 0x00 0x00 0x12 0x12 0xb8 0x40 0x32 0x12 0xb8 0x00 0x01 0x44 0x68 0x00 0x97 0x00 0x00 0x00 0x00 0xbd 0x00 0x56 0x00 0x00 0x00 0x00 0x09 0x57 0x50 STS = HAB_FAILURE (0x33) RSN = HAB_INV_SIGNATURE (0x18) CTX = HAB_CTX_COMMAND (0xC0) ENG = HAB_ENG_ANY (0x00) --------- HABイベント4----------------- イベントデータ: 0xdb 0x00 0x3c 0x45 0x33 0x18 0xc0 0x00 0xca 0x00 0x34 0x00 0x02 0xc5 0x00 0x00 0x00 0x00 0x0b 0x50 0x40 0x1f 0xad 0xc0 0x00 0x00 0x30 0x20 0x40 0x20 0x00 0x00 0x00 0x12 0x12 0xb8 0x40 0x32 0x12 0xb8 0x00 0x01 0x44 0x68 0x00 0x97 0x00 0x00 0x00 0x00 0xbd 0x00 0x56 0x00 0x00 0x00 0x00 0x09 0x57 0x50 STS = HAB_FAILURE (0x33) RSN = HAB_INV_SIGNATURE (0x18) CTX = HAB_CTX_COMMAND (0xC0) ENG = HAB_ENG_ANY (0x00) 障害が発生したブロックのアドレス/サイズは、u-boot-atf.itb のものと完全に一致します。ロード可能なファイル(U-Boot、ATF、OP-TEE)。これはクリーンな再建でもデターミニスティックです。一方、署名済みのimx-boot SPL+ATF+U-Bootコンテナ(同じレシピ/ツールで署名済み)は正常に認証される。 質問: Falconモードのu-boot-atf.itb(マルチロード可能なFIT:U-Boot + ATF + OP-TEE)に署名する場合、imx_signerのデフォルトのcsf_hab4.cfgが標準のimx-boot SDコンテナ用に生成するものとは異なるCSF構造が必要ですか?Falconのu-boot-atf.itb/kernel-atf-dtb.itbに署名するための具体的なリファレンスはありますか? Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK どうか助けてください! Re: Enable Secure Boot in Falcon Mode (6.12.49 - Kernel Version) || iMX8MP_EVK こんにちは、 遅れて申し訳ありません。 リポジトリで述べられているように、安全なブートサポートはlf-6.6.36-2.1.0-secureで有効化されていますBranch と は参照として使用できますが、残念ながら lf-6.12.20-2.0.0-secure(安全)は使えますFalconブランチでは、そのBSPおよびそれ以降のバージョンではセキュアブートがサポートされていないことが明記されています。 6.6のセキュアブランチから安全なFalcon実装を移植するためのドキュメントは存在しません。imx-bootコンテナの認証は、FIT CSFブロックマップまたはCSF挿入オフセットの不一致を示唆しています。 よろしくお願いいたします。
View full article
S32K344MINI-EVB: FlexCAN_IP_Example_S32K344 and Can_Example_S32K344 Configuration Errors Hello Community, I am currently working with the S32K344MINI-EVB (FRDM Automotive Evaluation Board) and would like to gain hands-on experience with basic peripheral drivers before starting development on a custom project based on the NXP S32K3 family. Development Environment S32 Design Studio (S32DS) 3.5.8 SW32K3_S32M27x_RTD_R21-11_4.0.0_P19_D2403 EB tresos 29 Current Status I successfully imported and ran the following example projects: SIUL2_DIO_IP_Example_S32K344 Dio_Example_S32K344 For both AUTOSAR and Non-AUTOSAR configurations, the projects built successfully and produced the expected output on the S32K344MINI-EVB. Issue I then imported the following CAN example projects: FlexCAN_IP_Example_S32K344 Can_Example_S32K344 While configuring and building these projects, I encountered the errors shown in the attached screenshot. Request Could anyone please advise: Are any board-specific modifications required for the S32K344MINI-EVB? Are there additional FlexCAN, clock, pin, or EB tresos configurations needed? Is there a guide for running these CAN examples on the MINI-EVB? The attached screenshot shows the errors encountered during configuration/build. Thank you for your support. Regards, Veer Re: S32K344MINI-EVB: FlexCAN_IP_Example_S32K344 and Can_Example_S32K344 Configuration Errors Hello @Veereshh, Pinout is fairly similar between S32K344 EVB and FRDM-A-S32K344 (formerly S32K344MINI).  1. No 2. Yes. Both FlexCAN_IP_Example_S32K344 & Can_Example_S32K344 projects only configure FlexCAN in "loopback" mode, meaning there are no pins configured, and FlexCAN_0 is listening to its own messages.  Inside the project's MEX, you must: Change FlexCAN 'Loopback' to 'Normal/User mode' Add Siul2_Port (or Port in MCAL), and configure both PTA6 & PTA7 (CAN_H CAN_L in FRDM-A-S32K344). Add port initialization in your project. FRDM-A-S32K344 also uses TJA1043 CAN transceiver, which must set CAN_EN & CAN_STB to HIGH in order to set the transceiver in normal operation. These are routed to PTC21 & PTC20, as stated in the FRDM's user manual: These must be set to HIGH inside your project as well. You can use the following examples as reference: [RTD600 MCAL & IP] S32K3X4EVB-T172 FlexCAN Example Interrupt/Polling. Keep in mind they are based on RTD 6.0.0, not RTD 4.0.0. After setting this, you can use J15.1 CANH and J15.2 CANL connected to another CAN node (PCAN USB analyzer, another MCU, etc.) to test CAN communication. In the examples I've shared, PCAN-USB analyzer was used. Best regards, Julián
View full article
TUSB321AI - i.MX8M プラスコントローラ こんにちは、チームのみなさん。 USB1とIDピンが必要なため、TIのTUSB321AI CCコントローラーをUSB1で使う予定です。 デフォルトではCCコントローラーを初期・中断なしの点滅としてこれだけ良い状態に設定しています DRP.Is? Re: TUSB321AI - i.MX8M plus Controller こんにちは、 @ramkrishさん お元気でお過ごしのことと思います。 i.MX8M Plus ROM/UUUシリアルダウンロードの場合、プロセッサはUSBペリフェラルとして動作し、ROMコードはUSB IDピンを必要とせず、チェックも必要としません。 SO、デターミニスティックで途切れのない初期点滅には最適な選択肢ではありません。 よろしくお願いいたします。 サラス。
View full article
T1042 DDR4 初始化失败 我有一个使用64位接口连接DDR4内存的T1042设计。我们已经发现接口最高字节中存在半字节间位交换错误的问题,我们知道这个问题无法通过软件设置进行补偿。我们将在PWB版本中实施修复。然而,由于其余位均正确,且交换操作符合参考手册的允许范围,我们希望改为以 32 位模式运行,以便我们仍能继续启动软件和完成设计的其余部分。我尝试使用QCVS DDR验证工具,但是内存无法初始化。我已经输入了设备的参数,并确保按照我的设计设置了DQ[0:31]的DQ映射值,但是ERR_DETECT寄存器中的ACE位仍然是1。处理器通过SPI接口接收RCW信号,DDR频率设置为800MHz。是否可以使用CodeWarrior/QCVS来验证它是否接收到了正确的RCW值?还有哪些其他设置可能导致32位模式工作无法正常工作?任何支持我都将不胜感激。谢谢。 QorIQ T1 设备 Re: T1042 DDR4 Initialization Failure 是否可以使用 CodeWarrior/QCVS 来验证它是否接收到了正确的 RCW 值? [A] 是的,这是可能的,您可以连接 CCS,并读取DCFG_CCSR_RCWSR1-DCFG_CCSR_RCWSR16 与 SPI 闪存中的 RCW 进行比较。 还有哪些其他设置可能导致 32 位模式工作不正常? [A]它是独立DDR4吗?一般规则请参考QCVS_DDR_User_Guide 。 硬件设计请参考…… AN5097,DDR4 同步动态随机存取存储器(SDRAM) 内存接口的硬件和布局设计考虑因素 谢谢! Re: T1042 DDR4 Initialization Failure 你好,六月, 谢谢回复。我使用 CCS 读取了 RCW 状态寄存器,并确认 RCW 已按预期编程。 我使用的是独立DDR4内存,并且已经仔细阅读了用户指南和布局注意事项。 我已经确认我们有一个 650MHz 的时钟,可以以 1300MT/s 的速率运行,以满足勘误表 A-007864 中关于使用 32 位接口的要求。一位同事建议检查一下片选信号是否在切换。我发现,一旦QCVS工具开始向处理器发送配置信息,CS0信号就会被保持在足够低的水平。编程完成后,当尝试运行验证程序时,CS0信号不再完全钳位。我独立使用JTAG边界扫描工具确认信号连接正常,并且T1042 I/O能够将网络驱动到足够低的电平,以满足DDR4内存器件的VIL要求。我还确认了网络布线良好,信号完整性正常,并且没有与其他任何东西短路。似乎是内存控制器配置存在问题,导致片选信号无法正常工作。还有其他想法吗?谢谢。 Re: T1042 DDR4 Initialization Failure 没错,我指的是 D1_MCS0_B。 当我运行命令时 (bin)% ccs::reset_to_debug 我收到一条消息,提示“找不到库”。 Re: T1042 DDR4 Initialization Failure 请问您描述中的 CS0 是否指的是 D1_MCS0_B? 请在您的 ccs 系统中运行该命令并更新完整的 ccs 日志。 (bin)% ccs::reset_to_debug 谢谢! Re: T1042 DDR4 Initialization Failure 内存控制器现在设置为以 650MHz 或 1300MT/s 的频率运行。结果相同。我们尝试将DDR4内存设置为32位模式,因为64位接口的第8字节出现了意外的位交换(半字节之间的错误交换)。该设计原本计划采用 64 位 + ECC 编码,但目前我们尝试暂时采用 32 位 + ECC 编码作为替代方案。这意味着我们目前连接了 5 个 16 位芯片,但希望只使用其中 3 个芯片进行操作。 我尝试了多种设置组合,但QCVS工具的行为似乎没有任何改变。奇怪的是,我也尝试过使用GreenHills模拟器,其启动脚本中的值与QCVS类似,结果能够顺利通过DDR_SDRAM_CFG_2[D_INIT]清除的等待循环,这意味着初始化已经完成。然后,它在初始读写验证时失败,返回值全部为0x00,这很合理,因为它使用了次优的写入均衡值。我不明白为什么QCVS工具的行为会有所不同。 Re: T1042 DDR4 Initialization Failure 读取 RCW 状态寄存器后,请输入命令。 请将完整的 ccs 日志分享给我,而不是命令“ccs::reset_to_debug”的执行结果,例如: “我收到一条消息,提示‘找不到库’。” 完整日志从您使用 ccs 的第一个命令开始。 谢谢! Re: T1042 DDR4 Initialization Failure 附件是一个 .txt 文件。采用RCW输出。我运行了您最后指定的命令“ccs::reset_to_debug”,它没有显示“找不到库”消息,但也没有显示任何其他信息。 我还对DDR配置寄存器进行了类似的捕获,并已附上。我没发现任何问题。事实上,这些值用GreenHills探针测试时似乎能够通过,D_INIT也会被清除;但是,当我用相同的值配合QCVS工具时,D_INIT却不会被清除。我不太清楚使用GH探针和CWTAP有什么区别。任何建议我都非常感激。 Re: T1042 DDR4 Initialization Failure ACE 错误是自动校准错误,当内存控制器在其训练序列中检测到错误时,就会设置该错误。如果将时钟频率从 800MHz 降低,训练结果会如何? 同时,对于 64 位或 32 位总线宽度,DDR4 选择使用哪一种?计划将多少块 DDR4 连接到 T1042? Re: T1042 DDR4 Initialization Failure “ccs::reset_to_debug” 工作正常。 请确认是否需要 errata_A009942 ,如果需要,请解压缩附件中的 hotfix Optimization.zip 文件,以覆盖 CodeWarrior PA 安装文件夹中现有的 Optimization 文件夹。解压缩后,C:\Freescale\CW_PA_v10.5.1\eclipse\Optimization\resources\QorIQ\DDR\templates\init\errata_A009942.py 文件将存在。 请确认以下一般指南: 创建一个新的 QCVS 项目 - 选择“自动配置”和“动态随机存取存储器(DRAM)” 动态随机存取存储器(DRAM) 速度等级 = 最大速度(例如,最大 3200 MT/s,请参阅数据手册)。 - “输出数据速率”选择“xxx MT/s”(当前工作速度,例如1300MT /s,此数据速率必须与 RCW 映像中配置的动态随机存取存储器(DRAM)速度相匹配) - “排名/芯片选择” 选择“x”                   (单 CS 或双 CS) - "tCL" 选择 "xx"(根据 动态随机存取存储器(DRAM) 数据手册中的速度分级表)   - "每个设备的动态随机存取存储器(DRAM) 配置" 选择“xx”    (参见 动态随机存取存储器(DRAM) 数据手册) - 填充正确的 CLK 到 QDS 偏移量(通过 EDA 工具测量 CLK 和 DQS 信号的长度,CLK 长度 - DQS 长度) CLK 时长减去 DQS 时长,例如: CLK 到 DRAM0 的长度 = 100 毫米 CLK 到 DRAM1 的长度 = 101 毫米 DQS[0] 长度 = 75 毫米 DQS[1] 长度 = 110 毫米 CLK 到 DQS[0] 的偏移量 = 100 毫米 - 75 毫米 = 25 毫米 CLK 到 DQS[1] 的偏移量 = 101 毫米 - 110 毫米 = -9 毫米 - CLK 走线长度必须等于或长于 DQS 走线长度,且相差不超过 10 英寸。 - 如果 MCK 走线长度短于 DQS 走线长度,则必须在 2.0 英寸以内。 DQ映射 - 控制器引脚: 如果您的实际电路板上使用了 DQ 位交换,则用户必须在 QCVS 中进行配置,以匹配实际的 PCB 布局。 TIMING_CFG_1_and_3: - tCL/tRCD/rRP/tRAS 此值参考 动态随机存取存储器(DRAM) 数据手册,以匹配当前工作速度速率。    - tWR(写入恢复时间,最后数据到预充电的最小间隔),此值参考 动态随机存取存储器(DRAM) 数据手册。        - tRRD(激活间隔)此值参考 动态随机存取存储器(DRAM) 数据手册。     TIMING_CFG_2: - tFAW(四激活窗口),此值参考 动态随机存取存储器(DRAM) 数据手册。 用户应确保板特定配置和动态随机存取存储器 (DRAM) 特定配置与实际硬件匹配。 对于其他大多数选项,请使用默认的 QCVS 预设值。 谢谢! Re: T1042 DDR4 Initialization Failure 我目前正在与采购部门合作,办理保密协议,以便获取完整的勘误表文件。但是,我使用的是元器件 T1042NXE7MQB,Google/NXP 论坛搜索似乎表明勘误表 A009942 适用。 请提供您提到的“Optimization.zip”文件。我没看到它被附加在任何地方。 Re: T1042 DDR4 Initialization Failure 你好,六月, 感谢您提供文件并给予持续支持。我按照您的指南设置了QCVS DDRv工具,今天也尝试了勘误表#A009942中的解决方法,但似乎并没有什么效果。我查看了脚本本身,发现它似乎只针对667MHz和800MHz这两个特定频率应用了这种变通方案。由于勘误表 #007864 指出,当内存宽度为 32 位或更低时,如果以 800MHz 的频率运行,DDR 接口可能会出现问题,因此我目前将内存运行频率设为 650MHz。650MHz频率下是否需要设置某个调试寄存器值? 该设计采用单个 100MHz 时钟源,因此我可选的 DDR 内存频率似乎只有 650MHz、700MHz、750MHz 和 800MHz(DDR4)。对于 32 位模式,我是否应该使用 650MHz 以外的其他频率? 我仍然对DQ映射值持怀疑态度。几个月前,您在另一篇帖子中帮我验证了这些值: T1042 DDR4 DQ MAP 寄存器设置 这是该设计与我们网站上另一个正在运行的T1042 DDR4实例之间的一个显著区别。他们使用了64位架构,只在最高有效字节上进行了少量位交换。我们的64位接口的最高有效位(MSB)存在已知的错误位交换,因此我们尝试使用32位模式作为临时解决方案。我们的交换操作比工作设计要多得多,包括字节通道内的完整半字节交换,但是接口的32位最低有效位似乎遵循T1042控制器允许的规则。已知不同的DQ映射交换组合均可正常工作吗?您能再看一下我们用来验证的数值吗?为方便起见,已包含寄存器值和原理图截图。DDR4 设备的另一端是直接的 1:1 映射,因此为了清晰起见,交换只出现在 T1042 端。 再次感谢大家一直以来的支持。 Re: T1042 DDR4 Initialization Failure 抱歉,我漏看了附件。 Re: T1042 DDR4 Initialization Failure @dbevans42 脚本中应应用 650 MHz 的 A-009942,您可以添加一行与 667 相同的代码来包含它。 请提供DDR器件的部件原理图,以便确认DQ映射关系。 如果 DQ 映射与 MAP 相交,我们有一种调试模式,这是一种临时解决方案,直到您修复电路板为止。 将数据速率设置为 1200MT/s 设置 DDR_SDRAM_CFG_2[DDR_SLOW] = 1 将偏移量 0x8F04[27] 处的 DDR 寄存器设置为 1,或者将值 0x10 写入偏移量 0x8F04。 清除所有DDR_DQ_MAPn寄存器 谢谢! Re: T1042 DDR4 Initialization Failure 不确定DDR4是否支持64位总线宽度。您指的是LPDDR4吗? Re: T1042 DDR4 Initialization Failure 它是DDR4内存。这是一个分立式设计,不是 DIMM,所以我们有五个 1G x 16 位设备(64 位 + 8 位 ECC)。 Re: T1042 DDR4 Initialization Failure 我在9月24日星期四发给你的最后一封邮件中附上了DQ[0:31]和ECC的相关原理图截图。我再次附上整个 64 位接口的快照,并突出显示了错误的位交换。 感谢您提供的其他解决方法。 问题: 1)如果我在A009942脚本中添加 650MHz,应该写入什么值?它应该和 667MHz 一样吗? 2) 您列出的新的1200MT/s变通方案是否旨在使 64 位模式即使在交换错误的情况下也能工作,还是我们需要继续尝试 32 位模式? 3)是否可以使用DDRv工具来实现此解决方法?否则,我将在我们的 GreenHills 探测启动脚本中尝试一下,并将结果汇报给我们。 Re: T1042 DDR4 Initialization Failure 你好,六月, 我已将您列出的解决方法应用到我们的 GreenHills 探针启动脚本中,目前看来 DDR4 接口已正常工作。我们可以将代码加载到DDR4内存中并开始执行,我可以使用GH探针内存视图看到DDR4内存中已初始化的数据值。剧本已附上,供审阅。 问题: 1)能否提供更多关于调试模式的详细信息? 2)调试模式的解决方法是否只能在 1200MT/s 的速度下运行,还是可以运行得更快? 3)DQ映射寄存器的功能是否存在缺陷?我需要确保 DQ 映射寄存器确实像宣传的那样工作,并且如果我在新版本中修复了错误的 DQ57 和 DQ63 互换,它仍然可以在没有调试模式的情况下工作。 4)32位模式是否存在漏洞/问题?32 位模式在没有调试变通方法的情况下无法工作,这说不通,因为我们遵循了这些位的映射规则。 5) 是否有办法运行变通调试模式并使用 QCVS DDRv 工具来获取正确的写入电平值? Re: T1042 DDR4 Initialization Failure 你好,六月, 我认为你已经找到了问题的根源。我们有一些几年前的设计,使用了错误的MPU符号,搭配运行速度为1000MT/s的DDR3L内存,但从未出现过任何问题。我们从未想到符号可能会因此而出错。我们正在审查映射关系,更正符号,并查明此问题为何长期存在。我们应该能够在即将进行的新一届董事会会议上解决这个问题。非常感谢大家一直以来的支持。现在我们应该可以继续推进了。 此致, 道格 Re: T1042 DDR4 Initialization Failure 嗨@dbevans42 这是一个仅用于调试的变通方法,它允许存在错误位交换的 DDR4 板以降低的数据速率运行,从而有助于确认是否存在其他板级问题。但是,根据 AN5097,板设计最终必须进行修正。 此模式下支持的最大数据速率为 1200 MT/s。 以下是内部团队的解释: DEBUG_2[27:FRC_SE] 表示慢速使能被强制拉低,这可以用来让 DDR4 通过在写入内存期间减慢接口速度来训练 CAS 进行前导码和 RX 位校正。通常情况下,DDR4 会通过向多用途寄存器发出 MRS 命令而不是写入操作来进行训练。如果设置了 FRC_SE 位,则不支持 MPRR 和 MPRW 命令。此外,这也意味着如果设置了 FRC_SE,则不支持 VRef 训练(对于内部或 动态随机存取存储器(DRAM) VRef 训练)。   QCVS 验证不支持此变通方法;它仅对 DDR 初始化软件调试有用,并且必须在启用内存之前将所需的设置纳入 DDR 初始化中。   我已查看您提供的原理图截图,并注意到您的 MPU 库中显示的 T1042 引脚编号与数据手册中的引脚编号不符。 请确认是否使用了正确的MPU库?此外,请提供 T1042 和 DDR4 设备 的完整原理图符号(库定义)。您可能还需要仔细检查一下原理图中的 T1042 引脚编号与数据手册中指定的引脚编号有何不同。   谢谢! Re: T1042 DDR4 Initialization Failure 要使初始化正常工作,最低时钟频率是多少?或者初始化根本无法进行。您是否已根据硬件指南检查过原理图和布局?如果您能提供DDR4内存的部件号,将有助于我们更好地进行审核。 Re: T1042 DDR4 Initialization Failure 很高兴我们能找到根本原因。 如果可能的话,在下一次电路板修改之前,调整当前设计中的 DQ 映射也可能是有益的。 如果你能在结果出来后分享一下,那就太好了。 如有任何疑问,请随时告诉我。 我将外出超过一周,因此我的回复可能会延迟。如有任何更新,我会及时通知您。 谢谢。
View full article
LS1046A 定制板:从 eMMC、SD 和 QSPI 冷启动失败;CodeWarrior RCW 应用启用 U-Boot 你好, 我们正在开发一款基于 LS1046ARDB 设计的定制 LS1046A 板。自主冷启动失败,但 CodeWarrior/QCVS 干预允许处理器到达 BL2、BL31 和 U-Boot 控制台。我们发现 eMMC、SD 卡和 QSPI 或非 存在冷启动失败的情况,因此我们希望得到有关隔离常见 RESET/时钟/PBL 路径的指导。 平台及与LS1046ARDB的区别 项目自定义板配置 处理器 LS1046AE Rev. 1.0;U-Boot 报告 SVR 0x87070010 电源/RESET 控制 无CPLD。STM32 BMC、PCA9539 I/O 扩展器、电平转换器和分立 RESET 电路实现了时序控制和 SD/eMMC 选择。 DDR 4 GiB,单列,64 位非 ECC DDR4,已初始化 1600吨/秒。这与我们 RDB 对比中使用的 8 GiB ECC 配置不同。DDR 初始化在辅助启动后成功;完整的内存裕度鉴定仍在进行中。 时钟 100 MHz 主参考;工作辅助配置采用单端 SYSCLK 选择。DDR 使用差分参考路径。U-Boot 报告 CPU 频率为 1800 MHz,平台频率为 600 MHz,FMan 频率为 700 MHz。 eMMC 宏碁 MX52LM08A11XVI,与 RDB 设备不同。U-Boot 识别制造商 0xc2,名称 M08A11,MMC 5.1,用户容量约为 7.3 GiB。 SD/eMMC接口 BMC 控制选择和 EVDD:eMMC 为 1.8 V,SD 为 3.3 V。 QSPI 或非 S25FS512S,每个设备 64 MiB。该电路板上的 或非 检测成功。 其他外围设备 自定义以太网/PHY路由和SerDes配置;未使用PCIe设备。 软件 基于 TF-A v2.12.0 的 A1 特定板/设备树更改 lf-6.12.49-2.2.0,U-Boot 2025.04。U-Boot 启动时禁用监视程序。 在本次调查中,复位网络也进行了重新设计:隔离了竞争的处理器-POR 驱动程序分支,断开了直接的 BMC 到 TRST 驱动程序,并安装了硬件 POR/TRST 耦合路径。BMC 的 HRESET 传感功能保持连接。 最新的原生冷启动观察 我们发现并纠正了 BMC 序列中一个意外的早期 SoC RESET。在随后的示波器捕获中,我们从一个完全关机、没有任何 CodeWarrior 或 QCVS 操作的启动状态开始: - 当 BMC 释放处理器复位时,PORESET_B 上升。 - eMMC CLK 和 CMD 活动在该边沿之后开始。 - 没有正常的 BL2/U-Boot 控制台输出。早期的一些尝试只产生了乱码 UART 字符。 - 标记为 HRESET_B 的轨迹保持高电平,大约 1.8 V;在捕获的 eMMC 活动之前或期间,我们没有观察到低电平断言。BMC HRESET 输入端也反复读取高电平。 CodeWarrior/QCVS行为 在冷启动停滞期间,CodeWarrior Inspect 可以报告在 JTAG 链上找不到“CortexA72#0”,并建议检查 RCW 或启用 RCW 覆盖。 但是,启用 RCW 应用后点击调试,或者通过 QCVS 应用 RCW,就可以启动。有时 UART 连接到 U-Boot 时,Debug 会报告“核心未处于调试模式”。在其他尝试中,目标程序会停止运行,而 `continue` 命令允许启动完成。 我们将初始化脚本简化为: from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13:0x00004504}) target.rcw.apply() 物理绑带设置为 SD/eMMC 源“0x40”。提供的字 13 与 eMMC 中已存储的值相同。这个简化的脚本还启用了辅助启动功能。使用相同的单词“set_source(0x9E)”进行的单独测试也成功了。 在这个精简的脚本中,没有显式的 DDR 初始化、BRR、PC、SCTLR 或恢复操作。我们认识到“rcw.apply()”和调试器启动框架仍然可以执行内部重置/运行控制操作;这不是被动附加。 经过协助,所有 16 个 RCWSR 单词都与预期的媒体 RCW 相符。BL2 存在于 OCRAM 中,并且检测启动链完成了 DDR 初始化、eMMC/FIP 加载、BL31 和 U-Boot。干预后“RSTRQPBLSR”读数为零,但我们并不认为这些读数捕获了原始的冷失效状态。 已进行的测试 测试观察 从 eMMC 启动 无法自主启动控制台;需要通过调试器辅助恢复才能到达 U-Boot。 从 SD 卡启动本机模式 尽管 BMC 检测到/选择了 SD 卡,但仍然出现类似的冷启动失败;可以进行辅助启动。 从 QSPI NOR 接口启动 最新测试也显示冷启动失败。我们尚未确定这三种媒体都止步于同一内部阶段。 独立组网 (SA) 硬编码源带 0x9E 和 0x9F 后续测试未能获得预期的独立组网 (SA) RESET 进程。我们明白,仅靠硬编码的 RCW 并不能构成完整的 U-Boot 启动映像。 启用安全 RCW 的库存 RDB 初始化 允许恢复,但也会修改 DDR、CPU 状态和外围设备,因此这不是一个孤立的测试。 以上是最简应用脚本 即使第 13 个字等于存储的值,也可以使用源请求进行恢复。 0x9E 和 0x40。 QCVS RCW 测试/回读 测试通过,干预后读取结果与预期配置相符。原生获取功能仍未经验证。 移除了三个继承的 PCIe PBI 访问 原生冷启动性能没有改进。 禁用 SerDes2 后,两个 SerDes 模块都会被阻塞。 没有改善。辅助 U-Boot 日志证实了修改后的 RCW 字样。 DDR诊断 在协助下,SPD 读取和 4 GiB 初始化以 1600 MT/s 的速度成功;这不是完整的裕量测试。 新增 BL2/BL31/U-Boot 里程碑日志记录 辅助启动完成所有阶段。原生故障不会给出第一个 BL2 里程碑;这些日志无法追踪硬件 PBL 本身。 eMMC RCW 和图像放置 启用 SerDes 的 eMMC 基线为: 0c100012 0e000000 00000000 00000000 13335a06 40400012 60040000 c1000000 00000000 00000000 00000000 0001c83e 00004504 24001002 00000096 00000001 在同时禁用SerDes的实验中,只有以下几个词发生了变化: RCW05 = 00000000 RCW06 = 00f00012 在 eMMC 用户区,扇区大小为 512 字节: 组件起始 LBA 字节偏移量 RCW + PBI + BL2 容器 (bl2_emmc.pbl) 0x8 0x1000 包含 BL31 和 U-Boot 的 FIP 0x800 0x100000 FMan 微码 0x4800 0x900000 读取写入的 PBL/BL2 和 FIP 区域,发现它们的 安全散列算法(SHA)-256 值与这些测试中传输的文件相匹配。PBI 流已解码并进行了 CRC 校验。它设置 OCRAM 启动位置,执行继承的 NXP 互连/USB 准备和 PBL 同步操作,并将 BL2 复制到 OCRAM 中。移除 PCIe 寄存器访问并没有解决卡顿问题。DDR 初始化稍后由 BL2 执行。 我们还读取了 eMMC `EXT_CSD[162] = 0x00` 和 `EXT_CSD[179] = 0x00`;我们没有对这些设置进行不可逆转的更改。 请求指导 1. HRESET 时序:相对于 PORESET_B、有效参考时钟和初始 eMMC 事务,LS1046A 应该在哪个点将 HRESET_B 置低?如果处理器端探测确认没有低电平有效,我们应该首先检查哪个 RESET、时钟、电源域、跳线或测试模式条件? 2. 捕获前干预:是否有受支持的 CodeWarrior/CCS 系统访问端口程序,可以在 A72 内核被发现之前读取停滞的 PBL/DCFG/eSDHC 状态,而无需 RESET 或 RCW 覆盖?请提供所需的访问上下文、命令和最有用的状态/错误寄存器。 3. RCW 应用语义:`rcw.apply()` 究竟执行什么操作?如何处理源“0x40”或“0x9E”以及仅提供一个单词的情况?执行哪些 RESET/调试控制?如何获得未指定的 RCW 字?我们想要确定当提供的单词不会改变生成的 RCW 时,允许恢复的操作。 4. RCW/PBI 审查:上述 eMMC RCW 和位置是否揭示了任何问题?对于这种自定义配置,是否存在额外的强制性 PBI 操作或相关的芯片勘误? 5. 下一个决定性测量:鉴于 eMMC、SD 和 QSPI 的症状,哪种测量或非侵入式寄存器捕获能够最好地区分 RESET/时钟/跳线问题与启动介质初始化、RCW 获取或后续 PBI 执行? Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H 波形中未钳位 HRESET_B,这不符合预期。 请参阅AN12081中的第 5.1 节(使用 SD 卡启动过程)。虽然该文档描述了 SPL/U-Boot 流程,但当前的 BL2/BL31 流程遵循非常相似的硬件启动顺序。请将您的波形与图 3 进行比较。 根据目前的观察结果,怀疑是与 RESET 相关部件有关的硬件问题。将您的 RESET 设计与 FRWY-LS1046A 进行比较也可能有所帮助,因为 FRWY-LS1046A 不使用 CPLD。 此外,请检查 ASLEEP 信号,因为它是启动过程中的一个重要信号。 谢谢。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 测试期间的序列捕获   Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H 请参阅LS1046A 参考手册,4.4.1 节“上电复位顺序” 步骤 5 和步骤 15 之间可能存在问题。 由于无法明确识别 HRESET_B 的起始点,因此还应检查步骤 1 至 4。 谢谢! Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo ASLEEP 始终处于高电平,因为连接的 LED 始终处于开启状态。 我们取了第二块板,没有进行任何硬件改造,尝试从 SD 卡启动,RCW 相同,只是电压选择有所改变,结果发现 HRESET_B 在 PORESET_B 从低电平变为高电平之前就已经变为低电平。 我们预期的 HRESET_B 尖峰是由于 PMIC PG 和 SoC 开始将 HRESET_B 拉低后,1.8v 上拉所致。 目前我们正在探测 emmc/SD CMD、DATA 和 CLK,以查看是否有任何事务正在发生。请问SoC释放HRESET_B需要满足哪些条件? 出于好奇,我们将同一张 SD 卡插入 ls1046a_rdb 板,并尝试开机,结果成功进入了 uboot 控制台。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 你好, 感谢您指出 LS1046A 参考手册第 4.4.1 节。我们正在检查步骤 1-4 以及步骤 5-15,并将我们的测量结果与 AN12081 第 5.1 节/图 3-4 进行比较。 以下是我们 9 月 29 日测试的最新结果,以及 9 月 30 日对 QCVS 生成的 SD 候选方案的后续跟进。我们将附上 PORESET_B、HRESET_B、SD CMD 和 RESET_REQ_B 的示波器捕获以供查看。   更新的HRESET观测 在第二块 A1 定制板上,最初测试时没有对之前的板进行 RESET 修改,我们可以观察到 HRESET_B 在 PORESET_B 释放之前变为低电平。这与之前的捕获结果不同,之前的捕获结果中 HRESET_B 一直处于高电平状态。我们不认为之前的波形能够代表这块电路板的波形。 针对当前的差分时钟 SD 测试: 在独立组网 \(SA\) 冷启动期间,HRESET_B 在 PORESET_B 上升之前为低电平,之后保持低电平。BL2控制台未显示任何输出。 应用 CodeWarrior Debug/RCW 后,HRESET_B 变为高电平。 调试器最初在 PC=0 处停止。点击“继续”后,BL2 → BL31 → U-Boot 将开始运行。 请帮助我们根据预期序列解读附件中的捕获结果,包括 SD CMD 和 RESET_REQ_B 活动。 下图所示——我们没有插入 SD 卡——因此我们可以看到 RESET 请求变为低电平。 (注:部分图片中误将 emmc 命令写成了 SD 命令) 插入 SD 卡后捕获 - 切换至 eMMC/SD 卡模式。 Captured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card inserted使用 poreset_b、hreset_b、reset_request 和 vcc1v8 捕获,并插入 SD 卡。 Captured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmd使用 poreset_b、hreset_b、reset_request、sd_cmd 捕获 Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)使用 poreset_b、hreset_b、sd_cmd、trst_b(jtag 重置)捕获 Captured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stall冷启动停滞后进入调试模式时捕获 新的 SD RCW 测试 我们保持外部 SD/MMC 启动选项 (cfg_rcw_src=0x40),并生成了一个新的 SD 映像,其中两个 SerDes 块均已禁用。我们选择了 100 MHz 差分主参考频率,并采用了硬编码中的有效时钟比率。 0x9F 例如,同时保留 A1 引脚复用和 SD 启动/PBI 配置。 这是 非硬编码启动:仍需从 SD 卡获取完整的 RCW 和 PBI。我们并没有绕过媒体采集或PLL锁定。 设置值 主要参考 DIFF_SYSCLK/B,标称 100 MHz; cfg_eng_use0=0 A1 开关位置 SW5 极点 2 开启(差分时钟选择);SW8 极点 1–8 0010 0000 (1=开启)(启动源开关带) SYS_PLL_RAT 4 → 平台 400 MHz CGA_PLL1_RAT 13 → CPU 1300 MHz CGA_PLL2_RAT 10 → PLL2 1000 MHz;FMan 500 MHz MEM_PLL_RAT 16 → DDR 1600 MT/s DDR_REFCLK_SEL / DDR_FDBK_MULT 1/2;差分DDR参考 SRDS_PRTCL_S1 / SRDS_PRTCL_S2 0 / 0 SRDS_PLL_PD_S1 / SRDS_PLL_PD_S2 3/3;每个SerDes模块中的两个PLL均已关闭 PBI_SRC / BOOT_HO 6/0 EVDD_VSEL 2、SD 3.3V 配置 DIMM 4 GiB,单列,64 位非 ECC DDR4;训练种子未经过裕量限定   经调试器干预后,此测试镜像中使用的完整 RCW 为: RCW01–04: 0810000d 0a000000 00000000 00000000 RCW05–08: 00000000 00f00012 60040000 c1000000 RCW09–12: 00000000 00000000 00000000 0001c83e RCW13–16: 00004504 24001102 00000096 00000001 结果: 本地冷启动停滞仍然存在。在调试器的帮助下,U-Boot 报告 CPU 频率为 1300 MHz,平台频率为 400 MHz,DDR 内存频率为 1600 MT/s,FMan 内存频率为 500 MHz,与预期比例相符。SD初始化和FIP加载成功。  精确的调试器干预和结果状态 初始化回调函数仅调用以下 RCW API 操作: from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13: 0x00004504}) target.rcw.apply() 第 13 个单词与 SD 卡上已存储的值相同。该脚本没有显式的 DDR 初始化、BRR/PC 写入或 Continue 命令。我们认识到 申请() 调试器启动时可能会在内部改变复位/调试状态。 在“调试”之后,“继续”之前,我们读到: PC = 00000000 PORSR1 @ 01ee0000 = 205b7fff RSTRQPBLSR @ 01ee00b4 = 00000000 RSTRQMR1 @ 01ee00c0 = 00004000 RSTRQSR1 @ 01ee00c8 = 00000000 BRR @ 01ee00e4 = 00000000 SCFG_SCRATCHRW0/1 = 00000000 / 10000000 DDR SDRAM_CFG = 07000000 (MEM_EN clear) 所有 16 个 RCWSR 字都与测试的 SD 图像匹配。OCRAM 的前 64 个字节 0x10000000 与其 BL2 入口代码匹配。因此,PC=0 时 UART 输出的缺失并不意味着硬件 PBL 没有取得进展。仅使用 Continue 就足以运行 BL2/BL31/U-Boot;本次运行未使用手动 BRR 写入。 这些都是 干预后读数,未保留原生停滞状态。我们并没有使用它们的零误差值来得出结论,即最初的冷启动尝试没有 PBL/时钟/RESET 错误。 图像放置和精确的 PBI 设置 我们的 SD 和 eMMC 存储卡都使用 512 字节扇区: RCW/PBI/BL2 .pbl:LBA 0x8,字节偏移量 0x1000。 fip_uboot.bin 包含 BL31 和 U-Boot:LBA 0x800,字节偏移量 0x100000。 对于 eMMC 而言,这些是用户区域的偏移量,而不是 boot0/boot1 的偏移量。已在这些偏移量处逐字节检查了 SD 整个磁盘映像;早期的 eMMC 写入也通过了回读 安全散列算法 (SHA)-256 验证。 下面就是测试的 SD PBL 中的确切设置流程。每一行都是 按流顺序序列化的 PBI 命令字及其数据字;这些不是调试器内存写入命令: 09570600 00000000 09570604 10000000 09570178 0000e010 09180000 00000008 09570418 0000009e 0957041c 0000009e 09570420 0000009e 09570158 00001000 09610000 00000000 096100c0 000fffff 09570604 10000000 09570158 00001000 096100c0 000fffff 这包括暂存启动指针、继承互连/USB 设置、刷新和同步操作。重复操作将被保留。没有 PCIe 设置写入操作。然后,该流包含 844 次 ACS64 传输到 OCRAM:53,953 字节的 BL2 加上 63 个零填充字节。测试的PBL以……结束 08610040 6d8bdebf (END/CRC),其总大小为 57,576 字节。 今天我们也独立地使用QCVS生成了PBL。解析和 CRC 验证发现其 PBI 操作和 BL2 有效载荷与被测图像相同。我们特意将 RCW12 从 0001c83e 到 0001a8fe (睡眠=0, RTC=1, IRQ_BASE=63);只有该字和 CRC 不同。其 SHA-256 值为: 2d3389fce4ead088957caf6251022b5526be8565e812a8aab8fce21bd8923277 9月30日更新: 我们测试了较新的 QCVS 生成的 SD 候选版本,再次遇到了原生冷启动停滞的问题。因此,用实际的 QCVS 导出文件替换 PBL 文件并没有解决该问题。其 PBI 和 BL2 有效载荷与前一个映像相同,因此这并不能排除共享配置问题,也不能证明原因是硬件问题。 上述详细的 HRESET/寄存器读数和已确认的辅助成功序列指的是之前的 RCW12=0001c83e 跑步。最新RCW12=0001a8fe的调试器恢复结果和详细波形 本次更新尚未添加运行功能。 请求指导 在 POR 释放之前 HRESET_B 置位,但之后保持低电平的情况下,哪些测量方法能够最好地区分步骤 11-14 中的 RCW 取指/验证失败与 PLL 锁定或平台时钟切换?我们还将继续在步骤 1-4 中检查早期电源/时钟/表带状况。 由于步骤 15 会释放 SoC 的 HRESET 驱动程序,而步骤 17 会执行 PBI,那么在排除外部 HRESET 驱动程序或短暂的释放/重新断言操作的情况下,优先执行前面的步骤是否合理?另请检查上述 RCW 和 PBI,查看是否存在任何缺失或错误的配置。 当 HRESET 保持 LOW 状态,而没有应用 RCW 或进行其他 RESET 时,CCS/SAP 能否访问本地 RESET/PBL 状态或已记录的 PLL 锁定状态?请提供确切的访问上下文、命令和寄存器/位定义。普通检查之前未能在此状态下找到 CortexA72#0。 究竟是什么? 设置源(0x40) 加上匹配的 word-13 覆盖和 申请() 如何重置、TRST 和调试控件?我们希望找到允许启动而不改变最终 RCW 内容的操作。 我们可以提供生成的 PBL、完整的 UART/调试器日志和额外的示波器捕获数据。自主冷启动时无法启动,因此非常感谢您能提供关于下一个鉴别测试的指导。 另外,有人告诉我,作为自测,如果我们不插入 SD 卡或空白 eMMC 就给 0x9e 或 0x9f 上施加电压,当 POREST_B 从 0 释放到 1 时,我们将能够看到 HRESET_B 从低变为高。我们尝试在 RDB 板上捕获此信息,并观察到了这一点。那么,如果我们在自定义电路板上进行同样的操作,是否也会观察到相同的行为? 谢谢! Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 嗨@Hiran_E_H 1.根据目前的信息,很难明确区分RCW加载问题和PLL锁定问题。但是,如果CCS能够成功访问设备,并且PLL相关的波形看起来正常,则PLL问题的可能性较低。 我建议比较独立冷启动和 CCS 辅助启动时的 SD 命令波形。尤其要比较波形的持续时间和顺序,以确定 RCW 加载过程中是否存在任何异常。 您还可以参考参考手册中的表 4-8“RCW 状态时序”,以检查 SD 卡时钟在启动过程中是否反映了预期的频率转换。请注意,这些转换取决于 RCW 是否成功加载以及 PLL 是否正确锁定。 2.是的,我同意你的做法。根据现有信息,首先集中精力处理步骤 1 到 15 是合理的,特别是早期与电源、时钟、RESET 和启动源相关的阶段。 3.您可以尝试以下 CCS 命令来验证 LS1046A 在此状态下是否可以访问。例如,您可以尝试读取 RCWSR 寄存器: (bin)1% 全部删除 (bin)2% 配置 cc cwtap (bin)3% 显示 cc (bin)4% ccs::config_chain {ls1043a dap sap2} (bin)5% 显示 ::ccs::get_config_chain (二进制)6% ccs::display_mem 32 0x01ee0000 4 0 100 显示更多行 4.您还可以参考参考手册表 4-8“RCW 状态时序”,并观察 SD 卡时钟是否反映了 RCW 处理期间预期的频率变化。 我建议在启动过程中验证相关的波形。 实际上,我在初始调试期间通常使用硬编码模式。作为额外的检查,您可以将电路板配置为使用硬编码的 RCW,并验证观察到的波形是否遵循图 4-1“上电复位序列”中描述的顺序。如果波形符合预期行为,则与 RESET 相关的硬件设计通常可能正常工作。 我将外出超过一周,因此在此期间我不会发布任何更新。 如果问题紧急,请另开新帖,以便其他团队成员可以为您提供帮助。 谢谢!
View full article
RT1051: ENET IEEE1588 Timer Clock source Hi, In the RT1050 reference manual, I find the following: mastupristi_0-1789736651417.png I would like to know what the clock sources for the IEEE1588 timer can be. For example, can I choose a root clock derived from AUDIO_PLL? Which registers control the clock source of the IEEE1588 timer? best regards Max i.MXRT 105x Re: RT1051: ENET IEEE1588 Timer Clock source As far as I am aware, this timer is clocked by the clock labeled "ENET_25M_REF_CLK" (from MCUXpresso Config Tools), and it is always 25MHz. I think that by "independently of network speed" they just mean that it doesn't get slower if Ethernet is running at 10Mbps. P.S. If you are planning on using the 1588 timer compare/capture feature, be aware that it is (IMO) one of the most difficult peripherals on RT1050 to use correctly and has a large amount of gotchas to watch out for. For instance, you cannot use the Event In n and Event Out n pins at the same time (where n is 0..3). For example, you cannot use Event Out 1 and Event In 1 at the same time, but you can use Event In 1 and Event Out 0 at the same time. Also, only two of the four channels have DMA support.
View full article