Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
MagniV S12ZVC 和 S12ZVL 设备的 SW 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 下面粗体蓝色链接可直接下载基于 S12Z 核心的 MagniV 设备的 SW 示例包。   S12ZVC 入门练习(版本 1.0) 该文件包含四个实践练习,您可以在其中找到基本的设置代码,以便在不同领域进行快速开发。 该文件包括 CodeWarrior 项目,演示了外围模块的使用方法,例如: - 数模转换器(DAC), - 控制器局域网(CAN), - 脉冲宽度调制(PWM), - Timer (TIM).   S12ZVL32入门 - S12 MagniV示例代码(REV 0) MC9S12ZVC 设备集成了电池电量(12V)电压调节器和电源电压监控。 此压缩文件包含四个 CodeWarrior 示例,演示 - EVDD 引脚过流保护, - 具有 API 定时器和唤醒功能的低功耗停止模式, - 脉冲宽度调制(PWM) - 串行外设接口 (SPI) 通信。   这些示例中的许多示例都可以用于 MagniV 产品线中的各种 MCU 系列。请查看相应的设备指南以获取模块及其版本的列表。 概述 回复:MagniV S12ZVC 和 S12ZVL 设备的 SW 示例 Hello, 适用于 S12(X) 和 MagniV 设备的所有应用说明(含 SW)均可在此链接中找到: MagniV S12(X) 应用说明列表 你可以看看AN5264 http://www.nxp.com/files/microcontrollers/doc/app_note/AN5264.pdf  西南: http://www.nxp.com/files/microcontrollers/doc/app_note/AN5264SW.zip 希望对您有所帮助。 顺祝商祺! 戴安娜 回复:MagniV S12ZVC 和 S12ZVL 设备的 SW 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好 感谢您提供上述示例。 您能上传 I2C SW 示例文件吗? 谢谢。 回复:MagniV S12ZVC 和 S12ZVL 设备的 SW 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,谢谢你提供上述示例,请问你有没有关于 BLDC 电机控制 S12ZVMC EVB 的示例? 回复:MagniV S12ZVC 和 S12ZVL 设备的 SW 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,Pratibha, 现在链接应该已经修复了。 顺祝商祺! 戴安娜 回复:MagniV S12ZVC 和 S12ZVL 设备的 SW 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 它们两者之间的联系似乎并不存在。 有谁能帮我一下吗? 谢谢!
View full article
Dictum Health - 一連のケアにおける次の進化 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Demo バーチャルドクター       特長 いつでもどこでも患者と臨床医をつなぎ、安全な患者データ、バイタルサイン、診断、ビデオ会議を実現します Integrated Medical Tablet IDM100は、臨床および家庭での使用向けに設計された安全なHIPAA準拠のヘルスケアプラットフォームです NXPのIMX6x MCUを搭載し、Healthcare AFEリファレンスデザインを使用して試作   NXPの推奨事項 i.MX 6Dualプロセッサ|高性能3Dグラフィックス Kinetis K20 100MHz|ARM Cortex-M4|32ビットUSB MCU i.MXプロセッサ用パワー・マネジメント   リンク ディクタムヘルス   P13 オートモーティブ
View full article
LS2085A を使用したホスト環境および仮想化環境での DPDK <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Demo DPDKは、最適化されたパケット処理と従来のネットワーキングサービスのための、プラットフォームに依存しないベンダー中立の標準APIを提供します。このデモでは、ホストおよび仮想環境でNXP QorIQ ARMプロセッサ上で動作するDPDKベースのネットワーキング・アプリケーションを紹介します。NXPがこれらの共通APIをサポートしながら、NXPデータプレーンアーキテクチャの特定のアクセラレーションの利点を活用している方法について、ぜひご相談ください   特長: NXPは、ホストおよび仮想環境で高性能ネットワーキングアプリケーションを開発するためのDPDK APIをサポートしています NXP DPDKの実装は、基盤となるDPAAインフラストラクチャとアクセラレータを活用して、パケット処理のコンポーネントをオフロードします 既存のDPDKベースのアプリケーションは、NXP QorIQプラットフォーム上でシームレスに動作できます。   _______________________________________________________________________________________________________   注目のNXP製品: QorIQプロセッサ、ARMテクノロジを基盤に|NXPの QorIQ LS2045AおよびLS2085A通信プロセッサ _______________________________________________________________________________________________________     N25の 通信インフラストラクチャ
View full article
数据未从 MTL 复制到 MAC 我正在尝试使用 PHY 发送广播以太网数据包。我以 Gmac_Ip_InternalLoopback_S32K358 为例并对其进行了修改。 目标 mac 地址设置为广播地址 (ff:ff:ff:ff:ff:ff)。 以太网类型设置为0800。DMA 自己的位在传输之前设置,并在一段时间后被清除。但我不知道数据包是否传输出去了。 应用程序 -> DMA -> MTL(FIFO)-> MAC -> PHY。 以下三个寄存器在传输时会增加。 1. 发送数据包计数良好错误 2. Tx_Broadcast_Packets_Good 3. Tx_Broadcast_Packets_Good_Bad 我不知道这些寄存器是否仅当MAC将数据包从FIFO传输到PHY时才会递增。 1.如何确认数据包已成功传输到PHY? 2.我应该检查哪些寄存器来确认数据包传输? 3.另外,如何确认MTL推送数据并且MAC接受数据并开始向RMII传输?如何知道状态? 硬件详细信息: S32K3X8EVB-Q289评估板 TJA1103SDB SABRE开发板(170-47757 REV C) Software details: SW32K3_S32DS_3.5.8_D2311.zip SW32K3_S32M27x_RTD_R21-11_4.0.0_D2311_DS_updatesite.zip SW32K3_FreeRTOS_10.6.0_CD_4.0.0_DS_updatesite_D2312.zip SW32K3_TCPIP_STACK_1_0_4_D2401_DS_updatesite.zip 回复:数据未从 MTL 复制到 MAC 附上项目以供参考。该项目将实现基本的以太网(GMAC 和 PHY)功能(发送广播数据包)。 回复:数据未从 MTL 复制到 MAC 大家好, 修改时钟和其他引脚配置后,该问题已得到解决。请参阅以下主题以了解更多详细信息。 https://community.nxp.com/t5/S32K/S32K358-GMAC-sends-abnormal-data/mp/2083039#M47907 谢谢, 萨蒂什。 回复:数据未从 MTL 复制到 MAC 我已禁用 GMAC 驱动程序中的环回。
View full article
S32DS: はじめに - ISP グラフ ツールのチュートリアル <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このチュートリアルでは、S32DS (S32V2xx 開発パッケージと S32V2xx 用の Vision 拡張パッケージを使用) と組み込みの ISP Visual Graph ツールを使用して、S32V234 MCU 用の新しいアプリケーションを作成する手順について説明します。完成したアプリケーションは、カメラから画像を取得し、ISPで処理し、処理された画像をDDRバッファに格納します。イメージが DDR バッファに格納されると、ホスト (Linux を実行している A53 コア) は、ディスプレイ コントロール ユニット (DCU) にイメージを画面に表示するように指示します。 前提条件: S32V234 System on a Chip(SoC)に関する知識 ISPアーキテクチャについて理解している NXP Vision SDKソフトウェアに精通している インタラクティブなチュートリアルをお探しですか? このチュートリアルをビデオとして視聴するには、「S32V プロセッサ用の Vision 拡張パッケージを含む S32 Design Studio IDE の概要」を参照してください。NXPとセレクト '3 |新しいISPアプリケーションを作成する'
View full article
利用恩智浦蜂窝基站概念,抓住 5G 浪潮 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Demo 恩智浦是高功率射频功率晶体管的头号供应商,它拥有全新的 5G 蜂窝基站概念以及许多其他创新的蜂窝基础设施解决方案和技术,并在行业活动中进行展示。NXP 的产品创新涉及 5G 领域,从千兆 LTE 到使用 GaN 和硅 LDMOS 的 5G,用于宏基站和小型基站。详细了解恩智浦为迎接 5G 浪潮所采取的措施 特性 占地面积更小,降低安装成本 网络基础设施演进 有源天线兴起 功耗 支持 3G、4G 至 5G 的多种标准 链接 5G基础设施|恩智浦 移动设备
View full article
ホワイトペーパー:ハードウェア暗号化アクセラレーションと保護により、MCUセキュリティ機能を信頼できる実行を超えて拡張 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 要約 このホワイトペーパーでは、消費電力と面積のペナルティを最小限に抑えながら、低コストのマイクロコントローラに高レベルのセキュリティをもたらすのに役立つ新しい技術を使用した、暗号の高速化と資産保護へのアプローチについて説明します。当社の非対称暗号アクセラレーションエンジンであるCASPERは、暗号アルゴリズム(RSA、ECCなど)の実行を最適化することを目的としています。これは、ソフトウェア関数が非対称暗号関数をアクセラレータのハードウェア モジュールにマップするハードウェア ソフトウェア パーティショニング スキームに基づいて構築されており、ソフトウェア ルーチンに十分な柔軟性を提供して、新しいアルゴリズムのマッピングを可能にします。Arm® Cortex-M33®コアのコプロセッサインターフェースを利用することで、さらなる効率が達成されます。キー、プロプライエタリおよび/またはライセンスされたアプリケーションソフトウェアなどの重要な資産は、SRAM PUFおよびPRINCEを使用したサイドチャネル解析またはクローニングから保護されています。SRAM PUFテクノロジーは、サブミクロン・プロセス・テクノロジーの豊富なバリエーションを活用することで、Root-of-Trustキーとユーザー・キーの安全な保管を可能にします。PRINCEは、ハードウェアに実装された低遅延の軽量暗号化アルゴリズムであり、暗号化された不揮発性ストレージと、実行コードのリアルタイムで遅延のない復号化を可能にします。 続きを読む> LPCマーケティング LPC55xx
View full article
eIQ Demo Input Guide for i.MX RT <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> i.MX RT の eIQ デモでは、推論の入力データに配列を使用します。添付のガイドとスクリプトでは、eIQの例で使用するカスタム入力データ(画像と音声の両方)を作成する方法について説明します。 i.MX RT
View full article
CAN FDバスオフステート S32k146 Hi, ビットレートとして1MB/秒のCAN FD通信を実装する必要があります。 残念ながら動作していません。データはRAMに正しく書き込まれますが、カヌーではメッセージが届きません。ESR1、CAN_init、そしてメッセージを送信する関数を添付しました。 あなたが私を助けてくれることを願っています。 Sandra Re: CAN FDバスオフ状態 S32k146 Hi Petr, お返事ありがとうございます。FlexCanの例をテストしましたが、同じ失敗がありました。 コントローラーのはんだ付けパッドに問題があることがわかりました。 よろしくお願いいたします Sandra Re: CAN FDバスオフ状態 S32k146 Hi, 送信中にビットエラーを検出しているようで、バスオフ状態に入って回復するなどしています。ビットエラー検出の原因はさまざまで、ほとんどの場合、非アクティブなCANトランシーバー、誤ったビットレート設定などです。 TX/RXとCANラインをスコープアナライザーで測定し、実際の信号も確認できると便利です。 あなたのコードでは、CBT登録の設定が間違っているようです。計算に役立つ以下のツールを使うことをお勧めします https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/MPC5xxx-S32Kxx-LPCxxxx-CAN-CAN-FD-bit-timing-calculation/ta-p/1119319 BR, Petr
View full article
PN7642 SPIA主模式 你好! 我正在使用 PN7642。我想问一下,连接到主机接口引脚ATX_A,ATX_B,ATX_C,ATX_D的SPI可以在主模式下使用吗,或者它只能配置为在从模式下工作? 提前致谢! Artem 回复:PN7642 SPIA主模式 非常感谢! 回复:PN7642 SPIA主模式 Hello @artem_pn 希望你一切都好。 主机接口引脚可能用于 SPI 目标功能。根据PN7642 数据表第 8 节引脚信息,SPI 控制器应具有专用引脚。 问候, 爱德华多。
View full article
IMX8MP 暗号化 rootfs Hello, CAAMを使用してrootfsを暗号化したいです。私の知る限り、CAAMには、このタスクに使用できる電源サイクル用の安全なキーストレージがあります。 AN12714は本当に役に立ちません。「/Root-filesystem-encryption-using-DM-Crypt」など、いくつかのドキュメントの提案があった投稿をいくつか見てきました。それらはすべてアクセスが制限されていました。 私は私を助けることができる任意のガイドを探しています。 よろしくお願いいたします。 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: IMX8MP 暗号化 rootfs こんにちは@Canjho  <10 Security>AN12714ではなく、 LINUX_USERS_GUIDE のセクション を参照してください よろしくお願いします。 Harvey
View full article
S32K116 LSPI 質問してください: S32DSを使用してLSPIコンポーネントを設定する場合、S32K116チップは現在、同期転送のデフォルト設定モードを使用しているため、CPUの動作効率が低下し、通信の待機時間が長くなります。LSPIコンポーネントの非同期通信を実装するにはどうすればよいですか?非同期通信を自分でシミュレートする必要がありますか?それとも、設定だけで実現できますか? 現在、LSPI は割り込みの形式で LSPI_Config コンポーネントを通じて構成されています。 ありがたい! Re: S32K116 LSPI このサンプルプロジェクトを見つけました。ありがとうございます Re: S32K116 LSPI このインストールパッケージはどうすれば入手できますか?S32DSソフトウェアの拡張機能アップデートを検索したのですが、このRTDは見つかりませんでした。EB Tresosソフトウェアの同様のインストールパッケージを見つけました。ご協力ありがとうございます。 日時:S32K116 LSPI こんにちは@Embedded_novice、 RTD パッケージの LPSPI の例を見てみましょう。 半二重と Flexio の両方の例では、Lpspi_Ip_AsyncTransmit() 関数を使用してスレーブ転送を実装します。 Best regards, Julián
View full article
FXLS8471Q 与 i.MX6Q 接口 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 简介 硬件连接 设备树配置 重建图像 要求 Kernel 器件树 应用程序驱动程序 主要 初始化驱动程序 Write Read 构建并运行SPI应用程序驱动程序 结束语   简介   本文档介绍了如何将Xtrinsic FXLS8471Q 数字加速度计与 IMX6Q 处理器连接并使用。为此,UDOO Quad 开发板与适用于 IMX6QSABRE-SD 开发板的 NXP Linux 映像(内核为 3.14.56,而非 Udoobuntu)一起使用,以模拟使用自定义开发板,自定义和构建 UDOO Quad 开发板此类映像的过程如下所述: 使用 QT5 为 UDOO Quad 构建 Linux 映像   在传感器方面,使用了FRDM-FXS-MULTI(-B) 传感器扩展板,该扩展板具有 2013 年推出的许多 Xtrinsic 传感器,包括FXSL8471Q 。   硬件连接   来自 FRDM-FXS-MULTI 的 SPI 信号被路由到 UDOO Quad 的 SPI1 模块。FXLS8471Q 提供了一个 INT 引脚,如下图所示,但在此实现中使用了轮询方法。请注意,芯片选择不由 SPI 模块自动控制,因此该引脚配置为 GPIO。除了这些信号之外,还连接了复位和电源引脚。   下图显示了 FRDM-FXS-MULTI 中使用的与 UDOO Quad板连接的引脚。           UDOO Quad 侧使用的引脚如下图所示。您可以在此处/download/files/pinout 索引中找到 UDOO Quad 引脚排列图。                           设备树配置   正如本文档开头所述,使用了适用于 IMX6Q-SABRESD 的 NXP Linux 映像。为了定制此图像以用于 UDOO Quad 板,需要构建一个 .dtb与之匹配。此任务已完成,并从UDOOboard (UDOOboard) · GitHub上的 UDOO 内核 Linux 存储库获取下面列出的 dts 和 dtsi 源文件。   imx6qdl-udoo.dtsi imx6qdl-udoo-externalpins.dtsi imx6q-udoo-hdmi.dts   这些文件被复制到 IMX6Q-SABRESD 构建源文件夹中,并生成了 imx6q-udoo.dtb。此过程已在“使用 QT5 为 UDOO Quad 构建 Linux 映像”中进行了描述   以下代码片段展示了如何为 UDOO Quad 板设置 SPI 配置中涉及的节点。请注意,每个设备树都应与您的自定义板相匹配。   在imx6qdl-udoo-externalpins.dtsi中验证ecspi1节点是否与下面显示的节点匹配。   &ecspi1 {     fsl,spi-num-chipselects = <1>;     cs-gpios = <&gpio5 17 0>;     pinctrl-0 = <&pinctrl_ecspi1>;     pinctrl-names = "default";     status = "disabled";     spidev0: spi@0 {         #address-cells = <1>;         #size-cells = <1>;         compatible = "spidev";         reg = <0>;         spi-max-frequency = <2000000>;     }; };     正如您在上面的代码片段中看到的, ecspi1节点使用pinctrl_ecspi1作为引脚配置节点,该节点在同一个文件中定义,如下所示。          pinctrl_ecspi1: ecspi1grp {             fsl,pins = <             MX6QDL_PAD_DISP0_DAT22__ECSPI1_MISO  0x100b1             MX6QDL_PAD_DISP0_DAT20__ECSPI1_SCLK  0x100b1             MX6QDL_PAD_DISP0_DAT21__ECSPI1_MOSI  0x100b1             MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17   0x80000000             >;         };   但是,您可能知道 i.MX 设备上的每个引脚最多有 8 种潜在功能,另一方面,一个功能可以在不同的引脚上使用。   例如,ECSPI1_MISO 可以映射到 4 个不同的引脚     并且每个引脚可以具有不同的功能。从引脚的所有可用功能中选择一个作为焊盘(引脚)名称。在下图中,选择 DISP0_DATA22 作为焊盘名称。       现在回到pinctrl_ecspi1节点,这里用到的宏定义在imx6q-pinfuc.h 中,如你看到的 DISP0_DAT20 - DISP0_DAT23 是与 ECSPI 信号一起使用的焊盘。   需要检查 DISP0_DAT20 - DISP0_DAT23 没有其他配置,如果有,则需要将其注释掉或删除。在这种情况下, imx6qdl-udoo-externalpins.dtsi中这些引脚还有其他配置,但它们已被注释掉。     &iomuxc {     imx6q-udoo {         // External Pinout GPIOs         external_hog: hoggrp-2 {         fsl,pins = <             MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29    0x80000000  // {{external-gpio-0}}             MX6QDL_PAD_CSI0_DAT10__GPIO5_IO28    0x80000000  // {{external-gpio-1}}             MX6QDL_PAD_SD1_CLK__GPIO1_IO20       0x80000000  // {{external-gpio-2}}             MX6QDL_PAD_SD1_DAT0__GPIO1_IO16      0x80000000  // {{external-gpio-3}}             MX6QDL_PAD_SD1_DAT1__GPIO1_IO17      0x80000000  // {{external-gpio-4}}             MX6QDL_PAD_SD1_CMD__GPIO1_IO18       0x80000000  // {{external-gpio-5}}             MX6QDL_PAD_SD4_DAT1__GPIO2_IO09      0x80000000  // {{external-gpio-6}}             MX6QDL_PAD_SD4_DAT2__GPIO2_IO10      0x80000000  // {{external-gpio-7}}             MX6QDL_PAD_SD1_DAT3__GPIO1_IO21      0x80000000  // {{external-gpio-8}}             MX6QDL_PAD_SD1_DAT2__GPIO1_IO19      0x80000000  // {{external-gpio-9}}             MX6QDL_PAD_GPIO_1__GPIO1_IO01        0x80000000  // {{external-gpio-10}}             MX6QDL_PAD_GPIO_9__GPIO1_IO09        0x80000000  // {{external-gpio-11}}             MX6QDL_PAD_GPIO_3__GPIO1_IO03        0x80000000  // {{external-gpio-12}}             MX6QDL_PAD_SD4_DAT0__GPIO2_IO08      0x80000000  // {{external-gpio-13}}             MX6QDL_PAD_CSI0_DAT4__GPIO5_IO22     0x80000000  // {{external-gpio-14}}             MX6QDL_PAD_CSI0_DAT16__GPIO6_IO02    0x80000000  // {{external-gpio-15}}             MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00    0x80000000  // {{external-gpio-16}}             MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01    0x80000000  // {{external-gpio-17}}             MX6QDL_PAD_CSI0_DAT12__GPIO5_IO30    0x80000000  // {{external-gpio-18}}             MX6QDL_PAD_CSI0_DAT13__GPIO5_IO31    0x80000000  // {{external-gpio-19}}             MX6QDL_PAD_EIM_D28__GPIO3_IO28       0x80000000  // {{external-gpio-20}}             MX6QDL_PAD_EIM_D21__GPIO3_IO21       0x80000000  // {{external-gpio-21}}             MX6QDL_PAD_DISP0_DAT6__GPIO4_IO27    0x80000000  // {{external-gpio-22}}             MX6QDL_PAD_DISP0_DAT7__GPIO4_IO28    0x80000000  // {{external-gpio-23}}             MX6QDL_PAD_DISP0_DAT8__GPIO4_IO29    0x80000000  // {{external-gpio-24}}             MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30    0x80000000  // {{external-gpio-25}}             MX6QDL_PAD_DISP0_DAT10__GPIO4_IO31   0x80000000  // {{external-gpio-26}}             MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05   0x80000000  // {{external-gpio-27}}             MX6QDL_PAD_DISP0_DAT12__GPIO5_IO06   0x80000000  // {{external-gpio-28}}             MX6QDL_PAD_DISP0_DAT13__GPIO5_IO07   0x80000000  // {{external-gpio-29}}             MX6QDL_PAD_DISP0_DAT14__GPIO5_IO08   0x80000000  // {{external-gpio-30}}             MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09   0x80000000  // {{external-gpio-31}}             MX6QDL_PAD_DISP0_DAT16__GPIO5_IO10   0x80000000  // {{external-gpio-32}}             MX6QDL_PAD_DISP0_DAT17__GPIO5_IO11   0x80000000  // {{external-gpio-33}}             MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12   0x80000000  // {{external-gpio-34}}             MX6QDL_PAD_DISP0_DAT19__GPIO5_IO13   0x80000000  // {{external-gpio-35}}             //MX6QDL_PAD_DISP0_DAT20__GPIO5_IO14   0x80000000  // {{external-gpio-36}}             //MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15   0x80000000  // {{external-gpio-37}}             MX6QDL_PAD_EIM_A16__GPIO2_IO22       0x80000000  // {{external-gpio-38}}             MX6QDL_PAD_GPIO_18__GPIO7_IO13       0x80000000  // {{external-gpio-39}} (KEY_VOL_UP)             MX6QDL_PAD_NANDF_D0__GPIO2_IO00      0x80000000  // {{external-gpio-40}} (HOME)             MX6QDL_PAD_NANDF_D3__GPIO2_IO03      0x80000000  // {{external-gpio-41}} (SEARCH)             MX6QDL_PAD_NANDF_D2__GPIO2_IO02      0x80000000  // {{external-gpio-42}} (BACK)             MX6QDL_PAD_NANDF_D1__GPIO2_IO01      0x80000000  // {{external-gpio-43}} (MENU)             MX6QDL_PAD_GPIO_19__GPIO4_IO05       0x80000000  // {{external-gpio-44}} (KEY_VOL_DOWN)            // MX6QDL_PAD_DISP0_DAT22__GPIO5_IO16   0x80000000  // {{external-gpio-45}}             //MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17   0x80000000  // {{external-gpio-46}}             MX6QDL_PAD_EIM_D25__GPIO3_IO25       0x80000000  // {{external-gpio-47}}             MX6QDL_PAD_KEY_ROW1__GPIO4_IO09      0x80000000  // {{external-gpio-48}}             MX6QDL_PAD_KEY_COL1__GPIO4_IO08      0x80000000  // {{external-gpio-49}}             MX6QDL_PAD_EIM_OE__GPIO2_IO25        0x80000000  // {{external-gpio-50}}             MX6QDL_PAD_EIM_CS1__GPIO2_IO24       0x80000000  // {{external-gpio-51}}             MX6QDL_PAD_EIM_CS0__GPIO2_IO23       0x80000000  // {{external-gpio-52}}             MX6QDL_PAD_EIM_D24__GPIO3_IO24       0x80000000  // {{external-gpio-53}}             MX6QDL_PAD_GPIO_8__GPIO1_IO08        0x80000000  // {{external-gpio-54}}             MX6QDL_PAD_GPIO_7__GPIO1_IO07        0x80000000  // {{external-gpio-55}}             >;         };     最后,在imx6q-udoo-hdmi.dts中通过包含 ecspi1 节点引用并将状态属性设置为“okay”来启用 ECSPI。   dts-v1/; #include "imx6q.dtsi" #include "imx6qdl-udoo.dtsi" #include "imx6qdl-udoo-externalpins.dtsi" / {     model = "UDOO Quad Board";     compatible = "udoo,imx6q-udoo", "fsl,imx6q";        mxcfb1: fb@0 {         compatible = "fsl,mxc_sdc_fb";         disp_dev = "hdmi";         interface_pix_fmt = "RGB24";         mode_str ="1920x1080M@60";         default_bpp = <32>;         int_clk = <0>;         late_init = <0>;         status = "okay";     }; }; &ecspi1 {     status = "okay"; };   注意:这可以在 .dtsi 中完成但副作用是包括 dtsi 在内的任何配置都会默认启用 ECSPI1。   最后需要重建设备树并将其复制到 SD 卡的 FAT 分区。下一节将解释此过程。   重建图像   要求 为了构建图像和应用程序,需要安装一个工具来交叉编译代码,这样我们就可以在主机上为 ARM 架构生成可执行文件。这个工具叫做meta-toolchain,下面的命令用来安装它。   在以下说明中,认为构建目录是 ~/fsl-release_bsp/build_imx6qsabresd_qt5/   $ cd ~/fsl-release_bsp $源设置环境build_imx6qsabresd_qt5 $ bitbake 元工具链 $ sh tmp/deploy/sdk/fsl-imx-x11-glibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-.sh Kernel   为了启用内核 SPI 驱动程序,必须在 menuconfig 中进行设置并重建 zImage。   转到我们创建的 Yocto 构建目录中的内核目录。 $ cd /tmp/work-shared/imx6qsabresd/kernel-source$   启动 imx 的 menuconfig $ source /opt/fsl-imx-x11/ /environment-setup-armv7a-vfp-neon-poky-linux-gnueabi $ make imx_v7_defconfig $ make menuconfig   通过转到设备驱动程序 --> SPI 支持并将“*”设置为 SPI 设备驱动程序来启用 SPI 驱动程序,保存更改然后退出。     并构建zImage $ 制作 zImage   生成的文件位于 /tmp/work-shared/imx6qsabresd/kernel-source/arch/arm/boot$ 中,必须将其复制到 SD 卡的 FAT 分区。   器件树   要构建设备树,请转到我们创建的 Yocto 构建目录中的内核目录。 $ cd /tmp/work-shared/imx6qsabresd/kernel-source$   构建 dtb 文件 $ source /opt/fsl-imx-x11/ /environment-setup-armv7a-vfp-neon-poky-linux-gnueabi $ make imx_v7_defconfig $ make imx6q-udoo-hdmi.dtb   生成的文件位于 /tmp/work-shared/imx6qsabresd/kernel-source/arch/arm/boot/dts$ ,必须将其重命名为imx6q-udoo.dtb并复制到 SD 卡的 FAT 分区。   应用程序驱动程序   SPI 内核驱动程序使用一个名为spi_ioc_transfer的结构体来描述单次 SPI 传输。该结构体包含指向用户空间缓冲区的指针,其中包含发送和接收数据、缓冲区长度、速度、每字位数以及其他配置。更多详细信息,请参阅内核源代码中的/include/uapi/linux/spi/spidev.h 文件。下一节将解释应用程序驱动程序。   应用程序驱动程序的源文件以及设备树源可以在附加的.zip文件中找到。   主要   以下代码显示函数 main,其中使用“/dev/spidev0.0”初始化 SPI 驱动程序在 menuconfig 中启用 SPIdev 驱动程序并按照上一节所示重建内核后,它将列在/dev下(在目标根文件系统中)。然后,它读取“我是谁”注册表,仅用于健全性检查目的,初始化和校准传感器,并进入无限循环,只要有新数据准备好,它就会读取传感器。原始数据以 6 个字节返回,因此设法获取 X、Y 和 Z 值,最后将这些值转换为 G 的值,并等待按下某个键以继续读取以下值。     /****************************************************************************** * Main ******************************************************************************/ int main(){      //enableGPIO(); //In case of using interrupt instead of polling      file = spi_init("/dev/spidev0.0"); //dev      who();      FXLS8471Q_Init();      FXLS8471Q_Calibration();      while(1)      {          checkData();          if (DataReady) // Is a new set of data ready?          {              buffer = (unsigned char *)spi_read(OUT_X_MSB_REG, 6, file); // Read data output registers 0x01-0x06              printf("AccData[0] = 0x%X \n AccData[1] = 0x%X \n AccData[2] = 0x%X \n AccData[3] = 0x%X \n AccData[4] = 0x%X \n AccData[5] = 0x%X \n", AccData[0], AccData[1], AccData[2], AccData[3], AccData[4], AccData[5]);              Xout_14_bit = ((short) (AccData[0] << 8 | AccData[1])) >> 2; // Compute 14-bit X-axis output value              Yout_14_bit = ((short) (AccData[2] << 8 | AccData[3])) >> 2; // Compute 14-bit Y-axis output value              Zout_14_bit = ((short) (AccData[4] << 8 | AccData[5])) >> 2; // Compute 14-bit Z-axis output value              Xout_g = ((float) Xout_14_bit) / SENSITIVITY_2G; // Compute X-axis output value in g's              Yout_g = ((float) Yout_14_bit) / SENSITIVITY_2G; // Compute Y-axis output value in g's              Zout_g = ((float) Zout_14_bit) / SENSITIVITY_2G; // Compute Z-axis output value in g's              //printf(" X = %d Y = %d Z = %d \n\n", AccData[0], AccData[2], AccData[4]);              //printf("Xval = %d Yval = %d Zval = %d \n", Xout_14_bit, Yout_14_bit, Zout_14_bit);              printf(" XG = %f YG = %f ZG = %f \n\n", Xout_g, Yout_g, Zout_g);              getchar();         }      }      close(file); } 初始化驱动程序   spi_init函数为驱动程序“/dev/spidev0.0”打开一个文件它作为参数从 main() 传递,然后读取 SPI 配置参数仅用于提供信息。最后初始化 spi_ioc_transfer 类型的 struct xfer 。   /********************************* SPIdev Init **********************************************/ int spi_init(char filename[40]) { int file; unsigned char mode, lsb, bits; unsigned int baudrate = 524250, speed; printf("SPI Init \n"); if ((file = open(filename,O_RDWR)) < 0) { printf("Failed to open the bus."); /* ERROR HANDLING; you can check errno to see what went wrong */ com_serial=0; exit(1); } if (ioctl(file, SPI_IOC_RD_MODE, &mode) < 0) { perror("SPI rd_mode"); return -1; } if (ioctl(file, SPI_IOC_RD_LSB_FIRST, &lsb) < 0) { perror("SPI rd_lsb_fist"); return -1; } if (ioctl(file, SPI_IOC_RD_BITS_PER_WORD, &bits) < 0) { perror("SPI bits_per_word"); return -1; } if (ioctl(file, SPI_IOC_RD_MAX_SPEED_HZ, &speed) < 0) { perror("SPI max_speed_hz"); return -1; } printf("%s: spi mode %d, %d bits %s per word, %d Hz max\n",filename, mode, bits, lsb ? "LSB first" : "MSB first", baudrate); xfer[0].len = 3; /* Length of command to write*/ xfer[0].cs_change = 0; /* Keep CS activated */ xfer[0].delay_usecs = 0; //delay in us xfer[0].speed_hz = 524250; //speed xfer[0].bits_per_word = 8; // bites per word 8 xfer[1].len = 4; /* Length of Data to read */ xfer[1].cs_change = 0; /* Keep CS activated */ xfer[1].delay_usecs = 0; xfer[1].speed_hz = 524250; xfer[1].bits_per_word = 8; printf("SPI Init Finished \n"); return file; }     Write   SPI 通信从片选引脚的下降沿开始。通过传输 R/W 位的 1 来启动写入操作。然后,8 位寄存器地址 ADDR[7:0] 被编码在第一个和第二个序列化字节中。要写入的数据从第三个序列化字节开始。位的顺序如下:   Byte 0: R/W, ADDR[6], ADDR[5], ADDR[4], ADDR[3], ADDR[2], ADDR[1], ADDR[0] Byte 1: ADDR[7], X, X, X, X, X, X, X Byte 2: DATA[7], DATA[6], DATA[5], DATA[4], DATA[3], DATA[2], DATA[1], DATA[0]   SPI 通信以片选引脚的下降沿完成。   您可以在下面看到数组buf保存目标地址和要传输的数据,然后将xfer结构配置为指向buf作为传输缓冲区,并将数据的长度设置为 2 + 数据大小(前 2 个字节用于分成 2 个字节的目标地址)。最后通过ioctl命令开始传输。   /******************** Write a byte to the FXLS8471Q *************************** * Byte 0: 1,ADDR[6],ADDR[5],ADDR[4],ADDR[3],ADDR[2],ADDR[1],ADDR[0] * Byte 1: ADDR[7],0,0,0,0,0,0,0 * Byte 2: DATA[7],DATA[6],DATA[5],DATA[4],DATA[3],DATA[2],DATA[1],DATA[0] ******************************************************************************/ void spi_write(int registerAddress, int nbytes, char data, int file) { unsigned char buf[32]; int status; memset(buf, 0, sizeof buf); buf[0] = 0x80 | registerAddress; buf[1] = 0x80 & registerAddress; buf[2] = data; xfer[0].tx_buf = (unsigned long)buf; xfer[0].len = nbytes + 2; /* Length of command to write*/ status = ioctl(file, SPI_IOC_MESSAGE(1), xfer); if (status < 0) { perror("SPI_IOC_MESSAGE"); return; } com_serial=1; failcount=0; }     下面是将值 0x3D 写入 CTRL_REG1 (0x2A) 的写入操作。     Read   类似地,通过传输 R/W 位的 0 来启动读取操作。然后,8 位寄存器地址 ADDR[7:0] 被编码在第一个和第二个序列化字节中。数据从 MISO 引脚读取(MSB 优先)。   在这种情况下,数组buf保存要读取的地址,而第三个字节只是要传输的虚拟字节。结构xfer保存传输缓冲区指针(在本例中为buf)和接收缓冲区(为AccData),还指定了要写入的命令的长度和要读取的数据的长度,最后使用ioctl调用执行读取命令。     /********************** Read a byte from the FXLS8471Q *********************** * Byte 0: 0,ADDR[6],ADDR[5],ADDR[4],ADDR[3],ADDR[2],ADDR[1],ADDR[0] * Byte 1: ADDR[7],0,0,0,0,0,0,0 * Byte 2: 0,0,0,0,0,0,0,0 ******************************************************************************/ char * spi_read(int registerAddress, int nbytes, int file) { int status; memset(buf, 0, sizeof buf); memset(AccData, 0, sizeof AccData); buf[0] = 0x7F & registerAddress; buf[1] = 0x80 & registerAddress; buf[2] = 0x00; xfer[0].tx_buf = (unsigned long)buf; xfer[0].len = 2; /* Length of command to write*/ xfer[1].rx_buf = (unsigned long) AccData; xfer[1].len = nbytes; /* Length of Data to read */ xfer[1].speed_hz = 524250; status = ioctl(file, SPI_IOC_MESSAGE(2), xfer); if (status < 0) { perror("SPI_IOC_MESSAGE"); return 0; } com_serial=1; failcount=0; return AccData; }     下面的屏幕截图显示了读取操作,该操作从 WHO_AM_I 寄存器(0x0D)读取正确的值 0x6A。     构建并运行SPI应用程序驱动程序   为了构建应用程序,请将源文件和 Makefile(附件)保存在主机上的任何位置,然后转到保存它们的目录。然后使用以下命令的 Make 文件通过 Meta-toolchain 构建应用程序。   构建应用程序驱动程序 $ cd $ source /opt/fsl-imx-x11/ /environment-setup-armv7a-vfp-neon-poky-linux-gnueabi $ make   将会在同一文件夹中创建一个spi_test文件,将此文件复制到 /home/root 中的根文件系统分区上的 sdcard 中。最后,在启动目标时执行应用程序。您必须看到以下输出。       结束语   本文档总结了创建 SPI 应用程序驱动程序的步骤。正如您所看到的,需要重建设备树和内核,为此需要安装 metatoolchain。应用程序驱动采用SPI内核驱动,其主要功能如下: 初始化SPI驱动程序 Read Write 初始化传感器 校准传感器 轮询数据就绪函数   我想说应用程序驱动程序的核心是读写功能,它们配置 SPI 内核驱动程序并以传感器所需的格式向其传递数据。   有关驱动程序的具体详细信息,请参阅附件 .zip该文件包含应用程序驱动程序代码、构建的 Makefile 和设备树源。   我希望您发现本文档有用。     卡洛斯
View full article
例: EEEPROM の使用S32K144 - SDK なし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この例では、SDK を使用せずに EEEPROM を使用する方法を示します。この例は、これと非常によく似ています 例:EEEPROMの使用S32K144  DFLASHパーティショニングはEEE_Init()関数によって行われます。MCUがすでにパーティション分割されている場合は、[デバイスのパーティションを保持する]チェックボックスをオンにしてください。 - 注 - PE Microスクリプトにバグがあり、このオプションによりpegdbserverがクラッシュします。 対象MCU:S32K144 デバッガ: OpenSDA Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  残念ながら、PE Microはそれを修正しません。こちらで詳細を確認できます。 https://community.nxp.com/message/1269942  Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jiri, 私はこのスレッドを通過し、最終的にPE Microにバグがあることを理解し、あなたは同じチケットを発行しました。 この問題を解決するための予想時間を知りたいのですが。親切に同じことを共有してください。 ラジュ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jiri! この「パーティション分割PE Microを保持する」バグはもう解決されていますか? それとも、他の実用的な解決策はありますか? S32DS 2.2をインストールし、完全に更新されました(すべてのPE Microも最新です)が、運が悪いです!(S32DS-18も同様) 2台のコンピューターで同じ問題がありますWin7 64ビット... OpenSDAとMultilink Universalの両方でテスト済み。 私は他のSDK EEPROMの例を使用しています。(トップポストで参照) 「メモリ範囲の保持」を使用すると、pegdbserverは常にクラッシュし、ターゲットを正常にロード/フラッシュできない場合を除き、すべてが機能しているように見えます。 OpenSDAを使用する場合: 「127.0.0.1」から127.0.0.1経由の接続。ポート「57803」から6224への接続 「127.0.0.1」から127.0.0.1経由の接続。ポート「57804」から7224への接続 FreeRTOS カーネルシンボルを検索しています... rsp_qC - qシンボル: 707843757272656E74544342 pxCurrentTCB が見つかりません。FreeRTOS 分析が有効になっていません。 ●Copyright 2018 P&Eマイクロコンピュータシステムズ株式会社 コマンドライン:C:\ NXP \ S32DS_ARM_v2.2 \ eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ pegdbserver_console-device=NXP_S32K1xx_S32K144F512M15 -startserver -singlesession -serverport=7224 -gdbmiport=6224 -interface=OPENSDA -sL OpenSDAが検出されました - Flashバージョン1.19 CMD>REの 初期化。 ターゲットはリセットされ、アクティブです。 CMD>CM C:\ NXP \ S32DS_ARM_v2.2 \ Eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ GDI \ P&E \ supportFiles_ARM \ NXP \ S32K1xx \ freescale_s32k144f512m15_pflash_dflash_eeprom.arp 初期化。 初期化。 ;version 1.05, 2019/12/03, Copyright 2019 P&E Microcomputer Systems, Inc.全著作権所有。www.pemicro.com [s32k144f512m15_x_pflash_dflash_eeprom_rev2] ;フリースケール・デバイス、S32K144F512M15、pflash_dflash_eeprom ;begin_cs デバイス=$00000000、長さ=$14001000、ram=$20000000 プログラミングアルゴリズムを読み込んでいます... 完成です。 CMD>PA 0204 開始。 完成です。 プログラミングシーケンスは、消去、ブランクチェック、プログラム、および検証{default}です。 CMD>VCの オブジェクト ファイル CRC-16 をデバイス範囲に確認しています ... ブロック00000000-000019EF ... 計算された CRC-16 がブロックと一致しません。(ファイル = $186D、デバイス = $9EBD) フラッシュの現在の内容がプログラムするアプリケーションと一致しません CMD>EM ~50秒間ここで立ち往生する。 消去前にデータ範囲$ 10000000-$ 1000FFFFを保持します... 完成です。 消去。 モジュールは消去されました。 リロードプログラミングアルゴリズム... 完成です。 保存されたデータ範囲$ 10000000-$ 1000FFFFの再プログラミング... 完成です。 ターゲット プロセッサとの通信中にエラーが発生しました - RESET を試してください。 CMD>PMの プログラミング。 オブジェクトファイルデータを処理しています... . プログラム。 ターゲット プロセッサとの通信中にエラーが発生しました - RESET を試してください。 CMD>VCの CRC-16 アルゴリズムの読み込み中にエラーが発生しました。 CRC-16 アルゴリズムの読み込み中にエラーが発生しました。 CRC-16 アルゴリズムの読み込み中にエラーが発生しました。 デバイスのフラッシュの確認エラー Flashのプログラミング中にエラーが発生しました。 PEmicro GDB Launch Failure : フラッシュ プログラミング中にエラーが発生しました。デバッグ セッションを終了しています。 pegdbserver がクラッシュしました... Multilink Universalの場合: 「127.0.0.1」から127.0.0.1経由の接続。ポート「57868」から6224への接続 「127.0.0.1」から127.0.0.1経由の接続。ポート「57869」から7224への接続 FreeRTOS カーネルシンボルを検索しています... rsp_qC - qシンボル: 707843757272656E74544342 pxCurrentTCB が見つかりません。FreeRTOS 分析が有効になっていません。 ●Copyright 2018 P&Eマイクロコンピュータシステムズ株式会社 コマンドライン:C:\ NXP \ S32DS_ARM_v2.2 \ eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ pegdbserver_console-device=NXP_S32K1xx_S32K144F512M15 -startserver -singlesession -serverport=7224 -gdbmiport=6224 -interface=USBMULTILIL P&E インターフェイスの検出 - Flash バージョン 10.42 CMD>REの 初期化。 ターゲットはリセットされ、アクティブです。 CMD>CM C:\ NXP \ S32DS_ARM_v2.2 \ Eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ GDI \ P&E \ supportFiles_ARM \ NXP \ S32K1xx \ freescale_s32k144f512m15_pflash_dflash_eeprom.arp 初期化。 初期化。 ;version 1.05, 2019/12/03, Copyright 2019 P&E Microcomputer Systems, Inc.全著作権所有。www.pemicro.com [s32k144f512m15_x_pflash_dflash_eeprom_rev2] ;フリースケール・デバイス、S32K144F512M15、pflash_dflash_eeprom ;begin_cs デバイス=$00000000、長さ=$14001000、ram=$20000000 プログラミングアルゴリズムを読み込んでいます... 完成です。 CMD>PA 0204 開始。 完成です。 プログラミングシーケンスは、消去、ブランクチェック、プログラム、および検証{default}です。 CMD>VCの オブジェクト ファイル CRC-16 をデバイス範囲に確認しています ... ブロック00000000-000019EF ... 計算された CRC-16 がブロックと一致しません。(ファイル = $186D、デバイス = $9EBD) フラッシュの現在の内容がプログラムするアプリケーションと一致しません CMD>EM ~25秒間ここで立ち往生します。 消去前にデータ範囲$ 10000000-$ 1000FFFFを保持します... 完成です。 消去。 モジュールは消去されました。 リロードプログラミングアルゴリズム... 完成です。 保存されたデータ範囲$ 10000000-$ 1000FFFFの再プログラミング... ここで~5秒間立ち往生します。 エラー!最後のコマンドが失敗しました。 エラーデバイスのフラッシュを消去します Flashのプログラミング中にエラーが発生しました。 PEmicro GDB Launch Failure : フラッシュ プログラミング中にエラーが発生しました。デバッグ セッションを終了しています。 pegdbserver がクラッシュしました... Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  遅れて申し訳ありません。まあ - このコメントされたコードについて特別なことは何もありません - 私はただそれをきれいにするのを忘れました(それはいくつかのテストのものからそこに残っています)。この例を作ったのはまだしばらくですが、私の記憶が正しければ、デフォルトではFlexRAMはフラッシュバックアップのない通常のRAMと同じように有効になっています。エミュレートされた EEPROM として設定した場合、FTFC->FSTAT->RAMRDY は 0 に設定されます。 この例に何か問題がありますか?私は今それをテストしました-そしてそれは期待どおりに働きます。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [email protected]‌, この例では、EEE_int()関数についてかなり混乱しています(EEPROMの使用S32K144 - SDKなし) 私の理解として(AN11983ドキュメントに基づく:S32K1xx EEPROM機能を使用): flexNVMをエミュレートされたEEPROM(4KB flexRAM)にDEPARTitionedした後 [ 3.1.1 S32K1xx プログラムパーティションコマンド ] : FTFC->FCCOB[3]=0x80;プログラムパーティションコマンド FTFC->FCCOB[2]=0x00;CSEc キー・サイズ FTFC->FCCOB[1]=0x00;セキュリティ フラグの拡張 - ユーザー キーの確認のみが無効 FTFC->FCCOB[0]=0x00;リセットシーケンスでのデータint EEERAMをロードします FTFC->FCCOB[7]=0x02;EEPROM データセット・サイズ・コード - 4k FTFC->FCCOB[6]=0x08;EEPROMバックアップサイズ - 64k FlexRAMをRAMとして使用する設定が必要です[ 3.2.1.1 FlexRAM RAMをRAMとして使用する ] : FTFC->FCCOB[3]=0x81;Progranコマンド FTFC->FCCOB[2]=0x00;EEEPROMとして使用されるFlexRAM FlexRAMをエミュレートされたEEPROMとして使用する場合(FlexRAMでデータの書き込み/読み取りが可能で、このデータは記録されます) しかし、あなたの例では、FlexRAMをRAMとして使用する設定がコメントアウトされています(したがって、データはまだ正常に書き込まれます)。 なぜですか?まずはよろしくお願いいたします。 Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、UARTが受信したデータをEEPROMに書き込む必要があります。説明書の書き方がわかりません。助けていただけますか。ありがとうございます。 /* * 主な実装: この 'C' サンプルを使用して、独自のアプリケーションを作成します * */ #include「S32K144.h」/* ペリフェラル宣言を含める S32K144 */ #include 「EEEPROM_io_control.h」 #define USER_DATA_SIZE 32u #define DISABLE_INTERRUPTS() __asm volatile ("cpsid i" : : : "memory"); #include "s32_core_cm4.h" void SOSC_init_8MHz(void) { SCG->SOSCDIV=0x00000101; //SOSCDIV1 & SOSCDIV2 =1: 分频/1 SCG->SOSCCFG=0x00000024; //Range=2: 选择晶体振荡器的中频范围 (SOSC 1MHz-8MHz) // HGO=0: 控制晶体振荡器的工作功率模式 --低功率模式 // EREFS=1: 外部参考选择OSC内部晶体振荡器 while(SCG->SOSCCSR & SCG_SOSCCSR_LK_MASK); //等待SOSCCSR解锁 寄存器解锁后才可写入 SCG->SOSCCSR=0x00000001; // LK=0: SOSCCSR可以写 // SOSCCM=0: 系统OSC时钟监视器被禁用 // SOSCEN=1: 启用系统OSC while(!(SCG->SOSCCSR & SCG_SOSCCSR_SOSCVLD_MASK)); //等待系统OSC成功启用,输出时钟有效 } void SPLL_init_160MHz(void) { while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); //等待SPLLCSR寄存器解锁 寄存器解锁后才可写入 SCG->SPLLCSR = 0x00000000; // LK=0: SPLLCSR可以写入 // SPLLEN=0: SPLL禁用 SCG->SPLLDIV = 0x00000302; // SPLLDIV1 分频/2; SPLLDIV2 分频/4 SCG->SPLLCFG = 0x00180000; // PREDIV=0: 锁相环参考时钟分频因子 // MULT=24: SPLL时钟频率的乘法因子 // SPLL_CLK = 8MHz / 1 * 40 / 2 = 160 MHz SPLL_CLK = (VCO_CLK)/2 VCO_CLK = SPLL_SOURCE/(PREDIV+1)*(MULT+16) while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); //等待SPLLCSR寄存器解锁 寄存器解锁后才可写入 SCG->SPLLCSR = 0x00000001; // LK=0: SPLLCSR可以写入 // SPLLCM=0: SPLL时钟监视器被禁用 // SPLLEN=1: 开启SPLL while(!(SCG->SPLLCSR & SCG_SPLLCSR_SPLLVLD_MASK)); //等待SPLL成功启用,输出时钟有效 } void NormalRUNmode_40MHz (void) { SCG->RCCR=SCG_RCCR_SCS(6) // SPLL做为系统时钟源 |SCG_RCCR_DIVCORE(0b11) // DIVCORE=3, 分频/4: Core clock = 160/4 MHz = 40 MHz |SCG_RCCR_DIVBUS(0b11) // DIVBUS=3, 分频/4: bus clock = 160/4 MHz = 40 MHz |SCG_RCCR_DIVSLOW(0b111); // DIVSLOW=7, 分频/8: SCG slow, flash clock= 160/8 MHz = 20MHZ while (((SCG->CSR & SCG_CSR_SCS_MASK) >> SCG_CSR_SCS_SHIFT ) != 6) {}//等待系统时钟源成功选择SPLL } void UART2_NVIC_init_IRQs(void) { S32_NVIC->ICPR[1] = 1 << (35 % 32); /* IRQ48-UART2: clr any pending IRQ*/ S32_NVIC->ISER[(uint32_t)(LPUART2_RxTx_IRQn) >> 5U] = (uint32_t)(1UL << ((uint32_t)(LPUART2_RxTx_IRQn) & (uint32_t)0x1FU)); S32_NVIC->IP[35] = 0x7; /* IRQ48-UART2: priority 7 of 0-15*/ } void UART2_PORT_init (void) { PCC->PCCn[PCC_PORTA_INDEX ] |= PCC_PCCn_CGC_MASK; //使能PTA端口时钟 PORTA->PCR[8] |= PORT_PCR_MUX(2); // Port A8: MUX = ALT2,UART2 RX PTA8复用为RX PORTA->PCR[9] |= PORT_PCR_MUX(2); // Port A9: MUX = ALT2,UART2 TX PTA9复用为TX } //波特率: 9600 , 1停止位, 8个数据位, 无奇偶校验 void UART2_init(void) { PCC->PCCn[PCC_LPUART2_INDEX] &= ~PCC_PCCn_CGC_MASK; //禁LPUART2时钟 PCC->PCCn[PCC_LPUART2_INDEX] |= PCC_PCCn_PCS(0b001) //选择时钟 Clock Src= 1 (SOSCDIV2_CLK) | PCC_PCCn_CGC_MASK; //使能LPUART2时钟 LPUART2->BAUD = 0x0F000034; //配置波特率为9600,1停止位 // SBR=52 (0x34): 波特率模数除数 = 8M/9600/16 = ~52 // OSR=15: 采样率 = 15+1=16 // SBNS=0: 1个停止位 // BOTHEDGE=0: 接收端使用波特率时钟上升沿采样输入数据 // M10=0: 接收机和发射机使用7位到9位的数据字符 // RESYNCDIS=0: 支持在接收数据字期间重新同步 // LBKDIE, RXEDGIE=0: 禁用LIN中断,RX收入边缘中断 LPUART2->CTRL=0x000C0000 | (1<<21); // RE=1,TE=1: 使能接收及发送 // PE=0: 无奇偶校验 // M7,M,R8T9,R9T8=0: 8个数据位 // DOZEEN=0: 睡眠模式下LPUART正常启用 // ORIE,NEIE,FEIE,PEIE,TIE,TCIE,ILIE,MA1IE,MA2IE=0,RIE=1: 接收中断 // TXINV=0: 传输数据不是反向的 // IDLCFG=0: 1个空闲字符 // ILT=0: 空闲字符位计数在开始位之后开始 } /********************************************************************* * 函数原型:void UART2_transmit_char(char send) * 功 能:UART2发送一个BYTE的数据 * 输入参数:send--需要发送的字符数据 * 返回参数:无 * * 其他说明: *********************************************************************/ void UART2_transmit_char(char send) { /* Function to Transmit single Char */ while((LPUART2->STAT & LPUART_STAT_TDRE_MASK)>>LPUART_STAT_TDRE_SHIFT==0); /* Wait for transmit buffer to be empty */ LPUART2->DATA=send; /* Send data */ } void UART2_transmit_string(文字 data_string[],int len) { uint32_t i=0; for(i=0;i { UART2_transmit_char(data_string[i]); } UART2_transmit_char('\n');/* 改行 */ UART2_transmit_char('\r');/*帰る*/ } ボイド_printf(チャー・data_string[]) { UART2_transmit_string(data_string,strlen(data_string)); UART2_transmit_char('\n');/* 改行 */ UART2_transmit_char('\r');/*帰る*/ } typedef 構造体 { フロートP1; フロートP2; フロートP3; フロートP4; チャーCH; ダブルD1; ダブルD2; 無署名の長いruntime_sec。 int i1; char user_data[USER_DATA_SIZE]; } eeerom_data_t; __attribute__ ((section(".eeeprom"))) eeerom_data_t eeerom_data; ボイドWDOG_disable(ボイド) { WDOG->CNT=0xD928C520;/*ウォッチドッグのロックを解除*/ WDOG->TOVAL=0x0000FFFF;/*最大タイムアウト値*/ WDOG->CS = 0x00002100;/*ウォッチドッグを無効にする*/ } int main(void) { WDOG_disable(); SOSC_init_8MHz();/* 8MHz xtalのシステム発振器を初期化 */ SPLL_init_160MHz();/* 8MHz SOSCでSPLLを160MHzに初期化 */ NormalRUNmode_40MHz();/* 初期化クロック: 80 MHz sysclk & core, 40 MHz bus, 20 MHz flash */ //DISABLE_INTERRUPTS(); UART2_init(); //配置UART2 波特率9600 1个停止数 无校验位 UART2_NVIC_init_IRQs(); //配置中断优先级 UART2_PORT_init (); //配置GPIO复用为TX、RX _printf(「やるだけだ!」); EEE_Init(); EEE_Write_int32(123456,&eeerom_data.i1); EEE_Write_ByteArray(char* ソース,char* ターゲット,unsigned int サイズ) EEE_Write_Byte(rev,&eeerom_data.ch); while(1) { } /* GHS と IAR の警告メッセージを回避するには: statement is unreachable*/ #if 定義(__ghs__) #pragma GHS Nowarning 111 #endif #if 定義 (__ICCARM__) #pragma diag_suppress=PE111 #endif 0を返します。 } ボイドLPUART2_RxTx_IRQHandler(ボイド) { チャーレヴ; if (LPUART2->STAT & 0x00200000) { rev = LPUART2->データ; EEE_Write_int32(123456,&eeerom_data.i1); EEE_Write_Byte(rev,&eeerom_data.ch); UART2_transmit_char(eeerom_data.i1); if((LPUART2->STAT & LPUART_STAT_TDRE_MASK)>>LPUART_STAT_TDRE_SHIFT!=0) //判断发射是否空闲 { LPUART2->DATA = 回転数; } } } Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> .elfをフラッシュしている場合、このオプション「デバイスのパーティションを保持する」を選択するにはどうすればよいですかコマンドラインを使用してS32K144ボードにファイルしますか? Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> パーティションの保持はうまくいくはずですが、PE Microのバグのために失敗しました。 PE Microのバグチケットを作成します。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  最後に-私は問題を再現することができます-このスレッドを続けていただきありがとうございます。私の場合、コードに変更がないことに気づいていませんでした。したがって、コードが変更されると、DFLASHは保持されますが、エミュレートされたEEPROMパーティションは削除され、保存されたデータは失われ>。PE Microでパーティションを使用しようとしましたが、何らかの理由でpegdbserverが常にクラッシュします。私はいくつかの回避策を見つけようとします。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, このドライブリンクからプロジェクトを見つけてください。 https://drive.google.com/open?id=1y6wSOSQxKFGRDP5BbzGReuhgXhI0t98n 設定の問題点やEEE_Init問題点があればお知らせください。 ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  まだプロジェクトが届いていません。もう一度送信してください - または、メモリ保存の問題に関連する新しいコミュニティスレッドを作成できます。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私は自分のプロジェクト@ " [email protected]" < [email protected] >, コメントループで添付ファイルを見つけることができないため、共有しました。 ぜひご覧いただき、ご意見をお聞かせください。 ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  まあ - それはまさにメモリ保持が使用されるものです - そして問題なく動作しています。プロジェクトには別の問題があるはずです。基本は、エミュレートされた EEPROM (FTFC->FCNFG->EEERDY = 1) としてパーティション化された EEERAM とメモリ保存です。一番上の例はあなたのために働いていますか?可能であれば、プロジェクトを私と共有していただけませんか?見ていきます。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> はい、私の設定の下に、 シーケンスは次のとおりです。 ►FlexRAM (14000000) の書き込み ►Reset  ►EEPROMにマッピングされた構造体変数を確認します。(14000000)-わかりました ►EVBボード上のOPENSDAによるアプリケーションビルドとフラッシュのモディティ。 ►Reset ・EEPROM(14000000)データにマッピングされた構造体変数が消去されることを確認します。-NOKの D-Flashレンジを保持しているのに、なぜデータが上書きされているのですか? 私の要件はそれです ユーザーが一度だけデータを構成した場合は、プログラムの更新(再フラッシュ)によってデータを消去しないでください。これは、構成データの更新ではなく、プログラムの更新だけです。 Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  DFLASHメモリを保持している場合(完全なDFLASHは0x10000000〜0x1000FFFF)、PE Microは保存されたデータを書き換えません。 また、[Emergency kinetisデバイス・リカバリ]がオフになっていること、およびPE Microを使用してパーティショニングを実行していないことも確認してください。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> あなたの情報をありがとう、 これで、FlexRAMで書き込みデータを取り戻すことができますが、別の問題があるのは、再フラッシュによって書き込まれたデータが消去されることです。 この問題を解決するために私は何をすべきですか? リンカファイルを変更する必要がありますか? リンカファイルのどの部分を変更する必要がありますか? Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> FTFC->FCNFG->EEERDYビットが1に設定されているか確認してからEEE_Writeしてください。あなたの設定では、標準RAMとして使用されるEEERAM領域のようです。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 再度尋ねるのは申し訳ありませんが、 どうぞ手を貸して下さい デバッガでワンストップ(パーティションなし、RAMデータ更新なし) 注:オフ:緊急時のKinetisデバイスリカバリ(未使用)、PE構成でパーティションを使用しません 関数が実行されEEE_Write RAMの場所を更新します 私は添付の例EEE_Init()と同じものを使用しました。 @starup RAM 構造の場所が更新されません ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私が述べたように、Init_EEPROMにはバグがあります(現在の例のバージョンは修正されています)。論理的なものの代わりにバイナリ&を使用してください。 if ((FTFC->FCNFG & FTFC_FCNFG_EEERDY_MASK) == 0U) 緊急時のKinetisデバイスのリカバリはメモリ保持よりも優先されるため、使用しないでください。また、パーティション分割は使用しないでください - それはInit_EEPROMによって行われます。 私にとっては、例の設定は問題なく機能しています。デバッグ設定: 新しく開始されたデバッグセッション - WDOG_Disable() の 1 ステップ後 (パーティショニングが実行された最後の 1 ステップの直後): データの確認もできます お役に立てば幸いです。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 以下の順序と構成を確認してください 1) PE の設定 2)UART出力 3) Firmware. メイン() Init_EEPROM() 問題: 書き込み-読み取りシーケンスOKの場合 読み取りシーケンス -NOK のみの場合 お願いします、あなたが私に何か見逃している何かを教えてもらえますか? Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ええと、それは場合によります。リンカファイルに特別なセクションがあり、たとえば例のような構造を使用している場合EEE_RAM_usage EEE_Readは必要ありません。現在のデータはすでに変数存在しています。 GENY Generation CANの運転経験がない方技術的には、S32K144リソースに収まる汎用Cコードであれば、それを使用できます。GENYドライバーとHW CANバスレイヤー間のインターフェースを実装する必要がありますが、これはチップ固有の部分です。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ご回答ありがとうございます、今日はすぐにシーケンスを確認させてください。 それは、スペクティファイメモリからコンタンを読み取るためのこの機能なのでしょうか? int EEE_Read_int32(int* ターゲット) { uint32_tデータ; 一方 ((FTFC->FSTAT & FTFC_FSTAT_CCIF_MASK) == 0){} データ = *(uint32_t *)ターゲット; データを返します。 } 重要な注意点::S32k144 MCUでGENY世代のCANドライブを使用することは可能ですか?OEMをサポートしているため、CAN通信をサポートするためのGENYジェネレーションCANドライブと診断ドライブをアプリケーションに含める必要があります。 私の質問は、S32K144 MCUでGENY Driveを使用することは可能ですか? ありがとうございます Sakthivel k Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 大丈夫なはずです。ただし、緊急時のKinetisリカバリが有効になっていないこと、および0x10000000から0x1000FFFFまでのメモリ範囲が保持されていることを確認してください。 EEE_Read関数は何をしますか?通常、特別な読み取りなしで利用可能なデータです。EEERAM エリア (0x14000000+) にマップされた変数は、初期化された変数のように動作します。起動時には、最後に保存された値があります。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 更新していただきありがとうございます。 リセットとは、両方の方法を意味します(EVBリセットボタンとPEによる再フラッシュ) 注:例:EEEPROMの使用S32K144で説明したように、PE設定を行いました  私のプログラムシーケンスを確認してください。 1.EEE_Write 2.EEE_Read (確認) 3. Stop Debug  4.EEE_Write機能にコメントを付ける 5.デバッガの実行 6.EEE_Read(Set Breakpoint)は、すでに書き込まれたデータが利用可能であることを確認しますか? このシーケンスには問題がありますか? 私のプロジェクトの要件、 CANからEEPROMへのユーザー設定、リセットが発生すると、アプリケーションはユーザーパラメータを読み取り、チェックプロセスのためにローカルに保存する必要があります。 上記のシーケンスは私の要件に適合しますか? ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  混乱させて申し訳ありません - 私はテストする時間があまりありません - 私はEEE_Init()に論理的なバイナリと演算子を入れました。EEE_Init() が機能していませんでした。添付ファイルでは例が更新されています。 Example EEE_Init() 関数を使用すると、データは自動的に EEERAM マップ構造体に読み込まれます。リセットとは、EVBのリセットボタンを押すか、PE Microで再点滅することを意味しますか?メモリ保持なしで再フラッシュすると、DFLASH領域が消去されます。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> @ジリ・クラル あなたの更新のためにThaks、 もう一つ質問があります。 FLEXRAMに書き込んだデータ、それらのデータがD-Flashのバックグラウンドプロセスにコピーされていることをどのように確認すればよいですか? FlexRAMへの書き込み後、RAMの場所に使用できないデータをリセットすると、 旧: EEE_Write_int32(123456,&eeerom_data.i1); リセット EEE_Read_init32(&eeprom_data); この場所のデータ FFFFFFFF Plase、書き込んだデータをどのように確認できるか教えていただけますか? ありがとうございます Sakthivel k 
View full article
LS1088ARDB/LS1088ARDB-PB - 如何更新 QSPI NOR 闪存中的复合固件映像 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 请按照以下步骤更新QSPI NOR 闪存中的复合固件映像。 qixis_reset从 QSPI NOR flash0 启动开发板, qixis_reset altbank从 QSPI NOR flash1 启动主板。 SF 探针 0:1 意味着将写入备用存储体。因此,如果开发板从 QSPI NOR flash0 启动,并且 SF 探针 0:1 在 U-Boot 提示符下输入,后面的命令将对QSPI NOR flash1进行编程。 获取复合固件镜像  LSDK 包括 QSPI NOR 闪存的预构建固件映像。LSDK 复合固件包括RCW+PB I、引导加载程序固件、DPAA1 FMan ucode、QE/uQE 固件、以太网 PHY 固件、DPAA2 MC 固件、DPAA2 DPL、DPAA2 DPC、设备树和 lsdk_linux_ .itb 图像。 请参阅 Layerscape 软件开发套件 文档 , 了解 图像的完整闪存布局 。  在 Linux 主机上,从 nxp.com 下载复合固件映像。  $ wget http://www.nxp.com/lgfiles/sdk/lsdk /firmware_ _uboot_qspiboot.img   例如: 对于LS1088ARDB:  $ wget http://www.nxp.com/lgfiles/sdk/lsdk1809/firmware_ls1088ardb_uboot_qspiboot.img  对于LS1088ARDB-PB:  $ wget https://www.nxp.com/lgfiles/sdk/lsdk1809/firmware_ls1088ardb_pb_uboot_qspiboot.img 烧录 复合固件 镜像 到 QSPI NOR 闪存 从 QSPI 启动LS1088ARDB/LS1088ARDB-PB 。确保开关设置为从 QSPI 启动。从 QSPI , SW1[1:8]+SW2[1]=0011_0001_X 从QSPI NOR flash0 启动: => qixis_reset 对于 LS1088ARDB,在启动日志中,您将看到: 主板:LS1088A-RDB,主板架构:V1,主板版本:C,从 QSPI:0 启动 对于 LS1088ARDB-PB,在启动日志中,您将看到: 主板:LS1088ARDB-PB,主板架构:V1,主板版本:A,从 QSPI:0 启动 合成的 固件 图像可以从 TFTP 服务器或大容量存储设备(SD、USB 或 SATA)加载到 LS1088ARDB/LS1088ARDB。 选项 1:从 TFTP 服务器加载图像   设置以太网连接 主板启动后,U-Boot 会打印出已启用的以太网接口列表。 DPMAC1@xgmii, DPMAC2@xgmii, DPMAC3@qsgmii, DPMAC4@qsgmii, DPMAC5@qsgmii, DPMAC6@qsgmii, DPMAC7@qsgmii, DPMAC8@qsgmii, DPMAC9@qsgmii, DPMAC10@qsgmii 将服务器 IP 地址设置为您已配置 TFTP 服务器的主机的 IP 地址。 => setenv serverip 将 ethact 和 ethprime 设置为连接到 TFTP 服务器的以太网接口。 看 LS1088ARDB/LS1088RDB-PB以太网端口映射 用于将机箱前面板上显示的以太网端口名称与 U-Boot 和 Linux 中的端口名称进行映射。 => setenv ethprime 例如: => setenv ethprime DPMAC3@qsgmii => setenv ethact 例如: => setenv ethact DPMAC3@qsgmii 设置电路板的IP地址。您可以设置静态IP地址,或者如果主板可以连接到DHCP服务器,您可以使用 dhcp 命令。 静态 IP 地址分配: => setenv ipaddr => setenv netmask 动态 IP 地址分配: => dhcp 保存设置。=>保存环境 检查电路板与 TFTP 服务器之间的连接。 => ping $serverip 使用DPMAC3@qsgmii设备 主机 192.168.1.1 是活跃的。   从 TFTP 服务器加载 U-Boot 镜像 编程 QSPI NOR flash1: => sf 探针 0:1 闪存 LS1088ARDB 或 LS1088ARDB-PB 复合固件映像: 对于LS1088ARDB: => tftp 0xa0000000 firmware_ls1088ardb_uboot_qspiboot.img => 打印文件大小 文件大小= 2351db0 对于LS1088ARDB-PB: => tftp 0xa0000000 firmware_ls1088ardb_pb_uboot_qspiboot.img =>打印文件大小 文件大小=2351db0 将复合固件映像编程到 QSPI NOR 闪存: => sf 擦除 0x0 +$filesize && sf 写入 0xa0000000 0x0 $filesize  从QSPI NOR flash1启动: => qixis_reset altbank 对于 LS1088ARDB,在启动日志中,您将看到: 主板:LS1088A-RDB,主板架构:V1,主板版本:C,从 QSPI 启动:1 对于 LS1088ARDB-PB,在启动日志中,您将看到: 主板:LS1088ARDB-PB,主板架构:V1,主板版本:A,从 QSPI 启动:1 确保已将安装有 LSDK Ubuntu 发行版的SD卡、USB闪存盘或SCSI硬盘插入到主板上,以便启动主板进入 Ubuntu 系统。如果 U-Boot 在大容量存储设备上未找到 LSDK,它将从存储在 QSPI NOR闪存中的 lsdk_linux_arm64_ tiny.itb 启动 TinyDistro。 选项二:从大容量存储设备(SD 卡、USB 设备或 SATA 硬盘)的分区加载图像 选择要使用的大容量存储设备。 => mmc 重新扫描 => mmc 信息 或者 => usb start => usb info 或者 => scsi scan => scsi info 可选 – 列出存储设备上的文件 => ls mmc 例如: => ls mmc 0:2 或者 => ls usb 例如: => ls usb 0:1 或者 => ls scsi 例如: => ls scsi 0:2 编程 QSPI NOR flash1: => sf 探针 0:1 从存储设备加载复合固件镜像 => load mmc 0:2 a0000000 => 打印文件大小 例如,对于 LS1088ARDB: => 加载 mmc 0:2 a0000000固件_ls1088ardb_uboot_qspiboot.img => 打印文件大小 文件大小= 235bd40 例如,对于 LS1088ARDB-PB: => 加载 mmc 0:2 a0000000 固件_ls1088ardb_pb_uboot_qspiboot.img => 打印文件大小 文件大小=2351db0 或者 => load usb 0:2 a0000000 => 打印文件大小 或者 => load scsi 0:2 a0000000 => 打印文件大小 将图像编程到 QSPI NOR 闪存:=> sf erase 0x0 +$filesize && sf write 0xa0000000 0x0 $filesize 从QSPI NOR flash1启动: => qixis_reset altbank 在启动日志中,您将看到: 对于 LS1088ARDB,在启动日志中,您将看到: 主板:LS1088A-RDB,主板架构:V1,主板版本:C,从 QSPI 启动:1 对于 LS1088ARDB-PB,在启动日志中,您将看到: 主板:LS1088ARDB-PB,主板架构:V1,主板版本:A,从 QSPI 启动:1 确保已将安装有 LSDK Ubuntu 发行版的SD卡、USB闪存盘或SCSI硬盘插入到主板上,以便启动主板进入 Ubuntu 系统。如果 U-Boot 在大容量存储设备上未找到 LSDK,它将从存储在 QSPI NOR闪存中的 lsdk_linux_arm64_ tiny.itb 启动 TinyDistro。 QorIQ LS1设备
View full article
MPC5777C MCAN SDK示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> # 自述文件 这是 MPC5777C 上的 mcan sdk 演示。 依次发送数据和接收数据。 未使用CANFD,使用扩展id。 Tx 和 Rx 都使用中断。 所有文档都在[mpc5777c_test_mcan/mpc5777c_test_mcan_Z7_0/Documentation]文件夹中。 ## 木板 MPC5777C-416DS + MPC57xx 主板 (SCH-27237 REV C) ## CAN PC客户端 PCAN视图 ## 编译器 powerpc-eabivle-gcc 和 S32 Design Studio for Power Architecture IDE ## MCAN MCAN0 ## Pin PC[19] - MCAN0 Tx PC[20] - MCAN0 Rx SDK S32_SDK_S32PA_EAR_1.8.0 ## 注意 1. 发送非4倍数的数据字节时出错 mcan_driver.c 中的 MCAN_StartSendData()。因此必须修改 MCAN_StartSendData()。 修改位置为mcan_driver.c中606至607行。 2. MCAN_DRV_InstallEventCallback() 尚未实现,必须添加。 ## 修订历史 版本 1.0.0 - 2018/12/19 - Jacob Peng - [email protected] * 修改:mcan_driver.c 中的 MCAN_StartSendData() * 添加:mcan_driver.c 中的 MCAN_DRV_InstallEventCallback() * 添加:演示应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> # 自述文件 这是 MPC5777C 上的 mcan sdk 演示。 依次发送数据和接收数据。 未使用CANFD,使用扩展id。 Tx 和 Rx 都使用中断。 所有文档都在[mpc5777c_test_mcan/mpc5777c_test_mcan_Z7_0/Documentation]文件夹中。 ## 木板 MPC5777C-416DS + MPC57xx 主板 (SCH-27237 REV C) ## CAN PC客户端 PCAN视图 ## 编译器 powerpc-eabivle-gcc 和 S32 Design Studio for Power Architecture IDE ## MCAN MCAN0 ## Pin PC[19] - MCAN0 Tx PC[20] - MCAN0 Rx SDK S32_SDK_S32PA_EAR_1.8.0 ## 注意 1. 发送非4倍数的数据字节时出错 mcan_driver.c 中的 MCAN_StartSendData()。因此必须修改 MCAN_StartSendData()。 修改位置为mcan_driver.c中606至607行。 2. MCAN_DRV_InstallEventCallback() 尚未实现,必须添加。 ## 修订历史 版本 1.0.0 - 2018/12/19 - Jacob Peng - [email protected] * 修改:mcan_driver.c 中的 MCAN_StartSendData() * 添加:mcan_driver.c 中的 MCAN_DRV_InstallEventCallback() * 添加:演示应用程序 概述
View full article
DPAA 中的速率限制 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 目前,TX 端仅支持通过 IOCTL 调用FM_PORT_IOC_SET_RATE_LIMIT 来实现速率限制。需要实现一个用户空间应用程序,用于打开 TX 端口的字符驱动接口并发出 IOCTL 调用。为了实现该限制,需要填充 rate_limit 结构体(下文会提到)。   例如:   fd =打开(“/ dev / fm0_port_tx5”, O_RDWR);   err = ioctl(fd, FM_PORT_IOC_SET_RATE_LIMIT, &fm_port);   传递给 IOCTL 的结构: /**************************************************************************//** @Description@@ 用于定义 Tx 速率限制的结构 (必须与 fm_port_ext.h 中定义的 struct t_FmPortRateLimit 匹配) *//***************************************************************************/ typedef struct ioc_fm_port_rate_limit_t{ uint16_t max_burst_size; /**< 以 KB 为单位的 Tx 端口,以帧为单位 用于离线解析端口。(注意 对于早期芯片突发大小 四舍五入为 1000 帧的倍数)。*/ uint32_t rate_limit; /**< 以 Kb/秒为单位的 Tx 端口,以帧/秒为单位的 离线解析端口。速率限制是指 数据速率(而不是线路速率)。*/ ioc_fm_port_dual_rate_limiter_scale_down rate_limit_divider; /**< 仅用于离线解析端口。无效 对于一些早期的芯片版本 */ } ioc_fm_port_rate_limit_t; 更多信息请参见下面的链接。 http://www.freescale.com/infocenter/index.jsp?topic=%2FQORIQSDK%2F2283674.html QorIQ LS1设备
View full article
蜂窝LDMOS终端 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Demo 恩智浦拥有适用于蜂窝基站的全系列高功率LDMOS驱动器和终端。我们的蜂窝LDMOS产品组合提供业界领先的性能,其强大高效的产品面向全球快速增长的频率和地区。此演示墙展示了覆盖575至2400 MHz所有蜂窝频段的全新器件。 产品 A2V09H300-04N 48 V LDMOS解决方案 • 频率 720-960 MHz • 8 dB OBO 下的最终 Doherty 性能 • 增益 19.5 dB • 效率 53% • 峰值功率 56 dBm • OM-780-4 封装 A2V07/09H400-04N 48 V LDMOS解决方案 • 频率 575–960 MHz • 8 dB OBO 下的最终 Doherty 性能 o 增益 18 dB 效率 53% • 峰值功率 57.5 dBm • OM-780-4 封装 A2V07/08/09H525-04N 48 V LDMOS 解决方案 • 频率 575–960 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 18.7 dB 效率 53% • 峰值功率 58.5 dBm • OM-1230-4L 封装 A2T23H200W23S 28 V LDMOS解决方案 • 频率 2300–2400 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 15.5 dB 效率 50% • 峰值功率 55 dBm • ACP-1230-4L2S 封装 A3T18H360W23S 28 V LDMOS解决方案 • 频率 1805–1880 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 17.5 dB 效率 53% • 峰值功率 55.5 dBm • ACP-1230-4L2S 封装 A3T21H450W23S 28 V LDMOS解决方案 • 频率 2110-2200 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 15.5 dB 效率 49.5% • 峰值功率 57.4 dBm • ACP-1230-4L2S 封装 通信基础设施
View full article
电机控制类:电机控制系统 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该视频展示了使用基于模型的设计工具箱开发的整体电机控制应用程序。我们将组装本课程开发的所有模块,并让电机在速度控制器的监督下运行。 我们还讨论了 FreeMASTER,您可以轻松为应用程序创建漂亮的控制面板,以及如何验证速度控制器和整体电机控制应用程序。 我们讨论: - 在 Simulink 中实现实时系统的速度控制器; - 电机和逆变器过流、过压和欠压保护; - 使用 HTML 和 Java Script 的 FreeMASTER 控制面板; - 对MPC5744P DevKit和 MotorGD DevKit 进行各种测试;   注:中国观众可以通过此链接在优酷上观看视频 注意:中国观众可以使用此链接观看YOUKU上的视频 (在 “我的视频” 中查看) 视频库
View full article
APF-DES-T1635 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将介绍飞思卡尔 MQX ™ RTOS。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将介绍飞思卡尔 MQX ™ RTOS。
View full article