Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
S32K328 - 调试端口锁定& UTEST/C40 编程硬故障 亲爱的支持者 客户 Aptiv 发现S32K328在启动加载程序时存在两个与 HSE 配置和 UTEST 编程有关的关键问题。 请求有关根本原因和正确的配置/编程顺序的指导。 背景/设置 MCU:S32K328 HSE:[9.2.72.0] 启动加载程序:IVT @ 0x400000 闪存驱动程序:C40(恩智浦) 调试器/探针劳特巴赫/TRACE32 MCAL/SDK:[5.0.0] 问题 1 — 在 IVT(用于启用 HSE 使用)中添加启动配置字和引导加载程序后,调试端口变得不可访问: 摘要: 当我们在引导加载程序映像中包含 配置字 (0x02) 并刷新时,调试端口失败(无法连接),随 后的重新刷新失败。 ECU 实际上变成了砖块,我们在尝试重新刷新时始终会出现闪存错误。 繁殖(一致): 将配置字 + HSE 目标地址添加到引导加载程序映像中。 通过调试器闪存引导加载程序。 电源循环/RESET。 尝试连接调试器或重新刷新。 观察到的行为 JTAG 连接间歇性或永久性失败。 大量擦除/标准重新刷新尝试失败,该区域出现闪存错误 (0x400000) 设备显示为已锁定(无调试条目)。     问题 2 — 在启动 C40 驱动程序时 UTEST 更新期间首次出现硬故障:   摘要: 当我们在启动加载程序时使用 C40 驱动程序更新 UTEST 区域时,第一次尝试就会出现硬故障。RESET后,闪存写入成功完成(没有其他故障)。 繁殖(频繁): 开机时,引导加载程序初始化最小平台,并调用 C40 写入 UTEST。 首次尝试写入 → 硬故障。(仅适用于新鲜样品) 观察到的行为 首次出现硬故障后,UTEST 内容反映了预期写入内容。 请帮助了解这两个问题的根本原因。 顺祝商祺! 维克托 板:S32K358 元器件:网络安全加密 优先级:高 Re: S32K328 – Debug port lock & UTEST/C40 programming hard fault 附上客户 Aptiv 根据我的要求提供的更多信息 如果能得到 IVT 的全部配置就更好了? 如果您说 配置字 (0x02) 是指 CM7_1_ENABLE 吗?我不这么认为,也许你可以澄清一下 当前生命周期 ? 第 2 期 您使用的是哪个 RTD 版本?能否提供您的驱动程序配置和使用的开关顺序? Re: S32K328 – Debug port lock & UTEST/C40 programming hard fault 您好@viktorfellinger 问题 1,我认为您应该向 HSE 团队咨询。我想可能是因为你配置了错误的 HSE 或其他东西。 问题 2 看起来与我们在 RTD 5.0.0 版本中发现的错误有关,即检查了错误的扇区锁定寄存器。我们有一个 Hotfix 版本 RTD 5.0.0HF01 来解决这个问题: 我建议您的客户改用此版本的 RTD
查看全文
集成开发环境中的 AutoSAR 版本不匹配编译错误 最初,我在 EB 工具中添加了 C40_IP 驱动程序,如图 1 所示。编译后,开始出现 AutoSAR 版本不匹配错误。我尝试了删除工作区(.metadata)、删除 C40_IP、重启电脑和手动修改版本号等方法,但问题都没有得到解决。随后,我打开另一个项目并对其进行编译(该项目不包括 C40),但也出现了版本不匹配错误,如图 2 和图 3 所示。该项目在之前的编译过程中没有出现任何问题。我想问问大家是否遇到过类似情况,以及如何解决。此外,可以做些什么来尽可能避免触发此类问题的信号?谢谢大家。 对于上述内容的人工智能翻译给您带来的不便,我深表歉意。 Re: AutoSAR version mismatch compilation error in the IDE 您好, AUTOSAR 版本不匹配通常发生在编译版本中的 RTD/MCAL 标头不来自同一个更新站点(或者在添加/删除驱动程序/配置后出现部分混合)时。即使你刚刚在 EB Tresos 中添加了一个新 IP(比如 C40_IP),该版本也可以触发此问题——该版本可能会从 S32DS 安装或工作空间缓存中剩余的不同 RTD 版本中提取标头。 有什么能帮上忙的... -避免在一个 S32DS 中混用 RTD 代码包:32DS 目前不支持在同一 IDE 实例中使用多个 RTD 软件包(例如 3.x 和 4.x)。如果您的计算机在一段时间内安装了各种 RTD 版本,请安装单独的 S32DS 实例(例如,S32DS.3.5_RTD400,S32DS.3.5_RTD300),仅使用相应的开发软件包 + 该项目的 RTD 更新站点,保持每个实例 “干净”。 - 临时解锁(谨慎使用):在项目设置中定义 DISABLE_MCAL_INTERMODULE_ASR_CHECK,跳过模块间 AUTOSAR 版本检查,允许编译。这对于确认您的环境是否正常很有用,但它会禁用兼容性强制执行,因此请彻底验证并在RTD软件包调整后进行恢复。 BR, Petr Re: AutoSAR version mismatch compilation error in the IDE 你好,彼得 谢谢您的回答。现在我知道如何避免版本号问题了。不过,还有一点:另一个不含 C40 的项目也报告了同样的编译错误,重新导入该项目也无济于事。能否请您解释一下造成这种情况的原因以及如何解决?我将不胜感激。
查看全文
RDB3 Linuxイーサネット構成 このドキュメントでは、NXP S32G-VNP-RDB3 開発ボード上でネットワークコネクティビティを構成およびテストするための実用的なガイドを提供します。ハードウェアとソフトウェアの環境を準備し、ネットワーク パラメータを設定し、ボードとホスト システム間の通信を検証するための重要な手順について説明します。このガイドでは、ボードのネットワーク アーキテクチャの主要な側面についても説明し、Linux レベルと U-Boot レベルの両方で構成を調整するための手順を示します。その目的は、オートモーティブ ネットワーク アプリケーションの イーサネット の イネーブルメント と検証に取り組むエンジニアのリファレンスとなることです。 このドキュメントは、以前のS32G-VNP-RDB2 リファレンス・デザイン イーサネット イネーブルメント ガイドの更新版であり、RDB3 プラットフォームおよび新しい BSP バージョンに固有の変更と考慮事項が組み込まれています。 S32G
查看全文
S32 设计工作室 3.6.1 发布公告 产品发布公告 模拟与汽车嵌入式系统 S32 设计工作室 3.6.1 恩智浦半导体的模拟 & 汽车嵌入式系统 (AAES)-软件开发工具工程团队很高兴地宣布发布支持以下内容的 S32设计工作室3.6.1 : AMCU AP RAS S32K3 系列 S32G 系列 S32R41 系列 S32K1 系列 S32ZE 系列 S32R45 系列 S32M2 系列     S32 Design Studio 3.6.1 的主要功能 安装人员 S32 Design Studio 3.6.1 在一个 2.94GB 的安装程序中提供了所有公共 NPI,以改善用户的首次使用体验。根据Flexera的授权,为Alpha客户提供其他软件包,可以使用扩展和更新机制将其安装在S32 Design Studio 3.6.1之上,如下所示。 删除了安装程序中的激活码请求,用户安装 S32DS 时将不再提示输入激活码。 安装程序现在要求预先获得管理员权限,"以管理员身份运行 "将正确提示 "请求管理员 "进行确认。 新增直接从安装程序离线升级现有安装的支持。 新增静音安装支持。 将文档文件更新为最新的 NXP 模板。 新增Ubuntu 24.04 支持。 平台集成开发环境和用户界面 显著改善了扩展和更新中的外观和用户体验,同时安装了更清晰的软件包详细信息(版本、大小、类别、状态)、筛选选项以及将已安装的配置导出为纯文本和 html 格式的功能。&此外,它还增强了通知用户新的可用软件和已安装在个人环境中的软件的功能,每个模块都用颜色和所属组来标识。   根据内存属性合并 MMU 查看器 条目。 在内存空间 视图中支持通过 DAP(调试访问端口)访问内存。 改进了观察寄存器和 MMU 视图中的刷新机制,使 S32 调试器的性能略有提高。 在 MMU 视图中引入了查找& 复制功能,以方便查找特定地址。 S32 调试器 ArmV8-A 的L1 高速缓存读取能力。 使用GDB 不间断模式启用异步调试和运行时内存访问。 扩展测试连接,以便能够指定命令变流器服务器 (CCS) IP 和端口,为 CCS 远程场景增加价值。 S32 闪存编程器 的写入速度 提高到 60% 。 扩展mem_read和mem_write命令,使用 DAP(调试访问端口)进行访问。 第三方 解决方案 使用TASKING v9.21.312更新第三方调试支持。 NPI 的主要特点 S32K389 设备 启动此设备的支持功能。 支持的编译器 恩智浦的 GCC9.2, 10.2; 全球统一制度》2021.1.4 完全支持以下调试器 S32Debugger和Lauterbach 此版本可在以下网址下载: S32 Design Studio 3.6.1可 在以下网站找到 : nxp.com Flexera 目录 S32 平台的 S32 Design Studio v.3.6 汽车软件包管理器 目标受众: S32 Design Studio 3.6.1 和 捆绑的 NPI 版本面向公众 受众。 软件包的安装过程: 下载 S32 Design Studio v3.6.1,可在 nxp.com、适用于 S32 平台的 Flex era 目录 S32 Design Studio v.3.6 和汽车软件包管理 器中 获得。 如果您有任何本地管理限制(例如Admin by Request),安装程序就会请求升级,或者你也可以使用 "以管理员身份运行 "来运行安装程序。 如果需要,请下载任何其他软件包。 启动 S32 设计工作室 v3.6.1 并安装所需的软件包。 请访问 帮助 > S32DS扩展和更新。 要获取其他软件包,请在 “S32DS 扩展和更新” 对话框中,单击 “添加更新站点”。 导航至包含下载的 ZIP 文件的目录。选择它并单击 打开,然后单击 确定。 您将返回 S32DS 扩展和更新,并可以使用此对话框选择所需的软件包。 技术 技术支持: 一般问题请使用公共社区: https://community.nxp.com/community/s32/s32ds 如需内部软件包,请使用内部 S32DS 恩智浦社区空间:https://community.nxp.com/groups/internals32ds
查看全文
S32G3 PFE EMAC 和 XPCS 设置 亲爱的支持团队 我们的客户麦格纳在为本周即将举行的奥迪演示进行以太网设置时遇到了一个关键问题。以下是系统的详细信息和目前的研究结果。 系统设置 PFE EMAC0:1 Gbit SGMII → 连接至 Broadcom 交换机端口14,启用自动协商功能 PFE EMAC1:1 Gbit SGMII → 连接至 Broadcom 交换机端口8,启用自动协商功能 PFE 和 SERDES 初始化完成后,S32G 通过外部控制信号为 Broadcom 交换机上电并启动。 目前的研究结果 定时 时钟配置似乎正确。劳特巴赫脚本证实了CMU的频率范围符合预期。 内部回环模式 EMAC0内部环回操作正常。 0x460A0714和0x460A0718的 TX 计数器增加 0x460A0780的 RX 计数器增加 必须启用串行模式才能实现 TX → RX 环回行为。 链接谈判 S32G 和 Broadcom 交换机端都启用了自动协商功能。 外部路径环回(通过 Broadcom) 通过 Broadcom 交换机进行的环回不起作用。 在 EMAC0 上,0x460A0780的 RX 计数器没有增加,表明 S32G 没有从交换机接收数据。 计划/正在采取的行动 Magna 将对 SGMII 通道进行硬件级信号测量。 恩智浦将重新验证 EMAC0 和 EMAC1 在1 Gbit SGMII 时的配置。 申请它 我们迫切需要贵方的支持,以便 找出外部沟通缺失的根本原因。 使用 S32G 时,验证或提供校正的 SGMII / SERDES / PFE 配置: EMAC0 + EMAC1 同时 1 Gbit SGMII 已启用自动协商(也可能已禁用?) 为了确保麦格纳的奥迪车在本周进行演示,我们急需一个强大的、可运行的配置。 顺祝商祺! 维克托 XPCS 转储 - 见附件。   PFE PFE MCAL 优先权:紧急 资料来源直接客户 Re: S32G3 PFE EMAC and XPCS Setup 仅对 EMAC0 的 Mcu、Serdes 和 Eth_43_PFE 配置进行了验证。对于以 SGMII 1Gbps 模式连接 PHY 的 EMAC0,该配置是有效的。 通过调试电话确定,Serdes 和 Broadcom 交换机(直接 SGMII 连接)之间的自动协商不起作用。 当双方都禁用自动协商功能时,链路是正常的,以太网流量也是双向的。由于客户应用不需要自动协商,因此未确定自动协商失败的根本原因。
查看全文
自供电 RFID 应答器芯片锁存输出 我找到了和我想要的类似的东西,但它已经停产了。这不完全是我想要的,因为它没有锁存输出功能。 https://www.nxp.com/products/SL3S1203_1213 频率为超高频。范围并不重要。输出必须具有锁存器。最初,不应将其锁存。当 RFID 信号存在时,应将其锁存,并应永久保持锁存状态。射频识别(RFID)转发器芯片也应自带电源。 Re: Self-powering RFID transponder chip latched output 您好,先生, 非常感谢您对我们的产品感兴趣。 您说得没错,UCODE G2iL 已经停产。 我的建议是,请看看UCODE G2iM。该标签与之十分相似,不同之处在于它有一个可配置的用户内存。 能否请您说明一下,您提到的 "锁存 "功能是否可以通过使用 EPC 的 "永久锁定 "功能来改变块状态并冻结新设置? 在数据表第 10.7.1 节的 ChangeConfig 中,集成了产品状态标志 (PSF)、降低反向散射强度、4R 或标签篡改警报等特殊功能。 如果您需要有关这些功能的更多信息,请随时咨询。我很乐意帮忙。 Re: Self-powering RFID transponder chip latched output 您好, 我很困惑,因为你推荐的部件也已经过时了。 https://www.nxp.com/products/rfid-nfc/ucode-rain-rfid-uhf/ucode-g2im-and-g2im-plus:SL3S1003_1013?_gl=1*dd3u0u*_ga*MTkzNzk4NjAwNS4xNzc4MTM1ODkw*_ga_WM5LE0KMSH*czE3NzgxMzU4ODkkbzEkZzEkdDE3NzgxMzYwNDYkajEzJGwwJGg2ODc0NDA0MjQ. https://www.digikey.com/en/products/detail/nxp-usa-inc/SL3S1003FUD-BG-003/3431035 Re: Self-powering RFID transponder chip latched output 我又找到了两个部件。 https://www.digikey.com/en/products/detail/nxp-usa-inc/SL3S1013FTB0-115/3431036 https://www.mouser.com/ProductDetail/NXP-Semiconductors/SL2S2602FTBX?qs=chTDxNqvsykDXo2K%2F0nslQ%3D%3D 与您建议的部件相比,这些部件都很活跃。请就这些部分留言。
查看全文
MCX-C44XコントローラのUARTブートローダーを使用してプログラムするために利用できるソフトウェアツールは何ですか? こんにちは、 UARTブートローダーインターフェースを使用してMCX-C444VLH部品にファームウェアをフラッシュする必要があります。 では、これに使用できるソフトウェア ツールは何でしょうか。 よろしく シヴァージー MCX C Re: what are the software tools available to program using UART bootloader in MCX-C44X controllers こんにちは@shivajiyannaboina_tfs 、 MCXC デバイスの場合、SEC ツールはデバイスがブートローダ モードに入った後にのみ操作を実行できます。 デバイスをブートローダ モードにする必要がある場合、SEC ツールはこの手順を実行できません。 ブートローダー モードに入る 2 つの方法については、以下のリンクを参照してください。 MCX C:ファームウェア更新のためのROMブートローダーへの入り方 一括消去方法を使用する方が推奨される方法です。 お役に立てれば幸いです。 BR セレステ Re: what are the software tools available to program using UART bootloader in MCX-C44X controllers こんにちは、 MCX-C44X部品をプログラムするためのMCUXPressoセキュアプロビジョニングツールがあることは知っています。 デバイスをブートローダ モードにするには、何らかの手順に従う必要がありますか、それとも MCUXPresso セキュア プロビジョニング ツールがこれらすべてのことを処理しますか? これについて助けていただけませんか? Re: what are the software tools available to program using UART bootloader in MCX-C44X controllers こんにちは@shivajiyannaboina_tfs 、 ご投稿ありがとうございます。blhost を使用して、MCX-C444 にファームウェアをプログラムできます。blhost アプリケーションは、ホスト コンピュータ上で使用され、Kinetis ブートローダの実装を実行している NXP プラットフォームにコマンドを発行します。 BLHOST のダウンロードリンク: blhost 。Kinetis blhost ユーザーズ ガイドは、 KBLHOSTUGで参照できます。 BLHOST に加えて、Secure Provisioning SDK (SPSDK) に基づいて開発されたフラッシュ ツール スクリプトも利用できます。このスクリプトは、MCU が ROM ブートローダに入った後にイメージ ファイルをフラッシュに直接フラッシュすることができます。さらに、BLHOST の API を統合します。具体的な詳細については、SPSDK の公式 Web サイトを参照してください。 はじめに — SPSDK ドキュメント お役に立てれば幸いです。 よろしくお願いいたします。 セレステ -------------------------------------------------------------------------------------------------------- 注: この投稿が質問の答えである場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! --------------------------------------------------------------------------------------------------------
查看全文
KW45 SMSCM DBGEN レジスタ こんにちは、NXP チームの皆様、 現在、**KW45 シリーズのチップ** を使用して、**セキュアなその他のシステム制御モジュール (SMSCM)** のレジスタ レイアウトを確認しています。DBGEN レジスタ内の次のフィールドの定義について、さらに深く理解したいと思います。 `ALTEN`、`ALTDBGEN`、`SPNIDEN`、`NIDEN`、`SPIDEN`、`DBGEN` 具体的な質問は次のとおりです。 1.これらの各フィールドの正確な機能は何ですか? また、それらは互いにどのように異なりますか? 2. どのような典型的なシナリオまたはユースケースで各フィールドを有効にしたり構成したりしますか?たとえば、`SPIDEN` と `DBGEN`、または `ALTEN` と `ALTDBGEN` はいつ使用するのでしょうか? 3. これらのフィールド間に、注意すべき依存関係や相互作用はありますか? 可能であれば、これらの分野を理解するのに役立つより詳細な参考資料を提供してもらえますか? ご支援ありがとうございます! Re: KW45 SMSCM DBGEN Registe こんにちは、 お元気でお過ごしでしょうか。返信が遅くなり申し訳ありません。 DBGEN レジスタは、特殊な 3 つの D フリップフロップ (DFF3) レジスタ実装を使用してデバッグ アクセスを制御します。有効になっていて、デバイスのライフサイクル状態が許可している場合は、通常どおりデバッグできます。無効にすると、KW45 はこのタイプのアクセスをブロックします。つまり、DBGEN は、KW45 のセキュリティ/ライフサイクル状態がデバッグを許可する場合にのみ機能します。 SPIDEN や ALTEN、ALTDBGEN などの他のフィールドは、ライフサイクルおよび認証フローと連携して、安全なデバッグ アクセスまたは一時的なデバッグ アクセスを許可します。 DBGEN レジスタに関する利用可能な情報(各フィールドとその機能の説明)は、リファレンス マニュアルのセクション 12.3.2.2「デバッグ イネーブル (DBGEN)」に記載されています。   よろしくお願いします、 アナ・ソフィア。
查看全文
复制部件事件 大家好,我正在使用恩智浦GUI指南为我的设备构建一个GUI。有没有办法复制与部件相关的事件,并将它们带到新的屏幕上?即我在屏幕上有一个按钮,该按钮有一个关联事件,在我复制屏幕后,按钮部件现在没有关联事件,我必须手动将事件重新分配给按钮。是否有办法让部件在重复时保留其相关事件?谢谢您的帮助! Re: Copy widget events 你好,@chand1er、 目前,GUI Guider 工具无法复制部件和所有事件,即使在同一屏幕上也不行。我认为这是因为副本有了一个新的名称路径 部件名称> ,所以相关事件应用于以前的路径,而不是现在的路径,因此事件消失了。 我将向 GUI Guider 团队说明这一行为,以便他们考虑添加这一功能。在此期间,您必须继续手动添加重复部件的事件。 我对造成的不便表示歉意,并感谢您的建议。 BR, Edwin. Re: Copy widget events 你好,Alondra,我使用的是图形用户界面引导程序 1.10.1,由于还没有选择处理器,我现在只使用模拟器。它正处于开发的初期阶段。 Re: Copy widget events 感谢您联系我们,请问您使用的是哪个零件编号? 致以最崇高的敬意 阿隆德拉
查看全文
Does the IMX8MP platform have a complete trusted startup document or link for the TPM? Hello NXP community technicians: I currently implemented TPM chip configuration under uboot and kernel, and I can also perform crypto metrics under system via TPM tool, PCR metrics on kernel files via uboot simulated TPM, and check accuracy under system, but the complete trusted boot process as well as automated checking operation is not known how to perform further; Is there any documentation or links to refer to, and not sure of the legality of the current operation, looking forward to your suggestions and replies! Thanks! Environment: kernel: 6.6.52 rootfs: yoct5.0 Re: IMX8MP 平台是否有TPM完整的可信启动文档或者链接 Hello, To implement HAB on i.MX8MP, you need to follow our secure boot guidelines. The key resources are: i.MX 8M Plus Security Reference Manual . i.MX 8M Plus Reference Manual. i.MX Secure Boot on HABv4 Supported Devices (AN4581). High Assurance Boot Version 4 Application Programming Interface Reference Manual (HABv4 API). HABv4 RVT Guidelines and Recommendations (AN12263). Code Signing Tool (CST). Best regards.
查看全文
MX8X_4.14.98_ga_kernel_V3-20190903_chn.pdf .i.mx8x内核代码定制文档 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXP BSP Core Customization........................................ 103 6.1 IO Pin Configuration and Pinctrl Driver................................... 103 6.2 Bringing up new boards .................................................. 118 6.3 Change the debug serial port: .................................................. 127 6.4 uSDHC device customization (eMMC flash, SDcard, SDIOcard) 133 6.5 LVDS LCD Driver Customization......................................... 142 6.6 GPIO_Key driver customization......................................... 145 6.7 GPIO_LED driver customization................................... 149 6.8 Fuse nvram driver.................................................. 152 6.9 SPI and SPI Slave Drivers................................... 153 6.10 USB 3.0 TypeC changed to USB 3.0 TypeA (unverified) ... 160 6.11 Automotive-Grade Ethernet Driver Customization........................ 160 i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Re: MX8X_4.14.98_ga_kernel_V3-20190903_chn.pdf .i.mx8x内核代码定制文档 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> updated to v3 Add nandflash Support/DDR Modification/i.MX8DX support Re: MX8X_4.14.98_ga_kernel_V3-20190903_chn.pdf .i.mx8x内核代码定制文档 firmware version should be: modify in next version 注意:也可以如下使用wget命令获得mx8qx-ahab-container.img wget http://www.freescale.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.1.bin chmod +x firmware-imx-8.1.bin  && ./ firmware-imx-8.1.bin --auto-accept mx8qx-ahab-container.img位于firmware-imx-8.1/firmware/seco/mx8qx-ahab-container.img
查看全文
LPC55S6xのTrustZone <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このドキュメントは、LPC55S6xデバイスのTrustZoneについて紹介するものです。 LPC55S6x MCUプラットフォームおよび汎用ブロック このLPC55S69には、TrustZone、MPU、FPU、SIMD を備えた 100MHz Cortex-M33 コアが 1 つと、セキュリティ機能が有効になっていない 100MHz Cortex-M33 が 1 つあります。LPC55Sxxファミリには、100MHzコアを1つだけ実装する別のLPC55S66があります。コア 0 には、PowerQuad と呼ばれる DSP アクセラレータと CASPER と呼ばれる暗号化エンジンの 2 つのコプロセッサがあります。コアプラットフォームには、両方のコアからの同時実行と、他のマスターのペリフェラルやメモリへの並列アクセスを可能にするマルチレイヤーバスマトリックスがあります。メモリ・オン・チップには、最大640KBのフラッシュメモリ、最大320KBのRAM、および128KBのROMが含まれます。 タイマーには、5ビットから32ビットのタイマー、SCTimer/PWM、マルチレートタイマー、ウィンドウウォッチドッグタイマー、リアルタイムクロック(RTC)、マイクロタイマーなどがあります。各コアには、独自のサイスティックタイマーがあります。 通信インターフェースには、オンチップHS PHYを備えたUSBハイスピード、水晶発振器レスで動作可能なUSBフルスピード、WIFIカードとSDカードを同時にサポートする2つのSDIOインターフェース、最大50MHzのクロックレートの1つの高速SPI、最大8つのSPI、I2C、UART、または4つのI2Sをサポートする8つのFlexcommが含まれます。 アナログシステムには、1MSPSでサンプリングする16チャンネル16ビットADC、アナログコンパレータ、16チャンネル静電容量式タッチコントローラ、および温度センサが含まれています。 その他のモジュールには、プログラマブルロジックユニット、降圧DC-DCコンバータ、-40〜105°Cの温度範囲で1.71〜3.6Vの動作電圧が含まれます。 TrustZoneとは何ですか? 近年、IoT(Internet of Things)は、組み込みシステム開発者にとってホットな話題となっています。IoTシステム製品はより複雑化しており、システムのセキュリティを確保するためには、より優れたソリューションが必要です。 ARM® TrustZone®テクノロジは、セキュリティに対するシステムオンチップ(SoC)およびCPUシステム全体のアプローチです。TrustZone® for ARMv8-Mセキュリティ拡張機能は、超低消費電力の組み込みアプリケーション向けに最適化されています。これにより、セキュア・メモリへのアクセスとI/Oへのアクセスを信頼できるソフトウェアのみに制限する複数のソフトウェア・セキュリティ・ドメインが可能になります。ARMv8-MのTrustZone®: セキュア・ドメインと非セキュア・ドメインの両方で低い割り込み待ち時間を維持します。 コードのオーバーヘッド、サイクルのオーバーヘッド、または仮想化ベースのソリューションの複雑さを課さない 最小限のオーバーヘッドで安全なドメインへの呼び出しのための効率的な指示を導入します TrustZone®は、Cortex M23およびCortex M33で利用可能なテクノロジーです。TrustZone®は、分離とアクセス制御を実装して、信頼できるソフトウェアとリソースを分離し、重要なコンポーネントの攻撃対象領域を減らす手段を提供します。作成された信頼できるファームウェアは、信頼できる操作を保護でき、重要なセキュリティサービスを保存して実行するのに最適です。また、コードは、信頼できるソフトウェアを強化および強化するために、信頼できるハードウェアを保護する必要があります。これには、暗号化アクセラレータ、乱数ジェネレータ、およびセキュアストレージのハードウェアアシスト用のモジュールが含まれます。ベスト プラクティスでは、このコードは小さく、十分にレビューされたコードであり、セキュリティ サービスの規定があることが要求されます。 LPC55S66 と LPC55S69 は、コア 0 を Cortex-M33 として実装し、TEE と TrustZone® のフル サポートを有効にしています。LPC55S69には、TZを使用したセキュアな環境を実装していない2つ目のCortex-M33(コア1)があります。孤立は基盤にすぎません。セキュリティとは、保護のレイヤーであり、ハードウェアとソフトウェアを追加してレイヤーを作成することです。 TrustZone®テクノロジーの特徴: メモリ マップをセキュア領域と非セキュア領域に分割できます。 認証されていないときにセキュアコード/データに対してデバッグをブロックできます CPUには、Security Attribution Unit(SAU)のほか、NVIC、MPU、SYSTICK、コア制御レジスタなどの複製が含まれており、Secure/Non-Secureコードが割り当てられたリソースにアクセスできるようにします スタック管理は、従来のCortex-Mの2つのスタックポインタ(メインスタックポインタ(MSP)とプロセススタックポインタ(PSP))から4つに拡張され、上記のペアがセキュアと非セキュアの両方に個別に提供されます セキュア ゲートウェイ オペコードの概念を導入し、セキュア コードが非セキュア コードから厳密なエントリ ポイントのセットを定義できるようにします。 セキュアメモリと非セキュアメモリ TrustZone®テクノロジーは、システムをセーフ(S)と非セキュア(NS)の2つの状態に分割し、対応するコマンドを使用して2つの状態を切り替えることができます。CPU の状態は、セキュリティ特権、セキュリティ保護非特権、特権 (ハンドラー)、または非特権 (スレッド) です。 セキュアメモリ空間は、さらにセキュアと非セキュアコール可能(NSC)の2つのタイプに分けられます。 以下は、Trustzoneメモリ領域(S、NS、NSC)の機能/プロパティです。 セキュア(S) - セキュアコード/データ用 − セキュアなデータは、セキュアなコードによってのみ読み取ることができます − セキュアコードは、セキュアモードのCPUによってのみ実行できます 非セキュア (NS) – 非セキュア コード/データ用 − NSデータは、セキュアステートと非セキュアステートの両方のCPUからアクセスできます − セキュアコードでは実行できない 非セキュア呼び出し可能(NSC) − NSコードがSecure Gateway(SG)オペコードに分岐して実行するための特別な領域です。 アトリビューションユニット Security SAU と IDAU の組み合わせにより、特定のセキュリティ属性 (S、NS、または NSC) が CPU0 の特定のアドレスに割り当てられます。デバイスアトリビューションユニット(DAU)は、次の図に示すように、IDAUインターフェースを介してCPU0に接続します。CPU0 からのアクセスは、そのセキュリティ ステータスと、IDAU と SAU によって設定されたセキュリティ属性に応じて、セキュア AHB コントローラによって、メモリとペリフェラルのさまざまなアクセス ポリシーをマークする特定のチェッカーと比較されます。すべてのアドレスは、セキュアまたは非セキュアです。ARMv8-M内部のSAUは、MPUと連携して動作します。LPC55S69 でサポートされている SAU リージョンは 8 つあります。 セキュア コードと非セキュア コードは 1 つの CPU で実行され、効率的な組み込み実装を実現します。非セキュア状態の CPU は、非セキュア プログラム メモリからのみ実行できます。非セキュア状態の CPU は、両方の NS メモリからのみデータにアクセスできます。セキュリティで保護された信頼されたコードについては、新しいセキュリティで保護されたスタック ポインターとスタック制限チェックがあります。S領域とNS領域には個別のメモリ保護ユニット(MPU)があり、各状態にはプライベートSysTickタイマーがあります。セキュア側は、割り込みのターゲットドメインを構成できます。 NXP IDAU (Implementation Specific Device Attribution Unit) の core 0 に対する ARM TrustZone の実装では、アドレス ビット 28 を使用して、アドレス空間を潜在的なセキュア領域と非セキュア領域に分割します。アドレス ビット 28 はメモリ アクセス ハードウェアではデコードされないため、各物理位置は、配置されているバスの 2 つの場所に表示されます。他のハードウェアは、任意のアドレスに対して許可されるアクセスの種類 (非セキュア呼び出し可能を含む) を決定します。IDAUは、アドレスビット28を使用して、2つの場所でメモリをエイリアシングできるシンプルな設計です。アドレス ビット 28 が = 0 の場合、メモリは非セキュアです。アドレス ビット 28 = 1 の場合、メモリはセキュアです。 SAU では 8 つのメモリ領域が使用でき、ユーザーは IDAU の固定マップをオーバーライドして、非セキュア領域を定義できます。デフォルトでは、すべてのメモリがセキュアに設定されています。IDAUを有効にするには、少なくとも1つのASU記述子を使用する必要があります。IDAUまたはSAUが地域をマークしている場合、その地域は安全です。NSCエリアは、IDAUのNSリージョンで定義できます。 たとえば、設計者はアドレスのビット [28] を使用して、メモリがセキュアか非セキュアかを定義でき、次のメモリ マップの例が得られます。 シンプルなIDAUで、重要なタイミング・パスを作成せずに済みます。(CM33はIDAU機能にほとんど許可しません) 0x0000_0000から0x1FFF_FFFFのアドレスはNS、0x2000_0000から0xFFFF_FFFFのアドレスです アドレス Bit_28 = 0 の場合、非セキュア アドレスBit_28 = 1 Secure の場合 すべての周辺機器とメモリは、2つの場所でエイリアス化されています。 SAU は、各メモリ領域の領域番号を定義します。領域番号は 8 ビットで、Test Target(TT) 命令によって使用され、ソフトウェアがメモリ内のオブジェクトのアクセス許可とセキュリティ属性を決定できるようにします。 SAU に含まれるリージョンの数は、0、4、または 8 のいずれかに構成できます。 注: SAU の非セキュア領域をプログラミングする場合は、セキュアなデータとコードが非セキュア・アプリケーションに公開されないようにする必要があります。 セキュリティ状態の変更 システムはセキュア状態で起動し、次の図に示すように、ブランチを使用してセキュリティ状態を変更できます。 セキュア状態から非セキュア状態への移行は、ターゲット アドレスの最下位ビット (LSB) が設定されていない BXNS 命令と BLXNS 命令を使用して、ソフトウェアによって開始できます。 注 : M プロファイル アーキテクチャは A32 命令セットをサポートしていません。これにより、アドレスの LSB でセキュリティ状態を示すことができます。 非セキュリティ状態からセキュリティ保護状態への移行は、次の 2 つの方法でソフトウェアによって開始できます。 セキュア ゲートウェイへのブランチ。 予約値 FNC_RETURN への分岐。 セキュア ゲートウェイは、非セキュア コール可能 (NSC) リージョン内のセキュア ゲートウェイ命令 (SG) の発生です。非セキュア ステートからセキュア ゲートウェイに分岐すると、SG 命令はセキュア ステートに切り替わり、lr のリターン アドレスの LSB をクリアします。その他の状況では、SG 命令はセキュリティ状態を変更したり、返送先アドレスを変更したりしません。予約値 FNC_RETURN への分岐により、ハードウェアはセキュア状態に切り替わり、セキュア スタックの最上位からアドレスを読み取り、そのアドレスに分岐します。予約値 FNC_RETURN は、BLXNS 命令の実行時に lr に書き込まれます。セキュリティ状態の遷移は、割り込みの処理を通じてハードウェアによって発生する可能性があります。これらの遷移はソフトウェアに対して透過的であり、このドキュメントの残りの部分では無視されます。 TT 命令 ARMv8-M アーキテクチャでは、テスト ターゲット命令 (TT) が導入されています。TT 命令はメモリ アドレスを受け取り、そのアドレスにあるメモリ保護ユニット (MPU) の構成を返します。オプションの T フラグは、特権実行モードまたは非特権実行モードのアクセス許可を返すかどうかを制御します。セキュア状態で実行すると、この命令の結果は拡張され、特定のアドレスの Security Attribution Unit(SAU)およびImplementation Defined Attribution Unit(IDAU)の設定が返されます。MPU は、2 つのセキュリティ状態間でバンクされます。オプションの A フラグは、TT 命令がセキュア ステートから実行されるときに、TT 命令が非セキュア ステートの MPU を読み取るようにします。TT 命令は、さまざまなセキュリティ状態と特権レベルが指定されたアドレスのメモリに対して持つアクセス許可を確認するために使用されます。 ARM® TrustZone® に関するその他の有用な情報については、 次のリンクを参照してください。 https://developer.arm.com/ip-products/security-ip/trustzone https://www.nxp.com/docs/en/application-note/AN12278.pdf http://www.keil.com/appnotes/files/apnt_291.pdf  http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/ECM0359818_armv8m_security_extensions_reqs_on_dev_tools_1_0.pdf LPC2000 LPC55xx
查看全文
フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 注:現在、3つのプロジェクトが完了しています。この時点で、私たちは立ち止まって、将来のプロジェクトのアイデアを再考します。プロジェクトの提案については、以下にコメントを自由に追加してください!現在、他のプラットフォームで公開されていない新しいもののアイデアは、非常に役立ちます。 はじめに プロジェクトリストとロードマップ プロジェクト#1:モンキージャム!DIYギター/ベースストンプボックス プロジェクト#2:モンキーリッスン!オーディオスペクトラムアナライザーディスプレイ プロジェクト#3:モンキードゥ!DIYホームオートメーションとIoT はじめに HITプロジェクトは、組み込みシステムの能力を向上させるための新しい取り組みです。対象読者は、高校生のSTEM学生、DIY愛好家、ハッカー、メーカー、大学、経験豊富な組み込み開発者に及びます。各プロジェクトは、オープンなハードウェア、ソフトウェア、教育ビデオを使用して、視聴者がクールなプロジェクトをまとめ、新しいトピックスペースに触れるために必要なすべてを提供します。 各HIT プロジェクトは、以下のもので構成されます 低コストのフリースケール開発ボード(FRDMシリーズなど) FRDM シールド。多くの場合、参加者が共通のディストリビューターから調達した部品で自分で組み立てることができるシールドがあります。生のPCBは低コストで利用可能になります すべてのハードウェアが開きます。未加工の設計ファイル(Schematics、BOM.ガーバー、ノート)は、参加者が自分でPCBを製造できるように提供されます。 すべてのソフトウェアはオープンソースで、プロジェクト パッケージや Google Code または GitHub で利用できます プロジェクトは、コードを感覚にマッピングすることにより、参加者をシミュレートしようとします.....音を鳴らし、LEDを点滅させ、ワープドライブを開始します。やっぱり、マイコンが何かをするのを見るのはいいですね。DMAユニットは本当にクールなハードウェアかもしれませんが、何かクールなことをするために使わなければ、かなり退屈です。 目標は、あなたの興味を引き付け、銀行を壊さずに新しいスキルを開発するクールなプロジェクトを持つことです。コストを最小限に抑えるための努力が払われますが、部品の入手可能性、使いやすさ、クールな要素などの他の要素も関係してきます。 各プロジェクトには、開発する一連のスキルが一覧表示されます。これには、マイクロコントローラのハードウェアと高レベルの概念(I2Sモジュール、デジタル信号処理など)の両方が含まれます。プロジェクトを完了すると、何か新しいことについて良い経験をすることができます。このプロジェクトは、さまざまなハードウェアインターフェース、デザインパターン、組み込みシステムのトピックにまたがるように努力されます。最も重要なことは、各プロジェクトは独自の方法でクールになるということです! プロジェクトリストとロードマップ ここでは、現在のプロジェクトリスト、ステータス、ロードマップを見つけることができます。なお、ロードマップの項目は変更される場合があります プロジェクト#1:モンキージャム!DIYギター/ベースストンプボックス 要約: プロジェクト#1では、FRDM-K20D50ボード(DSP命令を備えたCortex M4コアを持つ)とFRDM-JAMシールドを使用するため、自分だけのギターベースストンプボックスを作成できます。その結果、高品質のアンプシミュレーションとエフェクトを作成できる機能的なDSPシステムが実現します。FRDM-JAMは、楽器のDSPに限定されません。3.5MMステレオジャックからDSPまで、あらゆるタイプのオーディオ信号をフィルタリングできます。USBインターフェースを使用してUSB-MIDIシンセサイザーを作成することもできます。最後に、家を倒す必要はありません..... ヘッドホンアンプ回路が設けられているので、隣人に迷惑をかけずにジャムアウトできます 開発されたスキル: リアルタイムDSPアルゴリズム 固定小数点数学 24ビットI2Sデータコンバータインターフェース SOIC8および1206表面実装デバイスのはんだ付け Cortex CMSIS DSPライブラリ オーディオフィルタリング技術 真空管アンプのモデリング ステータス: リリース済み! プロジェクトページ: Freescale H.I.T. Project #1: MonkeyJam - DIYギターストンプボックス プロジェクト#2:モンキーリッスン!オーディオスペクトラムアナライザーディスプレイ 要約: MonkeyListenは、FRDM-K20D50ボード(DSP命令を備えたCortex M4コアを持つ)とFRDM-OLEDシールドを使用しているため、独自のスペクトラムアナライザーディスプレイを作成できます。その結果、FRDM-OLEDボード上のエレクトレットマイクを介して入力オーディオコンテンツを分析し、スペクトルコンテンツを表示する機能的なDSPシステムが実現します。このサンプルコードでは、時間領域データ (単純なオーディオスコープ)、周波数領域データ (FFT 経由)、および時間-周波数プロット (スペクトログラム) をプロットする方法も示します。コードをハックして独自のDMMまたはオシロスコープを作成するための追加のI/Oが用意されています。FRDM-OLEDシールドには、DMX照明システムの駆動などのクールなことを行うためのオプションのRS-485インターフェースもあります。 開発されたスキル: FFTによるスペクトル分析 OLEDディスプレイインターフェース エレクトレットマイクロフォンインターフェース SOIC8および1206表面実装デバイスのはんだ付け Cortex CMSIS DSPライブラリ ADCによるオーディオデータのキャプチャ ステータス: リリース済み! プロジェクトページ: Freescale H.I.T. Project # 2: MonkeyListen - DIYオーディオスペクトラムアナライザディスプレイ プロジェクト#3:モンキードゥ!DIYホームオートメーションとIoT 要約: プロジェクト#3はDIYホームを探索しますこのプロジェクト では、Webを介して基本的な電気自動化と制御を行う方法を学びます。 NESTを思い浮かべてください...。よりオープンでハッキング可能なものばかりです。 Websocket、Javascipt、およびHTMLを使用すると、リモートデータを簡単に表示し、一部のソリッドステートリレーを制御できるようになります。  このフレームワークにより、より複雑なIoTアプリケーションを作成できます。 この例では、FRDM-K64FとFRDM-AUTOを組み合わせて、温度センサーを読み取り、ソリッドステートリレーを制御します。 1 大電流ソリッドステートリレー出力(10アンペアトライアック、最大240VACまで) 1 低電流ソリッドステートリレー出力 (最大 120VAC の 1A トライアック出力) 2つのフォトカプラ(絶縁)入力 - (最大120VACのオン/オフ信号を読み取ろう) Kタイプ熱電対入力のオプション、オメガ熱電対コネクタ付き アクティブサーミスタ入力MCP9700Aオプション RN-XV WIFIモジュール - XbeeモジュールおよびRN42-XV Bluetoothモジュールと互換性のあるフットプリント。 有線ネットワーク上で複数のシステムをチェーン接続するためのRS-485インターフェース....または、FRDM-OLEDに話しかけてください 開発されたスキル 組み込みシステムネットワーキング 電気制御システム HTML5/Javascript - Websockets SOIC8および1206表面実装はんだ付け 「モノ」のインターネット ステータス:   リリース済み! プロジェクトページ: Freescale H.I.T Project #3: MonkeyDo 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 素晴らしい!より多くのことを学び、さらに多くのことを構築します。 ありがとうございます! 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> プロジェクト#3 モンキー・ドゥが正式にリリースされた状態です! 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> プロジェクト#3はまさにそこまで来ています。録画するビデオがあといくつかあるので、ページを公開してリリース状態にすることができます。7月1日までに終わらせたいと思っていましたが、FRDMボードにいくつかの問題がありました。すべてが解決し、これはほぼ終了しました。 プロジェクト#4は、基本的にプロジェクト#2であるため、別のものに変身する可能性があります(すでにこれを行っている他のプロジェクトがいくつかあります)。 プロジェクト#5は実際には#3の後に来ます(リストを並べ替えるかもしれません)。私はいくつかのピースを機能させています。構築するハードウェアが少ないので、ビデオを録画するなど、静かな時間が必要です。 正式なリリース日はありませんが、すべてを絞り出そうとしています。すべてが使いやすく、回路図がきれいになるなど、物事を磨くには、多くの作業が必要です。 チェックインしていただきありがとうございます! 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 残りのプロジェクトのリリース状況はどうなっていますか?私はあなたがこれまでにまとめたものを楽しんでいます! もっと待ちきれません! 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ニール: FRDM-AUTOのページがアップしました。これには、PCBの第1リビジョンがあります。 FRDM-AUTO OSHパーク(またはお気に入りのボードハウス)に行く準備ができているファイルがあります。注:現在、PCBを完全にテストしている最中です。問題は何もなく、プロジェクトがまだ開発中であるため、ブラックボックスの警告だけです。 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ニール: Rev A(アルファ、私はギリシャ文字を使用しています)は完成しましたが、テスト中です。すぐにページを立ち上げて行ってみます。完全にテストされていないことを警告するブラックボックスが表示されます。プロジェクト#3はそれを完全なIoTプロジェクトとして使用する予定ですが、私はその側面を進めるのに少し遅れています。 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> クール-FRDM-AUTO:が利用可能かどうか疑問に思っていました-または少なくともWiFiデバイスとRS485を使用するボードはありますか? 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> MonkeyListenが正式にリリースされました! 非アクティブ化されたユーザー@ 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 上記で「公開中!」という意味だったのでしょうね。 素晴らしい、私がどのように助けることができるか教えてください!FSL Makersに投稿する可能性のある他のプロジェクトについても、いくつかのアイデアがあります。自宅に自分だけのメイカースペースを作っているんだ。 Daniel 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> MonkeyJamは公開されていません! MonkeyListen用に録画するビデオがあと4つあります。週末までにリリースされるはずです。 盾: FRDM-JAM     FRDM-OLED - >--> 128x64 OLED + マイク + アナログ I/O + RS-485 FRDM-AUTO - >--> オプトカプラー + Wifi + ソリッドステートリレー + RS-485 私はニューヨークのメイカーフェアに出席して、彼らを披露するつもりだよ。私はそれらにたくさんの磨きをかけたいです:-) MonkeyListenの準備ができたときに最初に知るのはあなたです! 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Eli, 私の腕を磨くために、手伝いたいと熱望しています。モンキーリッスンにとても興味があります!他にどのようなFRDMシールドがありますか?MakerコミュニティがArduinoと競争できるように、できるだけ宣伝すべきです。 Dan 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Dan: モンキージャムが正式に完成しました。私はただモデレーターがコンテンツの承認を待っているだけです(できれば今日)。MonkeyListenは一週間ほどで来るよ(今、ビデオを録画しているんだよ!残りの部分にはハードウェアがありますが、ソフトウェアとビデオに追いつく必要があります。#3は新しいFRDM-K64を使用することができます。 完成した状態(ビデオ+サンプルソフトウェア+コンプリートデザインパッケージ)でリリースしようとしているので、少し遅くなっています。MonkeyJamは結局、多くの作業(4 +時間のビデオコンテンツ)になりました。他のプロジェクトはもっとシンプルです。 プロジェクトの構築にご協力いただければ幸いです。私は物事をスムーズにするために多くの時間を費やしてきましたが、常に見逃しているものがあります。 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> とてもクールです!スキルアップは絶対に必要です!土曜日のMaker Faireは素晴らしく、子供たちが私たち年配の人々を圧倒していることをとても思い出させてくれました。RPIを取得しました:smileyalert:これは私たちの役割ではないことはわかっていますが、FRDMボードをMakeコミュニティで成功させたいのであれば、そこにあるすべてのオファリングをハックする必要があると思います。 これらのモンキープロジェクトに参加するにはどうすればいいですか? ここで見てください。 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> すごい、待ってるよ... 日時:フリースケール・ハック・イット・トゥギャザー (H.I.T.)プロジェクトイニシアチブ - 盛り上がろう! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> それが好きです!
查看全文
基于 RDB2 v2.0 板上的 SDK BSP40 的 EMMc 写入失败 Hi, 最近尝试在RDB2 v2.0板上测试基于SDK BSP40的EMMc启动案例。但是当我尝试将 fip.s32 图像写入 EMMc 时,电路板重置,如以下日志所示: root@nxp-s32g:~# flashcp -v fip.s32-qspi-bsp40 /dev/mtd0 擦除块:18/18(100%) 写入数据:1106k/1106k (100%) 验证数据:1106k/1106k (100%) root@nxp-s32g:~#重启 注意:复位状态:上电复位 注意:BL2:v2.5(发布):bsp40.0-2.5 通知:BL2:建造时间:2024 年 3 月 21 日 08:41:20 注意:BL2:启动 BL31 U-Boot 2022.04+gd482def7e3+p0(2024 年 3 月 21 日 - 08:40:56 +0000) SoC:NXP S32G274A 修订版。2.0 CPU:ARM Cortex-A53 r0p4 @ 最高 1000 MHz 型号:NXP S32G274A-RDB2 动态随机存取存储器:3.5 GiB 核心:305 个设备、25 个 uclass、设备树:board MMC: FSL_SDHC: 0 从 SPIFlash 加载环境...SF: 检测到 mx25uw51245g,页面大小为 256 字节,擦除大小为 64 KiB,总计 64 MiB 好的 s32cc_serdes_phy serdes@40480000:对SerDes子系统使用模式0 pci_s32cc pcie@40400000: 无法设置设备 ID pci_s32cc pcie@40400000:配置为 RootComplex pci_s32cc pcie@40400000: 无法建立链接 输入:serial@401c8000 输出:serial@401c8000 错误:serial@401c8000 主板修订版:RDB2/GLDBOX 修订版 C PCIe:BusDevFun VendorId DeviceId 设备类 子类 ________________________________________________________________________ pcie@40400000 根复合体 | `-- 01:00.00 0x1957 0x4002 桥接设备 0x04 网络:eth0:ethernet@4033c000 发现PFE版本0x50300(S32G2) ELF 文件太大,大小:4294836224 PFE 固件文件“ @0x030a0000: ”加载失败:-27 发现PFE版本0x50300(S32G2) ELF 文件太大,大小:4294836224 PFE 固件文件“ @0x030a0000: ”加载失败:-27 发现PFE版本0x50300(S32G2) ELF 文件太大,大小:4294836224 PFE 固件文件“ @0x030a0000: ”加载失败:-27 按任意键停止自动启动:0 => mmc 重新扫描 => mmc 列表 FSL_SDHC: 0(eMMC) => FSL_SDHC: 0(eMMC) => DHCP ethernet@4033c000 等待 PHY 自动协商完成.......完成 BOOTP广播1 BOOTP 广播 2 *** OFFER/ACK 中未处理的 DHCP 选项:43 *** OFFER/ACK 中未处理的 DHCP 选项:43 DHCP 客户端绑定到地址 128.224.35.131(282 毫秒) 使用以太网@4033c000设备 来自服务器 128.224.161.77 的 TFTP;我们的 IP 地址是 128.224.35.131;通过网关 128.224.34.1 发送 文件名“undionly.kpxe”。 加载地址:0x8a080000 加载中: ##### 6.3 MiB/秒 完毕 传输的字节数 = 72763(11c3b 十六进制) => 设置环境服务器 IP 128.224.34.193 => 设置环境网关 IP 128.224.178.1 => => 设置环境网络掩码 255.255.254.0 => => => => => 运行 loadtftpimage 使用以太网@4033c000设备 来自服务器 128.224.34.193 的 TFTP;我们的 IP 地址是 128.224.35.131 文件名“图像”。 加载地址:0x8a080000 正在加载:##################################################################### ############# ## 9.2 MiB/秒 完毕 传输的字节数 = 1134464(十六进制 114f80) => setexpr loadaddr${loadaddr} + 0x1000 => setexpr n_b 0 00 00 => setexpr n_blocks 0x114f80 / 0x200 => 优先块 n_blocks=8a7 => setexpr n_blocks${n_blocks} - 7 => 优先块 n_blocks=8a0 => mmc 重新扫描 => mmc 列表 FSL_SDHC: 0(eMMC) => mmc 写入${loadaddr} 8${n_blocks} MMC 写入:设备 # 0,块 # 8,计数 2208。注意:复位状态:上电复位 注意:BL2:v2.5(发布):bsp40.0-2.5 通知:BL2:建造时间:2024 年 3 月 21 日 08:41:20 注意:BL2:启动 BL31 U-Boot 2022.04+gd482def7e3+p0(2024 年 3 月 21 日 - 08:40:56 +0000) SoC:NXP S32G274A 修订版。2.0 CPU:ARM Cortex-A53 r0p4 @ 最高 1000 MHz 型号:NXP S32G274A-RDB2 动态随机存取存储器:3.5 GiB 核心:305 个设备、25 个 uclass、设备树:board MMC: FSL_SDHC: 0 从 SPIFlash 加载环境...SF: 检测到 mx25uw51245g,页面大小为 256 字节,擦除大小为 64 KiB,总计 64 MiB 好的 s32cc_serdes_phy serdes@40480000:对SerDes子系统使用模式0 pci_s32cc pcie@40400000: 无法设置设备 ID pci_s32cc pcie@40400000:配置为 RootComplex pci_s32cc pcie@40400000: 无法建立链接 输入:serial@401c8000 输出:serial@401c8000 错误:serial@401c8000 主板修订版:RDB2/GLDBOX 修订版 C PCIe:BusDevFun VendorId DeviceId 设备类 子类 ________________________________________________________________________ pcie@40400000 根复合体 | `-- 01:00.00 0x1957 0x4002 桥接设备 0x04 网络:eth0:ethernet@4033c000 发现PFE版本0x50300(S32G2) ELF 文件太大,大小:4294836224 PFE 固件文件“ @0x030a0000: ”加载失败:-27 发现PFE版本0x50300(S32G2) ELF 文件太大,大小:4294836224 PFE 固件文件“ @0x030a0000: ”加载失败:-27 发现PFE版本0x50300(S32G2) ELF 文件太大,大小:4294836224 PFE 固件文件“ @0x030a0000: ”加载失败:-27 按任意键停止自动启动:0 => => 首先,我尝试将 fip-qspi.s32 映像写入 qspi flash,然后从 qspi flash 启动,并在 uboot 阶段写入 fip.s32-sdcard图像到 EMMc。此时,电路板按上述方法重置。 您能帮忙检查一下这个问题吗? 谢谢! Zhantao 回复:基于 RDB2 v2.0 板上的 SDK BSP40 导致 EMMc 写入失败 Hi @chenyin_h , 感谢您的回复。 您的回复非常有帮助,该问题可以按照您的建议解决。 谢谢! Zhantao 回复:基于 RDB2 v2.0 板上的 SDK BSP40 导致 EMMc 写入失败 Hello, @hittzt 我已经在本地 RDB2 REVC(配备 2.0 硅片)上重现了它,并发现可以通过禁用 u-boot 配置中的以下选项来修复它:MMC_IO_VOLTAGE,您可以尝试一下。 我也与内部团队讨论过这个问题,并确认这里的主要问题与 Silicon 2.0 无关,而与主板修订有关,RDB2 REVC 上 eMMC 的默认电压供应为 3.3V,但 BSP40 的默认模式使用 1.8v,这可能是问题的根本原因。 希望对您有帮助。 顺祝商祺! 陈银 回复:基于 RDB2 v2.0 板上的 SDK BSP40 导致 EMMc 写入失败 Hello, @hittzt 感谢您的反馈。 很高兴听到该问题似乎仅存在于采用 2.0 芯片的 RDB2 上。 抱歉,我们团队中没有基于 2.0 硅片的开发板,请让我检查一下其他团队是否有,在获得进一步结果后会进行更新。 很抱歉给您带来不便。 顺祝商祺! 陈银 回复:基于 RDB2 v2.0 板上的 SDK BSP40 导致 EMMc 写入失败 Hi @chenyin_h , 谢谢你的回复。 我在 RDB2 v2.0 和 RDB3 v1.1 板上测试了该情况,并且 RDB3 v1.1 与 EMMc 启动模式配合良好。 而且我手里没有 RDB2 v2.1 板。 您能帮忙检查一下您那边 RDB2 v2.0 板的状态吗? 谢谢! Zhantao 回复:基于 RDB2 v2.0 板上的 SDK BSP40 导致 EMMc 写入失败 Hello, @hittzt 感谢您的提问。 抱歉,我没有在本地重现该问题,这里的细微差别是我使用的是带有 2.1 芯片的 RDB2。您是否在其他论坛上遇到过类似的问题? 附上日志供您参考。 顺祝商祺! 陈银
查看全文
例 MPC5744P eTimer0 GSH614 によってトリガーされる CTU <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 詳細説明: * この例では、eTimer0 モジュール チャネル 2 からトリガーされる CTU モジュールの使用方法を示します。 * * CTUの仕組みの詳細については、アプリケーションノートを確認することをお勧めします ※MPC5643LPWM_ADC_concept ※ https://community.freescale.com/docs/DOC-102559 * ※この例では、eTimer0 channel2をPWM信号生成用に設定します。 *この信号は、MSRトリガーをCTUモジュールに送信するために使用されます * 例には、単純な CTU モジュール ドライバーの初期化も含まれています * CTUスケジューラサブモジュールは、CTUトリガーに基づいて外部ピンと切り替えられます * * ------------------------------------------------------------------------------ * Test HW:  MPC57xx Motherboard + MPC5744PE257DC minimodule, MPC5744P, ※シリコンマスクセット 1N65H * 対象 : internal_FLASH* ******************************************************************************** 元の添付ファイルは次の場所に移動しました Example-MPC5744P-CTU-eTimer-v1_1-GHS614.zip 日時:例MPC5744P eTimer0 GSH614によってトリガーされるCTU <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, 私たちも同様の問題を経験しています。推奨される解決策はありますか? どうもありがとうございます! 日時:例MPC5744P eTimer0 GSH614によってトリガーされるCTU <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Linuxz,  最近同様の問題が発生していますが、この問題を解決しましたか?この問題についてフィードバックをいただけますか? よろしくお願いいたします。 日時:例MPC5744P eTimer0 GSH614によってトリガーされるCTU <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [ピーター]–うーん、すでに処理されているコマンドがあるときにADCコマンドを発行すると、ADC_OEフラグ(ADCコマンド生成オーバーランエラー)が設定されます。 私には、CTUコマンドリストにタイミングの問題があるようです。「 最初のコマンドがADCによって実行されることが時々見える」と書かれていました。それは時々どういう意味ですか?これは、デューティサイクルが変更されたとき、またはこの状況が発生したときに何が異なるかです。 日時:例MPC5744P eTimer0 GSH614によってトリガーされるCTU <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, MPC5744PのCTUに問題があり、PMSMモーターを制御するためにFlexPWM_0に3つの同期PWM信号を設定しました。 このモーターを制御するには、PWMサイクルの特定の場所で電流を測定する必要もあります。 PWM サブモジュール 0 を設定してOUT_TRIG0を生成し、ADC でデュアル変換を開始するように CTU を設定しようとしましたが、デザインでより多くのアナログ信号を変換する必要があるため、CTU が ADC に送信するコマンドのリストを作成しました。 6つのコマンドが完了すると、dma転送によってデータが配列に移動されます。 しかし、何かが間違っている、私は時々最初のコマンドがADCによって実行され、結果がCTU FIFOに戻されるのを見ることがありますが、その後はすべて停止し、ADC_OEとERRCMPフラグがCTUで設定されているようです。 私のコードで何が間違っていたのかについて何かヒントはありますか? 私のコードについては以下を参照してください、それを添付する方法を見つけることができませんでした。 よろしくお願いします、ライナス #include 「mpc55xx.h」 #include「pwm_driver.h」 /* ************************************************************************** * * グローバル宣言 * * ************************************************************************** */ uint32_t ADC_results[16]; /** * @brief setPwmDutyCycle * @Param chn1 符号なし値 (チャネル 1 の 0 から 1000 のデューティ サイクルを含む) * チャネル 2 の 0 から 1000 のデューティ サイクルを含む @Param chn2 符号なし値 * @Param chn3 符号なし値 (チャネル 3 の 0 から 1000 のデューティ サイクルを含む) * @return ブール値、1 = 成功、0 = デューティを設定できませんでした * * @details この関数は、デューティサイクルを設定する必要がある場合に呼び出されます */ boolean Pwm_SetDutyCycle (uint16 chn1, uint16 chn2, uint16 chn3) {   if (chn1 > 950) chn1 = 950;   if (chn1 < 50) chn1 = 50;   if (chn2 > 950) chn2 = 950;   if (chn2 < 50) chn2 = 50;   if (chn3 > 950) chn3 = 950;   if (chn3 < 50) chn3 = 50;   if (FLEXPWM_0.MCTRL.B.LDOK == 0)   {   FLEXPWM_0.SUB[0].VAL[2].B.VAL = 5000 - (chn1*5);   FLEXPWM_0.SUB[0].VAL[3].B.VAL = 5000 + (chn1*5);   FLEXPWM_0.SUB[1].VAL[2].B.VAL = 5000 - (chn2*5);   FLEXPWM_0.SUB[1].VAL[3].B.VAL = 5000 + (chn2*5);   FLEXPWM_0.SUB[2].VAL[2].B.VAL = 5000 - (chn3*5);   FLEXPWM_0.SUB[2].VAL[3].B.VAL = 5000 + (chn3*5); /* PWMモジュールに値をラッチ */   FLEXPWM_0.MCTRL.B.LDOK |= 7;   return 1;   } else   {   return 0;   } } /** ※@brief pwm_Init * * @details この関数は、モーターを制御するためのpwm出力を設定するために呼び出されます */ void pwm_Init(void) { SIUL2です。PCR検査[46]。R = 0x30000000 |0x02000000 |0x2;CTU0 外部トリガ出力 (EVB では PG[13]) LDOKをクリアしてレジスタ設定を変更できるようにします   FLEXPWM_0.MCTRL.B.CLDOK |= 1 << 0;   FLEXPWM_0.MCTRL.B.CLDOK |= 1 << 1;   FLEXPWM_0.MCTRL.B.CLDOK |= 1 << 2;   FLEXPWM_0.SUB[0].CTRL.B.PRSC = 5;   FLEXPWM_0.SUB[1].CTRL.B.PRSC = 0;   FLEXPWM_0.SUB[2].CTRL.B.PRSC = 0; FLEXPWM_0.SUB[0] です。Ctrl キー 2 キー。B.RELOAD_SEL = 0; FLEXPWM_0.SUB[1]。Ctrl キー 2 キー。B.RELOAD_SEL = 1;/* サブモジュール 0 からの RELOAD 信号はレジスタのリロードに使用されます*/ FLEXPWM_0.SUB[2]。Ctrl キー 2 キー。B.RELOAD_SEL = 1;/* サブモジュール 0 からの RELOAD 信号はレジスタのリロードに使用されます*/ FLEXPWM_0.SUB[0] です。Ctrl キー 2 キー。B.CLK_SEL = 0;/* ペリフェラルクロックは、ローカルプリスケーラとカウンタのクロックとして使用されます。*/ FLEXPWM_0.SUB[1]。Ctrl キー 2 キー。B.CLK_SEL = 2;/* サブモジュール 0 のクロック (AUX_CLK) は、ローカル プリスケーラとカウンタのソース クロックとして使用されます。*/ FLEXPWM_0.SUB[2]。Ctrl キー 2 キー。B.CLK_SEL = 2;/* サブモジュール 0 のクロック (AUX_CLK) は、ローカル プリスケーラとカウンタのソース クロックとして使用されます。*/ FLEXPWM_0.SUB[0] です。Ctrl キー 2 キー。B.FORCE_SEL = 0;/* ペリフェラルクロックは、ローカルプリスケーラとカウンタのクロックとして使用されます。*/ FLEXPWM_0.SUB[1]。Ctrl キー 2 キー。B.FORCE_SEL = 1;/* サブモジュール 0 のクロック (AUX_CLK) は、ローカル プリスケーラとカウンタのソース クロックとして使用されます。*/ FLEXPWM_0.SUB[2]。Ctrl キー 2 キー。B.FORCE_SEL = 1;/* サブモジュール 0 のクロック (AUX_CLK) は、ローカル プリスケーラとカウンタのソース クロックとして使用されます。*/ FLEXPWM_0.SUB[0] です。Ctrl キー 2 キー。B.INIT_SEL = 0;/* ペリフェラルクロックは、ローカルプリスケーラとカウンタのクロックとして使用されます。*/ FLEXPWM_0.SUB[1]。Ctrl キー 2 キー。B.INIT_SEL = 1;/* サブモジュール 0 のクロック (AUX_CLK) は、ローカル プリスケーラとカウンタのソース クロックとして使用されます。*/ FLEXPWM_0.SUB[2]。Ctrl キー 2 キー。B.INIT_SEL = 1;/* サブモジュール 0 のクロック (AUX_CLK) は、ローカル プリスケーラとカウンタのソース クロックとして使用されます。*/ FLEXPWM_0.SUB[0] です。ディスマップ。R = 0x0000;/* 障害ピン状態を無効にする */ FLEXPWM_0.SUB[1]。ディスマップ。R = 0x0000;/* 障害ピン状態を無効にする */ FLEXPWM_0.SUB[2]。ディスマップ。R = 0x0000;/* 障害ピン状態を無効にする */   FLEXPWM_0.SUB[0].INIT.B.INIT = 0;   FLEXPWM_0.SUB[0].VAL[0].B.VAL = 20;   FLEXPWM_0.SUB[0].VAL[1].B.VAL = 10000;   FLEXPWM_0.SUB[0].VAL[2].B.VAL = 5000;   FLEXPWM_0.SUB[0].VAL[3].B.VAL = 5000; FLEXPWM_0.SUB[0] です。TCTRLです。B.OUT_TRIG_EN = 1;/* OUT_TRIG0 は、カウンタ値が VAL0 値と一致する場合に設定されます。*/   FLEXPWM_0.SUB[1].INIT.B.INIT = 0;   FLEXPWM_0.SUB[1].VAL[0].B.VAL = 20;   FLEXPWM_0.SUB[1].VAL[1].B.VAL = 10000;   FLEXPWM_0.SUB[1].VAL[2].B.VAL = 5000;   FLEXPWM_0.SUB[1].VAL[3].B.VAL = 5000;   FLEXPWM_0.SUB[2].INIT.B.INIT = 0;   FLEXPWM_0.SUB[2].VAL[0].B.VAL = 20;   FLEXPWM_0.SUB[2].VAL[1].B.VAL = 10000;   FLEXPWM_0.SUB[2].VAL[2].B.VAL = 5000;   FLEXPWM_0.SUB[2].VAL[3].B.VAL = 5000; /* FLEXPWM_0.SUB[0] です。DTCNT0 です。B.DTCNT0 = 0x0078; FLEXPWM_0.SUB[0] です。DTCNT1 です。B.DTCNT1 = 0x0078; FLEXPWM_0.SUB[1]。DTCNT0 です。B.DTCNT0 = 0x0078; FLEXPWM_0.SUB[1]。DTCNT1 です。B.DTCNT1 = 0x0078; FLEXPWM_0.SUB[2]。DTCNT0 です。B.DTCNT0 = 0x0078; FLEXPWM_0.SUB[2]。DTCNT1 です。B.DTCNT1 = 0x0078; */ FLEXPWM_0.SUB[0] です。DTCNT0 です。B.DTCNT0 = 0x0; FLEXPWM_0.SUB[0] です。DTCNT1 です。B.DTCNT1 = 0x0; FLEXPWM_0.SUB[1]。DTCNT0 です。B.DTCNT0 = 0x0; FLEXPWM_0.SUB[1]。DTCNT1 です。B.DTCNT1 = 0x0; FLEXPWM_0.SUB[2]。DTCNT0 です。B.DTCNT0 = 0x0; FLEXPWM_0.SUB[2]。DTCNT1 です。B.DTCNT1 = 0x0;   FLEXPWM_0.OUTEN.B.PWMA_EN |= 1 << 0;   FLEXPWM_0.OUTEN.B.PWMA_EN |= 1 << 1;   FLEXPWM_0.OUTEN.B.PWMA_EN |= 1 << 2;   FLEXPWM_0.OUTEN.B.PWMB_EN |= 1 << 0;   FLEXPWM_0.OUTEN.B.PWMB_EN |= 1 << 1;   FLEXPWM_0.OUTEN.B.PWMB_EN |= 1 << 2;   FLEXPWM_0.MCTRL.B.LDOK |= 1 << 0;   FLEXPWM_0.MCTRL.B.LDOK |= 1 << 1;   FLEXPWM_0.MCTRL.B.LDOK |= 1 << 2; FLEXPWM_0.MCTRLです。B.RUN|= 1 << 0; FLEXPWM_0.MCTRLです。B.RUN|= 1 << 1; FLEXPWM_0.MCTRLです。B.RUN |= 1 << 2; /** PWMを有効にする */   Enable_pwm(); } /***********************************************************************/ /* CTU_Init */ /***********************************************************************/ void CTU_Init (void) { CTU_0.TGSISRです。B.I1_RE = 0x1;  /* CTU - PWM ch0 奇数 - 周期 50usec の MRS を選択 */ CTU_0.CRです。B.TGSISR_RE = 0x1;/* TGS入力選択レジスタのリロードイネーブル */ CTU_0.TGSCR.B.PRES = 0x4;    /* CTU プリスケーラーは 1 に設定されています */ CTU_0.TCR[0]。R = 0x10;        /* CTU タイマーはレジスタ 0 の値と比較します */ CTU_0.TGSCCR.R = 0xFFFF;     /* TGSカウンタコンペアレジスタ */ CTU_0.TGSCRR.R = 0;          /* TGSカウンタリロードレジスタ */   CTU_0.TGSCR.B.TGS_M = 0;   CTU_0.TGSCR.B.ET_TM = 0; CTU_0.THCR1。B.T0_E = 1;       /* トリガー 0 出力イネーブル */ CTU_0.THCR1。B.T0_ADCE = 1;    /* トリガー 0 ADC コマンド出力イネーブル */ CTU_0.CLCR1.B.T0_INDEX = 0;   /* トリガー 0 コマンドリスト - 最初のコマンドアドレス */ (*(揮発性uint16_t *)0xFFE0C06C) = 1;/* CTU_0.FDCR = 1 - FIFO の DMA が (ヘッダー ファイルにありません!)*/   CTU_0.FDCR.B.DE0 = 1; CTU_0.FCRのR = 0;             /* FIFO制御レジスタ */ /* CTUトリガーADC - ADCコマンドリスト */ /* SU : ADC コマンドリスト */ CTU_0.CLR[0] です。R = 14; /* 最初のコマンド - CTU は、このコマンドの後、ADC へのコマンドの送信を開始します */ CTU_0.CLR[0] です。A.B.CH = 5;    /* ADC_0モジュール、チャンネル11 */   //CTU_0.CLR[0].B.B.CMS = 0;   //CTU_0.CLR[0].B.B.LC = 1; CTU_0.CLR[0] です。B.B.CH_A = 11;    /* ADC_0モジュール、チャンネル11 */   CTU_0.CLR[0].B.B.CH_B = 12;     /* ADC_1 module, channel 12 */   CTU_0.CLR[0].B.B.CMS = 1; CTU_0.CLR[1]。B.B.CH_A = 13;    /* ADC_0モジュール、チャンネル13 */   CTU_0.CLR[1].B.B.CH_B = 1;      /* ADC_1 module, channel 1 */   CTU_0.CLR[1].B.B.CMS = 1;   //CTU_0.CLR[1].B.B.LC = 1; CTU_0.CLR[2]。B.B.CH_A = 5;     /* ADC_0モジュール、チャンネル5 */   CTU_0.CLR[2].B.B.CH_B = 0; /* ADC_1 module, channel 0 */   CTU_0.CLR[2].B.B.CMS = 1; CTU_0.CLR[3]。B.B.CH_A = 14;    /* ADC_0モジュール、チャンネル14 */   CTU_0.CLR[3].B.B.CH_B = 2;      /* ADC_1 module, channel 2 */   CTU_0.CLR[3].B.B.CMS = 1; CTU_0.CLR[4]。B.B.CH_A = 10;    /* ADC_0モジュール、チャンネル10 */   CTU_0.CLR[4].B.B.CH_B = 15;     /* ADC_1 module, channel 15 */   CTU_0.CLR[4].B.B.CMS = 1; CTU_0.CLR[5]。B.B.CH_A = 15;    /* ADC_0モジュール、チャンネル15 */   CTU_0.CLR[5].B.B.CH_B = 10;     /* ADC_1 module, channel 10 */   CTU_0.CLR[5].B.B.CMS = 1; CTU_0.CLR[6]。A.R = 0x4000;  /* 最後のコマンド - このコマンドはADCに送信されません */ CTU_0.FTHです。B.TH0 = 5; CTU_0.FTHです。B.TH0 = 5; CTU_0.TH1.B.THRESHOLD0 = 0xE;       /* FIFO 0 しきい値。最大値は 15 で、しきい値は FIFO 0 エントリの数より小さくなければなりません。*/ CTU_0.FCRのB.FIFO_OVERFLOW_EN0 = 1; /* FIFO 0 しきい値 オーバーフロー割り込み有効 - この割り込みで FIFO 0 を読み取ります */ CTU_0.EFRです。R = 0x0400;/*開始前にフラグをクリアする */   CTU_0.IFR.R = 0x01FE; CTU_0.CRです。B.GRE = 1;             /* 一般的なリロード有効 */ }//CTU_Init /***********************************************************************/ /* ADC_Init */ /***********************************************************************/ void ADC_Init (void) { /* USE_ADC */   ADC_0.MCR.B.PWDN = 0;      // Enable ADC0     /* 1 */   ADC_0.MCR.B.CTUEN = 1;     // CTU mode     /* 2 */ ADC_0.NCMR[0]。R = 0xFFFF; ADC_0チャンネル0 ADC_0.MCRのB.モード = 1;     ワンショットモード   ADC_1.MCR.B.PWDN = 0;      // Enable ADC1   /* 1 */   ADC_1.MCR.B.CTUEN = 1;     // CTU mode   /* 2 */ ADC_1.NCMR[0]。R = 0xFFFF; ADC_1チャンネル0 ADC_1.MCRです。B.モード = 1;     ワンショットモード } //ADC_Init /***********************************************************************/ /* DMA_Init                                                            */ /***********************************************************************/ void DMA_Init (void) { DMA_0.CRです。R = 0x00000002;/* デバッグモードを有効にする */ DMA_0.EEIです。R = 0x0000;/* エラー割り込みはすべてのチャネルで無効 */ DMA_0.ERQ.B.ERQ0 = 1 << 2;/*チャネル2を使用 *//* eDMAリクエスト2 -> CTUトリガー FIFO_0を有効にします */ }//DMA_Init /***********************************************************************/ /* DMA_MUX_Init */ /***********************************************************************/ void DMA_MUX_Init(void) { DMAMUX_0.CHCFG[2]です。R = 0x0000;/* チャネル設定レジスタ 2 をクリア*/ DMAMUX_0.CHCFG[2]です。B.ソース = 6;/* チャネル 2 の MUX ソースを選択 -> CTU FIFO_1 */ DMAMUX_0.CHCFG[2]です。B.ENBL = 1;/* DMAチャネルイネーブル */ }//DMA_MUX_Init /***********************************************************************/ /* DMA_TCD_2                                                           */ /***********************************************************************/ void DMA_TCD_2(void) { (*(揮発性uint16 *)&DMA_0.TCD[2])= 0x0;DMAをクリアします。TCD[0]0.ワード7     //DMA_0.TCD[2] = 0x0;     DMA_0.TCD[2].SADDR.B.SADDR = &CTU_0.FR[0];  /* Source Address - CTU FIFO_0 */ DMA_0.TCD[2]。お父さん。B.DADDR = (uint32_t) &ADC_results[0]; /* 宛先アドレス - SRAM */ DMA_0.TCD[2]。ATTRです。B.SMOD = 0x0;  /* 送信元アドレスモジュロ */     DMA_0.TCD[2].ATTR.B.DMOD = 0x0;   /* Destination Address Modulo */ DMA_0.TCD[2]。ATTRです。B.SSIZE = 0x2; /* ソース転送サイズ: 32 ビット*/ DMA_0.TCD[2]。ATTRです。B.DSIZE = 0x2; /* 宛先転送サイズ: 32 ビット*/ DMA_0.TCD[2]。SOFFです。B.SOFF = 0x0; /* 符号付きソース加算オフセット調整*/ DMA_0.TCD[2]。NBYTES です。MLOFFNOです。B.NBYTES = 0x40;/* 内部の「マイナー」バイトカウント */ DMA_0.TCD[2]。スラスト。B.SLAST = 0x0; /* 最後に署名された送信元アドレスを調整 */ DMA_0.TCD[2]。ドフ。B.DOFF = 0x4;  /* 署名付き宛先アドレスオフセット */ DMA_0.TCD[2]。DLASTSGAです。B.DLASTSGA = 0xFFFFFFC0;/* 署名付き宛先アドレス オフセット -64 */ DMA_0.TCD[2]。かみつく。エリクノー。B.ELINK=0x0; /* マイナーループのチャンネル間リンク完了:無効*/ DMA_0.TCD[2]。かみつく。エリクノー。B.BITER = 0x1; /* 現在のメジャー反復回数またはリンクチャネル番号 */ DMA_0.TCD[2]。CITERです。エリンキーはい。B.ELINK=0x0; /* マイナーループのチャンネル間リンク完了:無効*/ DMA_0.TCD[2]。CITERです。エリンキーはい。B.LINKCH = 0x0; /* マイナーループでのチャンネル間リンクのチャンネル番号 : 未完成*/ DMA_0.TCD[2]。CITERです。エリンキーはい。B.ELINK = 0x0001; /* 現在のメジャー反復回数またはリンクチャネル番号 */ DMA_0.TCD[2]。CSR(社会貢献活動)。B.BWC = 0x00; /* 帯域幅制御 */ DMA_0.TCD[2]。CSR(社会貢献活動)。B.MAJORLINKCH = 0x00; /* メジャーチャンネル番号 */ DMA_0.TCD[2]。CSR(社会貢献活動)。B.MAJORELINK = 0x00; /*メジャーループのチャンネル間リンク完了:無効*/ DMA_0.TCD[2]。CSR(社会貢献活動)。B.DONE = 0x00; /* チャネル完了ビット */ DMA_0.TCD[2]。CSR(社会貢献活動)。B.アクティブ = 0x00; /* チャネルアクティブビット */ DMA_0.TCD[2]。CSR(社会貢献活動)。B.ESG = 0x00; /* スキャッター/ギャザーを有効にする: 無効*/ DMA_0.TCD[2]。CSR(社会貢献活動)。B.DREQ = 0x00; /* 完了時に DMA チャネルを無効にする: 無効*/ DMA_0.TCD[2]。CSR(社会貢献活動)。B.イントハーフ = 0x00; /* ハーフメジャーカウント完了時の割り込み:無効*/ DMA_0.TCD[2]。CSR(社会貢献活動)。B.INTMAJOR = 0x01; /* メジャーループ完了時の割り込み: 無効*/ DMA_0.TCD[2]。CSR(社会貢献活動)。B.スタート= 0x00; /* 明示的なチャンネル開始ビット */ }//DMA_0
查看全文
问答:Android JB 4.3 支持三重显示(3 个显示器,相同内容)吗? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 问: 基于imx6 SDP做一个三重显示演示。3 个通道分别是 1 lvds 、 1hdmi 和 1 lcd ,操作系统是 Android JB4.3。双显示器工作正常,这两个屏幕都可以显示 Android 桌面。 设置如下。 setenv bootargs console=ttymxc0,115200 init=/init rw video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666 video=mxcfb1:dev=lcd,CLAAWVGA,if=RGB565 video=mxcfb2:off video=mxcfb3:dev=hdmi,1920x1080M60,if=RGB24 fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0androidboot.hardware=飞思卡尔 静态结构 ipuv3_fb_platform_data sabresd_fb_data[] = { { /*fb0*/ .disp_dev =“液晶显示器”,         .interface_pix_fmt = IPU_PIX_FMT_RGB565,         .mode_str = "CLAA-WVGA",         .default_bpp = 16, .int_clk=真, .late_init = false,         }, { .disp_dev = "ldb",         .interface_pix_fmt = IPU_PIX_FMT_RGB666,         .mode_str = "LDB-XGA",         .default_bpp = 16, .int_clk=假, .late_init = false,             }, { .disp_dev = "ldb",         .interface_pix_fmt = IPU_PIX_FMT_RGB666,         .mode_str = "LDB-XGA",         .default_bpp = 16, .int_clk=假, .late_init = false,         }, { .disp_dev =“hdmi”,         .interface_pix_fmt = IPU_PIX_FMT_RGB24,         .mode_str = "1920x1080M60",         .default_bpp = 16, .int_clk=真, .late_init = false,             }, }; 静态结构fsl_mxc_hdmi_core_platform_data hdmi_core_data={         .ipu_id = 1,          .disp_id = 1, }; 静态结构fsl_mxc_lcd_platform_data lcdif_data = {         .ipu_id = 0,         .disp_id = 0,         .default_ifmt = IPU_PIX_FMT_RGB565, }; 静态结构fsl_mxc_ldb_platform_data ldb_data={         .ipu_id = 0,         .disp_id = 1, .ext_ref = 1, .模式=LDB_SEP1, .sec_ipu_id=1, .sec_disp_id = 0, }; 一个: Android BSP 不支持三重显示,因此内核的更改不会使第三个显示器工作。
查看全文
Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> @@本文介绍如何使用 SCI 等标准通信介质对 Kinetis Cortex-M4 核心设备进行在系统重新编程。大多数代码都是用 C 语言编写的,因此可以轻松迁移到其他 MCU。该方案目前已被客户采用。 该引导加载程序基于 FRDM-K22 演示板和 KDS3.0。提供引导加载程序和用户应用程序源代码。还提供 GUI。客户可以基于它们制作自己的引导加载程序应用程序。该应用程序可用于升级单个目标板和通过RS485等网络连接的多板。引导加载程序应用程序检查输入地址范围内节点的可用性,并自动逐个升级固件节点。 引导加载程序的主要特点: 能够更新(或仅验证)网络中的多个设备。 应用程序代码和引导加载程序代码位于单独的项目中,方便批量生产和固件升级。 Bootloader代码体积较小,只有3k左右,减少了片上内存资源。 提供源代码,易于阅读和迁移。 对于 Cortex-M0+ 产品,请参阅: Kinetis Bootloader 用于更新网络中的多个设备 - 对于 Cortex-M0+ ,它基于 FRDM-KL26。 Cortex-M4与Cortex-M0+最主要的区别在于FLASH程序例程。 - 在Cotex-M4核心kinetis中,我们需要将Flash操作例程复制到RAM中。在bootloader代码中,复制到ram的代码是在“FLASH_Initialization()”函数中实现的: 字节缓冲区[200]={0}; - 在 Cotex M0+ 核心 kinetis 中,我们不需要将 Flash 操作例程复制到 RAM。添加了平台控制寄存器(MCM_PLACR)。MCM_PLACR 寄存器选择交叉开关主控器的仲裁策略并配置闪存控制器。当闪存繁忙时,启用 ESFC 位可能会使闪存控制器停止运行。设置ESFC位可以很好地平衡Flash读写的时序——写Flash时,读Flash指令可以等待,反之亦然。使用ESFC位可以使我们的闪存编程更容易。因此一个 Flash 可以写入自身,而对于没有 ESFC 位控制的其他 Flash MCU 来说这是不可能的。 ESFC 位在 C 代码中很容易设置: 更多信息请参见附件文档和代码。 用户也可以从 Github 下载文档和源代码: https://github.com/jenniezhjun/Kinetis-Bootloader.git Kinetis K系列MCU USB 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 移植到其他芯片,比如说 MK10DN512,对我来说相当成问题。我应该替换链接器文件和 MK22F51212.h,这会导致现有项目中出现很多错误。据我所知,闪存驱动程序也不同。 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Huy, 您可以使用所有东西将引导加载程序刷入您的主板。 我使用KDS开发的,所以直接用KDS下载。我认为SEGGER-JFlash还可以。 BR 爱丽丝 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 亲爱的爱丽丝, 我已将您的引导程序移植到我的MK20DN512 (Landungsbruecke) 上。如何将此引导程序烧录到我的开发板上?我经常使用 SEGGER-JFlash 来烧录用户应用程序。请给我一些建议! 多谢! 顺祝商祺! Huy. 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello Sam, 请仔细阅读“ Kinetis Bootloader Cortex-M4.pdf ”的文档,清楚了解流程, 然后你就会知道如何移植到你的芯片上。 另外还有一个移植到FRDM-K64的功能,当你开始移植时,你可以参考它: https://community.nxp.com/docs/DOC-333740 BR 爱丽丝 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Alice, 感谢分享代码。 我想将此引导加载程序移植到 MK20DN512,我需要更改哪些文件?我是 Kinetis Bootloader 的新手,请帮忙! 提前感谢! 顺祝商祺! Huy. 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,爱丽丝, 太棒了!非常感谢您的帮助和信息! 干杯, Sam 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello Sam, 感谢您对此引导程序的关注。 - 用户应用程序可以是任何项目(PE项目和裸板项目都可以), 我们只需要参考“3.3.8”部分用户应用程序代码”来配置应用程序项目。 是的,如果您使用 PE 项目,直接更改链接器文件,则需要关闭链接器文件生成。 您也可以在“生成链接器文件”配置视图中对其进行配置: - 关于S19记录文件名,它不是手动重命名的,而是由KDS生成的: -在此引导程序上,GUI 同时支持 s19 和 HEX 文件: BR 爱丽丝 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 大家好, 只是对我最初问题的后续...如果您使用 PE,则需要关闭链接器文件生成才能正确更新 liker 文件。特别是 m_cfmprotrom 段...在 PE 中无法直接访问。其次,您需要手动将生成的 S19 记录文件从 CW 的默认扩展名“.hex”重命名为“.s19”(Alice 的 Window 程序解释“.hex”文件不同)。完成此操作后,我就可以使用 Bootloader 和 GUI Windows Loader。我还需要做更多的测试,但至少我现在有一个基本的工作系统! 感谢 Alice 和团队提供这个 Bootloader 基础设施。 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,爱丽丝, 我很好奇您是否可以提供一些指导,说明如何配置处理器专家 (PE) 创建的项目 (KL26 处理器) 以供 (基于 PE 的用户应用程序) 与您的 GUI/Bootloader 一起使用?我问的是,PE 生成的 CPU.C 文件包含一些 Flash 配置值,这些值似乎与示例应用程序存储“APP_OK”签名属性的位置(在“.cfmconfig”部分)相冲突。 提前感谢! 干杯, Sam 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Sebastian, 感谢您对这份 DOC 的关注。 抱歉,我附加的项目有一个错误,现在我已附加新的项目,请使用新的项目。 关于车站号码,你需要改变两个地方, 一个在“bootloader.c”文件中:const 字节站号 = 2; 另一个位于用户应用程序项目中,在 bl_mommunication.c 中文件:const Byte station_number = 2; 那么如果要闪到站2的话,在GUI上请选择2到2,这个意思就是只闪2。 请尝试一下,如果仍然无法工作,请立即联系我。 BR 爱丽丝 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Alice, 首先:感谢这个伟大的引导加载程序以及分享代码和文档! 我尝试了普通 UART 模式和 RS485 模式下的引导加载程序。只要连接一个设备,它就能完美运行。 之后我尝试通过 RS485 网络连接两个设备。在使用引导加载程序时我遇到了一些麻烦: 在 bootloader.c 中文件中我发现了以下代码行“const Byte station_number = 1;”,这应该是设备的总线地址,对吗? 我将这两个设备编程为 station_number 1 和 station_number 2 并尝试更新。但似乎两个设备都对两个地址做出响应。在单设备模式下,station_number 2 也响应了 GUI 中的地址 1... 你知道我做错了什么吗?我必须在哪里指定设备的总线地址? 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Rodrigo, 抱歉这么晚才回复您! 感谢您对此文档感兴趣。 1)您能告诉我您产生了什么错误吗? 事实上,FLash 命令从缓冲区[1] 开始,你可以找到这样的代码: #定义 FLASH_FlashCommandSequence ((LWord (*)(字节))&buffer[1]) 2)为什么要将引导加载程序应用程序复制到 RAM?如果您这样做,引导加载程序将成为一次性编程辅助工具。 据我所知,在 KBOOT 中,有一个“Kinetis Flashloader”,它从闪存加载并从 RAM 执行,并允许用户应用程序放置在片上闪存的开头。 3)“你能帮我吗,告诉我写入闪存的命令是什么?”?你是什么意思? 在我的项目中,写入闪存的代码在这里: 闪存写入命令为: FLASH_Flash命令序列(程序长字索引); #定义程序长字索引 8 BR 爱丽丝 回复:Kinetis Bootloader 用于更新 Cortex-M4 网络中的多个设备 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 亲爱的爱丽丝,我正在分析你的代码以了解如何开发我自己的特定引导加载程序。我查看了许多飞思卡尔 AN、示例等。你看起来好多了。但我需要你的帮助。 1)在您的代码中... for(i=0;i<200;i++) 缓冲区[i] = ((字节*)FLASH_FlashCommandSequenceStart)[i-1]; [i-1] 它会产生错误,因为我从“0”开始..这是正确的吗? 2)我的代码需要从 RAM 内存执行,擦除所有闪存并从预编程的外部 SPI 闪存中读取新固件并放入 K63 闪存。 3)您能帮助我吗,告诉我写入闪存的命令是什么? 4) 如何将引导加载程序功能复制到 RAM 中?那么当某些命令指向闪存而不是 RAM 内存时会发生什么情况呢? 你能帮助我吗 ? 顺祝商祺! 罗德里戈
查看全文
风扇转速控制应用 1. 简介   本文演示了如何使用基于模型的 S32K1 MCU 设计工具箱根据温度或用户输入控制 4 线服务器风扇。基于模型的设计工具箱代表一种解决方案,允许直接从 Simulink 在 NXP 硬件上部署复杂的应用程序。通过整合硬件优化软件(例如驱动程序、库和工具),基于模型的设计工具箱允许用户只关注算法开发,同时让此类应用程序的硬件感知由工具箱处理。通过与 MathWorks 生态系统的集成,MBDT 利用基于模型的设计范式,从而实现基于模型的编程过程 - 用户无需编写 C 代码来实现他们的设计,而是使用执行专用功能的 Simulink 块创建逻辑图。 在本文中,我们将演示如何使用此工具在 S32K146 评估板上设计和部署风扇速度控制应用程序。因此,本文将在以下章节中描述实现这一目标所提出的步骤: II.应用程序概述——应用程序的工作原理以及各组件之间的联系; III.硬件设计——所用组件的描述和电气图; IV.软件设计——更详细地解释应用程序执行流程和模型实现; V.结论——应用的结果。   2. 应用概述   该应用程序有两种操作模式:自动和手动。要在操作模式之间切换,我们需要按下 S32K146 板上的 SW2 按钮。启动时,应用程序处于自动运行模式(电路板的 RGB LED 亮起绿色):这意味着风扇根据温度调整其速度。在手动模式下(电路板的 RGB LED 亮起蓝色),风扇根据电位器提供的值改变其速度。 风扇速度、加速度、环境温度的图表和值将显示在 FreeMASTER 中。 功能框图 图 1:框图   3.硬件设计 A. 硬件组件 所需的硬件组件包括:  S32K146评估板  热敏电阻NTC100K  4-wire PC fan   12V电源AC-DC 。   1) S32K146评估板 S32K146EVB是一款经济实惠的评估和开发板,适用于各种工业和汽车应用。该开发板是应用的“大脑”,它从各种传感器(例如温度传感器)收集数据,并使用算法来调节执行器(例如风扇中的BLDC电机)。  有关该板的更多信息,请从这里阅读。   2)热敏电阻NTC100K 热敏电阻是一种电阻值随温度变化的电阻器。其温度值采用Steinhart -Hart 方程计算。 Steinhart-Hart 系数 A、B、C会根据热敏电阻的类型和型号以及目标温度范围而变化。为了找到这些系数,我们使用三个已知温度下的三个电阻数据值。 例如, 从 NTC100K热敏电阻数据表 中 , 我们 得到 在 15℃、25℃和45℃ 温度下 对应的电阻值分别为156407 Ω、100000 Ω和43659 Ω。 根据 公式 ( 2), 可得出各系数分别为: 因此, 确定 温度的 步骤 是 使用分压转换器 和模数转换器 (ADC) 获取 热敏 电阻电阻 , 然后根据电阻计算温度。   3) 4-wire PC fan 风扇有 4 个引脚,尤其适用于高功耗的处理器。最简单的风扇有 2 个引脚,一个用于电源,一个用于接地。3 线风扇有一个额外的引脚,称为“转速表”,用于指示风扇的转速(每转一圈接收一个/两个脉冲)。2 线和 3 线风扇的转速通过增加/减少电源引脚上的电压来控制。而 4 线风扇有一个控制引脚,并使用 PWM(脉冲宽度调制)来控制转速。  在使用风扇之前,我们必须了解风扇的最大转速、转速表给出的每转脉冲数以及必要的最低工作转速等信息。这些信息可以在风扇的数据表中查找,或者如果我们遇到的是未知型号的风扇且找不到其数据表,也可以通过实验确定。  本文中用作示例的风扇的值是通过实验确定的,我们得到的近似最大速度为每秒 300 转(18000 rpm),每转两次脉冲,最小运行速度为每秒 80 转(4800 rpm)。    4) 12V电源AC-DC 该电源将交流电 (AC) 转换 为直流电 (DC), 输出 电压 为 12 伏。 在 我们的应用中 , 它将 为 风扇 供电 。   B. 电气原理图 风扇转速控制应用有多种硬件配置。除了上面提到的硬件组件(风扇、12V 电源、热敏电阻)外,我们还将使用 S32K146EVB 的电位器、SW2 按钮和 RGB LED。  我们提出以下电气原理图:  图2:电气原理图 注意!所有组件都必须连接到同一地线。   C. 硬件设置 可能的硬件设置如下图所示: 图 3:硬件设置示例 4.软件设计   A. 必备软件 为了能够遵循本文中的后续步骤,需要以下软件: MATLAB ® 和 Simulink ®  (2021a 或更新版本),包括 Stateflow ® , MATLAB ®  编码 器  Simulink ®  编码 器  嵌入式编码器 ® 基于模型的S32K1xx 4.3.0设计工具箱   B. 流程图 应用程序执行流程基于状态机,如下图所示。 图4:状态机 该应用的 架构 是一个 闭环 系统, 利用 反馈 信号 来调节风扇转速。 当前 风扇转速和 风扇 加速度 会随着每个转速计脉冲更新其值。参考转速(使用温度或电位器设定)与当前转速之间的差值 ( 也 称为 误差 信号 ) 是 闭环控制 系统的 输入 , 例如比例-积分-微分 (PID) 控制器。PID 控制器根据比例、积分和微分系数对控制函数进行校正,在我们的例子中 , 它 确定 用于控制风扇转速的 PWM 占空比 。 图 5:应用程序模型 C. 模型概述 从上到下(图 5 ),我们有 4 个大部分:  初始化 操作模式切换 设定参考速度的操作模式 控制算法。 让我们进一步深入了解每个部分的细节。    1)初始化 图6:初始化部分 第一行从左到右依次为 S32K1xx 处理器系列的配置块、FreeMASTER 配置块和两个 ADC 配置块。第二行是转速表引脚上的上拉电阻,以及两个从温度值和 ADC 电位器值到参考转速的映射函数。此外,还有当前工作模式、温度值、参考转速、当前转速、占空比和其他一些辅助变量。  处理器配置块所需的配置都是默认的,除了处理器型号和下载接口(图7 )。  对于 FreeMASTER 配置块,我们设置了通信接口(例如:LPUART1)、波特率(例如:19200)和长中断串行通信。该组件提供了一个界面,用于显示当前速度、环境温度等相关数据。 在用于读取温度和电位器值的 ADC 配置块中,我们选择 ADC 转换器编号和分辨率模式(例如:10 位转换)。  图 7:S32K1xx 系列处理器的配置块 2)操作模式切换 我们使用 GPI ISR 块配置 引脚 PTC12( SW2) ,以便 在 每次按下按钮 时 产生 下降沿 中断 。 图8:开关模式部分 当 产生 中断 时, 操作 模式 变量 的值 会切换,并且与操作模式对应的LED颜色会亮起(自动模式 - 绿色,手动模式 - 蓝色)。 它还会 启用 /禁用 PIT (周期性中断定时器) 中断 ,该 中断 每秒触发一次温度传感器的ADC读数(图 10 ) 。 图9:产生中断时调用的函数。 图 10:启用/禁用 PIT 中断以获取 ADC 温度读数; RGB LED 处于自动和手动模式 3)操作模式 图 11:操作模式部分 根据工作模式, 参考 速度 由 温度 值或 电位 器 的 ADC 值 设置 。 a) 自动模式 在此模式下, PIT 模块 启用, 每秒读取一次 热敏电阻 的 ADC 值 。ADC 的 分辨率 为 10 位 。因此,它可以 取 0 到 1023 之间的值, 对应 0V 到 5V 之间的电压 值 。 假设 Vout 是 引脚 PTB13 上的 输出电压 。 此外 , 根据 图 2 的 电气 原理图 ,我们有一个分压器 : 我们可以找出热敏电阻的阻值: 然后,我们可以利用Steinhart-Hart方程( 1 )得到温度值。  根据温度,我们可以映射一个参考速度的值。我们可以为这个映射定义一个线性函数或任何我们需要的函数。 图12:自动模式 b) 手动模式 在手动模式下,读取电位器的 ADC 值并将其映射到参考速度。 图13:手动模式 4)控制算法 图14:控制算法部分 在本节中,系统的闭环采用PID (比例-积分-微分)控制器实现。我们必须调整PID控制器的系数( Kp 、 Ki 、 Kd )才能产生最佳控制功能。调整方法有多种:手动、Ziegler-Nichols方法或使用软件专用工具。在本应用中,使用了 Ziegler-Nichols 方法,为了进行微调,我们采用了手动调整。应用此方法后,我们得到以下值: KP = 0.003、KI = 0.003、KD = 0.001。 图15:PID控制器配置 利用来自 PID 控制器的 PWM 信号,我们使用 FTM PWM 配置模块,通过 PWM 引脚控制风扇转速。 该模块 的配置 如下: 图16:FTM PWM配置块的参数 根据电气原理图(图2 ),控制风扇转速的引脚是PTC1,对应FTM0_CH1。这意味着我们需要从 FTM(FlexTimer 模块)的模块 0 配置通道 1。 要 获取 风扇 当前转速 , 我们需要知道 转速 表 两个脉冲之间的周期 。这可以 使用 FTM 输入捕获模块 来确定 ,该模块返回以 微秒 为单位 的时间戳 。请记住,每旋转一次有两个脉冲。 我们 每10 毫秒 测量 一次速度 。 因此,加速度具有以下 值: 图17:风扇转速和加速度的计算 D. FreeMASTER 为了可视化应用程序的结果,您可以创建一个 FreeMASTER 项目。将构建应用程序的 .elf 文件添加到“项目”-“资源文件”-“pack”目录设置-“MAP 文件” -“默认符号文件”中 。您可以将变量添加到“变量监视” 部分 , 例如工作模式、当前速度、参考速度和温度( 图 19 )。此外,您还可以使用 FreeMASTER 示波器创建图表,如图 18 所示 , 其中 包含 当前 速度 和参考速度。 在下图中,我们可以观察到系统最初处于自动模式:温度约为 28 摄氏度,这对应于每秒 110 转的近似参考速度。然后,当按下 SW2 按钮时(图表上的第 685 秒),系统进入手动模式,参考速度设置为每秒约 236 转,该速度根据从电位器读取的值进行映射。当前速度(红线)正在跟踪施加的参考速度(绿线)。 图 18:参考速度和当前速度的图形 此外,我们还可以跟踪诸如操作模式 - 布尔值(0 表示自动模式,1 表示手动模式)、摄氏度温度、参考速度和以每秒转数测量的当前速度、加速度或用于控制风扇速度的 PWM 占空比等值。 图19:变量监视部分 5. 结论 总而言之, 该应用 使用 基于模型的设计工具箱(适用于 S32K1 MCU) 根据温度或电位器值控制风扇转速 。 它 融合 了 系统 理论 、 电子学 和嵌入式 系统 的 概念 , 代表了 一项 关于 在 服务器 、路由器、交换机 等 不同应用中使用风扇进行 温度 控制 的 学术 研究 。 有用链接: 1. S32K146EVB:   https://www.nxp.com/document/guide/getting-started-with-the-s32k146-evaluation-board-for-general-purpose:NGS-S32K146EVB  2.NTC100K热敏电阻: https://www.tme.eu/Document/f9d2f5e38227fc1c7d979e546ff51768/NTCM-100K-B3950.pdf  https://en.wikipedia.org/wiki/Steinhart %E2% 80 %93Hart_equation#Steinhart% E2 %80% 93Hart_系数  3. 4-wire fan:  https://www.electroschematics.com/4-wire-pc-fan/  https://www.nidec.com/en/product/search/category/B101/M111/S100/NCJ-V40S-E5-57/  4.PID系数:  https://control.com/textbook/closed-loop-control/pi-and-d-responses-graphed/  https://en.wikipedia.org/wiki/Proportional %E2% 80 %93integral% E2 %80% 93derivative_controller  NXP 是 NXP BV 的商标。所有其他产品或服务名称均为其各自所有者的财产。© 2024 NXP BV MATLAB、Simulink 和 Embedded Coder 是 MathWorks, Inc. 的注册商标。请参阅 mathworks.com/trademarks以获取更多商标的列表。  
查看全文
S32K148AVB-RDB发布! 音频视频桥接 (AVB) 是一种通过基于以太网的网络传输音频和视频流的协议,它可以以非常低的延迟向多个目的地实时传输大量数据。该参考设计板演示了 S32K148 上 AVB 的使用方法。 或者,除了S32K148EVB-Q144和S32K148EVB-Q176之外,还可以是100pin版本的S32K148评估板。 下面显示了电路板布局、图表和主要特征。 图 1.S32K148AVB-RDB布局 S32K148AVB-RDB Diagram(Rev B)S32K148AVB-RDB 图表(修订版 B) 图 2.S32K148AVB-RDB 图 S32K148AVB-RDB FeaturesS32K148AVB-RDB功能 图3.S32K148AVB-RDB特性 在软件方面,我们提供了几个示例来展示 AVB/TSN 的用法和其他应用。avb_listener_talker 项目是实现大多数功能的主要示例,并通过以太网电缆连接 2 个 AVB 板进行演示。 图4.S32K148AVB-RDB代码示例 下面实现了软件堆栈和中间件。 ✓ 实时操作系统:FreeRTOS ✓ 外设驱动:SDK RTM 3.0(与Processer Expert配合使用) ✓ AVB 流:RTM 1.0 ✓ AVB 音频:RTM 1.0 ✓ gPTP 堆栈版本:1.3.4 ✓ Lwip 堆栈版本:2.1.2 •注意:尽管我们做了很多测试,但当它集成到实际应用项目中时,客户仍然有责任自己确保总体质量,所有示例代码和用户指南文档仅供客户参考。 •注意:我们没有该主板的 FCC 或 CE 证书。   目前我们在中国重庆有50块电路板。如需申请该板,请联系 NXP 销售或 GPIS 营销部门。 由于 AVB 堆栈不是免费使用的,要访问代码,请联系 NXP 销售或 GPIS 营销部门。 如需技术讨论,请联系[email protected][email protected] 。  
查看全文
GenericTimeDate_1.001_25.07.2012.PEupd <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 通用时间日期 描述 通用时间/日期处理。 组件 GenericTimeDate.PEupd Dependencies 无 许可 (c)版权所有飞思卡尔半导体,2012 http: www.freescale.com 源代码基于原始的 TimeDate Processor Expert 组件。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 通用时间日期 描述 通用时间/日期处理。 组件 GenericTimeDate.PEupd Dependencies 无 许可 (c)版权所有飞思卡尔半导体,2012 http: www.freescale.com 源代码基于原始的 TimeDate Processor Expert 组件。 组件交换
查看全文