Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
在GUI GUIDER 1.7.0上经常出现collect2.exe': CreateProcess: No such file or directory 1、编译软件为V1.7.0 2、JAVA版本为:22.0.1 2024-04-16 3、增加imgbtn的新图片时,会出现如下问题 问题信息如下: "Compiling E:/UI_test/p1_prj-psh/p1_prj/lvgl-simulator/../custom/custom.c" "Linking simulator.exe" gcc: fatal error: cannot execute 'd:/nxp/gui-guider-1.7.0-ga/environment/mingw/bin/../libexec/gcc/mingw32/9.2.0/collect2.exe': CreateProcess: No such file or directory compilation terminated. mingw32-make: *** [default] Error 1 @Alex_Wang  Re: 在GUI GUIDER 1.7.0上经常出现collect2.exe': CreateProcess: No such file or directory Hi Alex,     非常感谢你的回复,此问题已解决! Best regards, Elisen Re: 在GUI GUIDER 1.7.0上经常出现collect2.exe': CreateProcess: No such file or directory Hi, @ElisenChen  编译报错问题原因:gcc命令行长度有32K的限制,您应用最后链接的时候,命令长度超过了限制。 解决办法:把.o先编译成静态库,然后使用静态库生成最后的可执行文件。下面对 \lvgl-simulator\Makefile的修改可以解决这个问题。 将Makefile中default替换以下内容: default: $(OBJS) $(GEN_OBJS)   @echo "Linking $(SIMULATOR_EXE)"   @ar -csr libgenerated.a $(GEN_OBJS)   @$(CC) -o $(BIN_DIR)$(SIMULATOR_EXE) $(OBJS) -L. -lgenerated $(LDFLAGS) 非常感谢您提到的问题,我们会在GUI Guider 1.8.0修复这个问题。 Best regards, Alex Re: 在GUI GUIDER 1.7.0上经常出现collect2.exe': CreateProcess: No such file or directory Hi Alex,      感谢,期待你与团队的回复 Re: 在GUI GUIDER 1.7.0上经常出现collect2.exe': CreateProcess: No such file or directory Hi, @ElisenChen  我对您的工程进行了检查,工程看起来没有什么问题,我已交给GUI Guider开发团队进行分析,正在积极查找问题原因。当我删掉了您指的所有控件,复制控件(不要新建)使用是没有问题的,您可以进行尝试。可参考附件中的视频,如有任何更新,我会第一时间回复您。 Best regards, Alex (view in My Videos) Re: 在GUI GUIDER 1.7.0上经常出现collect2.exe': CreateProcess: No such file or directory Hi everyone,     如下问题是否有其他解法或是建议吗?
記事全体を表示
使用canFD发送数据问题 您好,我在使用s32k144通过canFD发送数据。单步调试时,调用can_write()后,应该发送一条数据,逻辑分析仪却显示发送了很多条数据,同时只有前几条数据跟我发送的数据可以对应的上,同时IFLAG1寄存器也没有置位。想知道是什么原因造成的?该怎么解决?另外,EB配置中的三个波特率哪一个代表仲裁段的波特率?希望能得到您的帮助! Re: 使用canFD发送数据问题 好的,谢谢了
記事全体を表示
カスタムM7セカンダリブートローダー i.MX RT1176 こんにちは、現在、m7 と m4 の両方のコア FW は QSPI フラッシュ FlexSPI1 0x30000000 に格納されています。最初に M7 が起動し、次に QPSI から ID のエイリアスにイメージをコピーしてコア M4 を起動します0x20200000。すべて正常に機能しています。 次に、特定の検証に基づいてM7コアを起動し、M7がm4を起動するカスタムブートローダーを追加したいと思います。また、M7 / M4または両方のファームウェアのOTAも処理されます。 標準のセカンダリブートローダーコードはありますか?参考までにシェアしてください。 ありがとうございます
記事全体を表示
evkmimxrt1024_lpi2c_interruptに関するご質問 親愛なる皆様へ これを試しましたが、動作させることができませんでした、指示どおりに配線、SCL:J18-12 --> J17 -4、 SDA:J18 -10 ---> >J17-2。次の関数は 0 ではなく 900 を返します (成功) reVal = LPI2C_MasterStart(EXAMPLE_LPI2C_MASTER_BASEADDR, LPI2C_MASTER_SLAVE_ADDR_7BIT, kLPI2C_Read); 何か見落としたものはありますか?誰かがこのplsを試しましたか? IDE24.12 と SDK24.12 を使用しています。 ありがとうございます ピング Re: evkmimxrt1024_lpi2c_interruptに関する質問 こんにちは@ping1 , ご辛抱いただきありがとうございます。 私はSDKチームにあなたのケースを確認しました。 NXPには、この問題の解決を目的とした内部チケットがすでにありますが、その後のSDKデモは更新されますので、引き続きSDKの更新バージョンに注意してください。 この問題の解決が急務で、SDKのアップデートが待ちきれない場合は、お知らせください。 それがあなたに役立つことを願っています。 それでも質問がある場合は、私に知らせてください。 良い一日をお過ごしください! よろしくお願いします MayLiu Re: evkmimxrt1024_lpi2c_interruptに関する質問 こんにちは@ping1 , 私たちの製品に興味を持ち、コミュニティをご利用いただき、誠にありがとうございます。 私はあなたがしたことに従って、私もこのエラーを見つけます。 プログラムは、I2C BUSがkStatus_LPI2C_Busy状態であることを確認します。 関連するSDKチームに内部チケットをリクエストして確認します。 しばらくお待ちください。 それがあなたの助けになることを願っています。 それでもご不明な点がございましたら、お気軽にお知らせください。 良い一日をお過ごしください! よろしくお願いいたします メイリュウ
記事全体を表示
IMXRT1170-EVKB 上的双以太网配置 大家好, 问候! 我正在研究 IMXRT1170-EVKB 板并实现双以太网(ETH0 和 ETH1)以同时以 100M 和 1G 的速度工作。 我首先导入 SDK 示例“evkbmimxrt1170_lwip_ping_bm_cm7”,该示例在同一工作区内以独立模式成功运行。以太网端口选择通过以下方式控制: - “板载网络使用100M以太网端口(1U)” -“板载网络使用100M以太网端口(0U)” 但是,我需要同时启用两个以太网端口(100M 和 1G)。为了实现这一目标,我采取了以下措施: - 使用 lwIP 配置并初始化两个以太网接口(100M 和 1G)。 - 分配唯一的 MAC 地址、PHY 资源和时钟配置。 - 为每个接口创建“netif_100M”和“netif_1G”结构。 驱动程序和配置文件的修改: 1. 在“opt.h”中启用“IP_FORWARD”。 2. 为两个以太网接口启用 ping 初始化。 3. 更新“lwipopts.h”: - 设置“LWIP_SINGLE_NETIF = 0”以允许多个接口。 - 设置“LWIP_NUM_NETIF = 2”来定义网络接口的最大数量。 整合这些更改后,我可以成功地向两个以太网输入发送 ping 消息。但只有“1G以太网(ETH1)有响应”,而“100M以太网(ETH0)没有收到任何响应”。 我已附上终端截图和完整修改后的项目“evkbmimxrt1170_lwip_ping_bm_cm7”以供参考。您能否检查一下我的配置并指出可能导致此问题的任何缺失步骤? 期待您的指导。 提前谢谢! 此致, 库马尔王子 回复:IMXRT1170-EVKB 上的双以太网配置 你好,山姆, 感谢您的快速回复。 我按照建议做了修改。删除/注释了“ netif_set_default(&netif_100M);”,但问题依旧。比如ping响应只来自1G网络,而不是100M网络。 BR, 库马尔王子
記事全体を表示
i.MX8MPカーネルブートロゴとyoctoプロジェクトのスプラッシュイメージを独自のカスタムロゴと画像に変更する方法 NXPサポートチーム様 U-Boot の最初から表示されるロゴや画像をすべて変更したいと思います。 HDMI モニターをボードに接続すると、4 匹のペンギンと、進行状況バー付きの Yocto プロジェクト イメージが表示されます。 それらの画像を自分のカスタム画像に変更したいと思います。 どのように変更すればよいか教えてください。 私は Yocto Linux imx を初めて使用するので、可能であれば詳しく説明してください。 よろしくお願いします。 Re: How to change i.MX8MP kernel boot logo and yocto project splashimage to my own custom logo and i こんにちは、 @Rita_Wan 8MP_LVDS_patchに基づいて、U-Boot でディスプレイを正常に動作させることができました。しかし、カーネル部分を追加すると、U-Boot とカーネル表示間のシームレスな遷移が実現できませんでした。カーネル側では異常な動作 (画面のちらつき) が見られますが、U-Boot の表示はまったく正常です。 これについて何か提案をいただけませんか?問題の原因は何でしょうか? Re: How to change i.MX8MP kernel boot logo and yocto project splashimage to my own custom logo and i こんにちは@bych 、 試すのに簡単な方法を見つけました: Linuxカーネルロゴ netpbm ツールを使用して、png 画像を ppm 画像に変換します。 $ pngtopnm linux_logo.png > linux_logo.pnm $ pnmquant 224 linux_logo.pnm > linux_logo_clut224.pnm $ pnmtoplainpnm linux_logo_clut224.pnm > logo_linux_clut224.ppm   変換した ppm ファイルをカーネルのドライバ/video/logo/ ディレクトリに配置し、logo_linux_clut224.ppm ファイルを置き換えます。 カーネルを再コンパイルすると、ロゴが新しい画像に置き換えられます。 お試しになることができます。 良い一日をお過ごしください Bset よろしく リタ Re: How to change i.MX8MP kernel boot logo and yocto project splashimage to my own custom logo and i 私は i.MX8M Plus プロセッサをベースにした独自のカスタム ボードを持っていますが、このカスタム ボードは i.MX8M Plus EVK ボードと同じように設計されています。 ボードの起動に成功し、HDMI 経由のディスプレイも正常に表示されます。 しかし、私はブート ロゴ (4 つのペンギン) とスプラッシュ スクリーン (進行状況バー付きの Yocto プロジェクト ロゴ) を独自のカスタム ロゴに変更したいだけです。 パッチを提供してもらいましたが、そのパッチを u-boot またはカーネルに適用する方法がわかりません。 これらのパッチの使用方法と適用方法を教えてください。 ありがとう。 Re: How to change i.MX8MP kernel boot logo and yocto project splashimage to my own custom logo and i あなたの手にあるボードは何ですか?nxp ボード、または自分でデザインしたボードでは、すでにボードを起動して表示していますか? Re: How to change i.MX8MP kernel boot logo and yocto project splashimage to my own custom logo and i これらのパッチをどのように適用すればよいか教えていただけますか?これまでパッチを適用したことがありません... Re: How to change i.MX8MP kernel boot logo and yocto project splashimage to my own custom logo and i LVDS で実現されている u-boot およびカーネルのパッチを参照できます。方法はほぼ同じです。 U-Boot とカーネル間の i.MX 8MP LVDS シームレス ディスプレイ (连续显示) - NXPコミュニティ
記事全体を表示
Wifi SDK を介して Raw パケットを送受信する 読者の皆様   私は NXP RW612 SoC に取り組んでおり、ハンドシェイクなしで 2 つのデバイス間でNXP Wifiドライバを使用して生のWi-Fiパケットを送受信しようとしています。 それをどうやって実装できるか、何かアイデアはありますか? 以下の関数はまだ実装されておらず、 Wifi . h ファイルではそのシグネチャのみが使用可能です。 int wifi_raw_packet_send ( const t_u8 *パケット、 t_u32 長さ); int wifi_raw_packet_recv (t_u8 **データ、t_u32 *pkt_type); レシーバをモニタリングモードに設定し、トランスミッタで次の機能を使用する必要がありますか? int wifi_inject_frame( const enum wlan_bss_type bss_type, const uint8_t *buff, const size_t len) Re: Transmit and receive Raw packet through Wifi SDK wifi_test_mode の例をテストしたところ、固定ペイロード パターンを持つ 802.11 フレームのみが送信されることに気付きました。 私のCASE、カスタム ペイロードを使用して生の 802.11 フレームを送受信する必要があります。 この目的のために次の機能を使用できますか? int wifi_inject_frame(const enum wlan_bss_type bss_type、const uint8_t *buff、const size_t len); もしSOなら、レシーバ側でパケットを受信するにはどうすればよいですか? どうぞよろしくお願いいたします。 よろしくお願いいたします。 Re: Transmit and receive Raw packet through Wifi SDK こんにちは、 wifi_test_mode アプリケーションは、さまざまな RF および規制コンプライアンス テストに対する CLI サポートを示します。 詳細については、セクション4.9.1.7「標準 802.11 パケットの送信( UM11799 )」を参照してください。 よろしくお願いいたします。 ダニエル。 Re: Transmit and receive Raw packet through Wifi SDK 詳細については、こちらをご覧ください。実際には、80.11 MAC 層を介してデータを送受信する必要があります。 Re: Transmit and receive Raw packet through Wifi SDK ダニエル様 ご返信よろしくお願いします。 wifi_test_mode SDK の例を確認しました。ただし、この例では、STA と uAP が作成されます。実際に必要なのは、ハンドシェイクなしでデータを送受信することです。それをどのように実装CANかご存知ですか? また、モニターモードを使用するためにかなりの努力をしましたが、正常に起動できませんでした。モニターモードのサンプルコードを提供してもらえますか? どうぞよろしくお願いいたします。 よろしくお願いします、 モフセン Re: Transmit and receive Raw packet through Wifi SDK こんにちは、 生の Wi-Fi パケットを送信するには、wifi_test_mode SDK の例を試すことができます。 よろしくお願いいたします。 ダニエル。
記事全体を表示
AN4581の最新バージョン こんにちは、 2020年からのAN4581(HABv4対応デバイスでのi.MXセキュアブート)Rev.4があります。 https://de.scribd.com/document/811030804/AN4581 しかし、Web サイトやインターネットで検索すると、2012 年または 2018 年の古いバージョンしか見つけることができません。 AN4581の最新リビジョンはどこでCAN入手できるか教えていただけますか? よろしくお願いします。 Re: Latest version of AN4581 サポートありがとうございます。 2020 バージョンはここからダウンロードできました: https://www.readkong.com/page/an4581-i-mx-secure-boot-on-habv4-supported-devices-2622907 古いバージョンは NDA なしでこちらから入手できます: https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/225997/1/AN4581.pdf(2012年) https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/194321/1/AN4581_2018.pdf(2018年) Re: Latest version of AN4581 このセキュア ブートの AN は機密情報であるため、NXP との NDA に署名する必要があります。 https://support.nxp.com/s/?language=en_USから内部チケットを作成することをお勧めします。
記事全体を表示
为 i.mx8MQ 创建 Jailhouse 虚拟机监控器 Inmate cell 时出现问题 亲爱的先生, 正在尝试通过 Jailhouse 在 NXP i.MX 8MQ EVK 板中创建自定义(e-Call)Inmate linux 演示单元。 所有操作步骤均已添加到所附的 "NXP_Jailhouse_Ticket.txt "中。锉刀 面临的问题:- 我们面临编译问题, 如何编译 linux-inmate-demo.c文件并生成 .o和 .cell文件? 如何创建正确的 .bb文件,用于编译 linux-inmate-demo.c文件并生成 .o和 .cell文件并添加到最终图像中。? 请向我们提供您在创建自定义监狱囚犯牢房时有的任何应用笔记, 或者 是否有任何指向以前具有相同解决方案的恩智浦社区门票的链接? 还请纠正上述步骤并提供解决方案。 i.MX8ULP Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 关于如何设置网络以允许囚犯访问互联网,请参阅下文,您需要更新设置以使用 USB 网或以太网。 如何使用网络为第 2 版 Linux 设置网络 首次启动 linux 后 sysctl -w net.ipv4.ip_forward=1 sysctl -p /etc/sysctl.conf 启用根细胞后 iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 第二次启动 linux 后 ifconfig eth1 或 2 192.168.1.4第 1 个 Linux 根单元 ifconfig eth0 192.168.1.5为第二个 Linux 囚犯牢房 "ip route add default via 192.168.1.4dev eth0" for the 2nd linux " ip route add 10.193.100.0/24通过 192.168.1.4dev eth0" 用于第二个 linux 现在,您可以"mount -t nfs 10.193.108.xx:/home/xxx/nfs/mnt" 在步骤 3 和 4 中,根据您的网络将 10.193.xx.xx 更新为您的网络 此致 Peng 开始标志。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 嗨,彭、 非常感谢你们的支持,我们可以将 "scp "从根单元复制到囚犯单元。 基本上,我们希望在囚犯手机上保留带有 MQTT 的电子呼叫应用程序。 我们可以共享从根节点到囚犯单元的读/写共享内存。此外,我们还可以按照您的建议,为 root/inmate 单元提供静态 IP。 现在,我们需要在囚犯牢房上建立互联网连接,以便将接收到的数据从根牢房传输到云端。 我们通过 USB 端口将 Quectel EC25 模块连接到恩智浦 i.MX8MQ 板。 根单元数据的 IFCONFIG: ” ifconfig eth0: flags=-28669 mtu 1500 ether 00:04:9f:05:a5:9c txqueuelen 1000(以太网) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 0 字节 0 (0.0 B) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 eth1: flags=-28605 mtu 16384 inet 192.168.0.3 netmask 255.255.255.0 广播 192.168.0.255 inet6 fe80::88f0:a7ff:fe40:2407 prefixlen 64 scopeid 0x20 ether 8a:f0:a7:40:24:07 txqueuelen 1000(以太网) RX 数据包 41 字节 7030 (6.8 KiB) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 71 字节 18812 (18.3 KiB) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000(本地环回) RX 数据包 103 字节 9268 (9.0 KiB) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 103 字节 9268 (9.0 KiB) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 usb0: flags=-28605 mtu 1500 inet 192.168.225.39 净掩码 255.255.255.0 广播 192.168.225.255 inet6 2401:4900:4bb5:e7a7:609f:c3ff:fe2c:903b prefixlen 64 scopeid 0x0 inet6 fe80::609f:c3ff:fe2c:903b prefixlen 64 scopeid 0x20 ether 62:9f:c3:2c:90:3b txqueuelen 1000(以太网) RX 数据包 84 字节 7614 (7.4 KiB) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 117 字节 13860 (13.5 KiB) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 " 可以看到,互联网连接已在 ROOT 手机端建立。 以下是 PING 命令的输出结果 ” root@imx8mqevk:/home ping 8.8.8.8 PING 8.8.8 (8.8.8.8) 56 (84) 字节的数据。 来自 8.8.8.8 的 64 字节:icmp_seq=1 ttl=114 时间=193 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=2 ttl=114 时间=68.9毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=3 ttl=114 时间=62.8毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=4 ttl=114 时间=68.5 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=5 ttl=114 时间=66.5 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=6 ttl=114 时间=78.6 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=7 ttl=114 时间=71.0毫秒 ” 现在我在囚犯牢房遇到了网络问题,下面是 IFCONFIG 日志: ” root@imx8mqevk:~ ifconfig eth0 Link encap:Ethernet HWaddr 6E:58:98:59:01:A0 inet addr:192.168.0.4 Bcast:192.168.0.255 掩码:255.255.255.0 inet6 addr: fe80::6c58:98ff:fe59:1a0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:16384 Metric:1 RX 数据包:184 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:65 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:78814 (76.9 KiB) TX 字节:14002 (13.6 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 掩码:255.0.0.0 inet6 地址:::1/128 范围:主机 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX 数据包:22 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:22 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:3897 (3.8 KiB) TX 字节:3897 (3.8 KiB) ” 此外,我们还尝试在 ROOT 手机端进行 IP 转发: 允许囚犯牢房接入外部网络: 根细胞中 echo 1> /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -i eth1 -o usb0 -j ACCEPT iptables -A FORWARD -i usb0 -o eth1 -j ACCEPT iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE ” 当我运行上述命令时,得到以下日志: ” root@imx8mqevk:/home iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE [ 1869.738194] audit: type=1325 audit(1755848821.593:11):table=nat 系列=2 entries=7 op=xt_replace pid=713 comm="iptables" root@imx8mqevk:/home [ 1869.749806] audit: type=1300 audit(1755848821.593:11):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaafd66a400 items=0 ppid=607 pid=713 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 1869.779649] audit: type=1327 audit(1755848821.593:11):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445" ” 还将 Dmesg 日志放入根单元 ” [ 71.141601]创建了监狱牢房"ecall-linux-inmate-demo" [ 77.822386]IPv6:ADDRCONF(NETDEV_CHANGE):ETH1:链路就绪 [ 206.451703]audit: type=1325 audit(1755847158.198:4):table=nat 系列=2 个条目=0 op=xt_register pid=651 comm="iptables" [ 206.463131]audit: type=1300 audit(1755847158.198:4):arch=c00000b7 syscall=209 success=yes exit=0 a0=4 a1=0 a2=40 a3=ffffe78d01c0 items=0 ppid=607 pid=651 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 206.493176]audit: type=1327 audit(1755847158.198:4):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0065746830002D6A004D415351554552414445 [ 206.508268]audit: type=1325 audit(1755847158.202:5):table=nat 系列=2 entries=5 op=xt_replace pid=651 comm="iptables" [ 206.519201]audit: type=1300 audit(1755847158.202:5):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaabb51c230 items=0 ppid=607 pid=651 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 206.547353]audit: type=1327 audit(1755847158.202:5):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0065746830002D6A004D415351554552414445 [ 217.506636]audit: type=1325 audit(1755847169.257:6):table=nat 系列=2 个条目=6 op=xt_replace pid=657 comm= " iptables " [ 217.517791]audit: type=1300 audit(1755847169.257:6):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaaec783230 items=0 ppid=607 pid=657 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 217.547639]audit: type=1327 audit(1755847169.257:6):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445 [ 294.389911]audit: type=1325 audit(1755847246.146:7):table=filter 系列=2 entries=0 op=xt_register pid=659 comm="iptables" [ 294.401564]audit: type=1300 audit(1755847246.146:7):arch=c00000b7 syscall=209 success=yes exit=0 a0=4 a1=0 a2=40 a3=fffff5707410 items=0 ppid=607 pid=659 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 294.431369]audit: type=1327 audit(1755847246.146:7):proctitle=69707461626C6573002D4100464F5257415244002D690065746831002D6F0075736230002D6A00414343455054 [ 294.445250]audit: type=1325 audit(1755847246.150:8):table=filter 系列=2 entries=4 op=xt_replace pid=659 comm="iptables" [ 294.456430]audit: type=1300 audit(1755847246.150:8):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaaeb8d3950 items=0 ppid=607 pid=659 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 294.484541]audit: type=1327 audit(1755847246.150:8):proctitle=69707461626C6573002D4100464F5257415244002D690065746831002D6F0075736230002D6A00414343455054 [ 314.598783]audit: type=1325 audit(1755847266.267:9):table=filter 系列=2 entries=5 op=xt_replace pid=662 comm="iptables" [ 314.610726]audit: type=1300 audit(1755847266.267:9):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaac05eaac0 items=0 ppid=607 pid=662 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 314.640305]audit: type=1327 audit(1755847266.267:9):proctitle=69707461626C6573002D4100464F5257415244002D690075736230002D6F0065746831002D6A00414343455054 [ 849.488680]audit: type=1006 audit(1755847801.267:10):pid=671 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=3 res=1 [ 849.501588]audit: type=1300 audit(1755847801.267:10):arch=c00000b7 syscall=64 success=yes exit=1 a0=3 a1=ffffc0aa76a0 a2=1 a3=ffff83653020 items=0 ppid=238 pid=671 auid=0uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="crond" exe="/usr/sbin/crond" key=(null) [ 849.527425]audit: type=1327 audit(1755847801.267:10):proctitle=2F7573722F7362696E2F63726F6E64002D6E [ 1869.738194] audit: type=1325 audit(1755848821.593:11):table=nat 系列=2 entries=7 op=xt_replace pid=713 comm="iptables" [ 1869.749806] audit: type=1300 audit(1755848821.593:11):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaafd66a400 items=0 ppid=607 pid=713 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 1869.779649] audit: type=1327 audit(1755848821.593:11):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445 " 您能帮助我们解决囚犯牢房的上述网络问题吗? Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 在 linux 中执行你的 “root” 或 “犯人” 将触发信号分段故障。 要在两个 linux 之间测试 ivshmem,可以按以下方法进行: 在根单元中: ivshmem-demo -d /dev/uio0 -t 2 在囚犯牢房中: ivshmem-demo -d /dev/uio0 -t 0 然后,你就会看到两个细胞之间的交流。 ivshmem-demo 的源代码位于 imx-jailhouse/tools/demos/ivshmem-demo.c 中。 关于如何在囚犯 Linux 启动后将文件复制到囚犯牢房、 在囚犯牢房: ifconfig eth0 192.168.0.4 在根单元中: ifconfig eth0 192.168.0.3 然后,你可以使用 scp 将文件从 root 复制到犯人。 也可以在根牢房配置 IP 转发,让囚犯访问外部网络。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 嗨,彭, 非常感谢你的回复,现在我们可以编译 cell.c 了。代码和生成的 .cell锉刀 " 自定义 ecall-inmate-linux-demo 单元创建成功,ecall-inmate-linux-demo 客户端启动并运行。 Linux主机 root imx8mqevk:~jailhouse 牢房列表 ID 名称 状态 已分配 CPU 故障 CPU 0 imx8mq 运行中 0-1 1 ecall-inmate-linux-demo 运行 2-3 ecall-inmate-linux-demo guest " 我们正在使用 /dev/uio0 设备节点进行通信。 尝试了一些 python 代码,根单元格的写入/发送成功。同时,也无法接收到任何关于 Linux 的演示。 之后,我们转入 C 语言编程代码,并附加了 "ivshmem_common.h"、'ivshmem_inmate.c'、'ivshmem_root.c',以及 Makefile。 使用以下命令生成二进制文件 源 /opt/fsl-imx-wayland/5.15-kirkstone/environment-setup-armv8a-参考发行版、系统开发套件。 export cross_compile=aarch64-参考发行版、系统开发套件。-linux-make kird=/home/automotive/yocto_imx_linux/版本/tmp/work-shared/imx/kernel-版本-Artifacts c= " aarch64-参考发行版、系统开发套件。-linux x-gcc--sysroot=$sdktargetsysRoot " arch=arm64 cross_compile=aarch64-参考发行版、系统开发套件。-Linux-aarch64-参考发行版、系统开发套件。-linux-gcc--sysroot=/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/armv8a-参考发行版、系统开发套件。-l inux-Wall-O2-o 根目录 ivshmem_root.c 我们在桌面端使用 imx8mq 工具链和上述命令进行编译。 我们想将生成的二进制文件复制到 Linux 囚犯演示单元。 我们已成功复制到根单元,但不知道在 Inmate Linux 演示单元上复制或编译的步骤? ,您能提供相同的操作方法吗? 我指的是恩智浦文档 "UG10163",名称为 "iMX_Linux_user_guide_LF6.12.20_2.0.0"。 我需要一些有效的示例代码和用户指南来使用这个 Linux 演示囚犯牢房,因此从根单元传输(一些捆绑的数据,例如 JSON 或字符串/二进制)数据,反之亦然,从 Linux Inmate 演示单元接收。 谢谢, Sumit Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 所以,我的理解是,你遇到了投诉问题。 恩智浦有一个仓库:https://github.com/nxp-imx/imx-jailhouse 我不明白你为什么要尝试版本单元文件。仅使用make即可版本监狱和所有单元文件非常简单。即使你使用的是 Simense 仓库,该文档也说: make [KDIR=/path/to/kernel/objects] 还有我版本所有内容的命令: . /opt/fsl-imx-internal-xwayland/6.12-styhead/environment-setup-armv8a-参考发行版、系统开发套件。-linux 导出 cross_compile=aarch64-参考发行版、系统开发套件。-Linux- 取消设置 CFLAGS unset LDFLAGS make kdir=$HOME/linux/linux-LTS-NXP CC= " aarch64-poky-linux-gcc--sysroot=$sdktargetsysroot " arch=arm64 cross_compile=aarch64-POKY-LINUX-LINUX-GCC arch=arm6 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 亲爱的 PENG、 非常感谢你们的建议。 我们仍面临一些问题,详情如下: 创建 .cell 的流程文件(Jailhouse Inmate 二进制文件)、SDK 编译命令: 工具链环境设置: 来源 /opt/fsl-imx-wayland/5.15-kirkstone/environment-setup-armv8a-参考发行版、系统开发套件。-linux PATH bash:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-linux/usr/bin: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-kirkstone/sysroots/x86_64-kirkstone/sysroots/sbin: /opt/fs l-imx-wayland/5.15-kirkstone/sysroots/x86_64-kirkstone/sysrox86_64-pokysdk-linux/bin: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-linux/sbin: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-linux/usr/bin/.../x86_64-pokysdk-linux/bin: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-pokysdk-linux/bin/aarch64-pokysdk-linux: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-linux/bin/aarch64-pokysdk-linux/bin/apoky-linux-musl: /home/automotive/.local/bin: /home/automotive/bin: /usr/local/sbin: /usr/bin: /usr/bin: /bin: /bin: /usr/bin: /bin: /usr/bin: /usr/bin: /bin: /usr/bin: /usr/bin: /usr/bin: /bin: /usr/bin: /usr/bin: /usr/bin: /bin: /usr/bin: /usr/bin: /usr/bin: /bin: /usr/b-c-i/HOME/Automotive/Jailhouse/Hypervisor/include-i/home/Automotive/Jailhouse/Hypervisor/arch/ arm64/include-i 汽车/监狱/include-nostdlib-nostartfiles-ffreestanding ecall-inux-demo.c-o ecall-inux-demo.c-o ecall-inumate-inmate-inmate-inmate-inmate-inmat 注意:-Jailhouse 头文件不是工具链的一部分,因此我们从 Seimens 的 Jailhouse 文件夹中单独下载(github 版本)。我们使用头文件 inmate-linux-demo.cell 进行编译。 我们没有对 .c锉刀 第 1 步:链接 .o 生成平面 ELF aarch64-poky-linux-ld\-ttext=0x0\-nostdlib\-o ecall-inux-demo.elf\ ecall-inux-demo.elf\ ecall-inumate-linux-demo.o -ttext=0x0 放置 .text 地址为 0x0 的部分,用于平面二进制布局。 -nostdlib阻止链接标准 C 库(队友不需要它)。 第 2 步:将 ELF 转换为原始二进制 .cell aarch64-poky-linux-objcopy\-O 二进制\ ecall-inimate-linux-demo.elf\ ecall-inumate-linux-demo.cell 验证结果:文件 ecall-inumate-linux -demo.cell 验证结果:文件 ecall-inux-demo. 打印信息: ecall-inmate-linux-demo.cell: data 删除默认的 imx8mq.cell 和 imx8mq-linux-demo.cell 生成 "imx8mq.cell 和 imx8mq-linux-demo.cell文件被推送到目标文件夹:"/usr/share/jailhouse/cells 之后,使用生成的 imx8mq.cell 启用 Jailhouse,并面临以下错误 / jailhouse enable /usr/share/jailhouse/cells/imx8mq.cell [ 2533.385877] jailhouse:不是系统配置 JAILHOUSE_ENABLE:无效参数 请提供指导,如果可能的话,请提供一些用户指南/应用笔记或 Makefile/Proper GCC 命令来解决问题。 附上 makefile(它包含所有命令,如上所述) 编译,制 作 aarch64-poky-linux-gcc-nostdlib-nostartfiles-ffreestanding-i/home/automotive/Jailhouse/Hypervisor/include-i-i/home/jailhouse/Hypervisor/include-i-home/automotive/Jailhouse/Hypervisor/include-i-home/automotive/Jailhouse/Hyp-imx8mq.o aarch64-poky-linux-ld-ttext=0x0-nostdlib-o imx8mq.elf imx8mq.elf imx8mq.elf imx8mq.o aarch64-poky-linux-ld: 警告 :找不到入口符号 _start;默认为 0000000000000000 aarch64-poky-linux-objcopy -O 二进制 imx8mq.elf imx8mq.cell 它生成了 .elf.cell 和 .o. 使用以下命令验证文件格式: 文件 imx8mq.elf imx8mq.elf:ELF 64 位 LSB 可执行文件,ARM aarch64,版本 1 (SYSV),静态链接,未删除文件 imx8mq.o imx8mq.o:ELF 64 位 LSB 可重定位,ARM aarch64,版本 1 (SYSV),未删除 文件 imx8mq.cell imx8mq.cell:数据 感谢您的支持。 苏米特 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ BTW: 这是不对的 "敲击 export pythonpath=/HOME/automotive/yocto_imx_linux/版本/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/USR/Share/Jailhouse/Tools export c_include_path=/HOME/Automotive/yocto_imx_linux/版本/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/USR/Include/Jailhouse      /home/automotive/yocto_imx_linux/版本/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/usr/bin/jailhouse-cell-linux \      /home/automotive/yocto_imx_linux/版本/tmp/work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/ecall-inmate-linux-demo.c \ -o ecall-inmate-linux-demo.cell 单元格是由 GCC 编译出来的,而不是 jailhouse-cell-linux 编译出来的。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 我对 Yocto 的东西知之甚少。只需分享我的版本命令即可: . /opt/fsl-imx-internal-xwayland/6.12-styhead/environment-setup-armv8a-参考发行版、系统开发套件。-linux make kdir=$HOME/linux/linux-LTS-NXP CC= " aarch64-poky-linux-gcc--sysroot=$sdktargetsysroot " arch=arm64 cross_compile=aarch64-POKY-LINUX-V=1 然后将版本牢房。 5.10 也应类似。 也请分享您编译出来的单元格文件,让我看看 jailhouse-cell-linux 为什么会在单元格上报错。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 亲爱的彭凡 感谢您就 i.MX 8MQ 上 Jailhouse 的 IVSHMEM 内存区域提供的宝贵指导,您在回复中提供了有关状态表、RW 部分和输入/输出部分的信息。我们已经将你的建议纳入了我们的牢房配置,但是当我们尝试在i.MX 8MQ EVK板上使用Yocto 5.15 Kirkstone(Linux 5.15.71-2.2.0)创建自定义的E-Call囚犯单元时,仍然面临持续的编译错误。以下是该问题的详细摘要、我们为解决该问题所做的努力以及目前的状况。如果您能提供任何具体的参考、应用笔记或进一步的指导,以帮助我们解决这个问题,我们将不胜感激。 问题摘要 我们正在尝试编译一个自定义的 E-Call 囚犯单元配置(最初基于 `imx8mq-linux-demo.c`、现在使用简化的 "ecall-inmate-linux-demo.c"),使用 "jailhouse-cell-linux "工具。在 "jailhouse-ecall.bb "的 "do_compile "任务中编译失败配方出现以下错误: " 错误:jailhouse-ecall-1.0-r0do_compile:执行错误('/home/automotive/yocto_imx_linux/版本/tmp/work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/temp/run.do_compile.225085 ',1,无,无)日志数据如下:调试:执行 shell 函数 do_compile 不是单元配置:/home/automotive/yocto_im_imbild x_linux/版本/tmp/work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/imx8mq-linux-demo.c 警告:从 shell 命令中退出代码 1。 错误:任务(/home/automotive/yocto_imx_linux/sources/meta-ecall/recipes-jailhouse/jailhouse-cells/jailhouse-cells/jailhouse-call/jailhouse-cells/jailhouse-call.bb: " 该错误表明 `jailhouse-cell-linux` 无法识别单元配置文件。尽管多次尝试解决,但问题依然存在。 尝试解决的详细信息根据社区反馈和反复试验, 我们对Yocto配方、细胞配置和环境进行了多次更新。以下是主要工作的摘要: 1.初始设置和错误: - 以 `jailhouse-ecall.bb` 开始使用 `imx8mq-linux-demo.c`.和 `jailhouse-native.bb`基于西门子 Jailhouse fork (`git://github.com/siemens/jailhouse.git;branch=master;SRCREV=e57d1eff`)。 - 遇到与缺少`pyjailhouse`模块和不正确的`jailhouse-cell-linux`命令语法有关的错误(例如,将`-I`误解为`CELLCONFIG`)。 2。配方更新: -jailhouse-native.bb: -最初缺少标题安装(`jailhouse/types.h`,jailhouse/cell-config.h`)。更新为包含: " bitbake install -d${D}${includedir} /jailhouse cp -r${S}/include/jailhouse/*.h${D}${includedir} /jailhouse/ " - 切换到 NXP Jailhouse fork (`git://source.codeaurora.org/external/imx/imx-jailhouse.git;branch=imx_5.4.47_2.2.0;SRCREV=8bbe203`),与 `jailhouse_0.12.bb` 看齐,以兼容 i.MX 8MQ。 - 确保 `pyjailhouse_0.12.bb` 与 `jailhouse_0.12.bb` 兼容。 - jailhouse-ecall.bb: - 更正了 "jailhouse-cell-linux "命令,删除了无效的"/dev/null "参数,并使用正确的语法: " bitbake ${STAGING_BINDIR_NATIVE} /jailhouse-cell-linux \ ${S} /ecall-inmate-linux-demo.c\ -o${S}/ecall-inmate-linux-demo.cell " - 更新了 'SRC_URI',以使用 `ecall-inmate-linux-demo.c` 而非 `imx8mq-linux-demo.c`,从而专注于 E-Call 用例。 - 添加了 'export C_INCLUDE_PATH' 和 'PYTHONPATH',以确保找到头文件和 Python 模块。 3.单元配置更新: - 基于 "imx8mq-linux-demo.c "简化了 "ecall-inmate-linux-demo.c"。以及您的 IVSHMEM 指南: - 状态表:0xbfdf0000`,4 KB,只读。 - RW 部分:`0xbfdf1000`,64 KB,读/写。 - 根输出:`0xbfdfa000`, 8 KB, 读/写。 - 根输入:0xbfdfc000`,8 KB,只读。 - 包括 UART1(`0x30860000`)、RAM(`0xc0000000`,256 MB)和通信区域(`0x80000000`)。 - 删除了复杂宏(如 `JAILHOUSE_SHMEM_NET_REGIONS`),以避免解析问题。 - 配置示例片段: " .c .mem_regions= { /* IVSHMEM 状态表 */ { .phys_start= 0xbfdf0000, .virt_start= 0xbfdf0000, .size= 0x1000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED, }, /* IVSHMEM RW 部分 */ { .phys_start= 0xbfdf1000, .virt_start= 0xbfdf1000, .size= 0x10000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, /* IVSHMEM 根输出 */ { .phys_start= 0xbfdfa000, .virt_start= 0xbfdfa000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, /* IVSHMEM 根输入 */ { .phys_start= 0xbfdfc000, .virt_start= 0xbfdfc000, .size= 0x2000, .flags= jailhouse_mem_read | jailhouse_mem_rootshared, }, ... } " 4。依赖关系和层配置: -在 bblayers.conf 中添加了 `meta-ecall` 和 `meta-freescale`。 - 更新了 `local.conf`: "conf IMAGE_INSTALL:append =" jailhouse jailhouse-ecall python3" DISTRO_FEATURES:append =" jailhouse virtualization" " - 验证过的 `jailhouse_0.12.bb` 使用 NXP fork 进行目标部署。 - 确保 `python3-native`、`pyjailhouse` 和头文件安装在本地系统根 (`${STAGING_DIR_NATIVE}/usr/share/jailhouse/tools/pyjailhouse/`, `${STAGING_DIR_NATIVE}/usr/include/jailhouse/`)。 5。手动测试: -手动测试的 “jailhouse-cell-linux”:" bash export pythonpath=/HOME/automotive/yocto_imx_linux/版本/tmp/work/x86_64-Linux/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/0.12-r0/imx/imx/版本/tmp/work/x86_64-linux/Jailhouse-native/0.12-r0/image/usr/include/jailhouse /home/automotive/yocto_imx_linux/版本e/tmp/work/x86_64-linux/jailhouse-native/jailhouse-native/jailhouse-linux/版本e/tmp/work/x86_64-linux/jailhouse-native/imx_linux/ 版本/tmp/ work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/ecall/inmate-linux-demo.c\ -o ecall-inmate-linux-demo.cell " - 同样的错误:`Not a cell configuration`。 - 已验证系统根内容:存在`pyjailhouse`模块、头文件和`jailhouse-cell-linux`。 当前状态 - 尽管: - 错误 `Not a cell configuration` 仍然存在。 - 简化单元配置。 - 将 `jailhouse-native.bb` 与 NXP fork 对齐。 - 确保已安装头文件和 `pyjailhouse`。 -其他配方(“jailhouse-native”、“jailhouse”)成功编译,这表明问题特定于 “jailhouse-ecall.bb” 和单元配置解析。 问题和指导请求 1.错误可能是由于恩智浦 Jailhouse fork (`imx_5.4.47_2.2.0`)和我们的电池配置之间的版本不匹配造成的吗?这个分叉中对 “jailhouse-cell-linux” 有具体要求吗? 2。有没有关于使用 Yocto 5.15 Kirkstone 在 i.MX 8MQ 上创建自定义监狱囚室的应用笔记或用户指南?我们找不到该平台的详细文档。 3.jailhouse-cell-linux "在解析复杂配置(如 IVSHMEM 区域)时是否存在已知问题?我们应该进一步简化配置吗? 4。你能不能提供参考 `jailhouse-ecall.bb`为 i.MX 8MQ 编译 `.cell` 文件的配方或示例? 5。我们可能缺少 i.MX 8MQ 上的 Jailhouse 所需的特定的 U-启动 或内核配置吗? 6。如何解决自定义配方/bb层的监狱依赖关系问题? 附加文件(供参考) -`jailhouse-ecall.bb`:更新了电子呼叫手机的配方。 -`jailhouse-native.bb`: - `ecall-inmate-linux-demo.c`:简化了 IVSHMEM 区域的配置。 - imx8mq-linux-demo.c`:原始配置(供参考)。 -详细的编译日志(如果需要,请确认如何共享)。 我们迫切希望解决这个问题,以便继续部署 E-Call 囚犯单元和测试共享内存通信。如果对我们的方法有任何见解、引用或更正,我们将不胜感激。 感谢您的支持! 致以最崇高的敬意, Sumit 注:-如果需要帮助改进响应或生成详细日志,请告诉我! Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 您好,Bio_TICFSL, 在您的 github 链接中,我们找到了 5.15 Kirkstone 的一些链接: https://github.com/NXP/meta-nxp-harpoon/blob/imx-linux-kirkstone/recipes-extended/jailhouse/jailhouse_%25.bbappend https://github.com/NXP/meta-nxp-harpoon/tree/imx-linux-kirkstone 这对我们的恩智浦i.mx8MQ板有帮助吗? 谢谢、 苏米特 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 让我给大家支几招: 1.Documentation/inter-cell-communication.md 描述了内存的排列方式。 每个单元的 ivshmem 都需要以下区域: - 用于保存状态表的只读区域,一般为一页大小 - 所有对等点都可读写的一个区域 - 每个对等点都有一个输出区域,仅其中一个可读写 2.至 i.MX8MQ /* 00:00.0 的 IVHSMEM 共享内存区域*/ { .phys_start= 0xbfdf0000, .virt_start= 0xbfdf0000, .size= 0x1000, .flags= JAILHOUSE_MEM_READ, ===> 这是状态表。 }, { .phys_start= 0xbfdf1000, .virt_start= 0xbfdf1000, .size= 0x9000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE , ===> 这是 RW 部分。您可以用它来进行交流。或者把这个放大。 }, { .phys_start= 0xbfdfa000, .virt_start= 0xbfdfa000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE , ==> 这是根输入/输出 }, { .phys_start= 0xbfdfc000, .virt_start= 0xbfdfc000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ, ==> 这是根目录输入 }, { .phys_start= 0xbfdfe000, .virt_start= 0xbfdfe000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ, ==> 这是根目录输入信息 这与 imx8mq-inmate-linux.c 中的布局相似。 您可以配置 RW 和 INPUT/OUTPUT 部分,但不要触碰状态部分。 对于 INPUT/OUTPUT,如果定义了多个区域,则每个区域的大小应相同。 此致 Peng 开始标志。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 你好 MX8MQ 没有监狱,但是可以以 github 或 6.6.36 为基础的 MX8M 系列是同一个系列BSP。 此致 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 你好,Bio_TICFSL 非常感谢你的快速回复。 由于我们使用的是 i.MX NXP 8MQ EVK 板 'i.MX 8MQuad',部件号为 " TDA6637 "。 目前,我已经闪存了 Linux Yocto 5.15 Kirkstone'5.15.71-2.2.0'。 但是在你回复 “ NXP Harpoon Jailhouse integration” 时,我们需要 “i.MX Linux Yocto Project 电路板支持包 6.6.36-2.1.0 Harpoon v3 版本”,。 对于 i.MX 8MQ 板它在 5.15 之前支持 Kirkstone Image,在你的 Harpoon 用户指南中 “UG10170” 和 Github 链接为 “https://github.com/NXP/meta-nxp-harpoon/tree/imx-linux-scarthgap” 在此版本中测试了以下板: 恩智浦 i.MX 8MMini LPDDR4 EVK (imx8mm-lpddr4-evk) 恩智浦 i.MX 8MNano LPDDR4 EVK (imx8mn-lpddr4-evk) 恩智浦 i.MX 8MPlus LPDDR4 EVK (imx8mp-lpddr4-evk) 更不用说了 i.MX 8MQ 了,你能否为我们的板提供具体的监狱解决方案,或者提出其他建造囚犯牢房的可能性? 非常感谢你们的支持。 谢谢, Sumit Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 你好 你可以通过bbappend的配方遵循与恩智浦鱼叉监狱整合类似的方法。 参见示例:meta-nxp-harpoon/配方-extended/jailhouse/jailhouse-imx_%.bbappend 在 imx-linux-scarthgap · nxp/ Me... 用户指南: https://www.nxp.com/docs/en/user-guide/Harpoon_USERS_GUIDE.pdf 此致 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ @Peng [email protected] 请就我们面临的自定义监牢创建问题(如上述票单中所述)提出一些解决方案? 感谢您的支持。 请与我们联系,了解任何需要的更多细节。
記事全体を表示
使用 i.MX28 添加对新型 NAND 的支持——NAND 分析 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本页介绍如何确定 NAND 驱动程序中使用的 NAND 时序参数。这与可能使用的任何操作系统无关。 分析NAND数据表 我们使用电子表格来捕获和分析 NAND 特性。该电子表格[附加到此 wiki 页面|使用 i.MX28 添加对新 NAND 的支持 - Nand 分析^nand_analysis_template.xls]。 我们分析一个 NAND,如下所述。 我们必须有 NAND 数据表才能进行分析。 将*分析电子表格*复制到一个新文件名,其中包含正在分析的 NAND 的确切零件编号。 填写分析电子表格的第 1 页(“封面”)。 接下来处理第 3 张表: 基本特征。 其他表。 如果 NAND 是数据表中列出的某个系列之一,则使用一个电子表格来分析整个系列。您可以使用“类似”行来查找家庭的其他成员。如果需要,添加更多行。 大多数 NAND 都有异步接口,因此不涉及简单的时钟频率。相反,存在各种设置时间、保持时间和输出延迟,这意味着 NAND 的 I/O 速率受到限制。电子表格比较了 NAND 的时序规格,以查看设置、保持和输出时间的总和是否短于最小读取周期或写入周期时间。该电子表格专门用于 STMP378x/i.MX233/i.mx28 中的 Nand 控制器芯片,因此电子表格执行时序计算,目的是得出这些 CPU 的时序参数 *TSU*、*TDS* 和 *TDH*。如果在计算完所有时间之后,TDS 和/或 TDH 量 {color:#ff0000} 变为红色{color},则计算出的 TDS 和/或 TDH 对于 NAND 的指定周期时间来说太短。在这种情况下: 您必须在软件中增加其中一个或两个。 在分析电子表格中的某处写下您选择的值的注释,但不要弄乱自动计算。 记录闪存如何表示工厂标记的坏块。(有些使用块的第一页,有些使用最后一页,等等)将其与此[当前坏块标记方法超集[ http://wiki.freescale.net/display/PSGSW/Storage+Media%2C+Flash+Bad+Block+Marks ]进行比较用于检测任何闪存工厂坏块。 实例分析 NAND 数据表和分析的示例可以在 [Hynix NAND 页面 | http://wiki.freescale.net/display/PSGSW/Hynix+NAND+Flash+Documents ] 上找到。 i.MX2x 回复:使用 i.MX28 添加对新 NAND 的支持–NAND 分析 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,谢谢你的信息。由于某些原因,链接不起作用。您能否提供分析电子表格的新链接?谢谢,马克
記事全体を表示
i.MX Yocto Project: bitbake を使用して Freescale Yocto イメージをビルドするにはどうすればよいですか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1. Freescaleのgithubリポジトリ から、最後の bitbake コマンドを除くすべての手順に従います 2. フリースケールがサポートするイメージは、 meta-fsl-demos/recipes-fsl/images フォルダにあります。 3. 標準の Freescale イメージをベイク処理します ビルド$ bitbake fsl-image-gui 4. 生成された Linux イメージは、いくつかの形式でパッケージ化されています。 .sdcard1つのファイルにすべてのシステム(u-boot + uImage + rootfs)が含まれているため、SDカードに直接書き込むことができます build$ sudo dd if = tmp / deploy / images / fsl-image-gui-imx6qsabresd.sdcard of = / dev / sdX b = 4M メモ: 建物の問題が発生した場合は、このリンクをクリックしてください 起動の問題が発生した場合は、以下を確認してください: 1. ボードのDIPスイッチが正しく設定されている 2.ベーキングする前に正しいマシンを選択しました 問題が解決しない場合は、コミュニティに報告してください Yocto Project Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ウルトラライトボード用のlibsubはどこにありますか? Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> リンク。 Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> それは便利です。ありがとうございます。これらの各画像のどこかに説明がありますか? Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私はこれに少し慣れていませんが、この指示はまだ有効ですか? 私は指示に従いましたが、 "build $ bitbake fsl-image-gui"ステップに到達すると、 しばらく処理してから次の処理が行われます。 エラー: 何も 'fsl-image-gui' を提供しません。接戦: FSL -イメージ-マルチメディア 私は今走っています ビルド$ bitbake fsl-image-multimedia Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> すみませんが、ちゃんと理解できませんでした。 あなたは成功しましたか? Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> GITが本当にプロキシスクリプトを使用しているかどうかを確認しようとします。たぶん、straceか何かを使用してデバッグします。 私はプロキシユーザーではないので、あまり助けにはなりませんが、それについてopenembedded-usersメーリングリストで尋ねることができるかもしれませんか? Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私はあなたが 'socat'ユーティリティを欠いていると思います。 $: sudo apt-get インストール socat Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> よくわかりません。Yocto Projectメーリングリストでこの質問をしてください。 Re: i.MX Yocto Project: bitbake を使用してフリースケールの Yocto イメージをどのようにビルドできますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Flexcan のカーネルサポートを追加するにはどうすればいいですか? すべてのボード FlexCAN
記事全体を表示
RNN on FRDM_K64 to denoise RNN on FRDM_K64 to denoise 1 Introduction Ordinary MCUs are limited by resources, and it is difficult to do some complex deep learning. But although it is difficult, it can still be done. Last time we used CNN for handwritten recognition. This time ,we use RNN for audio noise reduction. This audio noise reduction uses fixed-point noise reduction. MFCC and gain are used as input parameters for training. MFCC, Mel frequency cepstrum, is often used for audio feature extraction. RNN achieves the effect of noise reduction by adjusting the gain of different frequencies.        2 Experiment 2.1 Required tools: frdm-k64, python 3.7, Pip, IAR   2.2 Download the source code of deep learning framework, https://github.com/majianjia/nnom This is a pure C framework that does not   rely on hardware structure. Transplantation is very convenient     2.3 we select the example ‘bubble’ to add the Inc, port and Src folders in NNoM to the project, as shown in the figure                      Figure 1 Open the file ‘port.h’ . The definitation of NNOM_LOG is changed to PRINTF (__ VA_ ARGS__ ), Open the ICF file, and change the heap size to 0x5000, define symbol__ size_ heap__ = 0x5000; Malloc, which is used in this library, allocates memory from here. If it is small, it can't run the network   2.4 Transplant fatfs file system to bubble project Figure 2   2.5 In the bubble.c file, add the following header file        #include "nnom_port.h" #include "nnom.h" #include "weights.h" #include "denoise_weights.h" #include "mfcc.h" #include "wav.h" #include "equalizer_coeff.h"   2.6 Find main.c under ‘examples\rnn-denoise’ in the framework, ‘main_arm.c’ is used for stm32. Main.c is provided for windows running routines. This code is used to open the audio file, then run the network, and finally generate noise reduction. Use this code to facilitate experiments. The APIs for file operations in this file need to be manually changed to MCU APIs. I added a progress bar display. You can refer the attachment.   2.7 This example also uses DSP, so DSP support needs to be turned on, as shown in the figure                                                         Figure 3 2.8 Add macro                                           Figure 4   2.9 After the compilation is passed, download the program. The tested wav needs to be named ‘sample.wav’, and the mcu will reduce noise for it. Finnally mcu will generate ‘filtered_sample.wav’. Plug the SD card into the computer to listen to the noise-reduced audio. This is serial message.   Figure 5 This is the audio analyzed by the audio analysis software. The upper part is the noise reduced, and the lower part is the original sound. You can see that a lot of noise has been suppressed.                                                  Figure 6 3 training Through the above steps, we have achieved audio noise reduction, so how is this data trained? You need to install tensorflow, and keras. How to train is written in the README_CN.md file. This tensorflow needs to install the gpu version, and needs to install cuda. Please check the installation yourself. 3.1 Download the voice data https://github.com/microsoft/MS-SNSD and put it under the MS-SNSD folder 3.2 Use pip3 to install the tools in requirements.txt 3.3 Run ‘noisyspeech_synthesizer.py’ directly, this will report an error. You need to change the 15-line float to int type. 3.4 Run the script gen_dataset.py to generate mfcc and gain 3.5 Run main.py, this will generate the noise file of the sample, which can be used for testing and also generated ‘weights.h,denoise_weights.h,equalizer_coeff.h’ PS: Put the code in directory 'boards/frdmk64f/demo_app'. 'sample.zip' has the noise wave.
記事全体を表示
i.MX6SLL 寄存器编程辅助工具 重要提示:如果您有任何疑问或想要报告有关 DDR 工具或支持文档的任何问题,请在i.MX 社区中创建支持工单。请注意,任何私人消息或直接邮件不会被监控,也不会收到回复。 这是针对与 MMDC 初始化相关寄存器的详细编程辅助资料。最后一张表格格式化寄存器设置以便与 ARM RealView ICE 一起使用。它还可以与 DDR 压力测试的 Windows 可执行文件一起使用。此编程辅助工具用于内部 NXP 验证板。 i.MX6 全部 i.MX6SL
記事全体を表示
FIR滤波器套件 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本内容最初由 Steve Sabram 贡献给 lpcware.com 该示例项目使用 LPC4350 演示板和 ARM CMSIS DSP 库实现了声学范围、有限无限响应 (FIR) 滤波器。科幻“电击枪”的声音资源从演示板的耳机插孔中播放出来。该声音样本非常适合演示,因为它在声学带中具有许多低频、中频和高频成分。您可以通过触摸演示板上的电容式触摸按钮来播放声音资源,如演示板 LCD 上显示的菜单所示。最好使用耳机或耳塞聆听声音。四个按钮分别播放相同的声音资源 不同之处: 1) Raw – 未处理的声音按照其格式播放(采样率为 44.1 kHz、16 位样本和单声道)。 2) 低通——通过低通巴特沃斯滤波器滤波,截止频率为 5 kHz,类似于普通模拟电话的带宽。播放时,请注意高音部分被移除,类似 通过电话听到的声音。 3) 高通——通过高通巴特沃斯滤波器滤波,低频截止频率为 8 kHz。请注意,由于仅播放高音谐波成分,因此音量较低。 4) 后向掩码——声音资源样本以相反的顺序播放。“Zap!”现在变成了“Zoup!”数字滤波器是使用广受欢迎的公共领域工具 WinFilter ( http://www.winfilter.20m.com/ ) 设计的。 伴随这个例子。随着 NXP 推出这款免费 DSP 设计工具,我希望它的作者能够扩展其功能。 用户内容
記事全体を表示
FTF-IND-F1348 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本课程基于 FRDM-K22F 开发板和多功能新型 Arduino 兼容 Shield,讨论如何实现:使用 Kinetis K2 和 LS Research 预认证的 Wi-Fi(TiWi-CW)和 BLE(SaBLE-x)无线模块的物联网应用。使用 TiWiConnect LIFT 软件协议流式传输到云端(大大简化了软件开发)。使用与 Freescale Freedom 板连接的第三方 Pmod 兼容(I2C 和 SPI)板进行传感器和 I/O 扩展。使用加速软件开发和预认证无线模块,加快您的物联网产品的上市时间。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本课程基于 FRDM-K22F 开发板和多功能新型 Arduino 兼容 Shield,讨论如何实现:使用 Kinetis K2 和 LS Research 预认证的 Wi-Fi(TiWi-CW)和 BLE(SaBLE-x)无线模块的物联网应用。使用 TiWiConnect LIFT 软件协议流式传输到云端(大大简化了软件开发)。使用与 Freescale Freedom 板连接的第三方 Pmod 兼容(I2C 和 SPI)板进行传感器和 I/O 扩展。使用加速软件开发和预认证无线模块,加快您的物联网产品的上市时间。
記事全体を表示
MQX FlashXドライバー – FlexNVMの書き方は? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1. FlexNVMとFlashXに関する基本的な質問と回答をいくつか紹介します。 1.1 FlexNVMとは何ですか? FlexNVMは、データフラッシュとして、エミュレートされたEEPROMの不揮発性ストレージとして、または両方のオプションの組み合わせとして使用できるフラッシュメモリの追加の個別のブロックです。このドキュメントでは、最初のオプションであるFlexNVMが単にデータフラッシュとして機能することに焦点を当てます。 FlexNVMは、部品番号の専用箇所に「X」を含むMCU部品に含まれています。例えば: MK64FX512VMD12 には、1 ブロック (512 KB) のプログラムフラッシュと 1 ブロック (128 KB) の FlexNVM が含まれています。 MK64FN1M0VMD12 には、2 ブロック (各 512 KB) のプログラムフラッシュのみが含まれています。 FlexNVMとフラッシュブロックの詳細については、MCUリファレンスマニュアルを参照してください。たとえば、「フラッシュメモリサイズ」の章です。 1.2 FlashXとは何ですか? MQX FlashXドライバは、内部フラッシュへの書き込みと内部フラッシュからの読み出し機能を提供します。残念ながら、FlexNVM メモリはデフォルト ステートでは部分的にしかサポートされておらず、一部の BSP ではエミュレートされた EEPROM の設定と機能が実装されています (flexnvm サンプル コード)。詳細については、c:\Freescale\Freescale_MQX_4_2\doc\mqx フォルダの MQX_IO_User_Guide.pdf を確認してください。 1.3 FlexNVMを搭載したマイコンを搭載した自分のボードで、FlexNVMのないマイコン用BSPを使用できますか? お勧めしません。ただし、この BSP を独自のボード BSP のベースとして使用することができます。MQX_BSP_Cloning_Wizard_Getting_Started.pdfご確認ください。ドキュメントをC:\Freescale\Freescale_MQX_4_2\docフォルダにMQX_BSP_Porting_Guide.pdfおよびMQX_BSP_Porting_Example_User_Guide.pdfします。 1.4 KSDKプロジェクトでFlashXを使用できますか? 残念ながら、FlashXドライバはKSDKに実装されていませんでした。KSDKには、C90TFS/FTFxフラッシュファミリ用の独自の標準ソフトウェアドライバ(SSD)が含まれていますが、これはFlashXドライバの場合のような高レベルの抽象化レイヤーがない低レベルのドライバです。 2. FlexNVMをサポートするためのMQX FlashXドライバーのアップデート手順。 2.1これらのファイルをバックアップしてください: user_config.h、 .h 、init_flashx.c、flash_ftfl.c と flash_ftfe.cファイル。注: user_config.h、 .h および init_flashx.cBSPコードの一部です。 2.2 user_config.h で FlashX を有効にする定義によるファイル: #define BSPCFG_ENABLE_FLASHX 1 2.3 .h の更新ファイル: 2.3.1 MCUリファレンスマニュアルを確認し、必要に応じてBSP_INTERNAL_FLASH_BASE、BSP_INTERNAL_FLASH_SIZE、BSP_INTERNAL_FLASH_SECTOR_SIZEを更新してください。通常、FlexNVMのないBSPが自身のBSPのベースとして使用された場合は、BSP_INTERNAL_FLASH_SIZEを減らす必要があります。 2.3.2メモリマップでFlexNVMを定義する新しいマクロを追加します。例えば: #define BSP_INTERNAL_FLEXNVM_BASE 0x10000000 #define BSP_FLEXNVM_SECTOR_SIZE 0x400 #define BSP_INTERNAL_FLEXNVM_SIZE 0x00008000 2.4 BSPフォルダの init_flashx.c を更新します。 2.4.1 FlexNVMファイルブロックを_bsp_flashx_file_blocks[]テーブルに追加します。例えば:     データフラッシュファイルブロック { "dflash", BSP_INTERNAL_FLEXNVM_BASE, (uint32_t) (BSP_INTERNAL_FLEXNVM_BASE+ BSP_INTERNAL_FLEXNVM_SIZE - 1) }, パラメータは{ファイルブロック名、開始アドレス、終了アドレス}です。 注:これは純粋なソフトウェアインターフェースです。アドレスの範囲は、物理フラッシュ ブロック パラメーターに合わせる必要はありません。必要に応じてファイルブロックを整理できます。 2.4.2FlexNVM BSP をベースとして非 FlexNVM BSP を使用していた場合は、KinetisX デバイスの HW ブロック マップを変更する必要があります。_bsp_flashx_init構造で_flashx_kinetisN_block_mapを_flashx_kinetisX_block_mapに変更してください。 2.5 flash_ftfl.c または flash_ftfe.c を更新するファイル: 2.5.1 お使いのMCUにFTFLまたはFTFEフラッシュメモリモジュールがあるかどうかをMCUリファレンスマニュアルを参照し、編集する適切なファイルを選択してください。 2.5.2FlexNVMメモリブロックを_flashx_kinetisX_block_map[]テーブルに追加します。例えば: { BSP_INTERNAL_FLEXNVM_SIZE / BSP_FLEXNVM_SECTOR_SIZE, (_mem_size) BSP_INTERNAL_FLEXNVM_BASE, BSP_FLEXNVM_SECTOR_SIZE }, // FlexNVMブロック パラメータは{number of sectors, start address, sector size}です。 注:これは、物理ハードウェアメモリブロックの説明です。アドレスの範囲は、物理フラッシュ ブロック パラメーターに適合する必要があります。 2.5.3次に、FlexNVMアドレスの問題を修正する必要があります。プログラムフラッシュとFlexNVMフラッシュはFTFE_FCCOBn FTFL_FCCOBnどちらも、FCCOB1..FCCOB3には、24ビット形式のアドレスが含まれています。したがって、FlexNVMアドレスを直接操作することはできません - FlexNVMベース0x10000000のため、24ビットに収まりません。 FTFL/FTFE モジュールでは、24 ビット アドレスの最上位ビット (ビット 23) がプログラム フラッシュと FlexNVM フラッシュの区別に使用されるように指定されています。たとえば、次のようなコードを使用できます。 FlexNVMフラッシュアドレスのときに23ビットを設定 IF(write_addr & BSP_INTERNAL_FLEXNVM_BASE)     { write_addr = write_addr |(1<<23);     }   そして、このコードを必要な関数に追加してから、command_array[]に書き込みます( command_array[] の内容はFTFL_FCCOBn/FTFE_FCCOBnレジスタの埋めに使用されます)。 FlashXサンプルコードの基本的な作業には、少なくともftfl_flash_erase_sector()/ftfe_flash_erase_sector()およびftfl_flash_write_sector()/ftfe_flash_write_sector()関数を更新する必要があります。 2.6.これらの変更後、flash_demo.c で FlashX のサンプルコードを使用してみてくださいデフォルトのプログラムフラッシュファイルブロックの代わりにFlexNVMファイルブロックを開くだけです。例えば: #define FLASH_NAME 「flashx:bank0」 #define FLASH_NAME「flashx:dflash」 添付ファイルには、MQX4.2.0およびMK20DX72 MCUの変更例があります。 3.フラッシュの書き換え方法 - 一般的な注意事項: フラッシュ・データは、プログラミングされる前に消去済みの状態にある必要があります。 ビットの累積的なプログラミング(より多くのゼロの追加)は許可されません。 FTFLモジュールとFTFEモジュールの両方の場合、整列されたフレーズ(通常は64ビット)でフラッシュをプログラムします。より小さなチャンク(バイト単位など)でプログラムが必要な場合、FTFLモジュールでは、推奨されていなくてもこのフレーズに書き込むことができます。ただし、FTFEモジュールは、同じフレーズに2回目の書き込みを行うとバス障害を引き起こします。したがって、すでに書き込まれたFTFEフレーズのデータを変更する方法を保存する方法は、セクター全体を消去してデータを書き換え直すだけです。そのため、FTFEモジュールにはioctlコマンドFLASH_IOCTL_ENABLE_SECTOR_CACHEを使用してください。セクタ キャッシュの割り当ては、フル セクタ書き込みと、デスティネーション領域 (フレーズに揃えられた) が空白の部分的なセクタ上書きの場合には必要ありません。 Re:MQX FlashXドライバ - FlexNVMの書き方は? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちはシュリダール、 FlexNVM の場合: flash_ftfl.cの_flashx_kinetisX_block_map[]テーブルも編集する必要がありますファイルを作成し、FlexNVMブロックの説明を追加します。 FlexRAM の場合: 電源を切る前にフラッシュ/クローズ機能を使用しましたか? FlexRAMの使用例については、c:\Freescale\Freescale_MQX_4_2\mqx\examples\flexnvmを参照してください。 EEPROM エミュレーションを有効にするまで、ターゲットの FlexRAM メモリ範囲は「標準」RAM のように機能します。 もちろん、FlexNVMメモリをデータフラッシュとして使用するか、エミュレートされたEEPROMとして使用するか、FlexNVMメモリを2つのセクションに分割して両方のオプションを使用するかを選択する必要があります(その場合、メモリ範囲はそれに応じて更新する必要があります)。 いずれにせよ、空のMCUをデフォルト設定のFlexNVMメモリはデータフラッシュとして、FlexRAMは「標準」RAMとして使用できます。エミュレートされたEEPROM(FlexRAM)を使用する場合は、FlexNVMメモリを設定する必要があります(Program PartitionコマンドおよびSet FlexRAM Functionコマンド)。flexnvm サンプルコードを参照してください...
記事全体を表示
フリースケール・カップ・ワールドワイド・ファイナル2015トレーニング・ハイライトをご覧ください <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> トレーニング・セッションについては、フリースケール・カップ・ワールドワイド・ファイナル2015のハイライト・ビデオをご覧ください。クレジット:Fraunhofer IIS (マイビデオで視聴) フリースケール・カップの内容
記事全体を表示
通用更新工具 (UUU) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 开始使用适用于 i.MX 系列的 UUU 工具。新型固件下载工具“通用更新工具”概述,该工具已取代原有制造工具。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 开始使用适用于 i.MX 系列的 UUU 工具。新型固件下载工具“通用更新工具”概述,该工具已取代原有制造工具。 i.MX 应用处理器
記事全体を表示
[Zephyr ® Series] Part 4: Overview and Practical Applications of Kconfig and Device Trees (Japanese Blog)   From this point on, we'll be moving on to the advanced topics of Zephyr. This session will cover an overview of Kconfig and device trees, followed by hands-on programming exercises to help you utilize them effectively.   One of the key features of Zephyr RTOS, as mentioned previously, is its software scalability (reusability), which makes it easy to reuse software developed once in other projects or derivative products, enabling rapid development.   Furthermore, to support a wide range of hardware platforms, Zephyr employs a powerful configuration system called "Kconfig" and "Devicetree".   This allows you to port programs to different microcontroller boards simply by changing configuration files, without having to rewrite the source code in the same C/C++ language. This article explains the basic mechanisms of Kconfig and the device tree. As a practical application, we will modify the hardware-independent LED blinking program created in Part 3 to run on two different microcontroller boards: " FRDM-MCXA153 " and " FRDM-MCXN947 ".   To run the same application on different boards (microcontrollers and processors), we will explain practical programming methods using Kconfig and the device tree.     table of contents   Preparation Kconfig Basics Device tree fundamentals Best practices for improving software reusability Kconfig and the Device Tree in Practice Create a simple program (hands-on) 1. Program Specifications 2. Directory structure 3. Create Kconfig and prj.conf 4. Creating device tree overlays and board-specific settings 5. Hardware-independent common code (main.c) Create 6. Build and run summary Preparation   Hardware preparation   This article will primarily use the following boards to create and test programs. FRDM-MCXA153 (main use) Additionally, the following boards will be used as supplementary tools to verify the portability of the program you have created. FRDM-MCXN947   SW preparation   This guide assumes that you have already set up the Zephyr development environment (Zephyr SDK, West command, etc.). If you haven't set it up yet, please refer to the second article on environment setup. [Zephyr ® Series] Part 2: First Build and Testing (Japanese Blog)   We will be using the LED blinking program created in the third installment of the Zephyr series. If you haven't created it yet, we recommend creating it by referring to the previous article. [Zephyr ® Series] Part 3: First Steps in Blinking an LED and Software Reusability (Japanese Blog)   Kconfig Basics     Kconfig is a configuration system also used in the Linux kernel. In Zephyr, it is used to manage whether to "enable or disable" software features, or "what parameters to set," such as kernel functions, device drivers, subsystems, and application-specific settings. The following two files are important for Kconfig: The "Kconfig" file defines the selectable configuration items (symbols), their default values, and dependencies. "prj.conf" file *: This file is where application developers specify the values they want to set for items defined in "Kconfig" (such as enabling them with "y" or providing specific numerical values). Using Kconfig, you can exclude unnecessary code from compilation and optimize memory usage. Furthermore, the Kconfig and prj.conf files are all written in text format. How to enable the feature The prj.conf file enables features for the entire project. For example, the ADC, DAC, and OPAMP drivers are defined in Kconfig. When using the functions defined in Kconfig, you declare them by adding "CONFIG_" to the beginning of prj.conf. Kconfig:ADCの定義Kconfig: ADC definition prj.conf例prj.conf example   Device tree fundamentals   Devicetree例Example of a device tree   The device tree is a text file that describes what hardware (CPU, memory, peripherals, pin settings, etc.) a microcontroller supports, as well as the settings and configuration of that hardware. These settings and configurations are then expanded into macros.   Instead of directly writing hardware addresses into C code (hardcoding), information described in the device tree can be read through Zephyr macros, enabling hardware-independent programming. Nodes and Properties: Each element of hardware is represented as a "node" in a hierarchical structure, and register addresses, interrupt numbers, etc., are described as "properties." ".dts" and ".dtsi": Standard hardware configurations for each microcontroller and board are predefined within the Zephyr repository in ".dts" (Devicetree Source) and ".dtsi" (Include) files. dts: Described as the device tree of the board. dtsi: Describes the device tree of an SoC/microcontroller and is provided by the device manufacturer. ".overlay" file: This file is created when you want to override application-specific wiring (e.g., connecting an LED to a specific GPIO pin) or default settings.   Best practices for improving software reusability   To enhance software reusability in Zephyr, it is important to follow the following design principles: Separation of hardware-dependent and hardware-independent parts: C code (`main.c`) For example, avoid directly writing about specific microcontroller register operations or pin numbers. Leverage device tree aliases: Instead of directly referencing actual hardware nodes (e.g., `&red_led` or `&gpioa`), applications should reference abstract names defined in the `aliases` node (e.g., `led0`). This allows you to adapt to different boards simply by changing what the alias points to. Prepare a board-specific device tree (overlay) : When there are differences in some functions, such as in derivative products, you can overwrite (overlay) only the parts with hardware differences for each board. Switching features with Kconfig : Application behavior parameters and the on/off status of specific features are controlled using Kconfig symbols instead of C language "#define".   Kconfig and the Device Tree in Practice   From here, we will learn how to use Kconfig and the device tree by creating a simple program so that we can actually use them in practice .     Create a simple program (hands-on) The program will be created by modifying the LED blinking program we created last time, and will have the following specifications.   Here, as a practical exercise, we will create a common application that runs on both "FRDM-MCXA153" and "FRDM-MCXN947". 1. Program Specifications Source code : Use the code from "Part 3: Your First LED Blinking Program" and make the following modifications. LED blinking speed: The blinking interval can be set using Kconfig. Button Function (Enable/Disable): The button function can be enabled or disabled via Kconfig settings. When enabled, pressing the button will toggle between blinking and constant illumination of the LED. Outputting board name: At startup, the "device (board) name" configured in Kconfig will be output to standard output (terminal). 2. Directory structure   The project directory structure should be as follows:   Add the Kconfig file and boards folder to the "my_hello" folder of the LED blinking program you created last time. Any method of adding the files is fine. On Windows, use the PowerShell `ni` command or a text editor to create a new file and save it in the `my_hello` folder. In Linux, you can create a new, empty file using the `touch` command.   The files under "boards/" handle hardware differences and unique settings specific to each board.     my_hello/ ├── CMakeLists.txt ├── Kconfig <- 新規追加:アプリ独自のKconfig ├── prj.conf <- アプリの共通設定 ├── src/ │ └── main.c <- ハードウェア非依存の共通コード └── boards/ <- 新規作成フォルダ  ├── frdm_mcxa153.overlay <- 新規作成:FRDM-MCXA153用のデバイスツリー設定  ├── frdm_mcxa153.conf <- 新規作成:FRDM-MCXA153用のKconfig設定  ├── frdm_mcxn947_cpu0.overlay <- 新規作成:FRDM-MCXN947用のデバイスツリー設定  └── frdm_mcxn947_cpu0.conf <- 新規作成:FRDM-MCXN947用のKconfig設定   Note : By creating specific files within your application's directory, Zephyr's build system (West) will automatically recognize them and apply the settings. Adding Kconfig: You can add your own configuration symbols by placing a "Kconfig" file in your Applications folder. Board-specific settings ("boards/" directory): By creating a "boards" directory within your application and placing "[board name].overlay" or "[board name].conf" files there, the overlay and Kconfig overrides will be automatically applied only when building with that board as the target.   3. Create Kconfig and prj.conf First, create your own "Kconfig" in the application root directory and define application-specific parameters. my_hello/Kconfig   mainmenu "my LED blink" config CUSTOM_BLINK_RATE_MS int "LED blink rate in milliseconds" default 1000 help Set LED blink frequency. #LEDの点滅周期(ミリ秒)を設定します config ENABLE_BUTTON_TOGGLE bool "Enable button to toggle LED state" default y help Enable button to toggle LED state. # ボタン入力によるLEDの点滅/点灯状態>の切り替え機能を有効にします。 config BOARD_NAME_STRING string "Board Name String" default "Unknown Board" help Set board name for printf. # 標準出力に表示するボード名を設定します。 source "Kconfig.zephyr"     Next, as a common setting for the entire application, there is "prj.conf". This will be written. In this prj.conf file, use the Kconfig symbol you just created to configure it as follows: my_hello/prj.conf   # GPIOの有効化 CONFIG_GPIO=y # アプリケーションの共通設定 CONFIG_CUSTOM_BLINK_RATE_MS=500 CONFIG_ENABLE_BUTTON_TOGGLE=y   4. Creating device tree overlays and board-specific settings Create a directory called "boards" and prepare the necessary files for each board. Main board for FRDM-MCXA153     We map the button on the board (`sw2`) so that it can be accessed from the application using the standard alias `sw0`. `led0` is already in the board definition so it can be omitted here, but it can be explicitly overridden if needed.   my_hello/boards/frdm_mcxa153.overlay / { aliases { sw0 = &user_button_2; /* FRDM-MCXA153のユーザーボタン */ }; };   my_hello/boards/frdm_mcxa153.conf   CONFIG_BOARD_NAME_STRING="FRDM-MCXA153 Board"   By referencing the symbols in this .conf (board-specific Kconfig) within the application (main.c), it becomes possible to output the board name to standard output using the printf function. For FRDM-MCXN947 Similarly, we define "sw0" in the FRDM-MCXN947. This handles any differences in the hardware names of the buttons.   In fact, if the hardware names (which differ depending on the peripheral or instance) vary across boards, you assign the actual hardware to the alias node in the device tree. my_hello/boards/frdm_mcxn947_cpu0.overlay   / { aliases { sw0 = &user_button_3; /* FRDM-MCXN947のユーザーボタン */ }; };   my_hello/ boards/frdm_mcxn947_cpu0.conf   I'll try overriding the LED blinking speed to 250ms only when building with MCXN947.   CONFIG_BOARD_NAME_STRING="FRDM-MCXN947 Board" CONFIG_CUSTOM_BLINK_RATE_MS=250 The application code is the same for FRDM-MCXA153 and FRDM-MCXN947, but you can configure the blinking behavior of the LED separately here. 5. Hardware-independent common code (main.c) Create Write the following in "my_hello/src/main.c":   The LED control section reuses the hardware-independent code (using the "led0" alias) created in the previous article, and incorporates Kconfig and button control into it. my_hello/ src/main.c   #include #include #include /* Devicetreeのエイリアスを参照する */ /* どのボードでも、一番目のLEDは通常 "led0" と定義されています */ #define LED0_NODE DT_ALIAS(led0) #define SW0_NODE DT_ALIAS(sw0) /* エイリアスからGPIO仕様(ポート、ピン、フラグ)を取得 */ static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios); /* ボタン機能がKconfigで有効化されている場合のみコンパイルされる部分 */ #ifdef CONFIG_ENABLE_BUTTON_TOGGLE static const struct gpio_dt_spec sw = GPIO_DT_SPEC_GET(SW0_NODE, gpios); static struct gpio_callback button_cb_data; static bool is_blinking = true; void button_pressed(const struct device *dev, struct gpio_callback *cb, uint32_t pins) { is_blinking = !is_blinking; if (!is_blinking) { /* 点滅オフ時はLEDを点灯させた状態にする */ gpio_pin_set_dt(&led, 1); } } #endif //CONFIG_ENABLE_BUTTON_TOGGLE int main(void) { int ret; /* Kconfigで設定されたボード名を出力 */ printf("Starting application on %s\n", CONFIG_BOARD_NAME_STRING); /* デバイスの準備確認 */ if (!gpio_is_ready_dt(&led)) { return -1; } /* ピンの設定 (Devicetreeで定義された初期状態などを考慮して設定) */ ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE); if (ret < 0) { return -1; } #ifdef CONFIG_ENABLE_BUTTON_TOGGLE if (!gpio_is_ready_dt(&sw)) { return -1; } ret = gpio_pin_configure_dt(&sw, GPIO_INPUT); if (ret < 0) { return -1; } ret = gpio_pin_interrupt_configure_dt(&sw, GPIO_INT_EDGE_TO_ACTIVE); if (ret < 0) { return -1; } gpio_init_callback(&button_cb_data, button_pressed, BIT(sw.pin)); gpio_add_callback(sw.port, &button_cb_data); #endif //CONFIG_ENABLE_BUTTON_TOGGLE while (1) { #ifdef CONFIG_ENABLE_BUTTON_TOGGLE if (is_blinking) { ret = gpio_pin_toggle_dt(&led); } #else /* ピンの状態を反転 (ボタン機能が無効な場合は常に点滅) */ ret = gpio_pin_toggle_dt(&led); #endif //CONFIG_ENABLE_BUTTON_TOGGLE /* Kconfigで設定された点滅間隔で待機 */ k_msleep(CONFIG_CUSTOM_BLINK_RATE_MS); } return 0; }     6. Build and run Now, let's actually test its functionality. Please refer to the previous article for instructions on setting up the build environment and enabling the west command. First, navigate to the directory of your installed zephyrproject repository as shown in the command instructions below, enable west, and then proceed. Operation confirmed with FRDM-MCXA153 (main) Build using the following command and write it to the FRDM-MCXA153.   ## ホームディレクトリからZephyrprojectディレクトリに移動 cd ~/zephyrproject ## west環境を有効化 source .venv/bin/activate ## zephyr v4.3をチェックアウトしていない場合は、前回(第3回 初めてのLチカとソフトウェアの再利用性)を参考にv4.3をチェックアウトしてください。 west build -b frdm_mcxa153 my_hello west flash     Execution result   コンソール出力Console output   LED点滅、点灯モード切り替えLED flashing and steady light mode switching   The message "Starting application on FRDM-MCXA153 Board" will appear in the terminal. The LED blinks at 500ms intervals ("prj.conf"). (Settings). Pressing SW2 ("custom-sw") will turn it on, and pressing it again will return it to blinking. Operation confirmed with FRDM-MCXN947 We'll build the project using the exact same C source code, only changing the board specification.   # -pオプションを使用し、frdm_mcxa153のビルド情報をクリーンしてビルドします。 west build -p -b frdm_mcxn947//cpu0 my_hello west flash   Execution result   The contents of "boards/frdm_mcxn947_cpu0.conf" will be automatically applied, and the terminal will display "Starting application on FRDM-MCXN947 Board". The LED blinks rapidly at 250ms intervals (configured in "prj.conf"). Pressing SW3 (the button mapped to "user_button_3" on the MCXN947) will similarly switch between LED illumination and blinking. While the FRDM-MCXA153 and FRDM-MCXN947 use different GPIOs for controlling LEDs and switch buttons, the device tree effectively absorbs these differences, demonstrating how cleanly the application program and hardware are separated.   summary     In this session, we learned the basics of Kconfig and device trees in Zephyr, and practiced techniques to separate hardware-dependent parts from C code by utilizing them.   I believe you've experienced a powerful mechanism for reusing the same source code across multiple different boards, where hardware settings are absorbed by the device tree overlay (".overlay"), application parameters can be flexibly changed and features can be easily enabled or disabled using board-specific Kconfig files (".conf").   ========================== We are currently unable to respond to comments left in the "Comment" section of this post. We apologize for the inconvenience, but please refer to "Technical Questions to NXP - How to Contact Us (Japanese Blog)" when making inquiries. (If you are already an NXP distributor or have a relationship with NXP, you may ask your representative directly.) This document provides an overview of the device tree and Kconfig, features designed to enhance Zephyr's software reusability. It then outlines the steps required to utilize these features in practice. After reading through this Zephyr series, from the first installment to the fourth, you will be able to write programs using the Zephyr RTOS. General Purpose Microcontrollers MCX Japanese Blog
記事全体を表示
关于 S32K312 上 FlexCAN 增强型 RX FIFO + DMA 操作的说明需要澄清 你好 , 我们目前正在研究基于 S32K312 的 FlexCAN 增强型 RX FIFO 和 DMA, enhanced FIFOenhanced FIFO增强型先进先出   我们正在使用 rtd v 7.0.1,希望就我们遇到的几个问题和观察结果进行澄清。 1. MEX 配置验证 请您确认启用 DMA 的 FlexCAN 增强型 RX FIFO 的推荐 MEX 配置是什么?我们希望确保我们的配置符合预期的RTD使用模型。 2. 增强型接收 FIFO + DMA 数据丢失观察 根据 FlexCAN 勘误表中的建议,启用增强型 RX FIFO 时,以下消息缓冲区将不使用: MB0–MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50 和 MB60。 我们的配置如下: 增强型接收 FIFO 已启用 DMA已使能 水印配置为 10 个条目 DMA 将 FIFO 数据传输到软件缓冲区。 观察到的行为: CAN 消息已正确接收到增强型 RX FIFO 中。 DMA 可以成功传输数据,直到达到水印级别。 DMA完成中断被触发。 此后,在预期的下一个 FIFO 位置(从第 11 个 FIFO 条目开始)中未观察到传入的 CAN 消息。 观察到数据丢失和异常的先进先出(FIFO)行为。 请解释一下这种情况下的预期行为以及出现消息丢失的可能原因? 3. FlexCAN_Ip_RxFifo DMA 重配置 在调试 RTD 驱动程序时,我们观察到 FlexCAN_Ip_RxFifo API 似乎会重新配置 DMA 参数。 具体来说: 次要循环计数似乎已配置为 16 传输大小似乎为 4 字节 这导致总传输大小为 64 字节(或根据解释约为 68 字节),这似乎与参考手册中描述的增强型 RX FIFO 条目大小不符。 能否解释一下这个 API 的预期功能以及这些 DMA 设置背后的原理? 4. 增强型接收 FIFO 存储器观察 调试过程中还观察到,尽管 DMA 似乎将数据从 FIFO 传输到软件缓冲区: FIFO 内存区域仍然包含较旧的消息 ID。 内存浏览器似乎只显示第一个增强型 RX FIFO 元素。 先进先出位置似乎没有按预期更新。 附上屏幕截图供参考。 能否解释一下这是否是预期行为,以及在运行时调试期间应该如何解释增强型 RX FIFO 内存? 5. 结构尺寸不匹配 我们还观察到 RTD 结构与参考手册之间存在差异。 FlexCAN_Ip_MsgBuffType 在 RTD 中的大小:78 字节 根据参考手册,增强型 RX FIFO 元素大小为:80 字节 请问您能否解释一下: 为什么会出现这种尺寸差异? 是否需要考虑包装/对齐方面的问题? DMA 传输应该配置为 78 字节还是 80 字节? 预期用途案例 我们的要求是使用: 增强型接收 FIFO 基于DMA的接收 消息接收过程中不会出现 CPU 中断。 预期行为是: CAN 消息到达增强型 RX FIFO。 DMA 会自动将 FIFO 条目传输到软件缓冲区。 正常运行不需要软件轮询或接收中断处理。 有意避开增强型 RX FIFO 保留的消息缓冲区(MB0–MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50 和 MB60),而其余的消息缓冲区则用于传输。 申请它 请问您能否提供以下信息: 任何能够演示增强型 RX FIFO 与 DMA 操作的示例项目。 针对此用例推荐的RTD配置。 澄清 RTD 目前是否支持使用 DMA 进行连续增强型 RX FIFO 接收而无需软件重新激活。 任何实现增强型 RX FIFO + DMA 接收的裸机驱动程序示例。 感谢您的支持。 Re: Clarification Required on FlexCAN Enhanced RX FIFO + DMA Operation on S32K312 您好, 1. MEX 配置验证 A:看来您的 MEX 与您描述的设置不符。 - 水印设置为 1 - DMA传输配置并非必需,驱动程序会自动配置DMA,除非您想要自行设置DMA参数和传输方式。 2. 增强型接收 FIFO + DMA 数据丢失观察 A:DMA 完成中断后,所有接收到的消息都会被读取,并且分配的 DMA 通道将被禁用。 因此,如果不再调用 FlexCAN_Ip_RxFifo,RXFIFO 仍然会从条目 0 开始接收消息,但由于 DMA 没有再次启动,因此不会读取 RXFIFO。 3. FlexCAN_Ip_RxFifo DMA 重配置 A:什么是次要循环计数?驱动程序本身将次要循环大小(字节)设置为 80,以便从 RXFIFO 读取最多 64 字节的有效负载消息以及 IDHIT 和时间戳信息。 所以,我其实不太明白你的计算方法。或许可以分享一下你的代码 4. 增强型接收 FIFO 存储器观察 A:仅第一个增强型 RX FIFO 元素区域可见,表示增强型 FIFO 输出端口地址范围。调试期间不建议显示 RXFIFO 内存。为了使 FIFO 引擎正常运行,CPU 在 DMA 操作期间不应访问增强型 FIFO 输出端口地址范围,实际上显示此内存空间会导致对其进行读取。 5. 结构尺寸不匹配 A:FlexCAN_Ip_MsgBuffType 不能完全反映 RXFIFO 结构。传输结束时,驱动程序读取内部缓冲,并将相应的数据填充到用户缓冲区的相应字段中。 如上所述,DMA 应设置为每次 DMA 请求读取 80 字节。 驱动程序的编写方式是,在 DMA 完成并调用 FLEXCAN_EVENT_DMA_COMPLETE 事件后,需要重新激活 DMA(调用 FlexCAN_Ip_RxFifo)。 您可以参考下面的演示来增强 RXFIFO 和 DMA 的使用,但这是在 RTD400 中实现的。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-test-S32DS3-5/ta-p/2015832 BR,彼得
記事全体を表示