Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
在 macOS 上,RT685 DSP 镜像使用缓存的二进制文件,而不是在 Zephyr sysbuild 中新构建的二进制文件。 平台:MacOS 15.6.1 (24G90) VS Code(版本:1.112.0)(普遍的)) MCUXpresso for VS Code: 26.8.29 Zephyr 工具链:zephyr-sdk-1.0.1,zsdk nxp-v4.4.1.1 应用程序:amp_blinky 已作为zephyr-freestanding导入 开发板:MIMXRT685-EVK 说明: 我正在MacOS上搭建开发环境,同样的步骤在我的Linux机器上运行良好。虽然使用 MCUXpresso进行构建和烧录时没有出现任何严重警告/错误,但应用程序在 Arm 和 DSP 内核上都能正常运行。然后我编辑了 remote/src 和 remote/prj.conf 下的代码,并在全新版本后将其刷入。然而,DSP 核心在编辑之前仍然运行了之前的图像。 以下是一些有趣的行为: 我也尝试修改了 Arm 核心代码,但更改已成功应用。 DSP核心代码的更改可能会触发非初始版本,而不是显示“无需工作”。 禁用 cmake 中的 CCACHE 似乎可以解决问题。 就目前来看,这似乎是一个与缓存相关的问题,编译器在运行 sysbuild 时忽略了 DSP 映像中的更改,并使用了缓存的二进制文件,无论它是否已被重新构建。这可能是由于 nxp_zephyr/zephyr/samples/boards/nxp/adsp/rtxxx/common/src/dspimgs.S 没有更新造成的。另外,这可能只是 macOS 系统的问题,因为我在 Linux 机器上没有发现这个问题。 这是已知问题吗?除了禁用 CCACHE 之外,有没有更优雅的解决方案? 顺祝商祺! 岳 ZEPHYR-OS-EDGE i.MX RT600 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 尊敬的@YueZ , 谢谢你的提问。 目前为止,我们这边还没有发现这个问题。 为了帮助找出根本原因,请您检查以下输出是否持续更新? 远程版本过程生成的 DSP BIN。 由 dspimgs.S 生成的对象文件 最终实际编程到设备上的 Arm BIN。 如果 DSP BIN 已更新,但从 dspimgs.S 生成的目标文件尚未更新,则一个可能的原因是构建系统没有更新 DSP BIN 时间戳。因此,依赖项检查可能跳过了重新编译 dspimgs.S。 我们建议将以下内容添加到负责 dspimgs.S 的CMake配置中,以确保 DSP BIN 中的更改触发重新构建: 设置(DSP_BIN_DIR ${CMAKE_BINARY_DIR} /../remote/zephyr) 设置属性(源) ${CMAKE_CURRENT_SOURCE_DIR} /src/dspimgs.S 属性 OBJECT_DEPENDS ${DSP_BIN_DIR} /zephyr_reset.bin ${DSP_BIN_DIR} /zephyr_text.bin ${DSP_BIN_DIR} /zephyr_data.bin ) (请同时确认文件路径是否正确。) 如有任何疑问,请与我们联系。   顺祝商祺! 雪莉 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 你好,雪莉, 谢谢你的回复! 我检查了 build/remote/zephy 下的三个 DSP BIN、最终的 Arm BIN 以及 build/amp_blinky/CMakeFiles/app.dir/.../adsp/rtxxx/common/src/ 下的 dspimgs.S.obj 的时间戳,它们都被原始构建或非原始构建更新了。 我还尝试了推荐的 CMake 配置,方法是替换 设置源文件属性( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" 对象依赖项 ${HIFI4_BUILD_DIR} /zephyr.elf )   (带   设置(HIFI4_BIN_DEPS) " ${HIFI4_BUILD_DIR} /zephyr.elf" " ${HIFI4_BUILD_DIR} /zephyr.reset.bin" " ${HIFI4_BUILD_DIR} /zephyr.text.bin" " ${HIFI4_BUILD_DIR} /zephyr.data.bin" ) 设置源文件属性( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" Properties 对象依赖项 " ${HIFI4_BIN_DEPS} " ) 在 dsp-load.cmake 中,并通过以下方式验证了更改: `ninja -C build/amp_blinky -t query build/.../dspimgs.S.obj`   但遗憾的是,这个问题依然存在。然后我又做了如下测试: 在 remote/src/main.c 中添加 ` printk ( " TESTCCACHE " );` 构建 调用 `strings build/.../dspimgs.S.obj | grep TESTCCACHE` 调用 `strings build/remote/zephyr/zephyr.text.bin build/remote/zephyr/zephyr.data.bin | grep TESTCCACHE` 步骤 3 没有返回任何结果,而步骤 4 找到了字符串。然后,我禁用 CCACHE 后再次运行测试,结果在两次测试中都发现了 TESTCCACHE。看起来,当启用 CCACHE 时,dspimgs.S.obj 的时间戳已更新,但没有加载正确的二进制文件。 欢迎大家就此发表意见。 顺祝商祺! 岳 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 尊敬的@YueZ , 请尝试: CCACHE_RECACHE=1?   与 CCACHE_DISABLE 完全绕过 ccache 并执行完全重建而不读取或写入任何缓存条目不同,CCACHE_RECACHE=1 强制重新生成所有输出,并使用新构建的结果更新缓存。 如果使用 CCACHE_RECACHE=1 后问题消失,则表明根本原因可能是缓存内容过旧。如果问题仍然存在,则表明问题与 ccache 本身有关,而不是与特定的缓存条目有关。 顺祝商祺! 雪莉   Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 你好,雪莉, 是的, CCACHE_RECACHE=1 可以正常工作。 顺便说一下,我通过在 CMakeLists 中将 USE_CCACHE 设置为 0 来禁用 CCACHE。至于 CCACHE_DISABLE,我必须在 West 工作区的终端中显式设置才能使其生效,这对于在 VS Code 中使用 MCUXpresso 来说不太理想。CCACHE_RECACHE 也存在同样的问题,我无法通过将其添加到 CMakeLists 中来使用它。 顺祝商祺! 岳
查看全文
RT685 DSPイメージは、MacOS上で新たに組み込まれたZephyr sysbuildの代わりにキャッシュバイナリを使用しています プラットフォーム:MacOS 15.6.1 (24G90) VS Code(バージョン:1.112.0)(ユニバーサル) MCUXpresso for VS Code: 26.8.29 Zephyr toolchain: zephyr-sdk-1.0.1, zsdk nxp-v4.4.1.1 用途: amp_blinkyをZephyr-freestandingとしてインポート 基板: MIMXRT685-EVK 説明: 私はMacOSで開発環境を設定していますが、同じ手順はLinuxマシンでも問題なく動作していました。ビルドとフラッシュは MCUXpressoで重大な警告やエラーを出さなかったが、ARMコアとDSPコアの両方でアプリケーションは正常に動作していた。その後、remote/srcとremote/prj.confのコードを編集し、クリーンビルド後にフラッシュしました。しかし、DSPコアは編集前に前の画像を実行していました。 以下に、興味深い行動例をいくつか示します。 Armコアコードの編集も試みましたが、その変更は成功裏に適用されました。 DSPコアコードの変更は「作業なし」と表示される代わりに、非純粋なビルドを引き起こすことがあります。 cmakeでCCACHEを無効にすると問題が解決するようです。 今のところ、コンパイラがsysbuildを実行する際にDSPイメージの変更を無視し、キャッシュされたバイナリを使っているというCAHCE関連の問題のように思えます。これは再構築されているにもかかわらずです。おそらくnxp_zephyr/zephyr/samples/boards/nxp/adsp/rtxxx/common/src/dspimgsが原因です。Sは更新されていません。また、Linuxマシンでは気づかなかったので、MacOSだけの問題かもしれません。 これは既知の問題ですか?CCACHEを無効にする以外の、より洗練された解決策はありますか? よろしくお願いいたします。 ユエ ゼファー・オス・エッジ  i.MX RT600 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS こんにちは、シェリーさん。 ご返信ありがとうございます! build/remote/zephyの3つのDSP BINのタイムスタンプ、最終的なArm BIN、そしてdspimgsを確認しました。build/amp_blinky/CMakeFiles/app.dir/.../adsp/rtxxx/common/src/の項目S.obj、すべて純正または非純正のビルドで更新されていました。 また、推奨されている CMake 設定を置き換えて試してみました。 set_source_files_properties ( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" オブジェクトに依存する ${HIFI4_BUILD_DIR}/zephyr.elf )   with   設定(HIFI4_BIN_DEPS) 「${HIFI4_BUILD_DIR}/zephyr.elf」 「${HIFI4_BUILD_DIR}/zephyr.reset.bin」 「${HIFI4_BUILD_DIR}/zephyr.text.bin」 「${HIFI4_BUILD_DIR}/zephyr.data.bin」 ) set_source_files_properties ( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" プロパティ オブジェクトに依存する " ${HIFI4_BIN_DEPS} " ) dsp-load.cmakeでは、そして変更を検証しました `ninja -C build/amp_blinky -t query build/.../dspimgs.S.obj`   しかし残念ながら、この問題は依然として解決していません。次に、以下のように別のテストを行いました。 remote/src/main.c に` printk ( " TESTCCACHE " );` を追加する ビルド `strings build/.../dspimgs.S.obj | grep TESTCCACHE` を実行します。 呼び出し:'strings build/remote/zephyr/zephyr.text.bin build/remote/zephyr/zephyr.data.bin |grep TESTCCACHE' ステップ3では何も返されなかったが、ステップ4では文字列が見つかった。次に、CCACHEを無効にして再度テストを実行したところ、どちらのテストでもTESTCCACHEが検出されました。CCACHEが有効になっている場合、dspimgs.S.objのタイムスタンプは正しいバイナリをロードせずに更新されたようです。 この件について、ご意見をいただければ幸いです。 よろしくお願いいたします。 ユエ Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS @YueZ様、 ご質問ありがとうございます。 今のところ、私たちの側ではこの問題が既知のものではありません。 根本原因を特定するために、以下の出力が一貫して更新されているか確認していただけますか? リモートビルドプロセスによって生成されるDSP BINです。 dspimgs.S から生成されたオブジェクトファイル。 実際にデバイスにプログラムされている最後のArm BINです。 DSP BINは更新されているが、オブジェクトファイルはdspimgsから生成されていない場合Sは更新していないため、ビルドシステムがDSP BINのタイムスタンプを更新しなかった可能性があります。その結果、依存関係チェックでdspimgs.Sの再コンパイルがスキップされた可能性があります。 DSPIMGsを担当する CMake 構成に以下のコンテンツを追加することをお勧めします。DSP BINの変更が再構築を引き起こすようにするために: セット(DSP_BIN_DIR ${CMAKE_BINARY_DIR}/../リモート/ゼファー) set_properte(ソース ${CMAKE_CURRENT_SOURCE_DIR} /src/dspimgs.S プロパティ オブジェクト_依存 ${DSP_BIN_DIR} /zephyr_reset.bin ${DSP_BIN_DIR} /zephyr_text.bin ${DSP_BIN_DIR} /zephyr_data.bin ) (実際のファイルパスが正しいかどうかも確認してください。) ご質問がありましたら、お気軽にお問い合わせください。   よろしくお願いいたします。 シェリー Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS こんにちは、シェリーさん。 はい、 CCACHE_RECACHE=1は機能します。 ちなみに、CMakeListsでUSE_CCACHEを0に設定してCCACHEを無効にしています。CCACHE_DISABLEについては、動作させるにはwest workspace端末で明示的に設定しなければならず、MCUXpresso for VS Codeを使うにはあまり理想的ではありません。CCACHE_RECACHEも同じで、CMakeListsに追加しても使えません。 よろしくお願いいたします。 ユエ Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS @YueZ様、 CCACHE_RECACHE=1を試してみていただけますか?   ccache を完全にバイパスし、キャッシュエントリの読み書きを行わずに完全な再構築を実行する CCACHE_DISABLE とは異なり、CCACHE_RECACHE=1 はすべての出力の再生成を強制し、新しく構築された結果でキャッシュを更新します。 CCACHE_RECACHE=1 にすることで問題が解消される場合、根本原因はおそらく古いキャッシュの内容にあると考えられます。問題が解決しない場合は、特定のキャッシュされたエントリではなく、ccache自体に問題がある可能性が高いと考えられます。 よろしくお願いいたします。 シェリー  
查看全文
PXP screen rotation issue based on i.MXRT1052 I'm using rt1052PXP to rotate a landscape view to a portrait view, but the overall display shifts downwards when I refresh the page. Why is this happening?   static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) { lv_area_t dest_area = { .x1 = 0, .x2 = 480 - 1, .y1 = 0, .y2 = 800 - 1, }; lv_gpu_nxp_pxp_blit(((lv_color_t *)s_inactiveFrameBuffer), area, 800, color_p, area,480, LV_OPA_COVER, LV_DISP_ROT_270); DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE); ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)s_inactiveFrameBuffer); s_framePending = true;if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE) { /* IMPORTANT!!! * Inform the graphics library that you are ready with the flushing*/ lv_disp_flush_ready(disp_drv); } else { PRINTF("Display flush failed\r\n"); assert(0); } }   i.MXRT 105x 回复: 基于i.MXRT1052的pxp屏幕旋转问题 I've noticed an offset issue when drawing with PXP. Is it because the default initialization `#define LV_USE_GPU_NXP_PXP_AUTO_INIT 1` generated by guiguider can't be used directly? void lv_disp_drv_init(lv_disp_drv_t * driver) { lv_memset_00(driver, sizeof(lv_disp_drv_t)); driver->hor_res = 320; driver->ver_res = 240; driver->physical_hor_res = -1; driver->physical_ver_res = -1; driver->offset_x = 0; driver->offset_y = 0; driver->antialiasing = LV_COLOR_DEPTH > 8 ? 1 : 0; driver->screen_transp = 0; driver->dpi = LV_DPI_DEF; driver->color_chroma_key = LV_COLOR_CHROMA_KEY; #if LV_USE_GPU_NXP_PXP // driver->draw_ctx_init = lv_draw_pxp_ctx_init; // driver->draw_ctx_deinit = lv_draw_pxp_ctx_deinit; // driver->draw_ctx_size = sizeof(lv_draw_pxp_ctx_t); driver->draw_ctx_init = lv_draw_sw_init_ctx; driver->draw_ctx_deinit = lv_draw_sw_init_ctx; driver->draw_ctx_size = sizeof(lv_draw_sw_ctx_t); #else driver->draw_ctx_init = lv_draw_sw_init_ctx; driver->draw_ctx_deinit = lv_draw_sw_init_ctx; driver->draw_ctx_size = sizeof(lv_draw_sw_ctx_t); #endif } 回复: 基于i.MXRT1052的pxp屏幕旋转问题 Hi  @dsd, The LV_USE_GPU_NXP_PXP_AUTO_INIT allows LVGL to leverage the user of PXP for internal widget rendering, which could definitely cause issues when the application also uses this PXP in parallel for whole screen rotation. However, it is likely not the source of the issue. From the initial code, it seems like you are not using dest_area, or rather you are using area as both source and destination for the PXP blit, which means that only the partial dirty region might be getting placed on different absolute positions rather than the intended. 回复: 基于i.MXRT1052的pxp屏幕旋转问题 I used the code generated by guiguider to test it, even without using pxp rotation. static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) { DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE); ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p); s_framePending = true; if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE) { /* IMPORTANT!!! * Inform the graphics library that you are ready with the flushing*/ lv_disp_flush_ready(disp_drv); } else { PRINTF("Display flush failed\r\n"); assert(0); } } Simply modify the macro /*Use NXP's PXP GPU iMX RTxxx platforms*/ #define LV_USE_GPU_NXP_PXP 1 #if LV_USE_GPU_NXP_PXP /*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c) * and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol SDK_OS_FREE_RTOS * has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected. *0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init() / #define LV_USE_GPU_NXP_PXP_AUTO_INIT 1 #endif /* LV_USE_GPU_NXP_PXP */ The same problem will occur, and the direction of the offset will be the same as after rotation. 回复: 基于i.MXRT1052的pxp屏幕旋转问题 What's even stranger is that there are two different results within the same project, even though I thought the configuration should be the same. No display offset occurred Display offset occurs    
查看全文
MCU-LINK 无法正常工作 您好, 我尝试在新电脑(Windows 10 笔记本电脑)上使用 MCU-LINK,但很遗憾,并没有取得太大成功! 我安装了 mcuxpresso,当我将 MCU-LINK 插入 USB 端口时,它会发出像枚举一样的正常声音,但 mcuxpresso 无法识别探针,并且在 Windows 设备管理器中,“USB 复合设备”旁边出现了一个黄色警告三角形,设备状态中显示一条消息,提示“此设备无法启动(代码 10)”。系统资源不足,无法完成 API 请求。 我还尝试从 NXP 网站手动下载适用于 Windows 10 的 MCU-LINK 驱动程序安装程序,但仍然没有成功。 请问有什么建议吗?这是一台比较新的笔记本电脑,我预计它的资源不会不足。 非常感谢 -缺口 Re: MCU-LINK not working 你好, 我发现自己也遇到了完全相同的问题。 我刚刚成功解决了这个问题,希望对大家有所帮助。我做了以下事情: 正在前往C:\nxp\LinkServer_26.6.137\MCU-LINK_installer\scripts点击“ program_CMSIS ”,然后按照命令面板上的说明进行操作(即,短接 MCU-link 的跳线 J3 -> 通过 USB 连接 MCU-link -> 按空格键)。 (或者,您也可以尝试在 Windows 搜索栏中输入“CMSIS”或搜索“Program MCU-Link CMSIS-DAP”来直接找到该文件)。 完成上述操作后,计算机的设备管理器能够正确识别该设备,且没有出现任何警告,我得以成功调试我的板。 不确定是否相关,或者是否有助于正常工作(也许并非必需),但在对 MCU-Link 进行固件更新之前,我做了以下操作: 1- 已将“Windows 安全中心”->“应用和浏览器控制”->“智能应用控制设置”->关闭。 2- 我重新安装了 LinkServer 安装程序,您可以在 nxp 网站上的“LinkServer for Microcontrollers”中找到它。 此外,在进行固件更新后: 1- 以“管理员身份运行”打开 mcuxpresso IDE,然后在项目资源管理器中,打开项目文件夹,并在底部删除文件夹“(*项目名称*)_LinkServer Debug.launch”;在调试代码之前。 对我来说,这种方法很有效。希望对其他人也有帮助。 祝好,堪萨斯。 Re: MCU-LINK not working 您好,我也在使用 MCU-Link,它直接连接到笔记本电脑的 USB 端口时工作正常。但是,当我使用 USB 集线器并通过集线器连接 MCU-Link 时,调试就无法工作,并会报错。请问如何解决这个问题?我的笔记本电脑只有一个 USB 端口,所以必须通过集线器连接。 Re: MCU-LINK not working 我还能想到另外两种替代方案: 首先要确保您的防病毒软件没有将 MCU-LINK 检测为威胁,为了安全起见,最好将其禁用。 第二种方法是换一台电脑试试。如果换一台机器也出现同样的问题,那么我们有理由相信问题可能与 MCU-LINK 有关。否则,我认为问题很可能与操作系统或数据线有关。 希望这能帮到你。 Re: MCU-LINK not working 谢谢@EdwinHz 是的,我们从那个位置下载了驱动程序。 我们没有使用 USB 集线器,这是直接连接。 我会试试换根USB线,但这似乎不太可能。 还有其他建议吗?谢谢!   Re: MCU-LINK not working 嗨@nickwallis , 您手动安装的驱动程序是否来自 MCU-Link Debug Probe 网站底部的“MCU-Link Windows 10 安装程序”软件?如果不行,我建议使用此安装程序重新安装驱动程序。 检查与MCU-LINK的连接。如果它连接到了 USB 集线器,请尝试将其直接连接到机器。也可以尝试使用不同的USB数据线。 此致, 埃德温。
查看全文
マーキング仕様書の依頼 - PN# MFS2633HMDA0AD 拝啓 部品番号MFS2633HMDA0ADを受け取りました。入荷部品の検証に必要なチップマーキング情報を取得できません。この部品のマーキング仕様書の提供を手伝ってもらえますか? 皆様のご支援をいただけると大変ありがたいです。 よろしくお願いいたします。 ジョーイ
查看全文
MCXN547 SC Timer0 SDKドライバーの問題 私はMCUとSDK MCXN547VKLバージョン26.06.00を使っています。 コンテキスト: 私は SCT タイマー 0 を使用して、スプリット モードの COUNTER を使用して 2 つの異なる PWM 波形を生成しています。CONFIG[UNIFY] = 0、つまり COUNT_L を 1 つの PWM ジェネレーターに、COUNT_H を別の PWM ジェネレーターに使用しています。 問題はこうです:ドライバーAPI「SCTIMER_SetCOUNTValue(SCT0,kSCTIMER_Counter_H,0U)」でCOUNTER_Hを読み込むと、バスフォールトが発生します。 問題の原因をSDKのドライバーコードに突き止めました。ドライバコードはCOUNT_H単独で16ビットの書き込みではなく、COUNT_HとCOUNT_Lの両方を32ビット書き込みで行います。COUNT_H が書き込まれている間に COUNT_L が実行されていたため、バス障害が発生しました。SDKのドライバーコードを16ビット書き込みに変更したところ、バスの故障は発生しませんでした。ドライバーコードを添付し、問題の原因となったコードラインと修正方法を色で示しました。もし本当にこれが問題なら、SDKドライバーを更新できます。- ありがとう /*! * @brief カウンターの値を設定します。 * * この機能は、カウントレジスタの値を設定することであり、COUNT_L、COUNT_H、または統合レジスタに書き込みます。 * は、対応するカウンタが停止しているとき(CTRL レジスタの HALT ビットが 1 に設定されているとき)にのみ許可されます。 * * @param base SCTimer ペリフェラル ベースアドレス * @param whichCounter SCTimer カウンターを使います。16ビットモードでは、Counter_LとCounter_Hを選択できます。 * 32ビットモードではCounter_Uを選択できます。 * @Param value COUNTレジスタへのカウンタ値の更新。 */ static inline void SCTIMER_SetCOUNTValue ( SCT_Type *base, sctimer_counter_t whichCounter, uint32_t value) { SCTIMER_StopTimer(base, ( uint32_t )whichCounter); スイッチ (whichCounter) { case kSCTIMER_Counter_L: assert(value <= 0xFFFFU); assert(0U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* ユーザーがLowカウンターを設定したいときにビットCounter_Lを使います */ base-> COUNT_ACCESS16BIT.COUNTL = ( uint16_t ) value; 壊す; case kSCTIMER_Counter_H: assert(value <= 0xFFFFU); assert(0U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* ユーザーがHighカウンターを設定したいときにCounter_Hビットを使う */ // base->COUNT = (uint32_t)base->COUNT_ACCESS16BIT.COUNTL | SCT_COUNT_CTR_H(value); base- > COUNT_ACCESS16BIT.COUNTH = ( uint16_t )value; //修正 壊す; CASE kSCTIMER_Counter_U: assert(1U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* カウンタが 32 ビットモードで動作している場合 (カウンタを統合する場合) は、Counter_L ビットと Counter_H ビットの両方を使用します。*/ base-> COUNT = value; 壊す; デフォルト: /* MISRA C-2012 問題ルール 16.4 を修正します。*/ 壊す; } SCTIMER_StartTimer(base, ( uint32_t )whichCounter); } クロック|タイマー Re: MCXN547 SC Timer0 SDK driver Issue こんにちは、 @JawaharA さん。 ご意見ありがとうございます。バス障害の原因に関するあなたの分析は正しいです。COUNT_H の更新には COUNT レジスタへの 32 ビット書き込みが使用されますが、現在の関数は H カウンタのみを停止します。Lカウンタがまだ動作している場合、この書き込みアクセスはSCTバスエラーを引き起こします。 しかし、COUNTHへの16ビット書き込みへのアクセス変更はSCTハードウェアアクセス要件に適合しません。なぜなら、COUNT_HはCOUNT_L と一緒にワードとして書かなければならないからです。正しいソフトウェアの解決策は、32ビットのCOUNTへの書き込みを行う前にLとHの両方のカウンターを停止し、その後に以前の実行状態を復元することです。別途16ビットの書き込みを使わずにSDKをレビューし、適切に更新することを推奨COUNT_H。 BR ハリー Re: MCXN547 SC Timer0 SDK driver Issue こんにちは、ハリーさん。 迅速なご対応ありがとうございます。 ご回答で参照されたマニュアルページによると、CONFIG[UNIFY] = 0の場合、COUNT_LレジスタとCOUNT_Hレジスタの両方をそれぞれカウンタが動作していない間に個別に読み書きできます。SDKはレジスタに16ビット書き込みCOUNT_L使っています。COUNT_HレジスタはCONFIG[UNIFY]の設定に関係なく32ビット書き込みで書き込む必要がありますが、これは非公式な条件でしょうか? ありがとう - ジャワハル
查看全文
标记规范请求 - PN# MFS2633HMDA0AD 尊敬的先生/女士, 我们已收到零件号为MFS2633HMDA0AD的零件。我们无法获取进货零件验证所需的芯片标记信息。请问您能否提供该零件的标记规范文件? 非常感谢您的支持。 顺祝商祺! 乔伊
查看全文
i.MX RT1176 – FlexIO2 并行接收:可实现的最大时钟移位是多少?仅达到约 48 MSPS iMXR1176 SDK 25.09.00 清单 3.15.0 目标 我正在从 i.MX RT1176 上的 LTC2164 16 位 ADC 获取数据。数据路径为: LTC2164(全速率CMOS输出)→ FlexIO2(并行接收)→ eDMA → 外部同步动态随机存取存储器(SDRAM) 硬件设置 LTC2164 配置为全速率 CMOS 输出模式,由外部 100 MHz 振荡器提供时钟信号(即 100 MSPS,16 位并行)。 ADC 数据输出 D0–D15 连接到 GPIO_AD_00 … GPIO_AD_15。 ADC CLKOUT+ 连接到 GPIO_AD_30,用作 FlexIO 定时器时钟(外部引脚时钟源)。 软件设置 FlexIO2 配置为并行接收器,数据锁存到移位器 7;移位器 7->0 串联起来,以便在 DMA 请求钳位之前缓冲 32 字节。 eDMA 由 kDmaRequestMuxFlexIO2Request0Request1 触发,使用两个 TCD 以乒乓(分散/聚集)模式运行。每次主循环完成时都会引发中断,即每 16384 个样本一次。 FlexIO2 功能时钟:120 MHz。 总线时钟(eDMA / SEMC 侧):240 MHz。 问题 在 100 MSPS 下,采集 16384 个样本需要163.84 µs 。通过测量两个连续 DMA 中断之间的时间(GPIO 切换 + 示波器),我始终得到338 µs ,即 ~2.06 倍。 这相当于大约48 MSPS的有效持续速率,这表明瓶颈在于 FlexIO 端,而不是 ADC 或 SDRAM。 问题 RT1176 上 FlexIO 在并行接收模式下是否有记录在案的最大移位时钟频率?我在参考手册或数据表中都找不到这样的数据。 当定时器时钟源为外部引脚时,FlexIO 功能时钟与外部移位时钟之间所需的比率是多少?我的 FlexIO 时钟 (120 MHz) 只是输入 100 MHz 时钟的 1.2 倍——这足够吗?还是输入同步逻辑需要 2 倍或 4 倍? 鉴于我观察到的几乎精确的 ×2 比率,这是否可能是由于 FlexIO 定时器在时钟的两个边沿递减(TIMCMP 约定)造成的,这意味着我的定时器比较值实际上将吞吐量减半? 任何关于 FlexIO + eDMA 在此部分上的最大实际持续吞吐量的指导都将非常有帮助,因为这决定了我是否需要迁移到不同的外设或外部 FIFO。 先行致谢。 通信与控制(I3C | I2C | SPI | FlexCAN | 以太网 | FlexIO) Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 您好,谢谢您的回复。我确实达到了预期的性能,但这仅仅是通过超过 Flexio 外设的最大推荐时钟频率来实现的;具体来说,要达到 100 MSps 的采集速率,需要将时钟频率配置为 200 MHz 以上,而不是 120 MHz,而 120 MHz 的配置会导致时钟边沿丢失。问题是,即使它在 200 MHz 下工作(尽管参考手册规定最大频率为 120 MHz),我也无法保证在不同的温度条件下或不同生产批次之间可靠运行。 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 你好@azed38 , 请注意,当使用外部引脚作为时钟源时,会引入较小的同步延迟。根据 RM 第 67.3.3.2 节,此延迟范围为 0.5 至 1.5 个 FlexIO 时钟周期: Habib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.png 关于 FlexIO 和 DMA 可达到的最大吞吐量,目前还没有针对 FlexIO 和 DMA 的性能测试。不过,您可能会发现AN12686很有用,因为它演示了使用 FlexIO 和 DMA 的并行通信实现,这可能会为您的用例提供相关指导。 BR 哈比卜 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 你好@azed38 , 我注意到您已经通过其他渠道获得了关于此主题的支持,因此我们将继续通过该渠道提供支持,以保持所有沟通的集中化。我只想补充一点,如果 FlexIO 的运行频率超过其最大规格,可能会导致意外行为,从而影响您的最终应用程序。根据 RM 表 15-4“时钟根”中提供的信息,我建议使用最大频率 120 MHz。 BR 哈比卜 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 您好, 这个问题很可能是由于第 67.3.3.2 节中描述的引脚同步延迟造成的。参考手册中的“引脚同步”部分。 考虑到前面提到的设置,问题的根本原因是输入数据频率与 FlexIO 上的工作时钟频率之间的比率,这是由于该模块前面提到的引脚同步延迟造成的。 例如,由于存在引脚同步延迟,FlexIO 模拟外设(如 SPI 主控)只能以 FlexIO 工作时钟频率的四分之一的最大波特率运行。如 RM 第 67.4.3 节所述:“由于同步延迟,串行输入数据的建立时间为 1.5 个 FlexIO 时钟周期,因此最大波特率除以 FlexIO 时钟频率的 4。” 在这种情况下,吞吐量预计会降低,而且由于引脚同步延迟是 FlexIO 模块固有的特性,因此没有解决办法。 因此,为了确保正常运行,FlexIO 模块的最大工作频率为 120MHz,RT1170 无法达到预期的 100MSPS。 BR 哈比卜 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 鉴于我观察到的几乎精确的 ×2 比率,这是否可能是由于 FlexIO 定时器在时钟的两个边沿递减(TIMCMP 约定)造成的,这意味着我的定时器比较值实际上使吞吐量减半? 我只是想提一下,是的,FlexIO 定时器在由引脚或触发信号驱动时,对双边沿敏感。因此,如果你的外部信号包含一个上升沿和一个下降沿,你的定时器就会对其比较值进行两次计数。 另外,根据我目前使用 FlexIO 的经验,我猜测你只能处理频率不超过 FlexIO 时钟频率一半的外部信号。除此之外,它还能如何感知双面边缘?为了检测边沿,它需要在每个时钟周期内对外部引脚进行两次采样。
查看全文
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.
查看全文
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.
查看全文
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をインポートすることができました。
查看全文
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 。 此致
查看全文
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
查看全文
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 を含める必要があります。 よろしくお願いします。
查看全文
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..!
查看全文
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挿入オフセットの不一致を示唆しています。 よろしくお願いいたします。
查看全文
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、デターミニスティックで途切れのない初期点滅には最適な選択肢ではありません。 よろしくお願いいたします。 サラス。
查看全文
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 映射也可能是有益的。 如果你能在结果出来后分享一下,那就太好了。 如有任何疑问,请随时告诉我。 我将外出超过一周,因此我的回复可能会延迟。如有任何更新,我会及时通知您。 谢谢。
查看全文
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.
查看全文
our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly our customed board with LS1043AXN8QQB and 2GB DDR4 can't be poweron reset porperly. HW arch: LS1043A 2GB DDR4(512MB x8bit), with eMMC bootmode. eMMC was flash with all boot image(uboot, kernel, ...). Poweron reset was controlled by some logic gates to check some power status, RESET signals, which followed the RDB reference design, detail design, please refer to the attached circuit. Failure: after poweron, the board can't poweron reset properly with random failrate. we can captured the PORESET_B、RESET_REQ_B、and HRESET_B with periodly pluse if poweron reset failed. we also can captured that, there's always have SDHC_CLK output from LS1043A to eMMC chip. as below, and Zoom in the wave as below, can find the HRESET_B is pull-HIGH by LS1043A after bootup, meas that the system already finished PLL lock action, and begin to stop driving HRESET_B, but failed in [PBL fetchs PBI command from SD card, PBI writes to CCSR space and programs OCRAM with SPL] operation, and then GPP jumps to the boot ROM at 0x0000_0000, because the ASLEEP with NOT be driver LOW according the boot process sequence as below, if there any suggestions to debug and fix this issue? Thanks. Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly During the debugging phase, the RESET_REQ_B needs to be able to communicate with the PORESET to prevent the MPU to prevent the MPU from continuously reset CPU The RESET For circuit design, please refer to AN5012, LS1043A Design Checklist - Application Note JTAG interface connection, Figure 18. and LS1043ARDB board. Please find PORESET has gone low. PORESET is triggered. CPU cannot operate normally. Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly The control logic for PORESET_B does not refer to the RDB reference design which is controlled with a CPLD, but instead uses a watchdog as shown below, and a combination of the aforementioned logic lines for the power-up reset. In the first power-on startup, after the system is powered on the TPS3828 this watchdog chip comes with an internal 200ms delay output to control the release of PORESET_B, through the aforementioned logic gate line, and power detection logic with the gate logic, the output of CPU_PORESET_B to the LS1043A processor to start the reset. After entering uboot or system, you can control the watchdog chip by reset or reboot command, and finally control RESET_REQ_B to perform system soft reset reboot. The existence of such a reset control may affect the normal power-up startup of the system. Currently, the analysis is suspected to be a failure of the LS1043A to enter the OCRAM for initialization after startup. Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly It seems the PORESET causes the POR repeated. Please check which signal cause the PORESET change from high to low. DDR part will not affect the POR in this step. You could use Chinese to reply. Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly Add more information, the DDR4 chip we used on the board is MT40A512M8SA-062E IT, which is 3200MT/s version, and used the LS1043ARDB(LS2108) default setting in ddr_init.c. Is the DDR chip or DDR settings impact the system poweron reset during initialized DDR controller in OCRAM? Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly I encountered a similar problem, an intermittent fault (occurring only once out of thousands of reboots): the software freezes during the u-boot startup process. The fault message is: "Synchronous Abort" handler, esr 0x02000000. Disassembling the call details, I found it to be : initr_pci→pci_init→dm_pciauto_config_device (pci_auto.c:371)→dm_pci_hose_probe_bus (pci-uclass.c:607)→dm_pciauto_prescan_setup_bridge→bl dm_pci_get_bdf. When ret returns, an exception occurs at address 0x8202fc20. The problem lies in ret reaching an incorrect address, while the called esr is merely a register shift; it itself has no inherent error-prone aspects (no memory access, no jumps). The software uses cpld to actively feed the watchdog (external watchdog), and the external watchdog is reset using PORESET, but it failed. Could you please advise on the problem? Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly I suggest starting a new topic for this question, thank you. Re: our customed board with LS1043AXN8QQB and 2GB DDR4 can't poweron reset properly 已开启新的话题“软件启动时出现Synchronous Abort" handler, esr 0x02000000”
查看全文