Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
MIMXRT1021の内部RTC発振器の特性 私はウォッチドッグを使用していますが、そのソースクロックは RTC クロックであることがわかりました。 私は水晶や外部 RTC クロック ソースを使用していないSO、内部リング発振器に依存しています。 リング発振器の特性は一貫して指定されていません。 ハードウェア ユーザー ガイドでは、「...オンチップ 40 kHz 発振器」と指定されています。許容範囲は±50%です(表4) 技術データシートのセクション4.1.4に同様の仕様が記載されています。しかし、セクション 4.2.4.2 には、「このブロックの周波数範囲は約 10~45 kHz です」と記載されています。 ウォッチドッグのタイムアウト時間の選択は、時には微妙なバランス調整を必要とするため、ソース クロックの +/- 50% の許容範囲を考慮する必要があります。 私の質問は次のとおりです: 1. 実際の公称振動周波数はいくらですか?32kHz ではない場合、なぜですか? 2. 公称周波数が 32kHz でない場合、ウォッチドッグ タイムアウトがすでに間違っているということではないでしょうか? 3. 温度によってどのように変化しますか?つまり、熱くなるとスピードが速くなるか遅くなるか? 4. +/-50% には温度変化も含まれますか? よろしくお願いします。 アレックス i.MXRT 102x Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは@alex_conway 、返信が遅くなり申し訳ありません。 混乱させてしまい申し訳ございません。私が言いたかったのは、先ほど共有したデータは実際に本番環境向けのものであるということです。 32kHz +/- 50%、-40℃~105℃。 BR ハビブ Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは、ハビブさん。 データシートのすべての情報は生産時にテストされています。 どのデータシートにどの情報がありますか?私の最初の投稿を参照してください: 「ハードウェア ユーザー ガイド」では、「...オンチップ 40 kHz 発振器」と指定されています。許容範囲は±50%です(表4) 技術データシートのセクション4.1.4に同様の仕様が記載されています。しかし、セクション 4.2.4.2 には、「このブロックの周波数範囲は約 10~45 kHz です」と記載されています。 これらのいずれも、-40℃から105℃で32kHz +/- 50%と記載されておらず、また、これらのいずれも、メーカーが保証する仕様を記載する通常の場所である表に記載されていません。 よろしくお願いします。 アレックス Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは@alex_conway 、 SO、+/-50% には、初期値や -40℃ から 105℃ までの温度など、考えられるすべての変動が含まれるということですか? はい。初期値と温度はこのパーセンテージに含まれます これは製造段階でテストされていますか? - つまり、発振器周波数が +/-50% または 32kHz 以内であることを確認するために、すべてのチップが -40℃ から 105℃ までテストされていますか? データシートのすべての情報は生産時にテストされています。 BR ハビブ Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは、ハビブさん。 SO、+/-50% には、初期値や -40℃ から 105℃ までの温度など、考えられるすべての変動が含まれるということですか? これは製造段階でテストされていますか? - つまり、発振器周波数が +/-50% または 32kHz 以内であることを確認するために、すべてのチップが -40℃ から 105℃ までテストされていますか? ありがとう アレックス Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは@alex_conway 、 あなたの質問にお答えします: 公称周波数が 32kHz であると述べているので、発振器がどの周波数で動作しているかに関係なく、ウォッチドッグ タイムアウト時間は公称 32.786kHz を基準にしているのでしょうか? WDOG のクロック周波数は発振器から得られます。発振器が 32 kHz 以外の周波数で動作する場合、この偏差は WDOG のタイミングに直接影響します。そのため、内部発振器は起動の高速化と改ざん防止に役立ちますが、32 kHz クロックの唯一のソースとしては使用すべきではありません。 +/-50% のうち、初期値許容範囲はどのくらいで、温度変動はどのくらいですか? 前回の投稿でも述べたように、温度による周波数偏差は複数の要因の影響を受け、予測できないCANがあります。ただし、動作温度範囲 -40℃~105℃では、変動は±50%以内に収まります。 BR ハビブ Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは、ハビブさん。 回答ありがとうございます。いくつか追加の質問があります。 公称周波数が 32kHz であると述べているので、発振器がどの周波数で動作しているかに関係なく、ウォッチドッグ タイムアウト時間は公称 32.786kHz を基準にしているのでしょうか? +/-50% のうち、初期値許容範囲はどのくらいで、温度変動はどのくらいですか? よろしくお願いします。 アレックス Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは@alex_conway 、 返信が遅くなり申し訳ありません。あなたの質問にお答えします: 1. 実際の公称振動周波数はいくらですか?32kHz ではない場合、なぜですか? 公称周波数は 32 kHz ですが、プロセスの変動や温度条件に応じて最大 ±50% CAN 変化します。 2. 公称周波数が 32kHz でない場合、ウォッチドッグ タイムアウトがすでに間違っているということではないでしょうか? 現在、WDOG タイムアウトをどのようにテストしているか、詳しく教えていただけますか? 3. 温度によってどのように変化しますか? つまり、熱くなると速度は速くなりますか、それとも遅くなりますか? 温度による周波数偏差は複数の要因の影響を受け、予測できないCANがあります。ただし、動作温度範囲 -40℃~105℃では、変動は±50%以内に収まります。 4. +/-50% には温度変化も含まれますか? はい、±50% の許容範囲は、温度による変動とプロセスの変動を考慮しています。 BR ハビブ Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは、ハビブさん。 私は RT1020-EVK を使用していません。RTC クロックや水晶のないボードを持っています。RTC_XTALI ピンは GND にコネクテッド、RTC_XTALO ピンはオープンになっています。 ありがとう アレックス Re: MIMXRT1021 characteristics of internal RTC oscillator こんにちは@alex_conway 、 この発振器の公称値と温度の影響に関する詳細な情報を得るために、社内で問い合わせてみました。ご辛抱いただきありがとうございます。 ところで、質問があります。現在、WDOG タイムアウトをどのようにテストしているのか、詳細を教えていただけますか?RT1020-EVK を使用している場合は、外部 32kHz 発振器が含まれているため、内部発振器に依存しないことに注意してください。 Habib_MS_0-1755283483291.png BR ハビブ
View full article
デフォルトの U-Boot スプラッシュ スクリーンを変更する方法 (Yocto BSP imx-6.12.20-2.0.0) 私はYocto BSP imx-6.12.20-2.0.0を使用しています。現在のビルドでは、U-Boot は起動時にデフォルトの 4 ペンギンのスプラッシュ イメージを表示します。 このデフォルトの U-Boot イメージがどこから選択されているか教えていただけますか? また、この画像を Yocto ビルドの一部としてカスタム スプラッシュ スクリーンに置き換えるにはどうすればよいですか? どのソース ファイルまたは Yocto レシピを変更する必要があるかについてのガイダンスがあれば、大変助かります。 グラフィックスとディスプレイ i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M ミニ | i.MX 8M ナノ Linux Yocto Project Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) こんにちは、 アプリケーション用の既製のパッチはありませんが、以前のコミットを参照してソースコードを変更する必要があります。 よろしくお願いします、 志明 Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) @Zhiming_Liu コミットでは「 logo_linux_clut224.ppm 」を表示することだけが言及されています。 しかし、私の要件は、 logo_linux_clut224.ppmをフルスクリーン(1920 x1080)で4つのタイルではなく、単一の画像として表示することです。 Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) こんにちは、 このコミットを参照してください: https://github.com/varigit/linux-2.6-imx/commit/1a3d71c1c38b058daa0d29140a9cff747e5a7f51 よろしくお願いします、 志明 Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) @Zhiming_Liu ありがとうございます。デフォルトのログを変更CAN。 しかし、4つのペンギンの画像のように、私のカスタム画像は4つのタイルとして表示されます 1920x1080の単一画像として表示できますか? Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) @Zhiming_Liu ありがとうございます。デフォルトのログを変更CAN。 しかし、4つのペンギンの画像のように、私のカスタム画像は4つのタイルとして表示されます 1920x1080の単一画像として表示できますか? Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) こんにちは、 カーネルにこのコミットが含まれていない: https://github.com/varigit/linux-2.6-imx/commit/1a3d71c1c38b058daa0d29140a9cff747e5a7f51 SO、logo.ppm は使用されません。 logo.ppmの名前をlogo_linux_clut224.ppmに変更すると、元のlogo_linux_clut224.ppmが置き換えられます。 よろしくお願いします、 志明 Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) @Zhiming_Liu オリジナルのペンギン画像を表示する logo_linux_clut224.ppm がまだ表示されます。 Yocto イメージのカーネル ブート時に表示されるデフォルトのペンギン ブート ロゴを置き換えようとしています。 https://variwiki.com/index.php/Yocto_Linux_logoの指示に従います。 linux-imx_%.bbappendを作成しましたファイルの場所: >メタフリースケール/レシピカーネル/Linux/ その bbappend 内に、カスタム logo.ppm を追加し、その画像を bbappend の横のファイル ディレクトリの下に配置しました。 次にカーネルとイメージを再構築しました。 $bitbake -c cleanall linux-imx $bitbake Linux-imx $bitbake imx-image-full ただし、再構築後も、起動時にペンギンのロゴが表示されたままになります。ビルディング内を確認しました: >カーネルソース/ドライバ/ビデオ/ロゴ/ 注意: ビルディングする前に、置き換えられることを期待して、drivers/video/logo/ から logo_linux_clut224.ppm を手動で削除しましたが、それでも再び表示され、ロゴは変更されません。 Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) こんにちは@binil ロゴを置き換えるにはカーネルソースコードを変更する必要があり、ロゴファイルは.ppmです。ここにファイルしてください。こちらのガイドを参照してください。 https://github.com/nxp-imx/linux-imx/tree/lf-6.12.y/drivers/video/logo yocto レイヤーについては、yocto ガイドを参照してカスタム レイヤーを作成してください。 https://docs.yoctoproject.org/next/dev-manual/layers.html よろしくお願いします、 志明 Re: How to change the default U-Boot splash screen (Yocto BSP imx-6.12.20-2.0.0) 「sources/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc」という行を見つけました。 [ -e ${UNPACKDIR} /logo_linux_clut224.ppm ]の場合; インストール -m 0644 ${UNPACKDIR} /logo_linux_clut224.ppm ドライバ/ビデオ/logo/logo_linux_clut224.ppm 「l ogo_linux_clut224.ppm 」はデフォルトのペンギン画像を表示していると思います。 もしSOなら、私の「l ogo_linux_clut224 .ppm」ファイルを使って修正するのを手伝ってもらえますCANか?
View full article
MIPI-CSI2、IMX8MP 的 ISI 驱动程序混淆 大家好。我希望能得到一些建议。 我正在尝试让 Sony IMX287(全局快门、720x540、单色传感器)与 IMX8MP 配合使用。我根据 imx296 驱动程序为传感器编写了一个新驱动程序——经过修改以支持该传感器并提供 imx8_media_dev 模块所需的焊盘。使用示波器测试摄像机信号(LVDS CLK 和数据、Vsync、Hsync、INCK……全部正确且有效)。 我们正在使用 Lattice FPGA 将传感器的 LVDS 输出转换为 4 通道 MIPI-CSI2。我们在 FPGA 中的 LVDS 摄入和索尼解析方面遇到了一些问题,但我们已经解决了这些问题并获得了一些像素(几条线)。 现在,我在 CSI2 驱动程序(imx8-mipi-csi2-sam)中启用了调试,我们在 FPGA 或 i.mx8 端均未看到该级别的错误(从 CSI2 寄存器转储中看到)。 问题是我们的传感器输出单色 RAW10,但 CSI2 和 ISI 驱动程序似乎不支持这一点。 参考了这里的几个帖子,我修改了驱动程序以支持 Y10_1X10 (RAW10)。v4l2-ctl 可以显示格式的更新列表,当我开始尝试捕获原始图像时,它正确地绕过了 csc,获得了正确的格式,并且 ISI 寄存器中的所有内容都显示正确。但是 MIPI-CSI2 不断出现 FIFO 溢出错误,因此 ISI 似乎没有清空 FIFO。我不确定为什么。但这让我走上了一条令我困惑的道路。 我使用的驱动程序来自 linux/drivers/staging/media/imx 目录(用于获取 imx8_media_dev 模块)。 令我感到困惑的是,我必须在 CSI2 和 ISI 驱动程序中添加对 RAW10 的支持,而其他人多年来也一直不得不这样做。我还对所呈现的内核配置选项感到困惑(并且在 NXPs Yocto 设置中默认选择构建)。linux/drivers/media/platform/imx8 下还有其他驱动程序。有一个 CSI2-YAV“另一个版本”驱动程序。然后在 linux/drivers/media/platform/nxp 下有另一个 csi2 驱动程序和另一个 ISI 驱动程序。这些驱动程序似乎是最近才维护的,并且似乎已经支持 RAW10。但尚不清楚它们是否适用于 8M Plus...或者是否需要构建一些额外的东西来建立链接,就像 imx8_media_dev 驱动程序一样。 有人能解释一下哪些驱动程序是适合/最适合在 IMX8MP 上使用的吗? 有谁知道为什么当我最终让所有驱动程序同意 MBUS 格式和 PIXEL 格式时,ISI 不会清空 CSI2 的 FIFO? 我从其他帖子中得知,问题将是“您为什么不使用 ISP?” 原因如下: 1) 根据移植指南,为 ISP 设置驱动程序看起来非常复杂。 2)我们不需要任何 ISP 功能。我们所需要的是从传感器捕获 RAW10 帧并将它们快速推送到 Gstreamer。所有后续帧处理均在配备 Nvidia GPU 的 PC 上完成。我们必须实现的主要目标是实现高帧率的流式传输能力。 3) 虽然我有一个可以正常工作的 i2c 驱动程序,理论上可以生成 .drv除此之外,还保留了 ISP 所需的相机校准元数据。这不是一件小事,产品的其余部分还没有准备好经历这样的过程(我们也没有时间去做这件事,因为基本上没有任何好处)。 3) 从我迄今为止尝试使用 MIPI 和 ISI 驱动程序时遇到的问题来看,我对 ISP 路由中不会遇到类似问题没有信心。 由于我们不需要 ISP 提供的功能,因此通过 ISI 似乎是最直接的选择。 您有什么想法吗? 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 这没有下载任何东西,所以我不确定它包含什么。有没有我可以查询的 AN 号码? 我已经解决了主要问题。我们现在正在捕获,下一个挑战是防止由于帧速率而导致 v4l2-ctl 或 gstreamer 中丢帧。MIPI 接口似乎可以很好地达到 360fps(并且一旦我们优化了 FPGA,可能可以处理更高的帧速率)。 我看到 v4l2-ctl 报告的帧速率与 CSI 事件的统计数据显示的帧速率相匹配,但是当我尝试捕获到 ramdisk 上的文件时,帧速率下降了 170fps。似乎是 v4l2-ctl 丢帧了...好像它跟不上。Gstreamer 似乎在 100fps 左右达到峰值,但我不知道为什么。此时,我不确定是否是中断太多、内存吞吐量太大,还是用户空间应用程序无法跟上速率。 至于让 RAW10 与 ISI 配合使用,对于其他尝试此操作的人来说,关键是: 1) 为 csi2-sam 和 isi 驱动程序添加对输入和输出格式的支持。这些驱动程序也存在一些错误——一些输出格式被交换,并且垫圈寄存器转储代码双重应用了偏移量,因此它读取了错误的地址。我会看看是否可以提交补丁。 2)将色彩空间设置为COLORSPACE_RAW。我认为有三个地方必须这样做。 3) 请勿使用 32 位/并行模式。RAW10 按 40 位对齐。所以你需要“正常/单像素”模式。 4) ISI 输出格式可以设置为几种不同的格式。如果将其设置为 RAW10,它将左对齐(填充 6 LSB),这通常不是您想要的。将其设置为 RAW16,您将获得正确的输出(16 位像素,高位用零填充)。您可以获得 Y10 输出。如果您添加 GREY 格式支持(Y8),它也可以工作并且与 libjpeg 之类的兼容。Y16 实际上与 Y10 相同。 5) 如果您像我一样进行 FPGA 转换,请确保 FPGA 在 MIPI 成帧器中获取正确的字数。这是我们遇到的另一个问题,由于未对齐而产生 CRC 错误和 FIFO 溢出。 我将把这个问题标记为已解决。 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 建议你可以参考这个AN i.MX 8M系列MIPI采集系统(nxp.com) 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 更新当前状态。我们还没有完全实现这一目标,但已经非常接近了。 事实证明, MIPI_CSIS_ISPCFG_ALIGN_32BIT 和 MIPI_CSIS_CMN_CTRL_HDR_MODE 与该问题无关。 事实上,虽然设置 MIPI_CSIS_ISPCFG_ALIGN_32BIT 似乎有助于缓解 FIFO 溢出,但它实际上导致了数据格式错误并导致了 2 周的挫败感。据我所知,神奇的未记录的“HDR_MODE”位似乎没有什么区别。 我对设备树中的时钟做了一些工作,解决了我们看到的一些 CRC 错误。我尝试了四模式和双模式,因为手册似乎暗示需要其中一种。由于它们似乎与 32 位(“并行”)模式不兼容,因此我将其关闭。我得到了正确的像素数据(在使用 RAW16 的 ISI 格式后...RAW10 左移 6 位,正如手册所解释的那样,它将数据放在字节的 MSB 中...使用 RAW16 可以使其低对齐,这是首选)。通过更好地设置时钟,我可以获得没有 FIFO 溢出或 CRC 错误的图像。但是,四倍模式给了我一个四分之一宽度的图像,其中只有每组 4 个像素中的第一个。双模式给了我一个像素为 0 和 2 的半宽图像。它们是正确的值,只是缺少数据(这解释了为什么图像分别为 1/4 和 1/2 宽度)。手册中对这些模式的解释完全是违反直觉的。这让人相信像 RAW10 这样的东西应该需要四模式。不。您需要“正常”/“单像素”模式。并且时钟速度足够快,可以提取数据。 与 ChatGPT 的对话表明,它对“四像素模式、双像素模式和 32 位模式”的了解比 NXP 文档或我所查看的 MIPI-CSI2 规范中的任何内容都要多。 我仍然需要提高我的时钟以达到我需要的帧速率,但我现在已经取得了一些进展。 我对设备树中的正确时钟设置感到困惑。 我*认为*我需要在“端点”节中包含以下内容: link-frequencies = /bits/ 64 <2376000000>, <1188000000>; //(全速率和半速率模式的总带宽) 最大车道频率=/位/ 64 <297000000>; 最大像素频率 = /位/ 64 <297000000>; // 假设 MIPI-CSI2“像素”为 8 位,即使我们的源像素是 10 位 最大数据速率=/位/ 64 <2376000000>; 目前 mipi-csi 时钟使用默认的 500MHz,APB 时钟使用默认的 200MHz。 我相信我需要将 D-PHY 时钟提高到 1188MHz(在 1.5GHz 最大值以内)。 像素时钟/“包装”时钟...GPT 认为它需要是 1.7GHz(720w * 540h * 437fps * 10bpp)。这超出了 1.5GHz 的最大值,所以我可能需要牺牲一些帧速率。不确定这个数字是否正确...它看起来像是在计算位,而不是像素。因此真正的像素率可能只有 170MHz。 任何有关正确的设备树时钟设置的建议都将受到欢迎。供参考: 传感器为 720x540 活动像素,每通道 297MHz(DDR,因此每通道 594Mbps),4 通道,全速率模式下总带宽为 2.376Gbps。全速率支持高达 437fps。我可以通过调整消隐来降低帧速率。我们的应用程序至少需要 250fps。 感谢您对计时的任何建议,我希望这对其他遇到此问题的人有所帮助。看来 ISI 确实能够引入 RAW10 单色。 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 在mipi csi驱动程序的mipi_csis_set_fmt函数中,你介意打印“mf->code”吗?检查mf->code是否设置为MEDIA_BUS_FMT_SBGGR10_1X10? 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 在isi驱动程序的mxc_isi_cap_g_fmt_mplane函数中 https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/drivers/staging/media/imx/imx8-isi-cap.c#L846 您是否将 V4L2_COLORSPACE_SRGB 更改为 V4L2_COLORSPACE_RAW? 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 我昨晚回复了,不知道为什么现在没有显示。 前一天晚上,在添加了一些额外的调试输出(这与时间有关)并修复了 CSI 驱动程序的垫圈寄存器转储中的一个错误之后,我开始成功地避免了 FIFO 溢出,该错误总是显示所有垫圈寄存器都是零,因为它读取了错误的偏移量(它将偏移量应用于已经包含偏移量的值)。我修复了垫片转储并看到垫片正在获取数据。 收到您的回复后,我禁用了 HDR 位。我注意到设置了一些“保留”位并想知道那是什么。我绝对不需要 HDR 模式。 设置 ISPCFG_ALIGN_32BIT 有很大帮助。我们在 FPGA 中实现了一个简单的梯度测试模式,以暂时从方程中去除实际的 CMOS 传感器。现在,我们看到了渐变,但有两个问题: 1) 这些值左移 6 位(因此看起来 10 位像素数据进入了字的高端而不是低端)。 2)我们有垂直条纹,因为每 5 个像素都是一个与我们的数据不相关的常数值。 #2 令我印象深刻,因为它符合 MIPI 通过在 5 个字节中打包 4 个 10 位像素来发送 RAW10 的模式。根据 MIPI 规范,它通过发送 pixA2-9 pixB2-9 pixC2-9 pixD2-9 后跟由 LSB 组成的第 5 个字节来实现此目的:pA0 pA1 pB0 pB1 pC0 pC1 pD0 pD1。所以看起来这个结构仍然被保存下来。 我认为 MIPI 解码器会将其解码回 10 位像素,并与 16 位字的低位对齐(“Y10 格式”),并且由于我们绕过了 CSC,ISI 会将其直接写入内存。 因此,我们发送的数据如下所示: 0x000 0x004 0x008 0x00c 0x010 0x014 等。我们得到如下数据: 00 00 AA 01 01 02 02 02 03 03 04 00 AA 01 05 02 06 02 07 03 08 00 AA 01 09 02 0A 02 0B 03 0C 00 AA 01 0D 02 0E 02 0F 03 10 00 AA 01 11 02 12 02 13 03 14 00 AA 01 15 02 16 02 17 03 18 00 AA 01 19 02 1A 02 1B 03 1C 00 AA 01 1D 02 1E 02 1F 03 20 00 AA 01 21 02 22 02 23 03 24 00 AA 01 “AA01”字是出现的“第 5 个”字,它导致了图像中出现垂直条纹。您可以看到,如果将单词“0101”,“0202”等右移 6 位,则可以恢复实际发送的数据。 有没有办法避免使用后捕获过滤器?它能正确存储数据吗?您对如何纠正这个问题有什么想法吗? 如果我们需要添加过滤器,我会担心吞吐量。我们打算以低分辨率但高帧率(120fps +)运行。 非常感谢! 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 谢谢。昨晚,在向 ISI 添加了更多调试输出(希望这并不意味着存在时间问题)后,我开始获得一些更真实的数据。此外,CSI 驱动程序的垫圈寄存器转储有一个错误...它读取了错误的偏移量,因此总是显示零。我之前看到过其他人遇到过这个问题并且我发现了原因。 我看到了“保留”设置并想知道它是什么。我绝对不需要设置 HDR 模式。禁用该功能并设置 ISPCFG_ALIGN_32BIT 有很大帮助。 为了进行测试,我们在 FPGA 中实现了一个测试模式,它发送像素数据(如 0x004 0x008 0x00c 0x010 0x014 等)来为线数据生成渐变(从每条线开始)。我们现在得到了一个渐变,但是灰度颜色值发生了变化,并且每 5 个像素就有一条垂直条纹。 上面的数据出来了: 00 00 AA 01 01 02 02 02 03 03 04 00 AA 01 05 02 06 02 07 03 08 00 AA 01 09 02 0A 02 0B 03 0C 00 AA 01 0D 02 0E 02 0F 03 10 00 AA 01 11 02 12 02 13 03 14 00 AA 01 15 02 16 02 17 03 18 00 AA 01 19 02 1A 02 1B 03 1C 00 AA 01 1D 02 1E 02 1F 03 20 00 AA 01 21 02 22 02 23 03 24 00 AA 01 25 02 26 02 27 03 28 00 AA 01 29 02 2A 02 2B 03 2C 00 AA 01 2D 02 2E 02 2F 03 30 00 AA 01 31 02 32 02 33 03 34 00 AA 01 35 02 36 02 37 03 38 00 AA 01 请注意,每 5 个 16 位字都是 0xAA01。如果将其他像素右移 6,那么您就会得到正确的数据。因此看起来好像是将像素对齐到高位,而不是低位。有没有办法修复它而不必在捕获后过滤图像?我们希望以高帧率(>120fps)运行,我担心在软件中移动所有像素会影响我们的性能。此外,每 5 个字为 0xAA01 很有趣,因为据我所知,MIPI 上的 RAW10(格式 0x2b)以 5 字节序列格式化为 pixA2_9 pixB2_9 pixC2_9 pixD2_9 LSB(a0a1b0b1c0c1d0d1)。因此看起来 CSI 接收器可能没有将 MIPI 流重新格式化为 RAW10/Y10 媒体总线格式。 有什么想法吗?谢谢。 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 在 mipi csi 驱动程序中,您是否启用了 MIPI_CSIS_ISPCFG_ALIGN_32BIT?如果没有,请尝试启用此位并尝试删除“val |= MIPI_CSIS_CMN_CTRL_HDR_MODE;” 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 补充说明:我还使用我添加的格式以与现有格式相同的方式更新了 CSI 函数 disp_mix_gasket_config 和 mipi_csis_imx8mp_phy_reset。 回复:MIPI-CSI2 混淆,IMX8MP 的 ISI 驱动程序 谢谢您的回复。 我们处于 6.6-nanbield。 是的,我还为 ISI 添加了对 Y10(RAW10)的支持。 我已经启用调试并且寄存器设置对我来说看起来是正确的。 对于 CSI,我添加到 struct mipi_csis_formats: { .code = MEDIA_BUS_FMT_Y10_1X10, .fmt_reg = MIPI_CSIS_ISPCFG_FMT_RAW10, .data_alignment = 16, } 对于 imx8-isi-fmt.c,在 struct mxc_isi_out_formats 中我添加了: { .name = "Y10 ", .fourcc = V4L2_PIX_FMT_Y10, .depth = { 16 }, .color = MXC_ISI_OUT_FMT_RAW16, // also tried MXC_ISI_OUT_FMT_RAW10 to no avail .memplanes = 1, .colplanes = 1, .align = 3, // question...is this correct? manual shows RAW16 is packed into 32-bit DWORD .mbus_code = MEDIA_BUS_FMT_Y10_1X10, } 到 imx8-isi-cap.c我添加了 struct mxc_isi_src_formats: { .name = "Y10 ", .fourcd = V4L2_PIX_FMT_Y10, .depth = { 16 }, .memplanes = 1, .colplanes = 1, .align = 0, // is this correct? Incoming data is a stream of 10-bit pixels... // align=3 didn't work, align=1? } 我调整了函数 mxc_isi_get_src_fmt 来识别添加的 Y10 格式并选择其关联索引 (2)。 我选择了 RAW16 的 ISI 输出格式,因为我看到另一个帖子说它需要 RAW16 才能工作。无论如何,我尝试了 RAW10,但遇到了同样的 FIFO 溢出问题。 在调试输出中,我看到 csc 被绕过了。它选择了我添加的格式,当使用 v4l-ctrl 进行原始捕获时,它会显示:“绕过 csc”、“输入 fmt Y10”、“输出 fmt Y10”。 CHNL_IMG_CTRL 寄存器为 0x0F000001,表示 CSC 被绕过,RAW16 被打包成 32 位 DWORD。我尝试使用 .align 设置 RAW10 的上述格式= 1(16 位对齐)并得到相同的结果,但 CHNL_IMG_CTRL 为 0x0C000001(CSC 绕过,RAW10 打包成 16 位 DWORD,有 6 个浪费位)。所有寄存器看起来都是正确的,但 CSI2 将所有数据报告为 FIFO 溢出。 我已经检查了我的时钟配置,它们看起来都应该可以工作。 该传感器输出 4 通道 LVDS,每通道 297MHz,DDR。这将转到一个 FPGA,它将每个通道转换为 297MHz 的 MIPI-CSI2 4 通道 DDR。因此比特率为 297M*2(DDR)*4(通道) = 2376Mbps (2.376Gbps)。像素时钟应为 2376000000 / 10(10 位像素)= 237.6MHz。正确的? 据我理解,设备树“时钟频率”参数是“包装”频率,必须超过像素速率。因此默认的 500MHz 应该可以实现这一点,但我尝试将其提高到 1188MHz,甚至达到 2376MHz,但没有任何变化。 奇怪的是,如果我使用驱动程序并允许它默认将数据处理为 RGB,我就会捕获像素数据,但它当然有颜色伪影。 以下是一些输出: root@crow:~# media-ctl -p -d0 媒体控制器 API 版本 6.6.3 媒体设备信息 ------------------------ 驱动程序 mxc-md FSL 型号捕获媒体设备 串行 公交信息平台:32c00000.bus:camera 硬件修订版 0x0 驱动程序版本 6.6.3 设备拓扑 -实体1:mxc_isi.0(16 个垫片,2 个链节) 类型 V4L2 子设备子类型 未知标志 0 pad0:接收器 <-“mxc-mipi-csi2.0”:4[已启用] pad1:水槽 pad2:水槽 pad3:水槽 pad4:水槽 pad5:水槽 pad6:水槽 pad7:水槽 pad8:水槽 pad9:水槽 pad10:水槽 pad11:水槽 pad12:来源 ->“mxc_isi.0.capture”:0[已启用] pad13:来源 pad14:来源 pad15:水槽 - 实体 18:mxc_isi.0.capture(1 个焊盘,1 个链接) 类型节点子类型 V4L 标志 0 设备节点名称 /dev/video0 pad0:接收器 <-“mxc_isi.0”:12[已启用] - 实体 22:mxc-mipi-csi2.0(8 个焊盘,2 个链接) 类型节点子类型 V4L 标志 0 设备节点名称 /dev/v4l-subdev0 pad0:接收器 <-“pregius 1-001a”:0 [已启用,不可变] pad1:水槽 pad2:水槽 pad3:水槽 pad4:来源 ->“mxc_isi.0”:0[已启用] pad5:来源 pad6:来源 pad7:来源 - 实体 31:pregius 1-001a(1 个垫子,1 个链接) 类型 V4L2 子设备子类型传感器标志 0 设备节点名称 /dev/v4l-subdev1 pad0: 源 [fmt:Y10_1X10/720x540 字段:无 色彩空间:原始 传输:无 量化:全范围 crop.bounds:(0,0)/720x540 裁剪:(0,0)/720x540] ->“mxc-mipi-csi2.0”:0[已启用,不可变] root@crow:~# echo 2 > /sys/module/imx8_mipi_csi2_sam/parameters/debug root@crow:~# v4l2-ctl --device /dev/video0 --set-fmt-video width=720,height=540,pixelformat=0x20303159 --stream-mmap --stream-to /tmp/testcap.raw --stream-count 1 [44.026944]isi捕获32e00000.isi:cap_device:mxc_isi_cap_g_选择 [44.033902]isi捕获32e00000.isi:cap_设备:mxc_isi_cap_g_fmt_mplane [44.040720]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.047190]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.053651]isi捕获32e00000.isi:cap_设备:mxc_isi_cap_enum_fmt [44.060126]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.066584]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.073055]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.079514]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.085987]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.092459]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.098917]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.105386]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.111859]isi捕获32e00000.isi:cap_device:mxc_isi_cap_enum_fmt [44.118334]isi捕获32e00000.isi:cap_device:mxc_isi_cap_s_fmt_mplane,fmt=0x20303159 [44.126536]isi捕获32e00000.isi:cap_device:mxc_isi_cap_fmt_try [44.132973]isi捕获32e00000.isi:cap_device:mxc_isi_cap_g_选择 [44.139706]isi捕获32e00000.isi:cap_device:mxc_isi_cap_g_选择 [44.146547]isi捕获32e00000.isi:cap_device:cap_vb2_queue_setup,buf_n=4,大小=777600 [44.156251]isi捕获32e00000.isi:cap_device:cap_vb2_buffer_prepare [44.162904]isi捕获32e00000.isi:cap_设备:cap_vb2_buffer_prepare [44.169552]isi捕获32e00000.isi:cap_device:cap_vb2_buffer_prepare [44.176213]isi捕获32e00000.isi:cap_device:cap_vb2_buffer_prepare [44.182866]isi捕获32e00000.isi:cap_device:mxc_isi_cap_g_fmt_mplane [44.189681]isi捕获32e00000.isi:cap_device:mxc_isi_cap_streamon [44.209431]绕过CSC [44.211807]输入格式Y10 [44.214515]输出格式Y10 [44.217372]isi捕获32e00000.isi:cap_device:cap_vb2_start_streaming [44.224546]isi捕获32e00000.isi:cap_device:cap_vb2_start_streaming:num_plane=0 丢弃_size=778240 丢弃_buffer=0000000087eba1c1 [44.236925]mxc-isi_v1 32e00000.isi:ISI CHNLC 寄存器转储,isi0 [44.243124]mxc-isi_v1 32e00000.isi:通道控制[0x00]: e0000000 [44.249949]mxc-isi_v1 32e00000.isi:CHNL_IMG_CTRL[0x04]: f000001 [44.256676]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF_CTRL[0x08]: 7c707 [44.263226]mxc-isi_v1 32e00000.isi:CHNL_IMG_CFG[0x0c]: 21c02d0 [44.269950]mxc-isi_v1 32e00000.isi:通道IER[0x10]: 3cfc0000 [44.276760]mxc-isi_v1 32e00000.isi:通道STS[0x14]: 100 [44.283130]mxc-isi_v1 32e00000.isi:通道比例因子[0x18]: 10001000 [44.289941]mxc-isi_v1 32e00000.isi:通道比例偏移[0x1c]: 00 [44.296254]mxc-isi_v1 32e00000.isi:通道裁剪_ULC[0x20]: 00 [44.302553]mxc-isi_v1 32e00000.isi:通道裁剪_LRC[0x24]: 00 [44.308839]mxc-isi_v1 32e00000.isi:CHNL_CSC_COEFF0[0x28]: 00 [44.315129]mxc-isi_v1 32e00000.isi:CHNL_CSC_COEFF1[0x2c]: 00 [44.321412]mxc-isi_v1 32e00000.isi:CHNL_CSC_COEFF2[0x30]: 00 [44.327698]mxc-isi_v1 32e00000.isi:CHNL_CSC_COEFF3[0x34]: 00 [44.333984]mxc-isi_v1 32e00000.isi:CHNL_CSC_COEFF4[0x38]: 00 [44.340270]mxc-isi_v1 32e00000.isi:CHNL_CSC_COEFF5[0x3c]: 00 [44.346559]mxc-isi_v1 32e00000.isi:通道ROI_0_ALPHA[0x40]: 00 [44.352847]mxc-isi_v1 32e00000.isi:通道ROI_0_ULC[0x44]: 00 [44.359133]mxc-isi_v1 32e00000.isi:通道ROI_0_LRC[0x48]: 00 [44.365416]mxc-isi_v1 32e00000.isi:通道ROI_1_ALPHA[0x4c]: 00 [44.371716]mxc-isi_v1 32e00000.isi:通道ROI_1_ULC[0x50]: 00 [44.378001]mxc-isi_v1 32e00000.isi:通道ROI_1_LRC[0x54]: 00 [44.384318]mxc-isi_v1 32e00000.isi:通道ROI_2_ALPHA[0x58]: 00 [44.390618]mxc-isi_v1 32e00000.isi:通道ROI_2_ULC[0x5c]: 00 [44.396910]mxc-isi_v1 32e00000.isi:通道ROI_2_LRC[0x60]: 00 [44.403201]mxc-isi_v1 32e00000.isi:通道ROI_3_ALPHA[0x64]: 00 [44.409486]mxc-isi_v1 32e00000.isi:通道ROI_3_ULC[0x68]: 00 [44.415772]mxc-isi_v1 32e00000.isi:通道ROI_3_LRC[0x6c]: 00 [44.422058]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF1_ADDR_Y[0x70]: c4900000 [44.428861]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF1_ADDR_U[0x74]: 00 [44.435148]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF1_ADDR_V[0x78]: 00 [44.441432]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF_PITCH[0x7c]: 5a0 [44.447807]mxc-isi_v1 32e00000.isi:通道输入缓冲区地址[0x80]: 00 [44.454093]mxc-isi_v1 32e00000.isi:通道输入缓冲区间距[0x84]: 00 [44.460376]mxc-isi_v1 32e00000.isi:通道内存读取控制[0x88]: 00 [44.466659]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF2_ADDR_Y[0x8c]: c4500000 [44.473464]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF2_ADDR_U[0x90]: 00 [44.479753]mxc-isi_v1 32e00000.isi:CHNL_OUT_BUF2_ADDR_V[0x94]: 00 [44.486054]mxc-isi_v1 32e00000.isi:CHNL_SCL_IMG_CFG[0x98]: 21c02d0 [44.492784]mxc-isi_v1 32e00000.isi:通道流控制[0x9c]: 00 [44.530380] pregius 1-001a:将 VMAX 设置为 586 [44.535304] pregius 1-001a:将 HMAX 设置为 1100 [44.564485]isi捕获32e00000.isi:cap_device:mxc_isi.0.capture 没有 v4l2 子设备 [44.572275]isi捕获32e00000.isi:cap_device:mxc_isi_cap_g_fmt_mplane [ 44.600285] systemd-journald[131]: /dev/kmsg 缓冲区溢出,一些消息丢失。 [ 44.608024] systemd-journald[131]: /dev/kmsg 缓冲区溢出,一些消息丢失。 [ 44.615547] systemd-journald[131]: /dev/kmsg 缓冲区溢出,一些消息丢失。 ^C[ 46.807024] isi-捕获 32e00000.isi:cap_device:mxc_isi_cap_streamoff [46.807033]isi捕获32e00000.isi:cap_device:cap_vb2_stop_streaming [46.820957]MXC-MIPI-CSI2.0:帧结束事件:1 [46.825576]MXC-MIPI-CSI2.0:帧开始事件:1 [46.830366]MXC-MIPI-CSI2.0:奇数帧事件后的非图像数据:0 [46.836806]MXC-MIPI-CSI2.0:奇数帧事件之前的非图像数据:0 [46.843331]MXC-MIPI-CSI2.0:偶数帧事件后的非图像数据:0 [46.849858]MXC-MIPI-CSI2.0:偶数帧事件之前的非图像数据:0 [46.856470]MXC-MIPI-CSI2.0:未知错误事件:0 [46.861432]MXC-MIPI-CSI2.0:CRC 错误事件:0 [46.866220]MXC-MIPI-CSI2.0:ECC 错误事件:0 [46.870835]MXC-MIPI-CSI2.0:FIFO 溢出错误事件:141304 [46.876752]MXC-MIPI-CSI2.0:丢失帧结束错误事件:0 [46.882323]MXC-MIPI-CSI2.0:丢失帧起始错误事件:87 [46.888156]MXC-MIPI-CSI2.0:SOT 错误事件:0 [46.892851]isi捕获32e00000.isi:cap_device:mxc_isi.0.capture 没有 v4l2 子设备
View full article
LS1046A 的布局阻抗详情 您好, LS1046A 的串行信号推荐阻抗是多少? Serdes 包括 PCIe SATA SGMII 此致, 拉什米-赫达 Re: Layout Impedance Details for LS1046A 数据表中提到了接收阻抗,客户可以参考,如果您在谈论任何其他阻抗,请与我们联系。 Re: Layout Impedance Details for LS1046A 文件未对 SGMII、PCIe 和 SATA 进行具体定义。 一般 PCIe 为 85 欧姆,SATA 和 SGMII 为 100 欧姆。这样可以吗? Re: Layout Impedance Details for LS1046A 详情请参考以下文件。 https://www.nxp.com.cn/docs/en/application-note/AN5252.pdf
View full article
i.MX8/9 の Apple CarPlay Ultra こんにちは、 i.MX8 または i.MX9 シリーズ プロセッサで Apple CarPlay Ultra のサポートが計画されていますか?もしSOなら、予想されるタイムラインは何ですか? i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus Re: Apple CarPlay Ultra on i.MX8/9 これはプロサポートチームから得た情報です。また、プロサポートのメンバーの1人がApple CarPlay Ultraについて次のように話していました。 「現時点ではサポートしていませんし、FUTURE的にもサポートする予定はないと思います。これはアナ・ワーシー氏から始まる議論です。」
View full article
ADC startup time for S32K3 I'm using S32K3 ADC, and my test found that it takes about 30ms from powering up to initialize the ADC, performing calibration, turning on conversion, and completing the acquisition for the first time, is this normal? How to shorten this time? Re: S32K3的ADC启动时间 Hi RTD Quality packages的ProfileReport.xlsx列了各个APIs的执行时间。 (比如...\SW32K3_S32M27x_RTD_R21-11_5.0.0 _D2410_QualityPackage\ADC\RTD_ADC_ProfileReport.xlsx) 建议检查一下具体是哪个函数的执行时间过长导致的。 另外请问Adc_Calibrate的返回结果是什么?如果超时了的话,建议修改超时设置: ADC校准建议 超时时间设置.png Adc Timeout Value.png Best Regards, Robin ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "ACCEPT AS SOLUTION" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
View full article
S32K144:在 lin_master_s32k144 (S32DS.ARM2.2) 中集成 FlexCAN 早上好: 目前使用 S32K144EVB 板准备系统演示,其中我们必须管理 1 个经典的 CAN-HS 网络 (500k) 和 3 个 LIN。(19200,每个 LIN 有多个从属设备) k144EVB 板将充当 3 个 LIN 的 LIN 主控器,这就是为什么我选择 lin_master_s32K144 示例作为起点。LINStACK 运行正常,现在我开始检查 CAN 通信与项目的集成情况。通过查看 S32K144 文档和示例,我发现 K144 有 2 种不同的 CAN 通信管理方法......要么通过 FIFO,要么通过 MBs......不清楚其中一种方法的优势。对于必须接收 4-5 条 CAN 报文、处理部分内容数据并定期发送 1 或 2 条 CAN 报文的系统而言,不清楚其中一种方式的优势: 1) 考虑到我的 LIN 主站将满负荷运行,哪种配置更容易使用? 2) 恩智浦 linstack 与 FlexCAN 集成之间是否会出现寄存器/时钟/中断冲突? 3) 是否有这样的集成示例(LIN-MASTER + CAN-HS)? Re: S32K144: Integration of FlexCAN inside lin_master_s32k144 (S32DS.ARM2.2) 你好@rricart LIN 和 CAN 之间没有任何关系,它们是两个独立的外设模块。 对于 S32K1 FlexCAN,CAN FIFO 不支持 CAN FD,因此需要考虑是否需要支持 CAN FD。 如果您的项目不需要 CAN FD 功能,那么 MB 或 FIFO 都可以。 您可以参考此链接中提供的演示,其中对使用 FlexCan 的不同方式进行了分类,并提供了一个简单的测试演示。 https://community.nxp.com/t5/S32K-Knowledge-Base/S32K1xx-FlexCAN-Mask-Setting-Demo/ta-p/1519753
View full article
I.MX 93 FRDM 在 hello_world 上崩溃 你好 我下载的版本是: https://github.com/nxp-real-time-edge-sw/heterogeneous-multicore/tree/main(v2.9-202407) 当我启动它时,它会运行几秒钟,然后总是在同一个地方崩溃(这会 RESET 我的 u-boot)。请看截图。总是在同一个地方崩溃正常吗? 致以最崇高的敬意 Techar_0-1761321106003.png Techar_1-1761321135687.png Re: I.MX 93 FRDM crashes on hello_world 回复,这里 有预建版本: (Linux 6.12.34_2.1.0):https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX 我使用 UUU 闪存 FRDM-IMX93。 然后停止 linux 启动进入 u-boot,然后输入以下命令: fatload mmc 1:0 0xD0000000 hello_world_ca55_RTOS0_UART2.bin dcache flush; icache flush; cpu 版本 1 0xD0000000 fatload mmc 1:0 0xD1000000 hello_world_ca55_RTOS1_UART1.bin dcache flush; icache flush; 转到 0xD1000000 然后它就可以正常工作了!! 那么,你能否研究一下如何使用我的 FRDM-IMX93 工具链版本 u-启动 以及用 UUU 刷机的脚本? 问候, Re: I.MX 93 FRDM crashes on hello_world 您好, 首先,我今天更换了版本的 heterogeneous-multicore v3.2-202507 那么结果也是一样的。 以下是如何生成 hello_world 版本示例的步骤: unzip ./CMSIS_5-Real-Time-Edge-v3.2-202507.zip unzip ./FreeRTOS-Kernel-Real-Time-Edge-v3.2-202507.zip unzip ./heterogeneous-multicore-Real-Time-Edge-v3.2-202507.zip unzip ./lwip-Real-Time-Edge-v3.2-202507.zip 拉开拉链。/mcuxSDK-中间件-多核实时边缘 v3.2-202507.zip unzip ./mcux-sdk-Real-Time-Edge-v3.2-202507.zip unzip ./rpmsg-lite-Real-Time-Edge-v3.2-202507.zip unzip ./soem-Real-Time-Edge-v3.2-202507.zip mv ./FreeRTOS-Kernel-Real-Time-Edge-v3.2-202507 ./FreeRTOS-Kernel mv ./heterogeneous-multicore-Real-Time-Edge-v3.2-202507 ./heterogeneous-multicore mv ./mcux-sdk-Real-Time-Edge-v3.2-202507 ./mcux-sdk mv ./CMSIS_5-Real-Time-Edge-v3.2-202507 ./mcux-sdk/CMSIS mkdir 中间件 mv./mcuxSDK-middleware-Multicore-Real-time-time-Edge-v3.2-202507。/中间件/多核 mv。/lwip-Real-time-Edge-v3.2-202507。/中间件/lwip mv。/rpmsg-Lite-Real-time-Edge-v3.2-202507。/中间件/多核/rpmsg_lite mv。/soem-Real-time-edge-v3.2-202507。/中间件/soem echo 如果没有错误 = 安装成功,请尝试安装 ... echo for a cores : cd ./heterogeneous-multicore export armgcc_dir=~/toolchains/arm-GNU-Toolchain-12.2.rel1-x86_64-aarch64-aarch64-none-elf/ 。/build_apps.sh a-core mcimx93evk_ca55 freertos echo 适用于我的内核:导出 armgcc_dir=~/toolchains/arm-GNU-Toolchains/arm-GNU-Toolchain-12.2.rel1-x86_64-arm-none-eabi/。 /build_apps.sh m-core mcimx93evk_cm33 freertos echo 让我们清理干净...:。 /build_apps.sh clean echo 完成了 所以,如果你想要链接 : https://github.com/nxp-real-time-edge-sw/heterogeneous-multicore/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-mcuxpresso/mcux-sdk/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-mcuxpresso/FreeRTOS-Kernel/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-mcuxpresso/lwip/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-mcuxpresso/mcuxsdk-middleware-multicore/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-mcuxpresso/rpmsg-lite/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-real-time-edge-sw/soem/releases/tag/Real-Time-Edge-v3.2-202507 https://github.com/nxp-mcuxpresso/CMSIS_5/releases/tag/Real-Time-Edge-v3.2-202507 那么为此版本就没问题了: Techar_0-1761578771125.png 上传 .bin在 imx93 上,我使用 SD 卡直接从电脑写入图像,然后将我的 SD 插入评估板。 在这里,我可以看到我的图像 : Techar_1-1761578936367.png 然后你看到的是 u-boot。 这是仓库:https://github.com/u-boot/u-boot/releases/tag/v2025.10 然后我也下载了这个: https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.21.bin https://github.com/nxp-imx/imx-atf/tree/lf_v2.8 https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-sentinel-0.11.bin 我使用此文档进行: https://docs.u-boot.org/en/latest/board/nxp/imx93_frdm.html 但在这里,我使用我的工具链来执行这 2 条命令: make plat=imx93 cross_compile=/HOME/tocuille/Toolchains/arm-GNU-Toolchain-12.2.rel1-x86_64-aarch64-none-elf/bin/aarchain64-none-elf-bl31 和 : $ export CROSS_COMPILE=/home/tcouille/toolchains/arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-elf/bin/aarch64-none-elf- $ make imx93_frdm_defconfig $ make 然后,我使用 UUU ::https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.201 然后输入 : ./uuu -v -b emmc_all .\flash.bin 输入以下命令在 2 Cortex-A 上用上市 2 hello_world 示例: fatload mmc 1:0 0xD0000000 hello_world_ca55_RTOS0_UART2.bin dcache flush; icache flush; cpu 版本 1 0xD0000000 fatload mmc 1:0 0xD1000000 hello_world_ca55_RTOS1_UART1.bin dcache flush; icache flush; 转到 0xD1000000 几秒钟后,u-boot 正在重置... Techar_2-1761579772747.png 谢谢、 Re: I.MX 93 FRDM crashes on hello_world 你好 你能试试这个板上的脚本吗: mcimx93evk_ca55 您测试的是哪个版本的 uboot,我将尝试在此重现。 此致敬礼
View full article
今天宣布了两个 ColdFire 系列 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 如果你错过了... 今天飞思卡尔宣布了两个新的ColdFire系列。这两个系列,MCF5222x和MCF5223x(没错,五位数的零件号)与MCF5211/2/3密切相关。 MCF5223x (x=0-5) 系列设备是具有集成以太网接口 (FEC) 和片上以太网物理层 (PHY) 的单芯片解决方案。以下是超集设备的链接: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF52235& nodeid=01624 68rh3ytlc00m98090 MCF5222x(x=1,3)系列设备是单芯片设备,具有集成的USB主机和On-The-Go(OTG)控制器。以下是超集设备的链接: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF52223&nodeId=0162468rH3YTLC00M98145 留言由 mnorman 在04-04-2006 12:22 PM编辑 概述 Re: Two ColdFire Families Announced Today 遗憾的是,研讨会目前仅限于美洲地区。看来 9 月左右可能会在我目前居住的日本苏黎世举办一次。所以,一旦有演示板可用,我就会尝试买一个。由于演示板的用户群比开发板大(至少对于演示板而言,我有很多与演示板的联系人,但与开发板的联系几乎没有),因此我们更愿意支持它。实际上,我们有六个不同的项目是使用演示板进行原型设计的,因为它的外壳和电源很可爱,可以让客户在板到达这里之前一直使用它。 Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好 Marc, M52233DEMO 板因符合 ROHS 规定而受到阻碍。但是,您可以联系代理商订购不符合 ROHS 要求的 M52230DEMO 板。 Ed Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 那么,除研讨会外,M52233DEMO 何时上市?我注意到这些手册可以在 AXMAN Manufacturing 的网站上找到,但那些人似乎也没有出售板... ... 而且我想要它! Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢你,马克。回答得好! Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,汤姆   UTasker 每个 tcp 套接字需要大约 54 字节的内存,一个 http 会话需要大约 40 字节的内存。(一个 http 会话需要一个 TCP 套接字,http 会话的数量由 #define NO_OF_HTTP_SESSIONS 定义)。例如,这意味着 4 个并行 http 会话将需要大约 376 字节的 SRAM。 我之所以说 "大约",是因为有许多 TCP 设置会对其产生轻微影响(例如,是否要支持 MSS、窗口等)。   不过,网络服务器的情况比较特殊,因为当需要执行重复操作时,可以重构信息(由于可以在需要时重构传输的数据,即使是动态生成的数据,因此没有必要备份)。源文件基本上保存在文件系统中,可根据需要提取)。   其他 TCP 协议的特性可能大相径庭--一个很好的例子就是从串行端口接收的数据通过 TCP 连接发送的应用。在这种情况下,必须在本地对数据进行缓冲,只有在知道数据已成功传送时才删除数据。如果需要重读,则必须仍可重读,否则将无法重读。第二种相当类似的情况是,代码中的调试信息被格式化到 TCP 连接(该连接用作某种调试输出,通常通过串行端口完成)。在这种情况下,发送数据会被随机放入输出缓冲区,而且必须一直保存到完全发送为止,因为如果需要重复发送,代码无法重建这些信息。   对于第二种情况,uTasker允许使用传输缓冲区单独安装TCP套接字,每个套接字的缓冲区可根据应用程序的要求由用户定义。然后,TCP 代码会以透明方式接管缓冲区的管理工作。当然,这个缓冲区会占用内存......对于 Telnet 调试来说,我发现这个套接字的缓冲区大约为 2.5 千,是性能和舒适度之间的一个很好的折中(当然,每个使用的套接字都需要自己的缓冲区......)。当缓冲区满时(队列中的 TCP 帧尚未送达),流量控制就会启动,吞吐量就会明显降低--希望只是短时间的,但还是很明显[例如,串行端口情况下必须断开 CTS 或发送 XOFF,直到有更多位置可用]。   因此,在一般情况下,内存使用率的答案并不容易回答,它总是取决于应用程序的个别要求和所使用的协议,但最好是至少能方便地进行配置和控制。浏览http://212.254.22.36上的 uTasker 演示,查看管理员网页。它会显示堆栈和堆的最差内存使用情况。如果你远程登录到它 " telnet 212.254.22.36 " 或 ftp 它,你可以看到堆大小将发生变化(略有增加)(命令管理员端 RESET 设备以便它事先重新启动-只有在实际需要时才会占用内存,因此该值将增长到最大值。之后,你就可以确信它再也不需要更多了。)此外,uTasker 还支持动态堆大小分配,因此可以根据实际需求轻松优化可用堆,甚至可以自动进行多重配置。   除了讨论的内存使用(动态)之外,还有一些基本的代码内存要求(静态)。例如,tcp 和 http 需要 3 个响应点。无论使用多少会话,都会增加 60 字节的静态 RAM。uTasker 教程中对静态 FLASH 和 RAM 的大小进行了比较,请参见以下文件的第 16 页。(所使用的编译器也相当关键......!)。 http://www.mjbc.ch/documents/uTasker/NE64/uTaskerV1.2-Tutorial.PDF Coldfire 的 FLASH 要求增加了大约 80%(不幸的是),这是因为它是一台 32 位机器,指令更长,但是 Coldfire 演示应用程序的大小仍然只有大约 50k,这表明可以向 M5223X 打包很多东西...(在 16 位设备或 ARM 上,在 Thumb 模式下占用大约 24k)   此致   Mark www.mjbc.ch   Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好, 马克,你能告诉我在以下两种情况下,utasker 和 tcp/ip 堆栈使用了多少 32k 内存: 1.无活动 tcp 连接 2.一个活动的 tcp 连接。如果缓冲区大小可以配置,最小/最大值是多少? 有人知道 Interniche Rtos/stack 的这些数字是多少吗? 我问这个问题的原因是比方说,我正在运行一个使用 rtos 和 tcp/ip 协议栈创建网络服务器的应用程序。当客户端连接网络浏览器时,会建立一个 tcp 连接,该连接需要一定的内存来维持(直到网络服务器关闭为止)。我需要确保我的应用程序不会使用过多的内存,以便 tcp 协议栈在需要时有足够的空间。 下一个合理的步骤是同时支持 2 个 TCP 连接。一个连接用于执行实际产品功能(例如数据记录),另一个连接用于 Web 服务器处理设备的配置。有时,设备可以正常运行,用户会同时访问 Web 服务器。这需要足够的资源来同时进行 2 个 TCP 连接。 谢谢, Tom Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,雅各布 不我没试过 Interniche 堆栈但我设法将我们的 uTasker 移植到新设备上。 请参见以下在线演示: http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&message.id=274 如果你想看到它在你的演示板上运行,你可以从这里加载演示项目(它有网络服务器、ftp、telnet 和 smtp)。 http://www.mjbc.ch/software/uTasker/M5223X/uTaskerV1.2beta005_m5223X.s19 对于教育和业余爱好,可以免费使用它,包括免费的电子邮件支持,附带操作系统、TCP/IP 堆栈和 M5223X 模拟器——整个项目在 PC 上实时运行,可以在真实网络中进行测试,在真实网络中看不出它是模拟器而不是真实设备在运行。它可以节省大量的项目开发时间,因为在转到真正的目标之前,可以对完整的应用程序进行编码和测试,而且内部的冷火外设也是模拟的,因此低级调试非常方便。 干杯 Mark Butcher www.mjbc.ch Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马克, ,你是否尝试过来自 interniche 的 tcp/ip 协议栈? http://www.freescale.com/files/32bit/doc/support_info/ColdFire_Lite_Doc.zip 我正在利用 demoboard 学习文凭课程。 问候 jakob Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 主持人好   也许你能给我一些提示,解决我现在遇到的问题: 我收到了 M52235EVB。它随附一张 CD,内含用于 Coldfire 的 GNU 编译器。我想做一个 GNU 项目(以及 CodeWarrior)。 我认为光盘是错误的,因为它只有旧版 Coldfire 的手册和工具,但我认为我可以从飞思卡尔网站上下载所有内容。此外,从光盘上安装 GNU 编译器也不成功--由于缺少一个 DLL(至少错误信息是这么说的),编译器无法工作,每次都会挂起。我下载了 GNU 4.1.0Coldfire 的二进制文件,这是最新版本。   1.我可以编译我的源代码,但我不知道如何在链接时控制它。在使用 HCS12 时,我使用了一个名为 memory.x 的文件来控制内存,但 Coldfire 似乎没有使用这个文件。   2.链接器总是抱怨找不到入口符号 _start。我的 HCS12 项目在矢量表中定义了这一点,但我认为某些启动代码中缺少这一点,因为我也有一个类似的矢量表--虽然我还不知道它是否以同样的方式使用(?)   3.我在 GCC 文档中读到,应该为 coldfire 定义 mcpu=5200,但这只会导致错误。我发现 mcpu=5208 可以工作,但不知道对这种 Coldfire 类型是否正确。   4.我似乎找不到任何关于冷火的链接文档。 是否有任何示例项目可以提供帮助?   提前感谢您的帮助!   此致   马克-布彻 www.mjbc.ch Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 主持人好 遗憾的是,这些研讨会目前只在美洲地区举办。 我似乎听说,我所在的瑞士苏黎世很可能在 9 月左右举行一次会议。因此,我会看看能否在演示板上市后立即抢购。我们更愿意支持演示板,因为用户群必须大于 EVB(至少 DEMO9S12NE64 就是这种情况 —— 我有很多联系过,但与 EVB 的联系几乎没有 —— 我们甚至有六个不同的项目是用演示板制作的,因为它的外壳和电源很可爱,甚至适合在客户主板到货之前赠送给客户...) 此致 Mark Butcher www.mjbc.ch Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Marc, 开发板和演示板都将配备 InterNiche 的 " ColdFire TCP/IP Lite "。有关此堆栈的更多信息,请参见以下链接: http://www.freescale.com/files/32bit/software/protocol_stacks/COLDFIRE%20TCPIP%20LITE.zip Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嘿 Mark, M52235EVB 今天向公众开放,低成本的 M52233DEMO 板将很快向公众上市,但可以通过即将举行的研讨会更快地获得。请阅读下文: 即将推出:M52233DEMO,M52235EVB 的超低成本版本。报名参加飞思卡尔 ColdFire 以太网系列讲座,成为首批使用这种低成本、全功能开发工具的人。该板将于5月下旬或6月初向公众开放。 要报名参加研讨会,请点击以下链接: http://www.freescale.com/files/abstract/overview/TSP_8870_COLDFIRE_LP.htm?tid=tcRDck Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这些演示板附带什么样的 TCP/IP 软件? Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> HI 我想订购新的演示板,但没有找到它的链接。如果是,如何订购? 我们支持带有uTasker操作系统和集成TCP/IP堆栈的NE64已有一年左右的时间了,升级对带有以太网的新Coldfire设备的支持似乎是合乎逻辑的。适用于 NE64 的 uTasker V1.2 目前正在版本中,其中包括免费的串行调试器和用于将 DEMO9S12NE64 转换为支持局域网的 BDM 的软件。有在线演示——网络摄像头参见 http://212.254.22.36:8080;在线设备参见 http://212.254.22.36 和 http://212.254.22.36:8081(使用 ADMIN/AL6000S 和 anon /anon resp 登录)。基于网络的简单 NE64 BDM 在线http://212.254.22.36:8083,也可使用匿名/匿名登录。 uTasker 环境包括一个独特的芯片模拟器,可在 PC 上进行几乎完全实时的开发和调试。它可免费用于教育和非商业目的,并提供免费电子邮件支持--任何感兴趣的人都可以联系我申请。 有一个新的完整项目,其中包含 NE64(计划升级为支持 Coldfire)的教程,展示了强大的 FTP 和 HTTP 功能。如果飞思卡尔(Freescale)公司的人直接与我联系并提供电子邮件地址,我将根据教育许可证发送一份拷贝供您评估--您可能会对它的功能大吃一惊.....![仿真环境需要 VisualStudio 6.0 或更高版本,并可编译至目标]。 干杯 Mark Butcher ww.mjbc.ch Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> airswit 写道: 有没有可能与 5213 兼容?我正在围绕这个控制器设计一台单板计算机,但也不介意 USB 或以太网连接。另外,是否有消息说何时可以提供样品/购买? 或多或少。USB OTG 版本(MCF52221 和 MCF52223)采用 64 引脚 LQFP/QFN 5211/2/3 基底面,但 16 位定时器引脚 GPT[3:0] 由 USB_DPLS、USB_DMNS、USB_VDD 和 USB_VSS 代替。 这同样适用于这些相同系列的81球MAPBGA版本,唯一的不同是缺失的GPT引脚现在取代了专用的PWM引脚。PWM 可作为 GPT 的第二功能使用,与 5211/2/3 一样。 由于 MCF5211/2/3 上的 PWM 引脚和 GPT 引脚是交错排列的,因此 100 引脚 LQFP 就比较麻烦。GPT 引脚仍然取代 PWM 引脚(81 球 MAPBGA 就是这种情况),但它们已经上下移动,在它们之间插入 4 个专用的 USB 引脚。 最后一个花絮:MCF52221/3 采用 48 MHz 晶体来为系统 PLL 和 USB 提供参考。这是对 MCF5211/2/3 的改动。 顺便提一下,以太网部件(MCF5223x)是为嵌入 80 引脚和 112 引脚的 9S12NE64 基底面而设计的,但两者之间的差异更大一些(S12 BDM 与 ColdFire BDM 相比,S12 SCI 没有流量控制与 ColdFire UART 的流量控制相比,等等)。 留言由 jwbodnar 于04-06-200602:37 PM编辑 Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 有关样品供应情况的更多信息,请参阅以下新闻稿: http://biz.yahoo.com/bw/060404/20060404005598.html?.v=1 定价和供货情况 MCF5223x 现已按样品数量提供,计划于 2006 年底量产。MCF5222x 样品计划于 2006 年 6 月推出,2006 年下半年量产。MCF5222X 设备以 10,000 片为单位的建议转售价格为5.49美元(美元),MCF5223X 设备的建议转售价格为7.99美元(美元)。 M52233DEMO 演示板现已上市,建议转售价为 99 美元(美元)。M52235EVB 评估板的建议转售价为 299 美元(美元)。 MCF5213 与 MCF522xx 引脚兼容性事实上 我知道以太网设备 M5223x 与 M5213 的引脚间不兼容,而是与 MC9S12NE64 的引脚兼容。另一方面,USB 设备 M5222x 的引脚与 MCF5213 类似。主要区别在于驱动 USB 信号的引脚。参见数据表第 15 页: http://www.freescale.com/files/32bit/doc/data_sheet/MCF52223DS.pdf Re: Two ColdFire Families Announced Today <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 是否有可能与 5213 兼容?我正在围绕这个控制器设计一台单板计算机,但也不介意 USB 或以太网连接。另外,是否有消息说何时可以提供样品/购买?
View full article
i.Mx8MP:启动动画后,Android 14.1.2.0 电路板支持包中的 ENG 版本无法渲染 GUI 你好 我们已经使用用户调试版本(安卓 14.1.2.0 电路板支持包)测试了我们的硬件,所有接口都能正常工作。但是,在 eng 版本中,启动动画之后 GUI 无法完全呈现——屏幕保持黑色。userdebug 和 eng 版本的完整源代码是相同的。 启动动画开始时会出现重复的日志打印。 [43.895856][ T1] 启动:控制信息:Could not find 'aidl/activity' for ctl.interface_start from pid: 210 (/system/bin/servicemanager) [ 43.913409][ T685] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)试图将 aidl 服务活动作为懒服务启动,但无法启动。通常这种情况发生在未安装服务的情况下,但如果服务是作为懒人服务使用的,则可能是配置不正确。 [ 44.895921][ T210] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)由于无法找到 "activity",因此尝试将其作为懒惰的 AIDL 服务启动。(如果未配置为懒惰服务,则可能会卡住启动或仍在启动)。 [ 44.939268][ T1] 启动:控制信息:Could not find 'aidl/activity' for ctl.interface_start from pid: 210 (/system/bin/servicemanager) [ 44.955168][ T687] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)尝试将 aidl 服务活动作为懒服务启动,但无法启动。通常这种情况发生在未安装服务的情况下,但如果服务是作为懒人服务使用的,则可能是配置不正确。 [ 45.935838][ T210] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)由于无法找到 "activity",因此尝试将其作为懒惰的 AIDL 服务启动。(如果未配置为懒惰服务,则可能会卡住启动或仍在启动)。 [ 45.963901][ T1] 启动:控制信息:Could not find 'aidl/activity' for ctl.interface_start from pid: 210 (/system/bin/servicemanager) [ 45.979228][ T688] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)尝试将 aidl 服务活动作为懒服务启动,但无法启动。通常这种情况发生在未安装服务的情况下,但如果服务是作为懒人服务使用的,则可能是配置不正确。 [ 46.963765][ T210] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0) 由于无法找到 "activity",因此尝试将其作为懒惰的 AIDL 服务启动。(如果未配置为懒惰服务,则可能会卡住启动或仍在启动)。 [ 46.987934][ T1] 启动:控制信息:Could not find 'aidl/activity' for ctl.interface_start from pid: 210 (/system/bin/servicemanager) [ 47.000965][ T689] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)尝试将 aidl 服务活动作为懒服务启动,但无法启动。通常这种情况发生在未安装服务的情况下,但如果服务是作为懒人服务使用的,则可能是配置不正确。 [ 47.987624][ T210] servicemanager:调用者(pid=463,uid=1041,sid=u:r:audioserver:s0)由于无法找到 "activity",因此尝试将其作为懒惰的 AIDL 服务启动。(如果未配置为懒惰服务,则可能会卡住启动或仍在启动)。 此电路板支持包中的工程版本需要进行任何具体更改吗? 致以最崇高的敬意, Maruti Naik Android 图形与显示 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 感谢您的更新。 请确认一下,你能在 ENG 模式下完全启动到 Android GUI(主屏幕)吗? 如果你能分享设置 > System > About > 内部版本号的屏幕截图以供参考,那将很有帮助。 顺祝商祺! Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 您指的是哪个图形用户界面?我可以在 ENG 模式下使用 GPU 加速启动安卓动画。 此致 Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 感谢您确认版本。 澄清一下——你能否确认在使用工程模式二进制文件时 GUI 加载/渲染是否正确? 此致 Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 是的,它在 EVK 中版本得很好。 此致 Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 亲爱的@Bio_TICFSL 感谢您的澄清。 是的,我知道优化的代码在使用ENG版本时表现更好,但是两个版本的功能都应该可用。 你能否确认一下,在运行 Android 14 和 en g 版本的 i.MX8MP EVK 上,GUI 是否可以正常呈现而没有任何问题? 顺祝商祺! Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 是的,我确认当您使用 ENG 时,您的代码会得到更好的优化,但在两种选择下,您应该都能使用它。 此致 Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 我多次尝试闪存 eng 图像,但问题依然存在。 有趣的是,在 userdebug 版本中,相同的日志消息出现大约 4-5 次,然后停止,之后 GUI 成功呈现。但是,在 eng 版本中,这些消息不断循环出现,GUI 永远不会完全加载。 请确认在eng 模式下是否有任何特定配置或限制会影响图形用户界面的渲染? Re: i.Mx8MP : GUI Not Rendering with ENG Build in Android 14.1.2.0 BSP After Boot Animation 你好 最好重新版本然后烧掉你的板然后再试一次,因为 Android 开发中的 " 找不到 “aidl/activity” " 错误可能表明编译系统无法在 aidl 目录结构中找到名为 act ivity 的 AIDL 文件 。 这通常意味着 AIDL 文件或目录结构缺失或配置不正确。 要解决此问题,请确保 AIDL 文件(例如 activity.aidl )存在于正确的位置,并且编译系统配置为可识别 AIDL 文件。     以下是潜在问题的分类和解决方法: 1.AIDL 文件丢失或放错位置: 检查文件: 验证是否存在 activity.aidl 文件。 检查目录: 确保 activity.aidl 文件位于 Android 项目的 src/main/aidl 目录中,如果使用自定义源码集,则位于相应的源码集中。 代码包结构: AIDL 文件的代码包声明(例如, 代码包 com.example.app.aidl; )必须 与其所在的目录结构相匹配。 如果文件位于 src/main/aidl/com/example/app/ 中,则代码包声明应为 package com.example.app.aidl;。     2。版本系统配置(Android Gradle 插件): 启用 AIDL: 确保在 app/ 版本 d.gradle 文件中启用 aidl 编译功能。   代码   android { buildFeatures { aidl true } } 源代码集: 如果使用自定义源代码集,可能需要在 sourceSets 块中指定 AIDL 文件的源代码目录。   代码   android { sourceSets { main { aidl { srcDirs 'src/main/aidl' } } } } 3.清洁和重建: 更改 AIDL 文件或 版本配置后,清理并重建项目,确保更改生效。 在 Android Studio 中,转到 版本 > Clean Project ,然后转到 版本 > 重建项目 。   。增量版本(安卓工作室): Android Studio 的增量版本通常可以高效处理 AIDL 文件,但如果你遇到问题,可以尝试完全重建。       5.稳定的 AIDL: 如果您使用的是稳定版 AIDL,请确保您的 AIDL 接口的所有依赖项也定义为稳定版 AIDL。 通过直接在 AIDL 文件中定义包裹体结构,将任何包裹体转换为稳定包裹体。   示例:   假设您有一个名为 IMyInterface 的 AIDL 接口,您想在活动中使用它。   创建 IMyInterface.aidl : 代码   // IMyInterface.aidl package com.example.app.aidl; interface IMyInterface { void doSomething(); } 将其放在 src/main/aidl/com/example/app/ 中 :     代码   my_app/ ├── src/ │ └── main/ │ ├── aidl/ │ │ └── com/ │ │ └── example/ │ │ └── app/ │ │ └── IMyInterface.aidl 在 app/ 版本.gradle 中启用 AIDL:     代码   android { buildFeatures { aidl true } } 清洁和重建。     按照这些步骤,您应该能够解决"无法找到 'aidl/activity'" 错误,并在 Android 项目中成功使用 AIDL 接口。     此致
View full article
S32G:我们的电路板支持包 eMMC 驱动程序是否支持 HS400 模式和 HS400ES 模式的 STROBE 时钟调整 专家们好 客户:福特 平台:S32G2 模块:eMMC 请参见 S32G2RM"标准调谐和手动调谐均仅用于调谐 SD_CLK,不能用于调谐 HS400 和 HS400 增强模式的 STROBE 时钟。" 客户询问是否支持 HS400 和 HS400 增强模式的调整 STROBE 时钟?我找不到任何关于"调整 HS400 和 HS400 增强模式的 STROBE 时钟的说明" 我认为不需要调整 STROBE 时钟。 您对这次调查有何专业评论?感谢您的支持 顺祝商祺! 狮子座 Linux BSP Re: S32G: Does our BSP eMMC driver support STROBE clock tuning for HS400 mode and HS400ES mode 你好 与 SD_CLK 不同,频闪时钟来自 eMMC 设备,而不是 SDHCI 主机控制器。 对于 HS400ES,SD_CLK 仍用于命令和控制操作,并需要执行与 HS400 相同的正常调谐程序(仍需要调谐才能进入 HS400 模式)。现在,仅在 HS400ES 模式下使用前导时钟,以便在读取操作过程中更好、更准确地进行数据采样。它本身不需要任何额外的调整。 但是,RM 规定在切换到 HS400/HS400ES 时需要进行以下设置(附后) 因此,简而言之,在 HS400ES 中,eMMC 设备生成频闪信号,该信号应该已经与数据线同步。主控制器直接使用频闪信号,因此无需额外的调整。 此致, 西普里安 Re: S32G: Does our BSP eMMC driver support STROBE clock tuning for HS400 mode and HS400ES mode 你好@RaduBraga 客户似乎明白 STRO BE 时钟不需要调整 ,但他们正在从我们的参考手册 (RM) 的角度寻求 澄清 。具体而言,他们希望我们确认记录中的陈述是否准确或是否需要更正。 我认为,我们的《清除令》中的表述是混淆和误导性的。因此,请确认频闪时钟是否需要调整。 BR、 狮子座 Re: S32G: Does our BSP eMMC driver support STROBE clock tuning for HS400 mode and HS400ES mode 您好@LeoLiAP, 我们的团队已经了解这一情况,并将尽快提供答复。 致以最崇高的敬意, Radu Re: S32G: Does our BSP eMMC driver support STROBE clock tuning for HS400 mode and HS400ES mode 您好, 有没有人可以支持这一主题?
View full article
S32G2 上的 LLCE CAN 通信问题 - 发送/接收报文时偶尔出现故障 在开发过程中,LLCE CAN 模块遇到了一些问题: ​设备详情:​ 定制设计的硬件 CPU 型号:S32G274 RTD 版本:4.0.2 LLCE 版本: 1.0.8 ​问题 1.​ 一个通道能正确接收信息,但无法发送信息。只有重新启动后才能恢复正常运行。 使用 Lauterbach 调试时,函数 Can_43_LLCE_SendWritecmd 返回 CAN_BUSY。 zhuyz_0-1757388260565.png 通过强行修改 Can_au16TransmitHwObjectCen[x] 的值为非零值进行的进一步测试表明, Can_Llce_write 函数也返回 CAN_BUSY。 zhuyz_1-1757388297640.png ​问题 2.​ 一个通道在发送和接收信息时都出现故障。需要重新启动才能恢复。 以下是通过 Can_Llce_ProcessErrorNotification 获得的错误信息: error->eNotifId:2 zhuyz_2-1757388353913.png error->ErrorInfo->eModuleId:102 zhuyz_3-1757388418696.png error->ErrorInfo->eErrorCode:7 zhuyz_4-1757388533189.png 我们希望得到解决这些问题的指导。谢谢! Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 嗨,zhuyz 感谢您的回复。 建议优先进行单通道测试,并尽可能延长向通道发送帧的时间间隔。 错误信息表示接收端已达到最大硬件对象数,即报文缓冲区已满,无法接收新报文。您可以尝试增加帧时间间隔并添加缓冲区进行测试。 Joey_z_1-1757928745870.png BR 乔伊 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 你好,Joey_z ,感谢您的跟进。 您可能没有看清楚我的问题--主要问题是出现问题后,我再也无法通过这个通道接收/发送信息,而不仅仅是偶尔掉帧。 根据我通过劳特巴赫获得的信息,我怀疑 LLCE 本身存在问题,而不是外部因素造成的。能否请您再次回顾一下我最初的问题? Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages hi,zhuyz 感谢您的回复。 请尝试用这种方法测试您的问题。 1.尝试降低 CAN 负载,增加 CAN 帧的时间间隔,检查丢帧现象是否得到缓解。 2.尽量保持测试方法简单,优先考虑单通道测试和只发送或接收帧的测试。例如,首先测试有问题通道的发送功能。 3.你们的 CAN 测试设备是什么?请确保测试设备可靠。 希望这能帮到你。 BR 乔伊 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 你好,Joey_z, 我没有用它来路由 CAN 帧,我只是用它来发送和接收 CAN 帧。 关于您提到的 CAN 环回模式,我前面提到的问题 1 就是用这种方法检测到的。 你的回答让我有点困惑。我希望您能提供一些故障排除方法和可能的原因。 因为对我来说,LLCE 是一个黑盒子,我目前没有能力继续排除故障。 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 嗨,zhuyz 感谢您提供的信息。 路由 CAN 帧 "是指 LLCE 中的 CAN2CAN/CAN2ETH/ETH2CAN 功能。您使用过吗? 如果您只是使用 LLCE 发送和接收 CAN 帧,我建议您可以尝试使用 CAN 环回演示进行测试。您需要修改关联客户板的代码。 Joey_z_0-1757475237096.png 关于问题发生的概率相对较低,而且不是每次都能重现。 如果要进行接收帧然后在 CAN 信道中发送的测试,建议考虑接收和发送之间的间隔时间。 BR 乔伊 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 你好,Joey_z ,感谢您的回复。 我没有使用 LLCE CAN 演示测试这个特定通道,因为在我的案例中,问题并不总是与固定通道相关联。此外,该问题出现的概率相对较低,而且并非每次都能重现。 关于问题 1,我正在使用它收发 CAN 报文。我不太清楚你说的 "路由 CAN 帧 "是什么意思。 所有 20 个通道都在使用,而且都在 M7-0 内核上运行。 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages hi,zhuyz 感谢您与我们合作。 您是否使用过 Can_Llce_DS_Can2Can_S32G274A_M7 的 LLCE CAN 演示来测试问题通道? 关于问题 1,您是用它来路由 CAN 帧还是只发送报文? 您使用的是哪个频道?您只在 S32G 上使用了 M 内核? BR 乔伊
View full article
I2C 问题:使用 I2C3 (Yocto BSP) 在 i.mx8MP Phytech 板上未检测到 RRC2040 SMBus 电池 (0x0B) 你好,恩智浦社区、 我正在开发一款运行基于 Yocto 的 Linux 映像的 i.MX8MP Phytech 评估板, 我正在尝试通过 I²C 连接 RRC2040 SM Bus 智能电池组。 硬件设置: -板: Phytech i.mx8MP 评估板 -电池:RRC2040(SMBus 智能电池) -I²C 端口:I²C3(通过外部接头连接)-预期 SMBus 地址:0x0B -用于表示荷电状态 (RSOC) 的命令:0x0D 软件环境: -适用于 i.mx8MP 的 Yocto 电路板支持包(未修改) -带有 `/dev/i2c-3` 设备节点可用的 Linux 内核 -使用 `i2cdetect -y 3` 来探测总线 问题: 地址为 0x0B 的电池未出现在 `i2cdetect` 扫描中。 可以正确检测到电路板上的其他 I²C 设备。 即使以根用户身份运行,0x0B 也没有响应。 测试代码: 我还使用 `i2c-dev` 和 `i2c_smbus_read_word_data(fd, 0x0D)`测试了一个最小的 C++ 程序: cpp #include #include #include #include #include #include extern"C" { #include } int main () { const char* dev = " /dev/i2c-3 "; int fd = 打开(dev,O_RDWR);i octl(fd,I2C_SLAVE,0x0B);int res = i2c_smbus_read_word_data(fd,0x0D);//RSOC 命令 std:: cou t < < " 结果:" < < < < std:: endl;} kartikjva_1-1762178530944.png 因此,我尝试了其他 i2c 端口,如 /dev/i2c-0 和 /dev/i2c-1,但都不起作用。 我的硬件连接是正确的。 Re: I2C ISSUE :RRC2040 SMBus battery (0x0B) not detected on i.MX8MP Phytech board using I2C3 (Yocto 你好, 你的测试结果证明总线工作正常,电池组也能正常工作,你有关于如何连接的简单示意图吗? 您是否检查过电池组是否需要驱动程序才能正常工作? 如果板可能遇到任何硬件问题,我建议联系 phytec。 致以最崇高的敬意/问候, Aldo。 Re: I2C ISSUE :RRC2040 SMBus battery (0x0B) not detected on i.MX8MP Phytech board using I2C3 (Yocto 我们测试了另一个传感器,即 DS3231,在 Phytec i.MX8MP 板上可以正确检测到其 I²C 地址。 我们还在其他平台(如 Arduino、STM32 和 Raspberry Pi)上对电池组进行了测试,以验证其工作正常。但是,在 Phytec i.MX8MP 板上未检测到它。 此外,我们确认使用的上拉电阻为 10kΩ。 Re: I2C ISSUE :RRC2040 SMBus battery (0x0B) not detected on i.MX8MP Phytech board using I2C3 (Yocto 您好, 这可能是电池组造成的,可能需要一些额外的连接,我建议先检查一下。 另外,如果可能的话,我建议尝试连接另一个 I2C 设备,以确保 I2C 通信正常运行。 致以最崇高的敬意/问候, Aldo。
View full article
小さな非セキュアパーティションとセキュアパーティションを持つmcuboot用のファームウェアを生成する こんにちは、 このテストには frdm_rw612 ボードを使用しています。私の IDE は、MCUxpresso プラグインを備えた vscode です。私はファームウェアを「mcuboot 対応」になるようにコンパイルしようとしています。つまり、それを使用して OTA を実行できるようにしたいと考えています。 まず、このチュートリアルに従いました: https://community.nxp.com/t5/Zephyr-Project-Knowledge-Base/Zephyr-app-with-MCUboot-in-VS-Code/ta-p/2089541 期待通りに動作しています。現在のパーティション構成は、boards\nxp\frdm_rw612\frdm_rw612_common.dtsi ファイルで確認したとおりです。 partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; /* * Partition sizes must be aligned * to the flash security sub-region size of 128KB. */ boot_partition: partition@0 { label = "mcuboot"; reg = <0x00000000 DT_SIZE_K(128)>; }; slot0_partition: partition@20000 { label = "image-0"; reg = <0x00020000 DT_SIZE_K(640)>; }; slot0_ns_partition: partition@C0000 { label = "image-0-non-secure"; reg = <0x000C0000 DT_SIZE_M(3)>; }; slot1_partition: partition@3C0000 { label = "image-1"; reg = <0x003C0000 DT_SIZE_K(640)>; }; slot1_ns_partition: partition@460000 { label = "image-1-non-secure"; reg = <0x00460000 DT_SIZE_M(3)>; }; storage_partition: partition@760000 { label = "storage"; reg = <0x00760000 (DT_SIZE_M(57) - DT_SIZE_K(384))>; }; }; 私の理解では、hello-world の例は非常に小さいSO、小さな (640kB) セキュア パーティション内に収まります。 残念ながら、現在のファームウェア (Wi-Fi、Bluetooth など) で同じことを実行すると、パーティションがオーバーロードされるというメッセージが表示され、コンパイルできません。 [...]/arm-zephyr-eabi/bin/ld.bfd.exe: zephyr\zephyr_pre0.elf section `rodata' will not fit in region `FLASH' [...]/arm-zephyr-eabi/bin/ld.bfd.exe: region `FLASH' overflowed by 1682828 bytes 総括する: mcuboot をコンパイルしてフラッシュCAN。また、hello-world の例を正しくフラッシュすることもCAN (UART からこの hello-world アプリを正しくロードできることを確認できます)。一方、「大きな」ファームウェアをコンパイルすることはできません。 メインファームウェアが配置される非セキュア領域にのみジャンプする、最小限のセキュアパーティションを持つイメージを生成するにはどうすればよいでしょうか? FUTUREこの安全なパーティションを使用する予定なので、現在のパーティション構造を維持したいと考えています。 ありがとうございました。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、お元気ですか。 パーティションのサイズを変更する場合は、パーティションの場合と同様にオーバーレイ ファイルで行うことができますが、MCUboot が対象のパーティション内のイメージを認識できるように構造を維持する必要があります。 さらに、フラッシュ パーティションを共有して使用する場合、これは TF-M スタックで使用することを意図しており、TF-M スタックでも MCUboot をセキュア ブートローダーとして使用して、安全な環境でイメージを検証およびロードすることになるため、注意してください。 保護されたストレージの詳細については、Zephyr リファレンス ドキュメントの「Secure Storage」を参照してください。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition 少しは進歩しました。短期的な解決策として、frdm_rw612_common.dtsi ファイル内の slotx_partition を slotx_ns_partition と反転し、より大きなセキュア パーティションをコンパイルしてCAN使用します。 オーバーレイ ファイルでこれを変更すると、コンパイルはCANますが、実行時に mcuboot はイメージにジャンプできなくなります。mcuboot が生成されると、現在のプロジェクトではオーバーレイ ファイルが使用されないと思われます。 とにかく、セキュアなパーティションと非セキュアなパーティションの違いがよく分かりません。ファームウェア全体をセキュアパーティションに格納することには、何か欠点がありますか? このプロジェクトに PSA_protected_storage を追加する方法がまだわかりません。この機能を追加すると、どのパーティションがこの機能に使用されますか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 問題はあなたのサンプルと同じです。フラッシュ サイズ 640kB (デフォルトのセキュア パーティション サイズ) を超えるとすぐに、コンパイル時に次のエラーが発生します。 領域「FLASH」が15872バイトオーバーフローしました このsmp_svrサンプルにBTとUDPのサポートを追加すると、エラーが表示されます。 SO、私のこれまでの質問はすべて、私の問題を理解し解決するために残っています。 メインファームウェアが配置される非セキュア領域にのみジャンプする、最小限のセキュアパーティションを持つイメージを生成するにはどうすればよいでしょうか? これら両方のパーティションを処理するファームウェアを生成するにはどうすればよいでしょうか? psa_protected_storage を使用する場合、暗号化されたデータはどこに保存されますか?この機能を使いたいです。 さらに、ファイル用のカスタムの不揮発性パーティションが必要になりますが、これは common.dtsi のパーティション テーブル定義の現在の storage_partition ですか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 MCUboot を使用して OTA を実行する必要がある場合は、「smp_svr」サンプルを使用することをお勧めします。このサンプルの主な目的は、MCUmgr プロトコルで使用するファームウェアの更新を行い、Bluetooth、UDP、UART などを介して更新を可能にすることです。このサンプルは MCUboot と連携して、適切に署名されたバイナリを確認し、MCU に更新します。 サンプルをテストするには、ファームウェアのアップデートを行うために MCUmgr クライアントをダウンロードする必要があり、最初に MCUboot を個別にビルドしてフラッシュし、次に smp_svr サンプルの prj.conf ファイルに必要なマクロを追加して smp_svr サンプルをビルドしてフラッシュする必要があります (これは、使用する OTA トランスポートによって異なります)。これが完了すると、システムは MCUmgr クライアントと適切に通信して、アップロードされたイメージのリストを確認し、新しいイメージをロードできるようになります。 MCUboot の新しい有効なイメージをロードするには、ロードするサンプルの prj.conf ファイルに次の構成を追加することをお勧めします。 CONFIG_HEAP_MEM_POOL_SIZE=2048 次のようにすると、サンプルをビルディングするだけで、MCUboot の有効な署名付きイメージを生成できます。 CONFIG_MCUBOOT_SIGNATURE_KEY_FILE=" /root-rsa-2048.pem" CONFIG_MCUBOOT_GENERATE_CONFIRMED_IMAGE=y CONFIG_BOOTLOADER_MCUBOOT=y これがあなたにとって有効であり、あなたの要件を満たしているかどうかを教えてください。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こちらの投稿を読みました: https://community.nxp.com/t5/Wi-Fi-Bluetooth-802-15-4/Zephyr-MCUBoot-TFM-Demo-using-RW612/ta-p/2047528 tfm 構造をより深く理解するために、「psa_protected_storage」サンプルもダウンロードしましたが、イメージをどのようにパーティション分割するかはまだよくわかりません。 たとえば、psa_protected_storage の場合、暗号化されたデータを保存するために使用されるパーティションはどれですか?それは「storage_partition」にありますか? 上記の投稿では、fw_storage パーティションについて言及しています。このパーティションはありませんが、Wi-Fi は使用できます。 最新のドキュメントはどこにありますか?何か特別なことをしようとしているわけではなく、mcuboot を使用して OTA を実行できるようにしたいだけですが、その方法を理解するための正しいドキュメントを見つけるのに苦労しています。 ご回答をよろしくお願いします。 アーサー Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 正直に言うと、分かりません。最初の投稿で述べたように、frdm_rw612 パーティション分散が推奨される方法であると思われるため、それに従うことにしました。 まだプロトタイプなので、現時点では安全な機能は使用していませんが、間もなく製品版に取り組む予定であり、後で問題になるような選択を今日はしたくありません。 FRDM_RW612 には、640kB のセキュア パーティションと 3MB の非セキュア パーティションがあります。 現在のアプリケーションのサイズは 2.3 MB です (最適化はまったく行われていません)。 これら両方のパーティションを処理するファームウェアを生成するにはどうすればよいでしょうか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、お元気ですか。 ご希望のパーティション配分をご確認ください。小さくて安全でないパーティションと大きくて安全なパーティションですか、それともその逆ですか?さらに、アプリケーションのサイズも共有していただけますか? いずれのCASEでも、各パーティション サイズ 128kB の配置を考慮して、オーバーレイ ファイルを使用してパーティション サイズを変更できるはずです。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition 親愛なるローマンへ 私の質問に答えてくれないので、完全に理解するのは困難です。 「ただし、構造を維持する必要があります」と言うとき、最初にセキュアなパーティションがあり、その後に非セキュアなパーティションがあることを意味しますか? このプロジェクトに PSA_protected_storage を追加する方法がまだわかりません。この機能を追加すると、どのパーティションがこの機能に使用されますか? メインファームウェアが配置される非セキュア領域にのみジャンプする、最小限のセキュアパーティションを持つイメージを生成するにはどうすればよいでしょうか? これら両方のパーティションを処理するファームウェアを生成するにはどうすればよいでしょうか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 ありがとう、よく理解できました。 このリンクはエンジニアリング チームによって作成されたものですか?https://community.nxp.com/t5/Wi-Fi-Bluetooth-802-15-4/Zephyr-MCUBoot-TFM-Demo-using-RW612/ta-p/2047528 それでも SDK をこのように変更する必要がありますか?「非セキュア イメージの変更」セクションで説明されているように、非セキュア イメージを変更できないためです。nxp_zephyr\zephyr\に「build」フォルダが存在しません さらに、frdm_rw612_rw612_ns.dts ファイルには、frdm_rw612_common.dtsi ですでに構成されているすべてのパーティションを削除する行があります。パーティション構造を維持するというアイデアには従いません。 とにかく、非セキュアボードを使用すると、ストレージパーティションを使用しているためコンパイルされず、/delete-node/行でストレージパーティションが存在しなくなります。 &w25q512jvfiq { /delete-node/ partitions; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; slot0_ns_partition: partition@080C0000 { label = "image-0-non-secure"; reg = <0x080C0000 DT_SIZE_M(3)>; }; /* This partition is reserved for connectivity firmwares storage * and shouldn't be moved. */ fw_storage: partition@400000 { label = "fw_storage"; reg = <0x400000 0x280000>; read-only; }; }; }; 「開発は独自で行う必要がある」とおっしゃるのは、TF-M を公式にサポートしていないということですか?それで、SDK を手動で変更する必要があるのですか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 はい、そのガイドは当社のエンジニアリングチームによってZephyrバージョン4.0.0で使用するために作成されました。ただし、おっしゃるとおり、それ以降のバージョン (現時点では 4.2.0 および 4.3.0) では、ガイドに示されている TFM の例に BL2 統合 (セキュア ブートローダとしての MCUboot) がデフォルトで含まれているため、このガイドは必要ありません。したがって、バージョン 4.2.0 ダウンストリームおよびアップストリーム、および 4.3.0 では、この機能はすでにサポートされています。 これで疑問が解消されることを願っています。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 わかりました。理解が深まりました。 frdm_rw612_rw612_ns.dts ファイルでこれを削除すると、tfm を使用してファームウェアをコンパイルできます。 &w25q512jvfiq { /delete-node/ partitions; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; slot0_ns_partition: partition@080C0000 { label = "image-0-non-secure"; reg = <0x080C0000 DT_SIZE_M(3)>; }; /* This partition is reserved for connectivity firmwares storage * and shouldn't be moved. */ fw_storage: partition@400000 { label = "fw_storage"; reg = <0x400000 0x280000>; read-only; }; }; }; パーティション ノードを削除する目的がわかりません。 とにかく、「tfm_merged.hex」をフラッシュすると、次のような出力が得られます: [INF] Starting bootloader [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [INF] PSA Crypto init done, sig_type: EC-P256, using builtin keys [INF] Image index: 1, Swap type: none [INF] Image index: 0, Swap type: none [INF] Bootloader chainload address offset: 0x20000 [INF] Image version: v0.0.0 [INF] Jumping to the first image slot Booting TF-M v2.2.0+g9a6c6f958 [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [Sec Thread] Secure image initializing! [INF][PS] Encryption alg: 0x5500100 [INF][Crypto] Provision entropy seed... [INF][Crypto] Provision entropy seed... complete. bl2 は正常に起動しているように見えますが、その後何も起こりません。安全でないファームウェアが起動しません。 ファイル zephyr_ns_signed.hex もフラッシュしようとしましたが、結果は同じでした。 私がそう思うのは間違っているだろうか boot_partitionはbl2(mcuboot)があるパーティションです slot0_partitionはtfm(psa)のパーティションです slot0_ns_partitionはファームウェアのパーティションです   この安全でない構成は、sysbuild を有効にして mcuboot をビルドすることと互換性がないことを確認しますか?ここで説明されているように: https://community.nxp.com/t5/Zephyr-Project-Knowledge-Base/Zephyr-app-with-MCUboot-in-VS-Code/ta-p/2089541 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 TF-MとBL2を使ってアプリケーションをビルドしてフラッシュする際に、どのような手順を踏んでいるのか教えていただけますか?MCUbootのビルドにはsysbuildを使用していますか? さらに、パーティションはおっしゃるとおり、セキュア パーティションは TF-M のセキュア サービスをホストするためのもので、非セキュア パーティションは非セキュア アプリケーション用になります。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition sysbuild の場合: tfm用に変更したプロジェクトでsysbuildを有効にし、このCmake Extra Args SB_CONFIG_BOOTLOADER_MCUBOOT='y'を追加します。 「純粋なビルド」をすると、さまざまなものがコンパイルされます 最後にこのメッセージが表示される image.py: sign the payload image.py: sign the payload Usage: imgtool.py sign [OPTIONS] INFILE OUTFILE Try 'imgtool.py sign -h' for help. Error: Image size (0x1ed91c) + trailer (0x1b0) exceeds requested size 0xa0000 image.py: sign the payload Batch file failed at line 12 with errorcode 2 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 sysbuild を使用するとさらに悪くなります。これは、hello_world の例 (つまり、mcuboot もパーティション分割も使用しない) から作成した現在のプロジェクト (Wifi、Bluetooth、イーサネット などの多くの機能がすでに実装されている) で行っていることです。 デバッグ構成では、ボードを frdm_rw612 から frdm_rw612/rw612/ns に変更します。そして、DTC_OVERLAY_FILE='boards/frdm_rw612.overlay' を明示的に設定します(現在のプロジェクトで使用しているオーバーレイファイルと同じものを保持するため)。 prj.confに以下の内容を追加します 前回のメッセージでお伝えした内容をfrdm_rw612_rw612_ns.dtsファイルから削除します プロジェクトを右クリックして「選択したターゲットをフラッシュ」し、tfm_merged.hexを選択します。 prj.confに追加する内容 CONFIG_BUILD_WITH_TFM=y CONFIG_WIFI_NXP=y CONFIG_NXP_RW610=y CONFIG_ETH_DRIVER=y # stack size CONFIG_SHELL_STACK_SIZE=6144 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_NET_MGMT_EVENT_STACK_SIZE=4608 CONFIG_NET_TCP_WORKQ_STACK_SIZE=2048 CONFIG_MAIN_STACK_SIZE=4096 CONFIG_IDLE_STACK_SIZE=1024 コンソールに表示される内容: [INF] Starting bootloader [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [INF] PSA Crypto init done, sig_type: EC-P256, using builtin keys [INF] Image index: 1, Swap type: none [INF] Image index: 0, Swap type: none [INF] Bootloader chainload address offset: 0x20000 [INF] Image version: v0.0.0 [INF] Jumping to the first image slot Booting TF-M v2.2.0+g9a6c6f958 [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [Sec Thread] Secure image initializing! [INF][PS] Encryption alg: 0x5500100 [INF][Crypto] Provision entropy seed... [INF][Crypto] Provision entropy seed... complete. 出力結果から判断すると、すでにブートローダーが存在するため、sysbuild を有効にしませんでした。 何が間違っているのか教えていただけますか? ご協力の程、よろしくお願い申し上げます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 私が何を間違っているのか教えてもらえますか?今週ファームウェアを公開するためには、解決策を見つけることが私にとって非常に重要です。 ご協力いただきありがとうございます Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 、遅くなってごめんなさい。 BL2 を搭載した TF-M で基本ファームウェアを生成してみましたが、正常に動作しています。frdm_rw612_rw612_ns.dts ファイルから、ご指摘のセクションを削除する理由は理解できますが、このオーバーレイはボードの非セキュア「バージョン」で TF-M が使用するパーティション構造を設定するものであるため、この手順は必須です。これを削除すると、互換性のない構造が生成され、アプリケーションが MCUboot の既知のアドレスにロードされない可能性があります。 プロジェクトで生成された dts ファイルを共有していただけますか?それとも、dts のパーティション セクションのスクリーンショットでしょうか?プロジェクト内の次のパスに配置する必要があります: debug/zephyr/zephyr.dts ご辛抱いただきありがとうございます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 申し訳ありませんが、まだ同じ質問があります。 1. sysbuild を有効にする (および SB_CONFIG_BOOTLOADER_MCUBOOT="y" を設定する) 必要がありますか? 2. prj.conf に追加している内容は正しいですか? 3. すべてがコンパイルされたら何をフラッシュする必要がありますか? パーティション ノードの削除を維持する必要があると言われています。次に、このシナリオにおける私の問題点は次のとおりです。 現在のファームウェアでは、common.dtsi で定義された storage_partition を使用しています。非セキュア構成を使用すると、すべてのパーティションが削除されるため、storage_partition が定義されなくなり、コードをコンパイルできなくなります。4. この非セキュア構成で storage_partition を使用するにはどうすればよいですか? common.dtsi で定義された同じパーティション構造を維持する必要があると明示的に述べられました。5. では、なぜ fw_storage パーティションは 0x400000 に配置されているのでしょうか?common.dtsi 構造を調べてみると、これは slot1_partition にあります。 6. ところで、この fw_storage パーティションとは何でしょうか?なぜ「標準」の安全な構成ではないのですか? あまり時間がないのは承知していますが、私の 6 つの質問にご回答ください。それが私の理解を深め、自立するのに役立ちます。 storage_partition と Wifi/BLE コネクティビティを使用して標準ファームウェアをコンパイルおよびフラッシュするための、ステップバイステップの TF-M と BL2 の例を共有していただければ完璧です。ありがとう PS: 現状では意味をなさないため、DTS のパーティション セクションは共有しませんでした。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 sysbuild を有効にする (および SB_CONFIG_BOOTLOADER_MCUBOOT="y" を設定する) 必要がありますか? いいえ、TF-M ビルド システムにはデフォルトで MCUboot が含まれているため、sysbuild を使用する必要はありません。 prj.conf に追加している内容は正しいですか? はい、観察してみると、ボードの非セキュア バージョン用のプロジェクトを作成するときに、「CONFIG_BUILD_WITH_TFM」がデフォルトで設定されます。 すべてがコンパイルされたら何をフラッシュする必要がありますか? それは状況によりますが、TF-M ビルド システム Zephyr ドキュメントのスクリーンショットには、生成された各ファイルのユーティリティに関する詳細な説明があります。 RomanVR_0-1766013775436.png ただし、初めて使用する場合、MCUboot ブートローダ、TF-M セキュア イメージ、および非セキュア アプリケーションのマージを含む tfm_merged.hex ファイルをフラッシュする必要があることに注意してください。 この安全でない構成でストレージ パーティションを使用するにはどうすればよいですか? TF-M 構成のフラッシュ レイアウトではこのストレージ用のスペースが予約されているため、ユーザーは TF-M が提供する安全なストレージ サービスを使用することが予想されます。 ところで、この fw_storage とは何でしょうか? fw_storage パーティションは、Wi-Fi、BLE、および 802.15.4 ファームウェア ストレージ用に予約されています。 この情報があなたの開発に役立つことを願っています。ご辛抱いただきありがとうございます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 明日ファームウェアを公開しなければならないのですが、返信を期待できますか?それとも、まだあなたの側で準備ができていないので、プラン B を見つける必要がありますか? ご回答をよろしくお願いします。 アーサー Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 フィードバックありがとうございます。パーティション構造に関する質問には回答しませんでした 5. では、なぜ fw_storage パーティションは 0x400000 に配置されているのでしょうか?common.dtsi 構造を調べてみると、これは slot1_partition にあります。 1.この fw_storage は重要と思われますが、なぜ「セキュア」構成で言及されないのでしょうか? 2. このパーティションに必要なファームウェアを配置するには、何か特別な操作を行う必要がありますか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、お元気ですか。 ご質問にお答えすると、Wifi ファームウェアは自動的にロードされるものと予想されます。ただし、この問題については社内で確認中です。 ご辛抱いただきありがとうございます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 コンパイルしてフラッシュしてみました(tfm_merged.hex)基本サンプル用。zephyr/samples/hello_world を使用すると次のようになります: [INF] Starting bootloader [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [INF] PSA Crypto init done, sig_type: EC-P256, using builtin keys [INF] Image index: 1, Swap type: none [INF] Image index: 0, Swap type: none [INF] Bootloader chainload address offset: 0x20000 [INF] Image version: v0.0.0 [INF] Jumping to the first image slot Booting TF-M v2.2.0+g9a6c6f958 [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [Sec Thread] Secure image initializing! [INF][PS] Encryption alg: 0x5500100 [INF][Crypto] Provision entropy seed... [INF][Crypto] Provision entropy seed... complete. *** Booting Zephyr OS build nxp-v4.1.0-23883-g5fbcfde7cfc2 *** Hello World! frdm_rw612/rw612/ns SO、すべてが期待どおりに機能しているようです。 ただし、zephyr/samples/net/wifi/shell のような WiFi を使用する例を使用すると、ファームウェア (WiFi と BLE を使用) と同じ出力が得られます。 [INF] Starting bootloader [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [INF] PSA Crypto init done, sig_type: EC-P256, using builtin keys [INF] Image index: 1, Swap type: none [INF] Image index: 0, Swap type: none [INF] Bootloader chainload address offset: 0x20000 [INF] Image version: v0.0.0 [INF] Jumping to the first image slot Booting TF-M v2.2.0+g9a6c6f958 [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [Sec Thread] Secure image initializing! [INF][PS] Encryption alg: 0x5500100 [INF][Crypto] Provision entropy seed... [INF][Crypto] Provision entropy seed... complete. したがって、問題の根本的な原因は Wi-Fi にあり、ファームウェア パーティションに関する私の質問に関連している可能性があります。Wifi と tf-m を使用してサンプルをコンパイルする手順を共有していただけますか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 ホリデーシーズンのため、返答にかかるおおよその時間をお伝えすることはできませんが、何か分かり次第お知らせいたします。 ありがとう。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 ご協力いただきありがとうございます。到着予定時間はどれくらいですか?数日ですか、それとも数週間ですか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、ありがとうございます。あなたにとっても 2026 年が幸せな年になりますように! このマターに関して社内チームからの返答をまだ待っていますので、返答が届き次第お知らせします。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 2026年もNXPとあなたの成功を祈っています このトピックに関して何かニュースはありますか? ありがとうございました。 アーサー Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、 @_arthur_ さん。この件についてお待たせして申し訳ありません。 ZephyrのWi-Fi ShellサンプルをTF-Mでビルドした際に、アプリケーションが正しく起動しないという問題が発生していた件について、prj.confファイルに以下の設定を追加してみてください。 # General CONFIG_HEAP_MEM_POOL_SIZE=122880 # TF-M S CONFIG_TFM_BL2=y CONFIG_BUILD_WITH_TFM=y CONFIG_TFM_PROFILE_TYPE_NOT_SET=y # Update the flash base address of ns image CONFIG_FLASH_BASE_ADDRESS=0x80C0000 # TF-M IPC CONFIG_TFM_IPC=y CONFIG_TFM_ISOLATION_LEVEL=2 # TF-M NS CONFIG_HWINFO=y # Networking (TF-M NS) CONFIG_NETWORKING=y CONFIG_NET_L2_ETHERNET=y CONFIG_NET_SOCKETS=y CONFIG_NET_DHCPV4=y CONFIG_NET_IPV4=y CONFIG_NET_TCP=y CONFIG_DNS_RESOLVER=y CONFIG_ETH_DRIVER=n CONFIG_WIFI=y # NXP Networking (TF-M NS) CONFIG_WIFI_NXP=y CONFIG_NXP_RW610=y CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=20 CONFIG_NET_BUF_DATA_SIZE=1744 CONFIG_NET_SOCKETS_POLL_MAX=12 CONFIG_ZVFS_OPEN_MAX=30 CONFIG_PSA_CRYPTO_ENABLE_ALL=y これらの設定により、シェルアプリケーションが正常に起動するはずです。しかしながら、現在社内チームで確認中の動作として、「wifi scan」コマンドを使用するとアプリケーションがハードフォルト状態になるという問題があります。したがって、「wifi scan」の代わりに「nxp_wifi scan」コマンドを使用して、近くのネットワークをスキャンしてください。ただし、以下に示すように、デフォルトの「wifi connect…」コマンドを使用すれば、ネットワークに接続できるはずです。 RomanVR_0-1778007625891.png これがあなたにとって有効かどうか教えてください。
View full article
LPC11UXX外部アクティブレベル割り込み 皆様、 #LPC11U35BFD# mcu を使用するときに、アクティブ レベル割り込みに関する問題が発生しました。コマンドを使用してEx-Interruptモードを制御し、トリガーします 同様の初期化コードでは、エッジ (上昇または下降) 割り込みとレベル割り込みは正常に機能しますが、アクティブ レベル (高または低) 割り込みは機能しません。 割り込みモード(立ち上がり、立ち下がり、高レベル、低レベル)をスイッチするコマンドを使用します。 NVIC_DisableIRQ ( FLEX_INT0_IRQn ); LPC_GPIO_PIN_INT -> ISEL |= ( 1UL << 0 ); //レベルセンシティブ LPC_GPIO_PIN_INT -> CIENR |= ( 1UL << 0 ); //レベル割り込みを閉じる //これら 2 つの構成は 1 つだけを実行します。 LPC_GPIO_PIN_INT -> IENF |= ( 1UL << 0 ); //高レベル割り込みを有効にする LPC_GPIO_PIN_INT -> IENF &= ~( 1UL << 0 ); //低レベル割り込みを有効にする   LPC_IOCON -> PIO0_2 |= 0x10 ; LPC_GPIO_PIN_INT -> RISE |= ( 1UL << 0 ); LPC_GPIO_PIN_INT ->フォール|= ( 1UL << 0 ); LPC_GPIO_PIN_INT -> IST |= ( 1UL << 0 ); NVIC_EnableIRQ ( FLEX_INT0_IRQn );   何かご提案がありましたら、ぜひ教えてください。 LPC11xx Re: LPC11UXX External active level interrupt こんにちは@Andy2022 3 つの API が CAN 見つかる LPCopen をダウンロードしてください。 https://www.nxp.com/design/design-center/software/software-library/lpcopen-software-development-platform-lpc11xx:LPCOPEN-SOFTWARE-FOR-LPC11XX さらに、参考として GPIO 割り込みデモも用意されています。 よろしくお願いします。 BR アリス Re: LPC11UXX External active level interrupt こんにちは、アリス: 申し訳ありませんが、まだ 3 つの API を使用していません。Keil.LPC1100_DFP.1.4.1.packを使用したためコードをコンパイルするには Keil 環境 (Keil IDE なし) が必要だったSO、3 つの API を直接使用できませんでした。これらの API のソースコードを提供してもらえますか? また、ロジカルアナライザでレベルを観察しました。SO、ハイアクティブ割り込みが設定されているときはレベルが高くなると確信できました。 ありがとう。 BR、 アンディ Re: LPC11UXX External active level interrupt こんにちは@Andy2022 上記の3つのAPIを使ってみてはいかがでしょうか? また、ハイアクティブ割り込みが設定されている場合には入力信号がハイになっていることを確認してください。 BR アリス Re: LPC11UXX External active level interrupt こんにちは、Alice_Yangさん: ご返信ありがとうございます。 レベル割り込みは正常に動作します (High -> Low と Low -> High の両方が割り込みをトリガーします)。 Andy2022_0-1753284367967.png ただし、高レベル割り込みまたは低レベル割り込みのみを設定しているため、対応する操作で割り込みをトリガーできません。 Andy2022_3-1753284608790.png Andy2022_2-1753284512662.png どうもありがとうございます。 BR、 アンディ2022 Re: LPC11UXX External active level interrupt こんにちは@Andy2022 ご質問ありがとうございます。 「レベル割り込みは正常に動作しますが、アクティブレベル(高または低)割り込みは動作しません。 」 ->> SO 申し訳ありませんが、レベル割り込みは機能しますか? それでも動作しない場合は、LPCopen の pinint デモを参照して、まずステータスをクリアし、次に割り込みを設定することをお勧めします。 /* チャネル割り込みをエッジセンシティブおよび立ち下がりエッジ割り込みとして設定します */ Chip_PININT_ClearIntStatus(LPC_PININT、PININTCH(GPIO_PININT_INDEX)); Chip_PININT_SetPinModeEdge(LPC_PININT、PININTCH(GPIO_PININT_INDEX)); Chip_PININT_EnableIntLow (LPC_PININT、PININTCH(GPIO_PININT_INDEX)); よろしくお願いします。   BR アリス
View full article
How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) Hi, I'm using FlexCAN on the S32G platform. Currently, when FlexCAN receives an error frame interrupt, it creates a CAN frame and fills the CAN ID and payload with values from the error register. However, I'm unable to determine which specific CAN frame caused the bus error. In CANoe, we can see the error frame with the correct CAN ID and payload in the trace window. Is there a way to retrieve the error frame's CAN ID and payload programmatically, similar to CANoe? I’d appreciate any guidance on this. Thanks in advance! S32G2  Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) hi,ventury Thank you for your reply. Why do you want to get the error frame? The error frame will be abandoned in the normal usage scenarios. If the protocol level frame occurs error, the S32G can get the frame and operate it.  For flexcan, the relevant states register will be changed when S32G receive the error frame. I think you should consider the kind of error frame. such as, it is the error of CRC on one frame, you can try to check the memory for the frame ID and payload.  Hope it can help you. BR Joey Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) Hi Joey, Yes, that is correct. Could you provide some advice on this? Thank you. BR, Ventury Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) hi,ventury Thank you for your reply. Do you mean that when you are using the Flexcan of S32G, you can detect CAN error frames, but you cannot know the ID and payload of this error frame? BR Joey Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) Hi Joey, Thanks for your response. Here are the details you requested: Core Type: Using A-core with Linux, kernel version 5.15.119-rt65+ RTD Version: I'm not sure how to check the RTD version in this setup ID Filter: No ID filter configuration is currently applied Additional information: I'm using the Linux SocketCAN framework (can-raw) Error frame capture is enabled using: uint32_t errMask = 0xffffffff; setsockopt(can_fd, SOL_CAN_RAW, CAN_RAW_ERR_FILTER, &errMask, sizeof(errMask)); From examining the FlexCAN driver code (flexcan_irq_bus_err function), I can see that error frames are generated using values from the error registers, but I'm not getting the actual CAN ID and payload of the frame that caused the error. I'd appreciate any guidance on how to retrieve the original offending frame information. BR ventury Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) hi,ventury Thank you for contacting us. are you using M or A core for FlexCAN? Which version of RTD are you using? Do you have an ID filter for CAN frame? BR Joey
View full article
S32K312 I2Cスレーブのフラッシュ操作中の障害(RTD 5.0.0) NXPの専門家の皆さん、こんにちは。 私のプロジェクトでは、S32K312 を I2C スレーブとして使用し、I2C マスター (FT4222) に接続します。 このプロジェクトでは、Mem43_Infls (Flash W/R) と I2c スレーブのみが使用され、マスターからの I2C メッセージの一部がフラッシュ消去と書き込みのサブプロセスをトリガーします。 私のテストでは、マスターからメッセージを受信した後、I2C スレーブがローを維持する可能性が高いことがわかりました。I2C スレーブを再初期化することによってのみ CAN 回復できます。 acnhyxgxl1_0-1755688037984.png 下の画像は LA 測定です。波形は正常です。SO、おそらく回路の問題ではないと思います。 私は2つの実験を行いました。ここにいくつかの手がかりがあります 実験1. `SchM_Mem_43_INFLS.c` 内のすべての ` OsIf_SuspendAllInterrupts` と ` OsIf_ResumeAllInterrupts` をコメントアウトしました。 故障率は劇的に減少し、I2C スレーブの誤動作を引き起こす可能性は約 1/500 になりました。さらに、フラッシュは割り込み停止なしでも正常に動作CANことがわかりました。 実験2Flash API をスタブ化し、フラッシュ ドライバを操作するのではなく、常に E_OK を返すようにしました。 この方法では、I2C スレーブが故障することはありません (もちろん Flash には機能がありません)。 SO私の質問は、この I2C スレーブ障害の問題を解決するために使用すべき設定や調整はありますか?また、割り込み保護なしでフラッシュを安全にCAN操作できますか? コードの一部と LA レコードは添付ファイルにあります。I2Cスレーブに関するコードをアップロードすることはできません。 ハードウェアのセットアップ: S32K312EVB-Q172 FT4222(I2Cマスター)、ボーレート:900KHZ-1000KHZ ソフトウェアのセットアップ: リリース: 5.0.0HF01 S32V用S32 SDK Re: S32K312 I2C Slave Failure During Flash Operation(RTD 5.0.0) こんにちは@acnhyxgxl1さん、 RTD のインストール ディレクトリにある RTD_MEM_43_INFLS_UM.pdf を参照してください。 danielmartynek_0-1756189418778.png SYNC モードでは、ドライバはフラッシュ操作が完了するまで I2Cバス をブロックします。 BR、ダニエル Re: S32K312 I2C Slave Failure During Flash Operation(RTD 5.0.0) 元の設定では非同期モードを使用していましたが、同期モードでもタスクを実行 CAN。 Mem43_Infls で同期 / 非同期モードの両方を試しましたが、非同期モードのみがフラッシュにデータを正しく書き込むCANようです。 同期モードでは、`Mem_43_INFLS_Write` は `E_OK` を返しますが、フラッシュの内容は変更されませんでした (S32DS メモリ インターフェース経由で監視)。 同期モードでもこの I2C の問題を解決できませんでした。I2C コマンドがフラッシュ消去をトリガーするたびに、I2C スレーブは低く保持されます。 添付ファイルは、私の mex ファイルとフラッシュ HAL ソース コードです。たぶん、あなたは私に何か手がかりを与えてCAN。 Re: S32K312 I2C Slave Failure During Flash Operation(RTD 5.0.0) こんにちは@acnhyxgxl1さん、 この関数は、AsyncMode == FALSE の場合にのみ呼び出されるようです。 danielmartynek_0-1755846251043.png INFLS ドライバをどのように構成しましたか? danielmartynek_1-1755846312547.png よろしくお願いいたします。 ダニエル Re: S32K312 I2C Slave Failure During Flash Operation(RTD 5.0.0) フラッシュが ` Mem_43_INFLS_IPW_Erase` で ` C40_Ip_AccessCode ( Mem_43_INFLS_pConfigPtr -> MemAcCallBackPtr );` をプロセッシングしているときに、I2C スレーブが読み取りフレームを待機すると、I2C スレーブ障害が発生することがわかりました。 この問題を解決するための対策はありますか? acnhyxgxl1_0-1755828201782.png acnhyxgxl1_1-1755828451905.png
View full article
Sensors_Multimarkets_may16.pdf
View full article
示例 MPC5777C-1b+2b_FLASH_ECC_error_injection GHS614 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 该示例的目的是展示如何生成多位或单位 * 内部 FLASH 中的 ECC 错误(用户必须在 * 主要功能)。 * Flash 过度编程用于生成不可纠正的(或单位) * FLASH 中存在 ECC 错误。然后访问坏数据,因此 IVOR1 异常(或 * ERM组合中断服务程序)生成并处理。 * 示例还为 EIM 和 ERM 模块提供了有用的宏。 * 示例在终端窗口显示通知(USBtoUART 桥 J21) *(19200-8-无奇偶校验-1停止位-eSCI_A上无流量控制)。 * 无需其他外部连接。 * * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC5777C-512DS Rev.A + MPC57xx 主板 Rev.C * 微控制器: PPC5777CMM03 2N45H CTZZS1521A *系统频率:PLL1 = core_clk = 264MHz,PLL0 = 192MHz * 调试器:Lauterbach Trace32 * 目标:internal_FLASH * 终端:19200-8-无奇偶校验-1 停止位-eSCI_A 上无流量控制 * EVB 连接:eSCI_A 是 USBtoUART 桥接器(连接器 J21) * ******************************************************************************** <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 该示例的目的是展示如何生成多位或单位 * 内部 FLASH 中的 ECC 错误(用户必须在 * 主要功能)。 * Flash 过度编程用于生成不可纠正的(或单位) * FLASH 中存在 ECC 错误。然后访问坏数据,因此 IVOR1 异常(或 * ERM组合中断服务程序)生成并处理。 * 示例还为 EIM 和 ERM 模块提供了有用的宏。 * 示例在终端窗口显示通知(USBtoUART 桥 J21) *(19200-8-无奇偶校验-1停止位-eSCI_A上无流量控制)。 * 无需其他外部连接。 * * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC5777C-512DS Rev.A + MPC57xx 主板 Rev.C * 微控制器: PPC5777CMM03 2N45H CTZZS1521A *系统频率:PLL1 = core_clk = 264MHz,PLL0 = 192MHz * 调试器:Lauterbach Trace32 * 目标:internal_FLASH * 终端:19200-8-无奇偶校验-1 停止位-eSCI_A 上无流量控制 * EVB 连接:eSCI_A 是 USBtoUART 桥接器(连接器 J21) * ******************************************************************************** 概述
View full article
如何真正实现PT60的中断嵌套 最近在支持几个PT60的家电项目,遇到一个共同的问题,就是程序运行的时候,显示数码管会有不规律的闪烁。 几个项目都是以触摸TSI为核心的,对方工程师反应,如果把TSI的中断关闭就不会有闪烁现象。数码管的扫描程序是在MTIM的中断中完成的,经初步分析推测,应该中断时序错乱导致的问题。 因此我们想着这个应该用中断嵌套的方式可以解决。 中断嵌套的定义简单来说,就是当MCU正在处理一个低优先级的中断的时候,来了一个高优先级的中断,系统此时就会放下低优先级转向去执行高优先级的,完了之后继续回来执行低优先级的。 按照这个逻辑,我们应该只要将各个中断的优先级预先设好就没有问题了。项目一共用了四个中断TSI,RTC(这两个中断组合完成TSI扫描按键,是基于sam之前写的的算法),MTIM(数码管扫描),KBI(用作低功耗唤醒)。 因此,我们把MTIM的优先级设成最高,就应该不会再出现闪烁的现象了,但改完之后,结果依旧失败。   经过不断讨论以及查找数据手册,最终实现了,但不得不说PT60实现中断嵌套还是挺麻烦的。 我们一步一步来:   1.首先我们来看CPU是执行中断的顺序。其余步骤没有什么特别,关键就在于第2步。 2.我们来看这个I位的作用。当进入某个中断之后,这个I位就会被自动置位,也就是系统将整个interrupts都给关掉了,这么做的原因也就是为了让系统在执行某个中断的时候,不会被其他的中断给干扰打断。 那么这就是为什么我们会中断嵌套失败的根本原因! 3.因此,如果我们需要使用中断嵌套的话,那么就需要在每个中断程序里面添加这个清楚CCR寄存器I位的指令,asm cli。 4.因为中断嵌套被启用了,有潜在的风险会导致进中断前一些堆栈数据出错或者中断优先级出问题等,那么在中断程序的最后,我们再加一句话,让一切恢复正常就可以了 IPC_SC_PULIPM = 1;   经过以上步骤,中断嵌套就能够实现了。     但在这个过程中,遇到了几个问题,也和大家分享下 1.PT60的中断会自己嵌套自己: 手册中有提到,高优先级和同级中断都是可以抢占低优先级的。 我举个例子来说明: 现在有两个中断,1号中断--低优先级0级,2号中断--高优先级1级。 1号中断正在执行的过程中,此时2号中断过来打断了他,系统必然要先把2号中断执行完。之后再回去执行1号中断剩下的部分。但很不巧,此时新的1号中断又来了,就是说上一次的1号中断还没跑完,又被新的1号抢占了,也就是自己嵌套了自己,最后必然导致全部中断的时序都出现了问题。 这是一种潜在的隐患,我们的解决方法就是:让0级的1号中断一开始执行中断程序之后,让其把自身的中断等级提高一级,中断结束的时候在加上上面提到的恢复语句又变回0级。这样的话,我旧的1号中断(1级)还没执行完,新的一号中断(0级)即使来了,也无法抢占,必须乖乖的等着让旧的先执行完。下面这几条语句就是提高中断等级的,我们实验的时候让中断只有0和1级。   2.在执行asm cli指令之前必须要清除中断标志位: 接上,如果不清楚标志位的话就打开asm cli的话,那么系统就一直不断地让这个中断再进,也就是中断自己不断地在嵌套自己,最终把堆栈给压爆了,程序也就跑飞了。   东西很简单,但是确实值得注意。 附件是测试的程序,有需要的可以参考。  General
View full article