Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
LPC84X 可靠性 你好,我正在查找LPC84XLPC845M301JHI33Y 芯片的可靠性数据。谢谢! Re: LPC84X Reliability 你好,路易斯, ,我正在寻找该部件的故障率或平均故障时间(MTTF/MTBF)预测值。特别是如果你有任何基于加速寿命测试数据的资料,但我可以接受你的任何资料。主网站和数据表不包含任何此类信息。 Re: LPC84X Reliability 你好 您能帮我们分享一下您需要哪类信息吗? 这是 NXP.com 中 LPC84X 系列产品的主页 LPC84x 30MHz|ARM Cortex-M0+|32 位微控制器 (MCU) | 恩智浦半导体 在文档部分,您可以找到与数据表/参考手册/电压值/应用笔记/软件等相关的信息 有关 LPC845M301JHI33 的具体信息、购买和特性 LPC845M301JHI33 产品信息 | 恩智浦半导体 最诚挚的问候,路易斯 Re: LPC84X Reliability 你好 这些信息是保密的,如需了解相关信息,请使用公司电子邮件填写支持票据。 您可以使用以下链接 https://www.nxp.com/support/support:SUPPORTHOME 顺祝商祺! Re: LPC84X Reliability 谢谢你的答复。不幸的是,恩智浦网站无法识别我的公司电子邮件,因此不允许我输入支持票据。我试图通过网站票据提出这个问题,但他们的最佳建议是,除非他们能修好网站,否则就来这里提问。在此之前,我似乎无法通过任何可行的方法访问我需要的恩智浦数据。这种情况已经持续了三四个星期,目前仍未得到解决。 Re: LPC84X Reliability 很抱歉给您带来不便,但社区不会共享这些信息,此类请求只能通过之前提到的门户网站https://www.nxp.com/support/support:SUPPORTHOME上的支持票据进行支持。 在尝试提交票单时,请确保使用您公司的电子邮件 顺祝商祺!
View full article
优化恩智浦微控制器与云服务提供商的连接 大家好, 我目前正在使用恩智浦 i.MX RT1064 开发一个项目,并希望将其与现代云解决方案集成。目标是将 MCU 的传感器和遥测数据发送到外部系统,以进行实时分析。我正在探索与云服务提供商进行安全、高效连接的方案 云服务提供商进行存储、处理和可视化。 我对确保可靠连接和低功耗的方法特别感兴趣,例如批处理数据或使用 MQTT。此外,有关安全令牌管理、自动重新连接和 MCUXpresso SDK 集成最佳实践的示例将非常有用。 如果有人成功实施了 MCU 到云的工作流程,或推荐了可扩展性和容错模式,我很想听听您的经验。如能提供任何共享代码片段或文档链接,将不胜感激! 预先感谢您的真知灼见。 Re: Optimizing NXP MCU Connectivity with Cloud Service Providers 您好@luciaonmatteo, 根据您提到的情况,可以使用外部 Wi-Fi 模块,您可以在本页找到一些 Wi-Fi® + 蓝牙® + 802.15.4 合作伙伴模块,它们具有不同的特性,您可以根据应用需求进行选择。 此外,SDK Builder 还提供了一些 SDK 示例,这些示例专为 RT1064-EVK 设计,并集成了一个 Wi-Fi 模块,如下图所示: 如果您需要有关任何特定模块的更多信息,请随时与我联系。 BR Habib
View full article
LPC5536の新リビジョン1Bがハードフォールトを発生 こんにちは、 当社は最近、LPC5536 の更新されたチップ リビジョン 1B を搭載した新しい PCB を受け取りました。しかし、SDK 関数 FLASH_IsFlashAreaReadable() で同じファームウェアを使用すると、重大な障害が発生します。システムがハード障害に陥る直前の手順をキャプチャしたスクリーンショットを添付しました。現在、MCUXpresso IDE バージョン v24.12 で SDK バージョン 25.03.00 を使用しています。 この問題の解決に関するご意見やご提案をいただければ幸いです。ありがとう!   Re: New Revision 1B of LPC5536 Triggers Hard Fault こんにちは@nobodyKnows 、 リビジョン 1B に直接関連するErrata シート LPC553xの 5.1 章「ROM.1」に記載されている Errata を除いて、リビジョン間の変更は見つかりませんでした。FLASH_init 関数がエラータに示されているとおりに動作するか確認できますか? BR ハビブ Re: New Revision 1B of LPC5536 Triggers Hard Fault こんにちは、 素早いご返答、誠にありがとうございます。エラッタシートに従って回避策を実装しようとしました。しかし、それは役に立ちません。Rev. 1B の API ロケーション アドレス0x13028c41Uが間違っていると思われます。 Re: New Revision 1B of LPC5536 Triggers Hard Fault こんにちは@nobodyKnows 、 エラッタ修正を実施するために使用した方法論について詳しく説明していただけますか? BR ハビブ Re: New Revision 1B of LPC5536 Triggers Hard Fault こんにちは@nobodyKnows 、 弊社の SDK の FLASH_Init 関数をご使用いただいていると承知しておりますが、おっしゃるとおり、現在 SDK バージョン 25.03 をご使用いただいております。この機能が正しく実行されていることを確認できますか?具体的には、次の行です。 /* 1Bではffr_initの呼び出しが必要です。0Aでも問題ありません。 */ BOOTLOADER_API_TREE_POINTER->flashDriver->ffr_init(config) を返します。 一方、新しい LPC リビジョンに切り替えたときに、ハードウェア設計のどの部分を変更しましたか? BR ハビブ Re: New Revision 1B of LPC5536 Triggers Hard Fault こんにちは、 わかりました。API ではすでに修正が行われているようです。はい、呼び出されており、他のすべての関数も動作するようです。動作しないのはFLASH_IsFlashAreaReadable()だけです。 今では次の回避策を使用します。 bool flashRead (uint32_t addr, uint8_t *flashData, uint32_t size){ status_t status; if(SYSCON->DIEID == 0){ status = FLASH_IsFlashAreaReadable(&flashConfig, addr, size); if(status != kStatus_FLASH_Success){ return false; } } status = FLASH_Read(&flashConfig, addr, flashData, size); return (status == kStatus_FLASH_Success); } Re: New Revision 1B of LPC5536 Triggers Hard Fault こんにちは@nobodyKnows 、 同じ問題があると思われるこの投稿を見つけましたが、修正方法は関数「 FLASH_IsFlashAreaReadable 」を使用しないこと、代わりに FLASH_Read() HAL API 呼び出しを使用することです。ステータスがエラーを返した場合、おそらく FLASH 領域が隠れていることを意味します。これは、回避策で使用しているのと同じフローです。 この問題についてさらに情報を取得するために社内チームに問い合わせますが、現時点では回避策が有効である可能性があります。 BR ハビブ
View full article
前のmov即値命令後のレジスタ内のアドレスが正しくありません デバッグ中のイーサネットの問題があり、誤ったアドレス読み取りに関連する BusFault が頻繁に発生します。次のようなシーケンスの後に0x19014を読み取ろうとしています。 movw r2,low_addr movt r2,high_addr ldr r2,[r2] アセンブリは単なる例です。スクリーンショットが入手できれば投稿します。 問題は、例外が発生した時点で R2 に 0x19014 が含まれているのに、high_addr と low_addr が 0x21409A28 のような値から読み取る必要があることです。読み取り元のアドレスは、イーサネット ネットワークの数を反映する定数メモリ領域であり、そのメモリは正しく、正常に動作しています。 上記のコードをトレースしたところ、movt と ldr の間には例外などは何もリストされませんでした。したがって、3 つの命令が連続して実行される場合、そのコア上の何かが R2 を変更して 0x19014 を含むことは不可能ですが、バス障害発生時に BFAR と R2 に表示されるのはそれです。 この動作に影響を与える可能性のある投機的アクセスまたは類似のものがあるかどうかを NXP から把握したいと考えています。 Re: Incorrect address in register after prior mov immediate instructions 明確にしておくと、これは特定の RTD に関連するものではなく、このプロジェクトでは S32K388 を使用しています。 Re: Incorrect address in register after prior mov immediate instructions 具体的なスクリーンショットをご提供ください。使用環境があればその説明も。ありがとう
View full article
如何将 PLS UDE 调试器插件安装到 S32 Design Studio 中 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 适用于 Power 架构的 S32 Design Studio (S32DS) 支持PLS UDE Eclipse 插件,可直接在 S32DS Eclipse IDE 中通过PLS 探针调试 S32DS 项目。 所有版本的 S32DS for Power 都支持此功能。   该插件支持以下功能: 无缝集成 Eclipse IDE 中的 Universal Debug Engine 的完整功能 UDE 提供 Eclipse IDE 的自身视角,并将 UDE 工作区集成到 Eclipse 工作区中 代码断点可以通过 C/C++ 编辑器或 UDE 特定函数设置 有关该插件的更多详细信息,请阅读PLS 网站下载部分的“UDE Eclipse 数据表”。   安装说明 首先确保您的计算机上安装了 PLS UDE 调试器。接下来我们进行eclipse插件的安装。   1. 转到菜单“帮助”->“安装新软件”,然后单击“添加...”按钮并在 PLS UDE 安装文件夹中搜索名为“ UDEEclipse4Integration.zip ”的存档文件 2. 选择通用调试引擎组件,点击“下一步”     3.最后继续安装。系统将要求您确认未签名内容的安装。UDE插件安装后需要重新启动。     使用 UDE 创建新项目 您应该能够通过 S32DS 新项目向导创建一个新的 S32DS 项目,其中现在提供 PLS UDE 调试器支持。 UDE插件启用一组新的UDE eclipse调试配置来管理(创建、删除、调整) 使用新项目创建的 UDE 调试配置需要进行一些更改,然后才能继续调试。 1. 点击“ 新建工作区”按钮,在“ \.ude” 文件夹下输入新的 UDE 工作区名称 2.创建一个新的UDE Target配置文件。 单击“创建配置”按钮并选择“使用默认目标配置”和目标 MCU。(本例中为 MPC5744P)。 将配置文件保存到项目文件夹中,例如 “ \Project_Settings\Debugger\nxp_mpc5744p_cut2_debug_jtag.cfg” 运行调试器会打开 UDE 特定的调试 eclipse 视图,您可以在其中受益于许多高级调试功能,包括跟踪、脚本…… 享受使用 S32DS 中的 PLS UDE Eclipse 插件进行调试! 第三方(高级)插件
View full article
KinetisブートローダでCortex-M4のネットワーク内の複数のデバイスを更新 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> @@Thisこの記事では、SCIなどの標準通信メディアを使用して、Cortex-M4コア・デバイス用のKinetisのインシステム・リプログラミングを行う方法について説明します。ほとんどのコードはC言語で書かれているため、他のMCUへの移行が容易です。このソリューションは、お客様に採用されています。 このブートローダは、FRDM-K22 デモボードと KDS3.0 に基づいています。ブートローダとユーザアプリケーションのソースコードが提供されます。 GUIも用意されています。 お客様は、それらに基づいて独自のブートローダーアプリケーションを作成できます。このアプリケーションを使用して、RS485などのネットワークを介して接続されたシングルターゲットボードおよびマルチボードをアップグレードできます。ブートローダー アプリケーションは、入力アドレス範囲内のノードの可用性を確認し、ファームウェア ノードを 1 つずつ自動的にアップグレードします。 ブートローダーの主な機能: ネットワーク内の複数のデバイスを更新(または検証)できる。 アプリケーションコードとブートローダーコードは別々のプロジェクトにあり、大量生産やファームウェアのアップグレードに便利です。 ブートローダーのコードサイズは小さく、約3kしかないため、オンチップのメモリリソースが削減されます。 ソースコードが利用可能で、読みやすく、移行も簡単です。 Cortex-M0+製品については、こちらを参照してください:ネットワーク内の複数のデバイスを更新するためのKinetis Bootloader - Cortex-M0+の場合 、FRDM-KL26に基づいています。 Cortex-M4とCortex-M0+の主な違いは、FLASHプログラムルーチンです。 - Cotex-M4コアキネティスでは、Flashの操作ルーチンをRAMにコピーする必要があります。ブートローダーコードでは、RAMコードへのコピーは「FLASH_Initialization()」の関数で実現されます。 バイト バッファ[200]={0}; - Cotex M0+コアキネティスでは、 Flash操作ルーチンをRAMにコピーする必要はありません。 プラットフォーム制御レジスタ(MCM_PLACR)を追加しました。MCM_PLACRレジスタは、クロスバーマスターのアービトレーションポリシーを選択し、フラッシュメモリコントローラを設定します。ESFC ビットを有効にすると、フラッシュがビジー状態のときにフラッシュ コントローラーが停止する可能性があります。ESFCビットを設定すると、Flashの読み取りと書き込みの時系列のバランスをとることができます–Flashを書き込むとき、Flashの読み取り命令を待つことができ、その逆も同様です。ESFCビットを使用すると、フラッシュプログラミングが容易になります。したがって、1つのFlashはそれ自体を書き込むことができますが、これはESFCビット制御なしでは他の1つのFlash MCUでは不可能です。 ESFCビットはCコードで簡単に設定できます。 詳細については、添付のドキュメントとコードを参照してください。 ユーザーは、Githubからドキュメントとソースコードをダウンロードすることもできます。 https://github.com/jenniezhjun/Kinetis-Bootloader.git Kinetis KシリーズMCU USB Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 他のチップの移植は、私の場合MK10DN512かなり問題があります。リンカファイルとMK22F51212.hを置き換える必要がありますが、既存のプロジェクトで多くのエラーが発生します。また、私が理解しているように、フラッシュドライバは異なります。 Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Huy, ブートローダーをボードにフラッシュするすべてのものを使用できます。 私はKDSで開発したので、直接KDSを使用してダウンロードします。SEGGER-JFlashでOKだと思います。 BR アリス Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 親愛なるアリス、 あなたのブートローダーを私の MK20DN512(Landungsbruecke)に移植しました。このブートローダーをボードに書き込むにはどうすればよいですか?私はよくSEGGER-JFlashを使ってユーザーアプリケーションをフラッシュします。アドバイスをください! どうもありがとうございます! よろしくお願いいたします。 Huy. Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello Sam, 「Kinetis Bootloader Cortex-M4.pdf」のDOCをよくお読みください。プロセスを明確に理解し、 その後、チップに移植する方法がわかります。 また、FRDM-K64への移植があり、移植を開始するときに参照できます。 https://community.nxp.com/docs/DOC-333740  BR アリス Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Alice, コードを共有していただきありがとうございます。 このブートローダーをMK20DN512用に移植したいのですが、どのファイルを変更する必要がありますか?Kinetis Bootloaderを初めて使用するので、ぜひお役立てください。 よろしくお願いいたします! よろしくお願いいたします。 Huy. Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、アリス、 たいへん良い! あなたの助けと情報をどうもありがとう! それでは。 Sam Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello Sam, このブーツローダーにご関心をお寄せいただきありがとうございます。 - ユーザーアプリケーションは任意のプロジェクトにすることができます(PEプロジェクトとベアボードプロジェクトの両方を使用できます)。 「3.3.8User application code」を使用して、アプリケーションプロジェクトを設定します。 はい、PEプロジェクトを使用する場合は、リンカファイルを直接変更し、リンカファイルの生成をオフにする必要があります。 また、「Generate linker file」構成ビューで構成することもできます。 - S19レコードファイル名については、手動で名前を変更するのではなく、KDSによって生成されます。 -このブートローダーでは、GUIはs19とHEXファイルの両方をサポートしています。 BR アリス Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 皆さん、こんにちは。 私の最初の質問のフォローアップです... PE を使用している場合、ライカー ファイルを正しく更新するには、リンカー ファイルの生成をオフにする必要があります。特にm_cfmprotromセグメント...これはPE内で直接アクセスできません。次に、結果のS19レコードファイルの名前をCWのデフォルト拡張子の「.hex」から「.s19」に手動で変更する必要があります(アリスの窓のプログラムは「.hex」をインテプレットしますファイルが異なります)。これを行うと、ブートローダーとGUIのWindowsローダーを使用できるようになります。まだやるべきテストはたくさんありますが、少なくとも基本的な作業システムはできました。 このブートローダーインフラストラクチャを提供してくれたアリスとチームに感謝します。 Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、アリス、 Processor Expert(PE)が作成したプロジェクト(KL26プロセッサ)をGUI /ブートローダーで使用するため(PEベースのユーザーアプリケーション)を設定する方法について、いくつかのガイダンスを提供できるかどうか興味がありましたか?PEがCPUを生成するので、私は尋ねます。サンプルアプリケーションが「APP_OK」署名属性を保存する場所(「.cfmconfig」セクション)と競合すると思われる Flash 設定値を含む C ファイル。 よろしくお願いいたします! それでは。 Sam Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Sebastian, このドキュメントに関心をお寄せいただきありがとうございます。 そして、私が添付した私のプロジェクトの1つのエラーについて申し訳ありませんが、今私は新しいものを添付しました、新しいものを使用してください。 駅番号については、2か所の変更が必要ですが、 1つは「bootloader.c」のファイルにあります: const バイト station_number = 2; もう 1 つは、ユーザー アプリケーション プロジェクトの bl_mommunication.c にありますファイル : const バイト station_number = 2; 次に、ステーション2にフラッシュしたい場合は、GUIで、2から2を選択してください、これは2のみをフラッシュすることを意味します。 試してみてください、それでもうまくいかない場合は、ためらうことなく私に連絡してください。 BR アリス Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Alice, まず第一に、この素晴らしいブートローダーと、コードとドキュメントを共有してくれてありがとう! ブートローダーをプレーンなUARTモードとRS485モードで試しました。1台のデバイスを接続するだけで優れた動作をします。 その後、RS485ネットワーク経由で接続された2つのデバイスを試しました。ここでは、ブートローダーの使用中にいくつかの問題が発生します。 bootloader.c で私は次のコード行を見つけました "const Byte station_number = 1;「デバイスのバスアドレスはどれにすべきか? 2つのデバイスをstation_number 1とstation_number 2としてプログラムし、更新してみました。しかし、両方のデバイスが両方のアドレスに応答しているようです。シングルデバイスモードではstation_number 2もGUIのアドレス1に応答しました... 私が何を間違っているか知っていますか?デバイスのバスアドレスはどこで指定する必要がありますか? Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Rodrigo, お返事が遅くなってすみません! このドキュメントに興味を持っていただきありがとうございます。 1)どのようなエラーを発生させるか教えていただけますか? そして実際には、FLashコマンドはバッファ[1]から開始し、次のコードを見つけることができます。 #define FLASH_FlashCommandSequence ((LWord (*)(Byte))&buffer[1]) 2)なぜブートローダーアプリケーションをRAMにコピーするのですか?これを行うと、bootlaoderは1回限りのプログラミング支援になります。 そして、私が知っているように、KBOOTには「Kinetisフラッシュローダー」があり、フラッシュからロードされてRAMから実行され、ユーザーアプリケーションをオンチップフラッシュの先頭に配置できます。 3)「フラッシュに書き込むコマンドは何ですか?」どういう意味ですか? 私のプロジェクトでは、フラッシュコードへの書き込みはここにあります: また、flash write コマンドは次のとおりです。 FLASH_FlashCommandSequence(PROGRAM_LONGWORD_INDEX); #define PROGRAM_LONGWORD_INDEX 8 BR アリス Re:Cortex-M4のネットワーク内の複数のデバイスを更新するためのKinetisブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 親愛なるアリス、私はあなたのコードを分析して、私のowm固有のブートローダーを開発する方法を理解していました。私は多くのフリースケールAN、例などを探していました。君は良くなったようだ。しかし、私はあなたからの助けが必要です。 1) コード内... for(i=0;i<200;i++) buffer[i] = ((バイト*)FLASH_FlashCommandSequenceStart)[i-1]; [i-1] 「0」から開始するため、エラーが発生します。それは正しいですか? 2)私のコードはRAMメモリから実行し、すべてのフラッシュメモリを消去し、事前にプログラムされた外部SPIフラッシュから新しいファームウェアを読み取り、K63フラッシュメモリを挿入する必要があります。 3)フラッシュに書き込むコマンドは何ですか? 4)ブートローダー機能をRAMに配置してコピーするにはどうすればよいですか?そして、RAMメモリの代わりにフラッシュメモリを指すコマンドで何が起こるでしょうか? 助けていただけますか。 よろしくお願いいたします。 ロドリゴ
View full article
Rapid IoT Kit Out Of Box デモ (デプロイ済み) firmware.bin <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello, Out of the Boxアプリケーションの更新版が添付されています。 このバージョンは「公開」であり、キットに偽りを入れると誰でも接続できることを意味します。 以前のバージョンとの主な変更点: - バグ修正:BLE / THREAD / BLEを前後に切り替えると、BLE接続が確立されるとキットが再起動していました - デフォルトのディスプレイの明るさが減少し、バッテリー寿命が15%長くなりました - CCS811センサーの更新が1秒に1回から10秒に1回に減少し、バッテリー寿命がさらに10〜15%短縮されました。 - UARTover USBが有効になり、キットをPCに接続した状態で端末を使用して追跡/デバッグが可能 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello, Out of the Boxアプリケーションの更新版が添付されています。 このバージョンは「公開」であり、キットに偽りを入れると誰でも接続できることを意味します。 以前のバージョンとの主な変更点: - バグ修正:BLE / THREAD / BLEを前後に切り替えると、BLE接続が確立されるとキットが再起動していました - デフォルトのディスプレイの明るさが減少し、バッテリー寿命が15%長くなりました - CCS811センサーの更新が1秒に1回から10秒に1回に減少し、バッテリー寿命がさらに10〜15%短縮されました。 - UARTover USBが有効になり、キットをPCに接続した状態で端末を使用して追跡/デバッグが可能 迅速なIoT Re: Rapid IoT Kit Out Of Box デモ (デプロイ済み) firmware.bin <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, SLN-RPK-NODEモジュールを購入しました。私はこのバージョンのファームウェアでそれをロードします:Rapid IoT Kit Out Of Box Demo(Deployed)firmware.bin。Atmosphere IoTアプリケーションを使用して携帯電話Samsung Galaxy A51からBluetoothで接続しようとしましたが、Pairing successful!というメッセージが表示されても成功しませんでした。モバイルアプリケーションはBluetoothデバイスを見つけられません。 私もノートパソコンからPuttyに接続してみました。モジュールから受信したメッセージを次に示します。 . ありがとうございました。 クリスティアン。 Re: Rapid IoT Kit Out Of Box デモ (デプロイ済み) firmware.bin <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> エリック これは私が唯一の作品です、エクスポートされた(atmo)ファイルを送ってもらえますか?おそらく、これが唯一の機能である理由を見つけることができ、すべての迅速なIoTスタジオの例はプロビジョニングにぶら下がったままです。 よろしくお願いいたします。 Hans Volbeda Re: Rapid IoT Kit Out Of Box デモ (デプロイ済み) firmware.bin <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ユーザーガイドのp108を参照してください。 https://www.nxp.com/webapp/Download?colCode=SLN-RPK-NODE-UG  MSDモードにしたら、PCからドラッグアンドドロップするだけです。 Re: Rapid IoT Kit Out Of Box デモ (デプロイ済み) firmware.bin <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> おかげで、Rapid-IoTデバイスをどのように再フラッシュしますか? ラルフ Re: Rapid IoT Kit Out Of Box デモ (デプロイ済み) firmware.bin <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXP Semiconductors Rapid IoT Prototyping Kit(SLN-RPK-NODE)は、開発者 のmykfcexperience モノのインターネット(IoT)のアイデアから概念実証(PoC)までを数分で実現できるように設計されています。
View full article
智能感应吸入器 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 描述 特性 结构框图 产品 产品 描述 人口老龄化趋势和突破性的技术发展,为自动化医疗设备创造了无限商机。 这些设备通过在糖尿病护理、心脏护理、治疗依从性和一般健康和保健应用方面取得进展,帮助确保数百万人的未来健康。无论最终用途如何,医疗保健/医疗设备的开发人员都面临着类似的挑战——需要平衡处理要求和功耗、支持确保快速上市、需要安全的无线连接和产品寿命,这些都是医疗保健设计师的关键。 标准吸入器的效率不够高,因此需要开发新一代智能吸入器。 NXP 是领先的大容量传感器供应商,拥有用于医疗应用的多种加速度计、磁力计、压力传感器和触摸传感器。我们结合优质材料、先进的微加工技术、薄膜金属化和双极半导体处理,以具有竞争力的价格提供准确、高度可靠的产品,从而实现最佳的患者护理和可负担性。 特性 通过BLE与智能移动设备通信 智能吸入器配有传感器,可监测治疗依从性 云服务器与手机通信,例如,如果未服药,则提供提醒 智能吸入器需要验证气筒是否为正品 智能手机上的应用程序需要验证智能吸入器的真实性 无线连接 安全集成 气筒品牌保护 结构框图 产品 类别名称1: 蓝牙 产品网址 1 QN908x:超低功耗蓝牙低功耗片上系统 (SoC) 解决方案 | NXP 产品描述 1 QN908x 是一款超低功耗、高性能、高度集成的蓝牙低功耗解决方案,适用于运动和健身、人机界面设备和支持应用程序的智能配件等蓝牙®智能应用。它是专为具有小容量电池的可穿戴电子设备而设计的。 类别名称2: 电源管理 产品网址 1 MC34671 | 单节电池充电器 | 恩智浦 产品描述 1 MC34671 是一款经济高效的全集成电池充电器,适用于锂离子或锂聚合物电池。它可承受高达 28 V 的输入电压,从而无需手持设备所需的输入过压保护电路。 产品网址 2 逻辑控制高侧电源开关 | NXP 产品描述 2 由于接地电流和关态电流较低,NX3P2902B是便携式电池供电应用的理想选择。 类别名称 3: 传感器 产品网址 1 ±8g,低重力加速度,数字加速度计 | NXP 产品描述 1 MMA8491Q 3 轴加速度计是一款超低功耗倾斜传感器。 类别名称 4: NFC 产品网址 1 NTAG 424 DNA | 424 DNA TagTamper – 为可信物联网应用提供高级安全性和隐私性 | NXP 产品描述 1 NTAG 424 DNA的架构旨在提供AES-128加密操作,每次通过支持NFC的移动设备读取时提供新的SUN认证机制,以及为有加密安全访问权限的敏感数据提供保护。 产品网址 2  PN5180 | 完全符合 NFC 论坛标准的前端 IC | NXP 产品描述 2 恩智浦PN5180 NFC前端,配有独特功能,可提高性能、节省电源、最大程度提高效率、支持符合EMVCo和NFC Forum规格的最佳读卡器,实现尽可能广泛的互通互联。 类别名称5: 安全 产品网址 1 A71CH | 物联网即插即用 | 恩智浦 产品描述 1 A71CH是易于使用的安全元件,适用于物联网设备,在IC层提供信任根,开箱即提供芯片到云端安全保护,让您能够安全地连接到IoT云和服务,包括AWS、IBM Watson IoT™平台和Google Cloud™物联网内核,无需编写安全代码或暴露密钥。 产品网址 2  EdgeLock ™ SE050:Plug & Trust 安全元件系列 – 增强的物联网安全性和最大的灵活性 | NXP 产品描述 2 借助 EdgeLock SE050,物联网设备从一开始就融入了安全性,而不是事后才添加或考虑。作为信任根预先注入的凭证存储在硬件中,并与外部软件访问完全隔离。 产品 产品 链接 QN9080DK:高度可扩展的QN908x应用开发平台 QN9080DK:用于 QN908x 应用开发的高度可扩展平台 | NXP KIT34671EPEVBE: 评估套件 - 34671,单节锂离子/锂聚合物充电器 评估套件 - 34671,单节锂离子/锂聚合物充电器 | NXP OM25180FDK: 面向 POS 终端应用的 PN5180 NFC 前端开发套件 OM25180 |用于POS读卡器的PN5180 NFC开发套件| NXP 框图 工业控制
View full article
使用PN7150与LPC55S69 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这篇文章包含如何使用 PN7150 和 LPC55S69 的分步指南。 本文档的结构如下: PN7150概述: LPC55S69概述: 硬件要求: 将 PN7150 与 LPC55S69-EVK 结合使用: 硬件连接: 运行演示: 可用资源: PN7150概述: PN7150是一种即插即用的一体化 NFC 解决方案,可轻松集成到 Linux 和 Android 等任何操作系统环境中,从而减少物料清单 (BoM) 的大小和成本。嵌入式 Arm ® Cortex ® -M0 微控制器内核装有集成固件,简化了实施,因为所有 NFC 实时约束、协议和设备发现(轮询循环)都在内部处理。在几个 NCI 命令中,主机 SW 可以配置 PN7150 以通知卡或对等检测并开始与它们通信。 它具有以下显著特点: 完全符合 NFC 论坛要求,采用小尺寸天线 嵌入式NFC固件,提供所有NFC协议,作为预集成功能 通过 I2C 总线物理和 NCI 协议直接连接到主机或微控制器 轮询循环模式实现了超低功耗 高效集成的电源管理单元(PMU),支持从电池直接供电 LPC55S69概述: LPCXpresso55S69开发板为基于 Arm ® Cortex ® -M33 架构的 LPC55S6x MCU 的评估和开发提供了理想的平台。该板包括高性能板载调试探针、音频子系统和加速度计,并提供多种选项用于添加用于网络、传感器、显示器和其他接口的现成附加板。 LPCXpresso55S69由MCUXpresso工具套件提供完备的支持,该套件提供设备驱动程序、中间件和示例,以实现快速开发,另外还提供配置工具和可选的免费IDE。 MCUXpresso软件与主流工具供应商(如Arm和IAR)的工具兼容,LPCXpresso55S69也可与SEGGER和P&E Micro提供的主流硬件调试器一起使用。 硬件要求: OM5578/PN7150ARD  LPCXpresso55S69 + USB 微型电缆 将 PN7150 与 LPC55S69-EVK 结合使用: 硬件连接: 硬件连接很简单。LPC55S69-EVK 板和 OM5578/PN7150ARD 板均具有 Arduino 接口。因此,将带有公头 Arduino 连接器的 PN7150ARD 板安装到 LPC55S69-EVK 板的母头 Arduino 连接器上。 运行演示: 如果您是第一次使用 LPC55S69-EVK 开发板,请先遵循入门指南à LPC55S69-EVK | NXP 。确保安装 LPC55S69-EVK 开发板的 SDK 包,这是运行以下项目所必需的。 下载“NXP-NCI_PN7150_LPC55xx_example”包,您将在该帖子中找到该包。 将下载的包拖放到 MCUXpresso IDE 工作区的“项目资源管理器”选项卡中(如果您没有 MCUXpresso,可以点击此处免费下载: 现在,包已导入 MCUXpresso IDE(通过拖放),单击快速启动面板中的调试图标即可开始调试会话。调试会话启动后,单击运行图标即可运行代码: 该项目现在应该正在运行。该项目包含基本的发现循环功能。以下是 MCUXpresso 控制台选项卡中的输出: 将任何 NFC 卡放在 PN7150 板的天线附近,输出控制台将显示卡的检测和类型。例如,在下图中,我们可以看到检测到了类型 4 的卡: 可用资源: AN11990 NXP-NCI MCUXpresso 示例文档。( https://www.nxp.com/docs/en/application-note/AN11990.pdf )本项目中解释的示例项目使用上述文档的第 5.3 和 6 节移植到 LPC55S69。 PN7150 datasheet (https://www.nxp.com/docs/en/data-sheet/PN7150.pdf) PN7150用户手册( https://www.nxp.com/docs/en/user-guide/UM10936.pdf ) PN7150 NFC 控制器 SBC 套件用户手册( https://www.nxp.com/docs/en/user-guide/UM10935.pdf ) NFC 控制器解决方案
View full article
LS1021A 物联网网关参考设计 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> LS1021A 物联网网关参考设计 包含在套件中 Linux BSP和OpenWRT 参考设计(提供原理图、布局和BOM) 硬件快速入门指南和用户指南 如果您符合以下情况,您可能对该产品感兴趣: 需要一个随时可用的高性能物联网网关参考平台 需要内置 WiFi 和 Arduino 连接 想要一个可立即制造的硬件设计 主要硬件特点: 1 Gb QSPI NOR闪存 1 GB DDR3L SDHC 插槽 — 最大支持 32 GB,已安装 4 GB 1x 1 Gb/s以太网(SGMII) 1x 1 Gb/s以太网(RGMII) 2x mini PCIe (x1) slots 1x mSATA插槽 1x 终端(USB转UART) x 四线 LP-UART 至 Arduino 连接器(Thread、ZigBee、蓝牙等) • 多路复用 LCD/QE 接口 24 位 LVDS LCD 接口 QE UART 至 PROFIBUS 或 RS485 接头(需要外部收发器) • USB 3.0 2x 端口 - USB-A 2x 端口至 mini PCIe 插槽 • 13x GPIO 或 8x FTM (PWM) • 6x 中断 • 1 个 SPI • I 2 C1 总线板 EEPROM 启动 EEPROM Arduino 连接器传感器/PHY 等,待定 • I 2 C2 GPIO 扩展 ADC 传感器/PHY 等,待定 认证:FCC B类和CE 本产品的全部内容 产品图 点击此处购买 LS1021A 物联网网关参考设计 物联网物理组件 网关 SOC: QorIQ LS1021A 主板/模块: QorIQ LS1021A IoT网关参考设计 FRDM-KW24D512 软件: Linux BSP OpenWRT 通信基础设施
View full article
适用于 ARM 2018.R1 的 S32 Design Studio - 更新 2 现已发布 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />       产品发布公告 汽车微控制器和处理器 ARM ® 2018.R1 版 S32 设计工作室  Update 2          新增内容 此更新添加了对 S32K118 裸板设备的支持 ,并进行了一些小修复。这是一个累积更新,包含之前 更新 1 的所有内容 。 安装说明 此更新适用于 在线的 (通过 Eclipse Updater)或 离线安装(直接下载链接) 在线的 安装: 进入菜单“帮助”->“安装新软件...”对话框  select predefined update site "S32DesignStudio - http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_ARM_2018.R1/updatesite" 选择所有可用项目并单击“下一步”按钮   离线安装: 转到 S32 Design Studio for ARM 产品页面 -> 下载部分或使用 直接链接下载更新存档 zip 文件 启动 S32DS 并转到“帮助”->“安装新软件...” 添加一个新的 “Archive” 仓库,然后浏览并选择您在之前步骤中下载的更新归档.zip 文件。 选择所有可用项目并单击“下一步”按钮。   这将启动更新安装过程。 概述
View full article
WDOG RCM 割り込みの例 S32K144 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************************************** 詳細な説明: WDOG タイムアウト時に、WDOG モジュールはリセット制御モジュール (RCM) でリセットを要求します。 WDIG割り込みがイネーブルの場合(WDOG_CS[INT] = 1)、RCMへのリセット要求は128バスクロックサイクル遅延する可能性があります。 有効にすると、WDOG 割り込みベクトルがフェッチされるか、NVIC で保留状態になります。 遅延後、リセットは RCM で要求されます。 WDOG割り込みとは無関係に、RCMはリセットを最大514LPO追加クロックサイクル遅延させることができます 対応するRCM_WDOG割り込みが有効になっている場合 (RCM_SRIE[GIE, WDOG] = 1)。 その場合、モジュールはすぐにリセットを強制するのではなく、NVIC で RCM 割り込みを要求します 追加の遅延 (RCM_SRIE[DELAY]) の後にリセットを強制します。 いずれにせよ、リセットは強制され、遅延するだけでは停止できません。 この例では、WDOG_CS レジスタで WDOG 割り込みをイネーブルにしますが、NVIC ではこの割り込みをディスエーブルのままにします。 つまり、この割り込みは WDOG タイムアウト時に NVIC で保留状態になり、WDOG_CS_FLG しかし、ベクトルはフェッチされません。 RCM 割り込みが有効になり、WDOG 割り込み遅延 (2.67us (48MHz BUS CLK)) の後に NVIC でアサートされます。 代わりに、WDOG フラグ (WDOG_CS_FLG) が RCM ISR で読み取られます。 実行は、リセットが強制されるまで、514 LPO(128kHz)サイクル(~4ms)の無限ループにとどまります。 ------------------------------------------------------------------------------------------------------------------------- テストHW:S32K144EVB-Q100 マイコン:S32K144 0N57U デバッガー: S32DSR1 OpenSDA 対象:internal_FLASH ********************************************************************************************************
View full article
16位SAR ADC校准 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1. 校准的工作原理 有三个主要子块对于理解 Kinetis SAR 模块的工作原理非常重要。有一个电容式 DAC、一个比较器和控制模块的 SAR 引擎。在这些区块中, DAC 最容易受到可能导致 SAR 线性问题的变化的影响。 DAC 采用三组二进制加权电容器按组排列而成,如图 1 所示。代表 SAR 最高有效位 (B15:B11) 的电容器直接连接到比较器的输入。下一组五个电容器(B10:B6)通过故意加大尺寸的缩放电容器连接到 MSB 阵列的顶板。构成 SAR 最低有效位 (B5:B0) 的最后六个电容器通过另一个缩放电容器相应地连接到中间电容器组的顶板。 图 1.DAC电容的排列 仅校准 MSB 电容器组。由于第一个缩放电容器故意尺寸过大,每个未校准的 MSB 电容器的有效电容都会太小,无法产生准确的结果。然而,因为它们总是太小,我们可以测量每个电容器单独引起的误差量,并将其添加到结果中。 校准从最小的 LSB 电容器 B11 开始。SAR 对所有低于或等于被测电容器 (CUT) 的电容器上的 Vrefl 进行采样,同时将所有较小的电容器连接到 Vrefh。当发生这种情况时,所有 MSB 电容器的顶板都保持在 VDDA。采样阶段完成后,MSB 电容器的顶板可以浮动,而未经测试的 MSB 的底板则连接到 Vrefl。这使得电荷从 CUT 重新分配到较小的电容器。最后,执行 11 位 SAR 算法(对应于小于 MSB 阵列的 11 个电容器),该算法产生的结果指示 CUT 与理想尺寸电容器相比的误差量。对正侧和负侧 DAC 上的五个 MSB 中的每一个重复此过程,并且报告的五个错误值相应地与五个 MSB 相对应。所有这些误差值的幅度都大致相同,单位为 16 位 LSB。参见图 2 的示例。 图 2. 第 11 位校准示例 DAC MSB 误差是累积的。也就是说,如果设置了 DAC 的第 11 位,那么错误就是该位的错误。然而,如果设置了 DAC 的第 12 位,则总误差等于第 12 位报告的误差加上第 11 位报告的误差。对于每个 MSB,误差按如下方式计算,其中 Ex 是在校准其相应 MSB 位时发现的误差: 当 DAC 的第 11 位被设置时:CLx0 = E0。 当 DAC 的第 12 位被设置时:CLx1 = E0+E1。 当 DAC 的第 13 位被设置时:CLx2 = E2 + E1 + 2E0。 当 DAC 的第 14 位被设置时:CLx3 = E3 + E2 + 2E1 + 4E0。 当 DAC 的第 15 位设置时:CLx4 = E4 + 2E3 + 4E2 + 8E1 + 16E0 图3. 校准误差对ADC响应的影响 这些值随后会被放入每个 CLxx 校准结果寄存器中。图 3 显示了如果所有 CLxx 寄存器均设置为零,误差将如何累积。失调和增益寄存器也是基于这些值计算的。因此,增益和失调寄存器仅校准 SAR 本身内部的误差。自校准无法补偿电路板或系统级增益或失调问题。 2. 推荐的校准程序 从以上描述可以看出,校准过程实际上是多次连续的模数转换。这些转换容易受到所有 ADC 转换中相同误差源的影响。由于主要测量的是 MSB 电容大小的误差,因此建议以适当的方式配置 SAR,以便在校准 SAR 的环境中实现尽可能精确的转换。 噪声是造成此过程中批次间差异的主要原因,因此应采取措施降低校准过程中噪声的影响。例如: 所有数字 IO 应保持静默,并且应禁用不必要的模块。 Vrefh 应尽可能稳定且电压较高,因为 Vrefh 越高意味着 ADC 代码宽度越大。隔离的 Vrefh 引脚是理想的。缺少这一点,使用隔离的 VDDA 作为参考比使用 VREFO 更好。 使用的时钟应尽可能无噪声,并且小于或等于 6 MHz。为此,校准所需的时钟源顺序应为 OSC > PLL > FLL > ASYNC 硬件平均应设置为最大 32 个样本。 低功耗转换位应设置为 0。 校准应在室温下进行。 高速转换和采样时间加法器在大多数情况下不会产生太大影响,并且校准程序完全忽略了 Diff 和 Mode 位。 应针对上述条件下芯片上的每个 SAR 实例获取校准值。它们应该存储在非易失性存储器中,然后在 ADC 寄存器值被清除时写入适当的寄存器中。 在某些情况下,存在的系统噪声仍然会导致校准程序表现出大于期望的运行间变化。一个经验法则是重复校准几次并查看 CLx0 寄存器。如果该寄存器中报告的值相差超过三,则可以实施以下程序。运行校准程序几次。二十到四十次。将每个校准寄存器的值放入相应的数组中。对每个数组执行冒泡排序并找到每个校准寄存器的中值。按照典型校准结果的描述使用这些中值。 Kinetis E系列MCU Kinetis EA系列MCU Kinetis K系列MCU Kinetis L系列MCU Kinetis V系列MCU/单片机 Kinetis W系列MCU
View full article
MPC5777C CSE CSE_ECR=0X02 命令序列错误 大家好, 客户目前正在做CSE密钥加载&擦除(用for循环,先加载密钥再擦除密钥约10000次)测试实验。 但是经过10000次测试后,再次打开MCU电源,密钥无法再加载或擦除,并且CSE_ECR = 0x02报告命令序列错误,并且其他CSE命令发送到CSE时也会出现此错误。CANCEL 是 CSE 唯一会接受且不会出现 0x02 错误的命令。此问题与此工单相同,但没有正确答案: https://community.nxp.com/t5/MPC5xxx/MPC5777C-CSE-Problem/mp/589107#M4239 所以问题是如何处理这个问题,因为在这种情况下密钥不能再被加载或擦除,并且 CSE 命令也不能被 CSE 核心接受。 我比较了正常芯片(在 EVB 上用新芯片替换)和问题芯片,发现 SR_BFN 位和 CSE_ECR 位不同,SR_BFN 位表示安全启动完成,但我没有在问题芯片上启用安全启动。 错误一: 正常一个: 回复:MPC5777C CSE CSE_ECR=0X02 命令序列错误 Hi Lukas, 听起来很有道理,如果这一点应该注意Key擦除,那么应该在文档中弄清楚,因为在我们正常的调试过程中,在调用DEBUG_CHAL + DEBUG_AUTH时,我们可能会意外重启或再次打开电路板。 回复:MPC5777C CSE CSE_ECR=0X02 命令序列错误 Hi Lukas, 有没有任何文档提到这一点? 回复:MPC5777C CSE CSE_ECR=0X02 命令序列错误 Hi @Zhongling_Lang  最有可能的是,这是由于意外重置或 MCU 电源循环之前的超时时间太短造成的(在闪存上执行的擦除周期越多,擦除闪存所需的时间就越长)。 如果由 DEBUG_CHAL+DEBUG_AUTH 命令触发的擦除操作因意外重置而终止,则会导致 CSE 无法使用并且无法恢复。 无论如何,这不是实际应用中预期的用例。DEBUG_CHAL+DEBUG_AUTH 应该只在开发期间使用,而不是在现场使用。 此致, Lukas
View full article
SDK 未显示 安装了S32DS V4, 按照手册安装必要的软件, 在项目创建期间无法看到 SDK 按照以下文档中的步骤操作  #nxp S32G2  回复:SDK 未显示 Hi, 看起来这个问题与下面显示的社区帖子相同: S32G3 开发板,无法找到 SD 卡中没有的 FSL 镜像 - NXP Community 上述社区主题已提供信息。 请告知我们。 回复:SDK 未显示 HI @Daniel-Aguirre , 我面临两个问题。 我将 Micor USB 电缆连接到 PC 和 J4 连接器。未检测到 USB。 2)构建不完整 回复:SDK 未显示 Hi, 感谢您的反馈。 您能帮助我们分享您安装了哪个 RTD 包吗?您能看到您的设置下的可用示例吗?您在上一个窗口中选择了哪个 GCC 版本? 请告知我们。 回复:SDK 未显示 你好@Daniel-Aguirre 我尝试过同样的事情,但没有成功。如果您需要任何其他详细信息,请告诉我。 回复:SDK 未显示 Hi, 您能帮助我们分享您安装了哪个 RTD 包吗?您能看到您的设置下的可用示例吗?您在上一个窗口中选择了哪个 GCC 版本?针对这一问题,我们还可以推荐以下 HOWTO: 如何:使用 S32 RTD(无 AUTOSAR)为 S32G 创建闪烁 LED 应用项目 - NXP 社区 请告知我们。
View full article
如何解释 MC33665 TPL2 消息 我正在学习 MC33665 数据表。5.2.3 TPL2协议,消息长度为48bit,但是第二个16bit数据大于16bit,我该如何理解 我的意思是 MS =1bit,RADD=7bit,MADD=1bit,CADD=3bit,DADD=6bit,总共 18bit,大于 16bit? 回复:如何解释 MC33665 TPL2 消息 Hi, AN13281 被归类为需要保密协议 (NDA) 的安全文件。 您可以直接从以下位置下载: https://www.nxp.com/webapp/sd/collateral/1644500428545720962128?version=0.1 或来自: https://www.nxp.com/mynxp/secure-files 如果您的安全访问权限有任何问题,请联系支持人员。 BRs, Tomas 回复:如何解释 MC33665 TPL2 消息 我在哪里可以获得 AN13281。我的安全访问出错了。我拿到 MC33665A 数据表后它就不能用了 回复:如何解释 MC33665 TPL2 消息 Hi, 请查看我们的 AN13281 - 它详细描述了 TPL2 消息帧并提供了其他有用的信息。 BRs, Tomas
View full article
关于Android和Linux千兆以太网性能差距 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 千兆以太网应该是我们imx6平台最漂亮的功能之一,它将给众多客户带来更加丰富多彩的梦想。 但最近很多人反映使用Android和Linux在性能上存在很大的差距。现在让我在此进行探索。 同样的硬件,同样的内核,性能却不同,为什么? 在linux下,其数据吞吐量可以达到400Mbps,在JB下,只能达到200Mbps。 从下面的信息我们可以看出它应该与丢帧有关。 root@android:/# busybox ifconfig eth0 eth0 链路封装:以太网 HWaddr 00:04:9F:02:6C:E1 inet地址:192.168.0.100广播:192.168.0.255掩码:255.255.255.0 inet6 地址:fe80::204:9fff:fe02:6ce1/64 范围:链接 上行广播运行多播 MTU:1500 度量:1 RX 数据包:7382672错误:71828 丢弃:789 超限:71828 帧:71828 TX 数据包:4147006 错误:0 丢弃:0 超限:0 载波:0                collisions:0 txqueuelen:1000 RX 字节数:2568845018(2.3 GiB)TX 字节数:284789020(271.5 MiB) 在TCP协议栈中,iperf测试用例涉及三个缓冲区:tcp_mem;tcp_rmem;tcp_wmem。 它们都由三个变量描述,这些变量对 iperf 测试结果有很大影响。 在Linux中,我为它们获取了一个快照:      root@sabresd_6dq:/# cat /proc/sys/net/ipv4/tcp_mem      18240      24320     36480      root@sabresd_6dq:/# cat /proc/sys/net/ipv4/tcp_rmem      4096       87380     778240      root@sabresd_6dq:/# cat /proc/sys/net/ipv4/tcp_wmem      4096       16384     778240 在 Android 中,我也将它们与以下内容进行比较:      root@sabresd_6dq:/# cat /proc/sys/net/ipv4/tcp_mem      9285      12380     18570      root@sabresd_6dq:/# cat /proc/sys/net/ipv4/tcp_rmem      4096       87380     396160      root@sabresd_6dq:/# cat /proc/sys/net/ipv4/tcp_wmem      4096       16384     396160 tcp_mem 变量定义 TCP 堆栈在内核内存管理中的行为方式。第一个值告诉内核低阈值。 第二个值告诉内核从什么时候开始降低内存使用率。第三个告诉内核最多可以使用多少个内存页。 如果达到该值,TCP 流和数据包就会开始被丢弃,直到达到安全水平。 在 tcp_rmem 中,第一个值定义每个 TCP 连接的最小接收缓冲区,并且该缓冲区始终分配给 TCP 套接字。第二个值定义 默认接收缓冲区大小。第三个指定了可以为 TCP 套接字分配的最大接收缓冲区。 在 tcp_wmem 中,还给出了三个变量来描述每个 TCP 套接字的 TCP 发送缓冲区。 我们可以在内核代码中检查这些值是如何产生的。在 kernel_imx/net/ipv4/sysctl_net_ipv4.c 中有一个算法+450。 限制= nr_free_buffer_pages() / 8;     limit = max(limit, 128UL); sysctl_tcp_mem[0] = 限制 / 4 * 3; sysctl_tcp_mem[1] = 限制; sysctl_tcp_mem[2] = sysctl_tcp_mem[0] * 2; /* 将每个插槽的限制设置为不超过压力阈值的 1/128 */ 限制 = ((无符号长整型)sysctl_tcp_mem[1]) << (PAGE_SHIFT - 7); max_wshare = min(4UL*1024*1024,限制);     max_rshare = min(6UL*1024*1024, limit);     sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;     sysctl_tcp_wmem[1] = 16*1024; sysctl_tcp_wmem[2] = max(64*1024,max_wshare);     sysctl_tcp_rmem[0] = SK_MEM_QUANTUM;     sysctl_tcp_rmem[1] = 87380; sysctl_tcp_rmem[2] = max(87380,max_rshare); 从上面的算法中,我们可以看到 tcp_mem、tcp_wmem[2]、tcp_rmem[2] 都与 nr_free_buffer_pages() 相关,nr_free_buffer_pages() 代表 ZONE_DMA 和 ZONE_NORMAL 内可分配的可用 RAM 数量。 所以到这里,我们就能找到Android和Linux之间性能差距的根本原因了。运行不同的操作系统时,可用 RAM 之间存在很大差距。 事实上,在android中,Google已经引入了一种通过属性来调整这些值的机制。 现在我们使用默认的AOSP值,您可以在device/fsl/imx6/etc/init.rc中引用它们。对于wifi和以太网,它们都使用net.tcp.buffersize.wifi。 # 定义各种网络的 TCP 缓冲区大小 # 读取最小值、读取初始值、读取最大值、写入最小值、写入初始值、写入最大值 setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208 setprop net.tcp.buffersize.wifi524288,1048576,2097152,262144,524288,1048576 setprop net.tcp.buffersize.lte524288,1048576,2097152,262144,524288,1048576 setprop net.tcp.buffersize.umts4094,87380,110208,4096,16384,110208 setprop net.tcp.buffersize.hspa4094,87380,262144,4096,16384,262144 setprop net.tcp.buffersize.hsupa4094,87380,262144,4096,16384,262144 setprop net.tcp.buffersize.hsdpa4094,87380,262144,4096,16384,262144 setprop net.tcp.buffersize.hspap4094,87380,1220608,4096,16384,1220608 setprop net.tcp.buffersize.edge4093,26280,35040,4096,16384,35040 setprop net.tcp.buffersize.gprs4092,8760,11680,4096,8760,11680 setprop net.tcp.buffersize.evdo4094,87380,262144,4096,16384,262144 我尝试改变上述值,但不幸的是没有得到明显的改善。嗨,为什么? 那么另一个话题,tcp_mem 和 tcp_rmem 如何在内核中协同工作?在 android 中,我们只有办法调整 tcp_rmem 或 tcp_wmem 设置,而没有办法调整 tc_mem。 以“iperf -c”为例,tcp_rmem将根据千兆以太网时钟的频率进行填充。然后它将 根据tcp_mem的大小重新打包,如果tcp_mem较小,则会触发更多次,如果超过最大值 将会触发丢帧。然后将通过 TCP 启动重新传输。最后,性能就会下降。这就像使用千兆上网但用的是垃圾笔记本一样。 您仍然无法享受千兆以太网的良好性能。 为什么内核在 ipv4 中这样计算 tcp_mem?也许他们考虑的是单一高带宽和多连接之间的平衡。 你可以想象如果我们将 tcp_mem 更改为使用一个很大的值,它可能会导致主板由于内存分配不足而拒绝连接 在 tcp 初始化中。在这里我将给出几种提高我们的Android以太网性能的方法。 在电路板设计阶段扩大内存大小。 我已经通过在我们的 SabreAuto 板上测试再次检查了这一点,该板的内存为 2G,其下载速度可以达到 270 Mbps,而通过 Sabresd 则可达 50Mbps。 尽量使用老版本的android,如果能用ICS,可以放弃JB4.3。与较新的 Android 版本相比,旧版本占用的内存更少,并且会留下更多的可用内存。使用 ICS,我们可以达到 380 Mbps 的下载速度,而在 JB4.3 中,只能达到 210 Mbps。 如果您在非常重要的情况下使用 sabresd 的千兆以太网,那么如果您可以抛出其他内存消耗器(如 GPU),则可以平衡它。我已经检查过,如果我们禁用 GPU,JB4.3 中的性能可以达到 340 Mbps,提高约 50%。 改变tcp_mem算法,扩大其最大值阈值。就像您可以将上面的“sysctl_tcp_mem[2] = sysctl_tcp_mem[0] * 2”更改为“sysctl_tcp_mem[2] = sysctl_tcp_mem[0] * 3”。您可以看到不再出现丢帧现象。或者您也可以参考如何:网络/TCP/UDP 调整来对其进行硬编码。但正如其作者所说,不建议用于支持多个用户或多个连接。因为它可能导致主板由于内存分配不足而拒绝连接。 通过 android 中的以下补丁调整 tcp_rmem 和 tcp_wmem。您将获得双向 320Mbps。但是如果您使用 ifconfig 工具设置静态 ip,您将无法设置这些参数。对于AOSP的框架现在只支持DHCP。对于这种情况,您可以在进行测试之前在控制台中手动回显这些参数。 Gerrit 代码审查 Gerrit 代码审查 更改内核的调度策略配置。 禁用 CONFIG_FAIR_GROUP_SCHED 并且仅启用 CONFIG_RT_GROUP_SCHED 会带来一些增强。 经过上述更改,我已经使用 android4.3GA 在 Sabresd RevC1 上进行了测试,双向速率均可达到390~400Mbps。 回复:关于Android和Linux之间的千兆以太网性能差距 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我也想让客户关注这个主题,以便他们可以分享他们的结果。 顺祝商祺! —马赫什 回复:关于Android和Linux之间的千兆以太网性能差距 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jianzheng, 您能否将此文档留在此审核区域(而非您的私人空间),直到审核过程完成?当文档在自己的空间中,并且没有被限制查看时,社区中的每个人都可以看到该文档。在将文档移至公共社区之前,我们希望从中删除所有审核意见。 谢谢! 授予 回复:关于Android和Linux之间的千兆以太网性能差距 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您能否尝试像我在本文中提供的补丁一样更改tcp_rmem 和 tcp_wmem 的大小? 回复:关于Android和Linux之间的千兆以太网性能差距 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, 我们正在使用 Android ICS(3.0.35 内核)开发 i.MX6Q,并且有以下疑问。 1) 您提到,通过使用 Android ICS,您已经实现了 380 Mbps 的下载速度(来自主板的 iperf -c)。我想知道它是否稳定(差异很小)?或者下载时速度是否会出现波动(200~400Mbps范围内)? 2)如果波动结果范围是 200~400Mbps,您知道如何解决这种不稳定性吗? 谢谢! 阿吉斯·PV 回复:关于Android和Linux之间的千兆以太网性能差距 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我建议您在文档评论中“@提及”您的审阅者(如本文所示),并要求他们成为您的指定审阅者,并将他们引导至此暂存区域的主页以获取审阅者的说明。基本上,他们所要做的就是审查文档,向您提供一些反馈,然后在您做出必要的更改后,他们会重新审查并提交“我同意”的评论。相当简单。
View full article
「Configure...「Dio」ブロック内の「」ボタン エラー「指定されたパスが見つかりません。」「構成...「Dio」ブロックの「」ボタン。 私はこのトレーニングビデオを段階的に追っています。 https://www.nxp.com/design/training/deploying-autosar-and-non-autosar-software-components-on-nxp-s32k3-with-mathworks-tools:TIP-AUTOSAR-SOFTWARE-NXP-S32K3-MATHWORKS-TOOLS 9:42に、「Configure...「Dio」ブロックの「」ボタンをクリックすると、EBTresosが開きます。 しかし、私はこのエラー情報を得ました。 私のハードウェア設定: EB tresos v29をインストールしました。 Re:「Configure...「Dio」ブロック内の「」ボタン Hi, @xianzhi_g , S32K3 のモデルベース デザイン ツールボックスにご関心をお寄せいただき、ありがとうございます。 直面している問題は、EB tresos フォルダが見つからないことです。次の図に示すように、C:\EB\tresos\bin ではなく C:\EB\tresos パスを選択していることを確認します。 お役に立てば幸いです。 ドラゴス
View full article
无法在 S32K396-BGA-DC1 评估板上运行 MBDT s32k3xx_dio_ebt 示例 你好 我们最近购买了一块 S32K396-BGA-DC1 评估板,用于评估未来项目的 S32K396 MCU。 由于我们将使用 Simulink 模型进行应用程序开发,因此我尝试使用 MBDT 工具箱。 我可以毫无问题地安装工具箱,但我无法运行 s32k3xx_dio_ebt 示例。 我认为我已经在模型参数中设置了正确的目标 我正在使用安装在板上的“Open SDA”调试器。跳线 J16、J17、J18 和 J19 已相应设置。该电路板通过 USB 连接到我的笔记本电脑(电路板上的 USB 连接器旁边有绿色 LED 灯)。 模型下载参数设置如下 模型已建立,但当 Simulink 尝试将代码加载到开发板中时,过程失败 这是日志的内容 GNU gdb (GDB src=g2b2d27aa26 bld=gd2333b8c -vs=GDB-12-1 -L64 -W32 耳臂) 12.1 版权所有 (C) 2022 自由软件基金会,Inc. 许可证 GPLv3+:GNU GPL 版本 3 或更高版本 < http://gnu.org/licenses/gpl.html > 这是免费软件:您可以自由更改和重新分发它。 在法律允许的范围内,不提供任何担保。 输入“显示复制”和“显示保修”以了解详情。 该 GDB 配置为“--host=i686-mingw32 --target=arm-none-eabi”。 输入“show configuration”获取配置详细信息。 有关错误报告说明,请参阅: < https://www.gnu.org/software/gdb/bugs/ >。 在线查找 GDB 手册和其他文档资源: < http://www.gnu.org/software/gdb/documentation/ >。 如需帮助,请输入“help”。 输入“apropos word”来搜索与“word”相关的命令... 从 C:/Matlab/AddOn_2023b/Toolboxes/NXP_MBDToolbox_S32K3/S32K3_Examples/dio/s32k3xx_dio_ebt/s32k3xx_dio_ebt.elf 读取符号… tcp:localhost:7224:连接超时。 当你的目标是“exec”时,你不能这样做 顺便说一下,当发生错误时,红色 LED 会亮起。 有人能帮我吗? 谢谢 文森特 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 你好@Vincent_91687 很高兴听到! 我刚刚将您的附加帖子转发给了 S32 设计工作室团队。 如果您在使用 MBDT for S32K3 时遇到任何其他问题,请告知我们 谢谢! Irina 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 Hello Irina, 有用 ! 我知道您给我的指南,但是查看文档,我并不清楚在使用 J1 12V 电源时必须设置那些跳线。 无论如何,现在很明显我错了 顺便说一句,万一你也可以帮助我,我还有另一个关于在 S32 Design Studio 中安装 S32K396 支持包的案例: https://community.nxp.com/t5/S32K/Fail-to-install-S32K396-development-package-fails/mp/2053684#M46329 非常感谢你的帮助 此致 文森特 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 你好@Vincent_91687 感谢您提供的图片。我注意到,您的主板上的 J4、J6 和 J7 位于 1-2 位置,对应于 JP1 电源,如S32K396-BGA-DC1 连接器和跳线说明表所示,您可以在以下链接中找到该表 由于目前您的设置中 JP1 上没有连接,因此您需要更改跳线位置以确保 MCU 所需的电压。 为此,以及完整的逐步硬件设置,我建议您查看S32K396-BGA-DC1 评估板入门指南,以便能够根据您的硬件设计设置电源,并正确配置电路板上所有必要的跳线。 如果这有帮助,请告诉我们, Irina 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 Hello Irina, 感谢您的努力。 当我的电路板仅通过 J1 连接器供电(未连接 USB)时,只有 D4 LED 亮起。D1、D2 和 D3 保持关闭状态 当 USB 电缆连接时,即使 J1 未连接,D30 LED 也会亮起 当 USB 和 J10 都连接时,我仍然只有 D4 和 D30 处于打开状态。我正尝试以这种状态下载代码。 如您所见,D2、D3 和 D4 始终处于关闭状态。这是个问题吗? 谢谢 此致 文森特 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 你好@Vincent_91687 您的下载设置似乎正确,因为您选择使用 JTAG 将代码下载到 FLASH 存储器中。 我已尝试在我的设置上运行该示例,我想提一下我已采取的步骤: - 通过 12V CON_1_PWR J1连接器为电路板供电, - 通过SW10启用外部电源,将其切换到1-2位置(请注意,根据电路板的原理图, J3也需要放置在 1-2 位置) 执行这些操作后, D1、D1、D3、D4 LED(MCU 电源输入指示灯)也应亮起。 您能否告诉我们,按照这些步骤操作后,除了电路板上 USB 连接器旁边的 LED 灯亮起之外,MCU 电源输入指示灯是否也亮起? 谢谢! Irina 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 Hello Irina, 非常感谢您的帮助。 我已经更改了“配置项目模板” 我也下载并安装了 PE Micro 驱动程序(并重新启动了计算机),但不幸的是它并没有解决问题。 您能否确认我的“下载”设置是否正确? 连接失败后,我注意到日志中有一些有趣的东西 这是否意味着 MCU 已在运行? 该板是全新的,所以我猜没有可以在闪存中运行的代码 是否有任何跳线需要设置以告诉 MCU 从 JTAG 而不是闪存启动? 再次感谢您的帮助 此致 文森特 回复:无法在S32K396-BGA-DC1评估板上运行MBDT s32k3xx_dio_ebt示例 你好@Vincent_91687 通过查看您遇到的错误,我认为问题可能与缺少PEmicro 硬件接口驱动程序安装有关。这些驱动程序对于使用板载 OpenSDA 调试器是必需的。 您能否检查这些驱动程序是否已安装?如果没有,您可以从 PEmicro 官方网站下载并安装它们。 此外,如果您打算使用 S32K396-BGA-DC1,您可以直接选择我们为该板提供的默认配置项目,因为 S32K396-Q289 选择与 EVB 的 BGA-DC 版本相匹配。根据该板的硬件特性,为 S32K396-BGA-DC1 提供的配置项目启用了外设、引脚和时钟,因此从该项目开始而不是从已经选择的开始可能会很有用。   请让我们知道这是否有帮助或者是否需要我们提供进一步的详细信息。 Irina
View full article
无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK 尝试通过 UUU 将我从 NXP 下载的 imx 8 nano EVK Linux 映像写入我的 imx 8 nano EVK。我认为这应该是一件非常简单、平常的事情。但它失败了。 我下载了LF_v6.6.36-2.1.0_images_IMX8MNDDR3LEVK。 使用最新的 UUU,v 1.5.182。 UUU 识别 nano 并开始处理,但很快失败并出现错误:LIBUSB_ERROR_TIMEOUT。 我已重试多次,但每次都失败。 仅供参考:我还有一个 mini EVK,我可以毫无问题地将 mini EVK 图像写入其中。 知道是什么原因导致失败吗?又该如何解决呢? 以下是我的运行输出: PS i.MX-8M-Nano-EVK\LF_v6.6.36-2.1.0_images_IMX8MNDDR3LEVK> .\uuu.exe -lsusb uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.182-0-gda3cd53 Connected Known USB Devices Path Chip Pro Vid Pid BcdVersion Serial_no ==================================================================== 2:1 MX815 SDPS: 0x1FC9 0x013E 0x0001 2D2A6A09DAB58857 PS i.MX-8M-Nano-EVK\LF_v6.6.36-2.1.0_images_IMX8MNDDR3LEVK> .\uuu.exe -V . uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.182-0-gda3cd53 Build in config: Pctl Chip Vid Pid BcdVersion Serial_No ================================================== SDPS: MX8QXP 0x1fc9 0x012f [0x0002..0xffff] SDPS: MX8QM 0x1fc9 0x0129 [0x0002..0xffff] SDPS: MX8DXL 0x1fc9 0x0147 SDPS: MX28 0x15a2 0x004f SDPS: MX815 0x1fc9 0x013e SDPS: MX865 0x1fc9 0x0146 SDPS: MX8ULP 0x1fc9 0x014a SDPS: MX8ULP 0x1fc9 0x014b SDPS: MX93 0x1fc9 0x014e SDPS: MX91 0x1fc9 0x0159 SDPS: MX95 0x1fc9 0x015d SDPS: MX95 0x1fc9 0x015c SDP: MX7D 0x15a2 0x0076 SDP: MX6Q 0x15a2 0x0054 SDP: MX6D 0x15a2 0x0061 SDP: MX6SL 0x15a2 0x0063 SDP: MX6SX 0x15a2 0x0071 SDP: MX6UL 0x15a2 0x007d SDP: MX6ULL 0x15a2 0x0080 SDP: MX6SLL 0x1fc9 0x0128 SDP: MX7ULP 0x1fc9 0x0126 SDP: MXRT106X 0x1fc9 0x0135 SDP: MX8MM 0x1fc9 0x0134 SDP: MX8MQ 0x1fc9 0x012b SDPU: SPL 0x0525 0xb4a4 [0x0000..0x04ff] SDPV: SPL1 0x0525 0xb4a4 [0x0500..0x9998] SDPV: SPL1 0x1fc9 0x0151 [0x0500..0x9998] SDPU: SPL 0x0525 0xb4a4 [0x9999..0x9999] SDPU: SPL 0x3016 0x1001 [0x0000..0x04ff] SDPV: SPL1 0x3016 0x1001 [0x0500..0x9998] FBK: 0x066f 0x9afe FBK: 0x066f 0x9bff FBK: 0x1fc9 0x0153 FB: 0x0525 0xa4a5 FB: 0x18d1 0x0d02 FB: 0x3016 0x0001 FB: 0x1fc9 0x0152 FB: 0x0483 0x0afb Wait for Known USB Device Appear... New USB Device Attached at 2:1-2D2A6A09DAB58857 2:1-2D2A6A09DAB58857>Start Cmd:SDPS: boot -f imx-boot-imx8mnddr3levk-sd.bin-flash_ddr3l_evk 10%2:1-2D2A6A09DAB58857>Fail HID(W): LIBUSB_ERROR_TIMEOUT (-7)(20.05s) libusb: warning [libusb_exit] device 2.0 still referenced libusb: warning [libusb_exit] device 1.0 still referenced libusb: warning [libusb_exit] device 2.6 still referenced libusb: warning [libusb_exit] device 1.1 still referenced libusb: warning [libusb_exit] device 2.2 still referenced PS i.MX-8M-Nano-EVK\LF_v6.6.36-2.1.0_images_IMX8MNDDR3LEVK> i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Windows 回复:无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK 您的回复促使我更仔细地查看下载选项。我现在看到有两个名称中带有“nano”:i.MX 8M Nano DDR3L EVK 和 i.MX 8M Nano EVK。我猜名称中没有“DDR3”的是DDR4。 使用非 DDR3 下载有效。 仅供参考,我使用了命令: uuu .\LF_v6.6.36-2.1.0_images_IMX8MNEVK.zip 确实希望在线信息能够更好地设计以获得成功。 谢谢你的帮助。 回复:无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK Hi, 您正在将 DDR3 二进制文件刷入 LPDDR4 板,请尝试刷入正确的LPDDR4 板。 uuu -b imx-boot-imx8mnevk-sd.bin-flash_evk imx-image-full-imx8mnevk.wic 此致 回复:无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK 再次尝试附加图片。似乎使用 jpg 文件比使用 .zip 文件效果更好。      回复:无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK 我确实附加了一个带有图像的 zip 文件,但现在在线程中看不到它。然后我尝试再次回复并附加一个简单的文本文件,但我认为它没有起作用。该文件似乎开始上传;显示在拖放框中,但随后消失了。并且消息“允许的最大附件数”计数保持在 5。因此,我怀疑图片压缩包是否附加在了我上一条消息中。 回复:无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK 也许您指的是顶部和底部的图片。随附的。 回复:无法通过 UUU 将 NXP 图像写入 iMX 8M nano EVK Hi, 感谢您对恩智浦半导体产品的关注, 您能分享一下您的两块板子的顶部和底部的图片吗? 此致
View full article