Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
i.MX6SL EPDC SW reset <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 为什么要重置 EPDC 当 TCE 欠载反复发生时,EPDC 可能会锁定并且面板信号会继续。有可能导致面板损坏。 所附补丁提供了一种重置 EPDC 的方法,以切断信号并从锁定中恢复 EPDC。该补丁基于 L4.1.15。 对于TCE underrun问题,QoS补丁有明显改善。https://community.nxp.com/docs/DOC-343599
View full article
QorIQ_IFC_NAND_program_MP.pdf <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本文档介绍了如何通过外部 NAND 闪存编程器为 QorIQ IFC NAND 闪存接口制作量产 NAND 闪存映像。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本文档介绍了如何通过外部 NAND 闪存编程器为 QorIQ IFC NAND 闪存接口制作量产 NAND 闪存映像。 QorIQ LS2 设备
View full article
例MPC5606S-デモHIH-5030 + TFT CW210 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 詳細な説明: デモ・アプリケーションは、外部に接続された湿度からアナログ電圧を測定 センサーHIH-5030。取得された値と処理され、 MPC5606S-DEMO-V2ボードのTFTパネル。 アプリケーションは、単純なグラフィックのMPC5606Sに標準のグラフィックライブラリを使用します mc_base.c で管理される出力モジュールのみ。 ------------------------------------------------------------------------------ テストHW:MPC5606S-DEMO-V2 + HIH-5030 MCU:             PPC5606SEF OMLU 0M25V DD68391 XOTAC1003 Fsys:64MHzの Debugger:        Lauterbach Trace32 対象:internal_FLASH ターミナル:なし EVB接続:   完全なプロジェクトについては、次のリンクが表示されます。 Demo application MPC5606S-DEMO + LM75B + HIH-5030 + PCA8565 + GUI <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 詳細な説明: デモ・アプリケーションは、外部に接続された湿度からアナログ電圧を測定 センサーHIH-5030。取得された値と処理され、 MPC5606S-DEMO-V2ボードのTFTパネル。 アプリケーションは、単純なグラフィックのMPC5606Sに標準のグラフィックライブラリを使用します mc_base.c で管理される出力モジュールのみ。 ------------------------------------------------------------------------------ テストHW:MPC5606S-DEMO-V2 + HIH-5030 MCU:             PPC5606SEF OMLU 0M25V DD68391 XOTAC1003 Fsys:64MHzの Debugger:        Lauterbach Trace32 対象:internal_FLASH ターミナル:なし EVB接続:   完全なプロジェクトについては、次のリンクが表示されます。 Demo application MPC5606S-DEMO + LM75B + HIH-5030 + PCA8565 + GUI 全般
View full article
カーネルの起動方法 これは、カーネルを移植するのに役立つarm64カーネルのブートプロセスに関するドキュメントです。これには、ブートローダープロトコル、仮想メモリレイアウト、dtb、メモリ初期化、irq init、タイマー初期化などが含まれますので、詳細については添付ファイルをご覧ください。 vmlinux ELF vmlinux.lds.S 頭。S __create_page_tables __cpu_setup __primary_switch init_task IRQベクトル Start_kernel setup_arch paging_init bootmem_init psci_dt_init mm_init sched_init init_IRQ time_init rest_init 図は次のように参照できます。
View full article
Adeneo Embedded:为 Freescale i.MX6 构建 Qt 5.1 – Cuong Chou 撰写的白皮书 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 简介 目前还没有一个简单的程序来为 Freescale i.MX6 平台构建支持硬件加速的 Qt 5.1。本文档介绍了下载所有必备软件、构建 Qt 5.1 代码和示例以及验证硬件加速支持状态所需的步骤。 所需软件 1.     要开始构建,我们需要一些开发工具。此版本已在 LTIB(从 FreeScale 网站下载的 L3.0.35_4.0.0_130424_source.tar.gz)上验证,并在 Ubuntu 12.04 64 位 PC 上交叉编译。验证 LTIB 配置中是否启用了 gpu-viv-bin-mx6q 选项。 $ mkdir -p ~/BSP $ cd ~/BSP                    $ tar -xzvf L3.0.35_4.0.0_130424_source.tar.gz   2.     从 Qt 项目网站下载 Qt 5.1.1 源代码。创建一个构建目录并提取其中的内容。                    $ mkdir -p ~/Qt5 $ cd ~/Qt5 $ tar -xJvf qtbase-opensource-src-5.1.1.tar.xz 构建过程: 1.     进入Qt5构建目录,创建配置脚本如下: $ cd ~/Qt5/qt-everywhere-opensource-src-5.1.1/qtbase                   $ vi config.imx6 /bin/sh ./configure-opensource-confirm-license-make libs-device imx6 \ -设备选项 CROSS_COMPILE=\ /opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-\                  -no-pch -no-opengl -no-icu                  -no-c++11 \                  -opengl es2 \                  -eglfs \ -编译示例 \   2.     编辑设备配置以指定 BSP 的根文件系统。确保配置文件包含与下面列出的内容匹配的行 $ cd ~/Qt5/qt-everywhere-opensource-src-5.1.1/qtbase/mkspecs/devices/linux-imx6-g++                    $ vi qmake.conf ROOTFS=/首页/学员/BSP/L3.0.35_4.0.0_130424_source/ltib/rootfs QMAKE_INCDIR += $$ROOTFS/usr/include                    QMAKE_LIBDIR           += $$ROOTFS/usr/lib QMAKE_LFLAGS += -Wl,-rpath-link,$$ROOTFS/usr/lib   3.     运行配置脚本,并确保完成后 Qt5 具有 openGL ES 2.0 支持。请注意,当对脚本进行任何更改时,必须运行“make confclean”来删除以前的配置。                 $ ./config.imx6 这是 Qt 开源版本。 您有权根据宽 GNU 通用公共许可证 (LGPL) 版本 2.1 的条款使用该软件。 您已经接受了许可条款。 正在创建 qmake...                            ….                            …. 支持: 可访问性..........是                            ….                            OpenGL .................. yes (OpenGL ES 2.x)                             …. Qt 现已配置为构建。只需运行“make”。 一旦一切都构建完毕,您必须运行“make install”。 Qt 将安装到 /home/trainee/BSP/L3.0.35_4.0.0_130424_source/ltib/rootfs/usr/local/Qt5.1.1 在重新配置之前,请确保删除所有剩余的 之前的版本。   4.     进行构建。请注意,所有库都被复制到根文件系统中的相应目录中。 $ make all -j8 $INSTALL_ROOT=/home/trainee/BSP/L3.0.35_4.0.0_130424_source/ltib/rootfs/sudo 进行安装 5.     构建示例 $ cd 示例 $ make   6.     将用于演示 openGL ES 的示例(hellogl_es2)复制到根文件系统。                $ sudo cp opengl/hellogl_es2/hellogl_es2                /home/trainee/BSP/L3.0.35_4.0.0_130424_source/ltib/rootfs/ 验证硬件加速支持: 1.     启动主板并验证 galcore 模块是否已安装 $ cat /proc/devices | grep galcore               $ ls /dev/galcore   2.     设置所需的Qt环境 $ export QT_PLUGIN_PATH=/usr/local/Qt-5.1.1/plugins/ 3.     运行示例。您将在显示屏上看到一个旋转的 Qt 徽标。 $ cd /               $ ./hellogl_es 4.     运行 top 命令,它显示应用程序以非常低(0 – 1%)的 CPU 使用率运行。 $ 顶部                 PID PPID USER     STAT   VSZ %VSZ CPU       %CPU COMMAND                      2820 2809 根 S 188米 21.5 0 0.7./hellogl_es2 关于Adeneo Embedded Adeneo Embedded 为寻求使用高性能架构的嵌入式解决方案的世界一流专业知识的公司提供系统集成、设计、支持和培训服务。超过 10 年来,Adeneo Embedded 帮助处于各个开发阶段的客户打造出盈利能力强、功能丰富的产品,这些产品融合了基于 Android、嵌入式 Linux、Windows Embedded 或 Windows Mobile 操作系统的软件和硬件解决方案。与业界领先的硅片和软件供应商的密切合作使 Adeneo Embedded 能够将其经验应用于广泛的领域 为汽车、工业、医疗、多媒体、导航、网络、移动和无线市场提供嵌入式解决方案。Adeneo Embedded 拥有全球销售和支持网络,由北美和欧洲的工程办事处提供支持。 更多信息 有关 Adeneo Embedded 围绕 Windows Embedded 技术的能力、产品和服务的更多信息: 访问Adeneo Embedded 专用网站www.adeneo-embedded.com Ä Adeneo Embedded 一般销售联系方式[email protected] 如需当地联系方式 Ä欧洲,请联系 Jeremy Delicato [email protected] Ä美国,请联系 Mike Ruiz [email protected] 概述 回复:Adeneo Embedded:为 Freescale i.MX6 构建 Qt 5.1 – Cuong Chou 的白皮书 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 大家好, 您能为我提供 imx6 Sabre 的 LTIB 4.0.0 吗? 我对关注本教程很感兴趣,但飞思卡尔仅在您的网站上提供最新版本。 干杯 回复:Adeneo Embedded:为 Freescale i.MX6 构建 Qt 5.1 – Cuong Chou 的白皮书 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 感谢您的回复,上周,我使用了 4.00 ltib,没有出现任何错误! 回复:Adeneo Embedded:为 Freescale i.MX6 构建 Qt 5.1 – Cuong Chou 的白皮书 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 感谢您阅读本文。 我发现您遇到的问题可能有两个原因: 1.galcore模块未安装或未正确安装。 2. 您的内核版本与 Vivante GPU 库的版本不匹配。例如,如果您使用的是 Linux 3.0.354.1.0 ,您需要拥有 Vivante GPU 库4.1.0而不是版本 4.0.0。 希望这能帮到您。 回复:Adeneo Embedded:为 Freescale i.MX6 构建 Qt 5.1 – Cuong Chou 的白皮书 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好: 谢谢你的分享,但是按照你上面的步骤,没有错误,但是当我运行演示时    $ ./hellogl_es 看来 QIconvCodec::convertFromUnicode:使用 Latin-1 进行转换,iconv_open 失败 QIconvCodec::convertToUnicode:使用 Latin-1 进行转换,iconv_open 失败 分段错误 我不知道为什么,你能帮助我吗
View full article
S32K3循环唤醒电流异常 大家好 我需要实现一个功能:S32K3循环唤醒,然后扫描GPIO输入,看看MCU是否真的需要唤醒,否则继续进入低功耗模式。 经过测试,我发现芯片数据手册中的描述可能有误。我使用的手册是S32K3xx Data Sheet Rev.9 。手册上描述的平均电流为 159uA,而我的测试结果显示平均电流为 2700uA。 而芯片做不到这一点,RUN的周期时间只有0.2ms。 该芯片从唤醒事件到进入主控需要14ms的时间,这是在NXP手册中测试的< S32K3XX 的电源管理>。 我的测试结果显示平均电流为2700uA。 结果比手册中描述的要大得多,并且大部分电流都消耗在启动操作中。 数据手册里的数据是如何测试的? 能否提供实现的方法?最好有Demo提供。 BRs, 显龙 回复:S32K3循环唤醒电流异常 Hi xianlong, 请参阅S32K344_RTI_Cycl_Wkup_S32DS_3_4_RTD_LLD_2_0示例 https://community.nxp.com/t5/S32K-Knowledge-Base/S32K3-Low-Power-Management-AN-and-demos/ta-p/1527724 建议使用快速唤醒,并在Wkup_FastWkupBootAddress中检查IO状态,然后返回待机。不要调用__asm(“bl Reset_Handler”);初始化MCU然后进入主函数。否则无论是Fast wakeup还是Normal wakeup ,都需要等待14ms才能最终进入main函数。 此致, 罗宾 -------------------------------------------------------------------------------- 笔记: - 如果这篇文章回答了您的问题,请点击“标记正确”按钮。谢谢你! - 我们会关注上次发帖后七周的帖子,之后的回复将被忽略 如果您稍后有相关问题,请打开一个新线程并参考已关闭的线程。 --------------------------------------------------------------------------------
View full article
MCU Flash Loader Reference Manual Chapter 1 Introduction The MCU Flash Loader is a configurable flash programming utility that operates through serial communications on the MCU . It enables quick and easy programming of MCUs throughout the product lifecycle, including application development and final product manufacturing . The MCU Flashloader will be available in highly configurable binary or full source code form. Host-side command line and GUI tools can be used to communicate with the Flashloader. Users can use the host tools to upload and /or Or download the application code. Chapter 2 Flash Loader Protocol This section describes the general protocol for data packet transfer between the host and the MCU flash loader. The description includes data packet transfers of different transactions, such as commands without a data phase and commands with an incoming or outgoing data phase. Chapter 3 Flash Loader Packet Types The MCU Flash Loader device works in slave mode. All data communications are initiated by the host, which can be a PC host or an embedded host. The MCU Flash Loader device is the target machine that receives commands or data packets. All data communications between the host and the target machine are in packetized form. Chapter 4 MCU Flash Loader API All MCU Flash Loader command APIs follow the command packet format wrapped by framing packets as described in the previous sections. Chapter 5 Supported Peripherals This subsection describes the peripherals supported by the MCU Flash Loader. Chapter 6 External Memory Support This subsection describes the external memory devices supported by the MCU Flashloader. To properly use an external memory device, you must enable the device using the corresponding configuration file. The Flashloader cannot access an external memory device that is not enabled. The MCU Flashloader uses the memory identifier to enable a specific external memory device as shown below. Chapter 7 Security Utilities The MCU flash loader supports certain security utilities for easy generation of security related blocks. Note that the flash loader itself must first be signed in order to properly enable the security utilities. Industrial Technologies
View full article
S32K344-例で紹介した無料のTOSビルドエラー こんにちは! 私は現在S32K344のFreeRTOSプロジェクトに取り組んでいますが、ビルド構成でいくつかの問題に直面しています。参考のために画像を添付しました。 プラットフォーム:プラットフォーム3.5用S32DS FreeRTOSパッケージ:SW32K3_FreerTOS_11.1.0_5.0.0_CD1_D2409_DesignStudio_UpdateSite よろしくお願いします。 Re: S32K344-例で紹介した無料のTOSビルドエラーです S32K3 RTD 3.0.0をインストールする理由を教えてくださいSW32K3 FreeRTOS 11.1.0バージョン5.0.0コードドロップで? 以下を参照してS32K3 RTD 5.0.0をインストールしてください:方法:S32DS v3.5にS32K3 RTD 3.0.0をオフラインでインストールしてください 1. S32Design Studio 3.5をインストールします:S32DS.3.5_b220726_win32.x86_64.exe 2. S32DS: SW32_S32DS_3.5.13_D2407.zip のアップデート 13 をインストールします。 3. S32K3XX の開発パッケージ SW32K3_S32DS_3.5.13_D2407 をインストールします。 4. S32K396の開発パッケージをインストールします:SW32K39x_S32DS_3.5.13_D2407.zip 5. S32M276 の開発パッケージ SW32M2_S32DS_3.5.13_D2407 をインストールします。 6. このリリースのアップデートサイト(SW32K3_S32M27x_RTD_R21-11_5.0.0_D2410_DesignStudio_updatesite)をインストールします。 郵便番号 7. Install SW32K3_FreeRTOS_11.1.0_5.0.0_CD1_D2409_DesignStudio_updatesite.zip Re: S32K344-例で紹介した無料のTOSビルドエラーです S32DS プラットフォーム 3.5.14 RTDとFreeRTOSのパッケージをDSにインストールしました。インストールされたパッケージを示すスクリーンショットを添付しました。しかし、ビルドプロセス中にまだエラーが出ます。スクリーンショットにも添付しています。 Re: S32K344-例で紹介した無料のTOSビルドエラーです Hi SW32K3_freertos_11.1.0_5.0.0_cd1_d2409_Releasenotes.pdfの第2.2章インストレーション・デザイン・スタジオを読みましたか ? この FreeRTOS パッケージの前に、S32K3XXデバイス (com.nxp.s32ds.s32k3xx.update_3.5.13.20240726235844.zip、com.nxp.s32ds.s32k396.update_3.5.13.20240726233621.zip、com.nxp.s32ds.update_3.5.13.20240726233529.zip) をサポートする S32 Design Studio v3.5.13、S32 Design Studio for S32 Platform v3.5.13 および RTD パッケージ (SW32K3_S32M27x_RTD_R21-11_5.0.0_D2410_DesignStudio_updatesite.zip) がインストールされていることを確認してください。 Design Studio の S32K3XX RTD 更新プログラムは、次の手順でインストールする必要があります。 •ヘルプ->S32DS拡張機能と更新を開きます。次のウィンドウで「S32K3 Real-Time Drivers AUTOSAR 4.7 R21-11 Version 5.0.0」を選択し、「Install/Update」をクリックします。 Design Studio の FreeRTOS 更新は、次の手順でインストールする必要があります。 •ウィンドウを開く->環境設定。次のウィンドウで、[S32 Design Studio for S32 Platform -> S32DS Extensions and Updates] を選択し、[Add All] をクリックして、FreeRTOS の更新を含む zip アーカイブを選択します。 •ヘルプ->S32DS拡張機能と更新を開きます。次のウィンドウから、「FreeRTOS for S32K3 5.0.0」を選択します 次に、「インストール/アップデート」をクリックします 私のS32DS v3.5 + S32K3 RTD 5.0.0では、この問題は発生しません。 よろしくお願いいたします ロビン ------------------------------------------------------------------------------- 手記: - この投稿があなたの質問に答えた場合は、「ソリューションとして受け入れる」ボタンをクリックしてください。ありがとうございます! - 最後の投稿から7週間スレッドをフォローしていますが、その後の返信は無視されます 新しいスレッドを開き、後で関連する質問がある場合は、閉じたスレッドを参照してください。 -------------------------------------------------------------------------------
View full article
NFCリーダーライブラリに基づくPN7462 SPIMデモ作成ガイド <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> SPIMモジュールは、32ビットARM Cortex-M0ベースのNFCマイクロコントローラーであるPN7462が提供するマスターインターフェイスの1つであり、ユーザーはこのインターフェイスを使用して最大2つのSPIスレーブデバイスに接続できます。 NFCリーダーライブラリは、phHal/phhalSPIMでSPIMドライバコードを提供し、ユーザーは「PN7462AU_ex_phExHif」のデモで行われているのと同じように、アプリケーションで次のAPIを直接使用して単純なSPIトランザクションを実装できます。 このデモには、1つのNSSセッションで書き込み/読み取り操作が必要な一部のSPIまたはフラッシュデバイス(たとえば、次のようにOM27462上のSPIまたはフラッシュデバイス)には制限があります。 R202をはんだ付けし、3V3に接続して、nHoldピンがPORからプルアップしていることを確認してください。 以下は、このデバイスがサポートするコマンドセットの 1 つです。 このコマンドには、1 つの NSS セッションで 1 つの write(9F) 操作とそれに続く 3 つの読み取り操作が含まれていますが、次のように phhalSPIM_Transmit() と phhalSPIM_Receive() を使用して実装すると、次のようになります。 ステータス = phhalSPIM_Transmit(PH_EXHIF_HW_SPIM_SLAVE, PH_EXHIF_HW_SPIM_INIT_CRC, PH_EXHIF_HW_SPIM_APPEND_CRC, PH_EXHIF_HW_SPIM_CRC_INIT, 2, cmd_buf, PH_EXHIF_HW_SPIM_CRC_OFFSET);   ステータス = phhalSPIM_Receive(PH_EXHIF_HW_SPIM_SLAVE, PH_EXHIF_HW_SPIM_INIT_CRC, PH_EXHIF_HW_SPIM_CRC_INIT, data_length, dst, PH_EXHIF_HW_SPIM_CRC_OFFSET);" 次の結果が得られます。 期待: NSS   \__________________________/ MOSI     CMD A7-A0 MISOデータ       actual:                         NSS   \____________||______________/ MOSI     CMD A7-A0 MISOデータ したがって、書き込みと読み取りの間のパルスが問題であり、ここでは、SPIM_CONFIG_REGのNSS_VALビットとNSS_CONTROLビットの助けを借りて、NSSラインを手動で処理する必要があります。 したがって、コードは次のようになります。   Assert NSS   ステータス = phhalSPIM_Transmit(PH_EXHIF_HW_SPIM_SLAVE, PH_EXHIF_HW_SPIM_INIT_CRC, PH_EXHIF_HW_SPIM_APPEND_CRC, PH_EXHIF_HW_SPIM_CRC_INIT, 2, cmd_buf, PH_EXHIF_HW_SPIM_CRC_OFFSET);   ステータス = phhalSPIM_Receive(PH_EXHIF_HW_SPIM_SLAVE, PH_EXHIF_HW_SPIM_INIT_CRC, PH_EXHIF_HW_SPIM_CRC_INIT, data_length, dst, PH_EXHIF_HW_SPIM_CRC_OFFSET);"   De-assert NSS NSS のラインアサートおよびデアサート機能は、次のようにレジスタ ビット レベルの API を使用して実装できます。             PH_REG_SET_BIT(SPIM_CONFIG_REG, NSS_VAL);//de-assert NSS             PH_REG_SET_BIT(SPIM_CONFIG_REG, NSS_CTRL);             PH_REG_CLEAR_BIT(SPIM_CONFIG_REG, NSS_VAL);//assert NSS また、アプリケーションコードには次のヘッダーファイルを含めてください。 #include 「ph_Reg.h」 #include「PN7462AU/PN7462AU_spim.h」 phhalSPIM_Transmit() と phhalSPIM_Receive() は Rom ベースの関数であり、デフォルトでは Bit をクリアするNSS_CTRLに注意してください。ROM APIの動作を変更することはできませんが、幸いなことに、代わりにphhalSPIM_TransmitContinue()とphhalSPIM_ReceiveContinue()があります。したがって、最終的な解決策は次のようになります。 Assert NSS   ステータス= phhalSPIM_TransmitContinue(1, cmd_buf);   ステータス = phhalSPIM_ReceiveContinue(3, dst);   De-assert NSS これは、phhalSPIM_Transmit() と phhalSPIM_Receive() が役に立たないという意味ではなく、レジスタ ビット レベルの API を使用して SPIM モジュールを手動で初期化したくない場合に、SPI マスター インターフェイスの設定にも役立つためです。これら 2 つの機能を正しく動作させるために、書き込み/読み取りの長さに 1 バイトを使用することに注意してください。 したがって、擬似コード全体は次のようになります。 phhalSPIM_Init(PH_HW_SPIM_TIMEOUT) ; phhalSPIM_Configure(PH_HW_SPIM_SLAVE, PH_HW_SPIM_MSB_FIRST,                 \                                     PH_HW_SPIM_MODE, PH_HW_SPIM_BAUDRATE,  \                                     PH_HW_SPIM_NSSPULSE, PH_HW_SPIM_NSSPOL) ; ステータス = phhalSPIM_Transmit(PH_EXHIF_HW_SPIM_SLAVE, PH_EXHIF_HW_SPIM_INIT_CRC, PH_EXHIF_HW_SPIM_APPEND_CRC, PH_EXHIF_HW_SPIM_CRC_INIT, 1, cmd_buf, PH_EXHIF_HW_SPIM_CRC_OFFSET);   ステータス = phhalSPIM_Receive(PH_EXHIF_HW_SPIM_SLAVE, PH_EXHIF_HW_SPIM_INIT_CRC, PH_EXHIF_HW_SPIM_CRC_INIT, 1, dst, PH_EXHIF_HW_SPIM_CRC_OFFSET);" Assert NSS   ステータス= phhalSPIM_TransmitContinue(1, cmd_buf);   ステータス = phhalSPIM_ReceiveContinue(3, dst);   De-assert NSS 次の手順は、NFCリーダーライブラリに基づいて新しいプロジェクトを作成する方法を示しています。NFCリーダーライブラリのインポート方法については、 https://www.nxp.com/docs/en/user-guide/UM10883.pdf を参照してください。 1. NFCリーダーライブラリをインポートした後、新しいプロジェクトを作成します。 2. PN7462サポートパッケージをインストールした場合は、次のように表示されます。 3. NFCリーダーライブラリへのリンクを追加します。 4. プロジェクトでパスを追加し、NFC リーダー ライブラリを有効にします。 5. cr_startup.c を削除し、メインコードとヘッダーファイルを作成します。 6. ビルド結果: 7.Debug result: デモ版を入手するには、 https://community.nxp.com/docs/DOC-329745 のガイドからプライベートチケットを送信してください。 お役に立てれば幸いです。 よろしくお願いいたします。 Kan 接触型スマートカードリーダーIC NFCコントローラーソリューション NFCリーダー・ライブラリ
View full article
如何通过MPC5554的eTPU在PWM中插入deatime Hello, 我正在寻找解释如何通过 MPC5554 的 eTPU 插入 PWM 死区时间的文档。我确实读过一些文献,例如“PMSM 矢量控制,由 MPC5500 上的 eTPU 驱动”,但所有这些文献都使用 MC33937 来产生死区时间。所以我想问一下,如何通过设置 eTPU 来为 PWM 生成死区时间,而不使用任何预驱动器来生成死区时间?有没有什么 demo 可以让我学习一下?非常感谢! 艾米丽 回复:如何通过MPC5554的eTPU在PWM中插入deatime 多谢! 回复:如何通过MPC5554的eTPU在PWM中插入deatime 死区时间是PWMMAC功能的一个参数。它是由eTPU模块生成的。 关注 AN2969 - 使用交流电机控制 PWM eTPU 功能
View full article
如何:在 S32DS 中为 Vision 创建 A53 APEX2 和/或 ISP Linux 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 在本文档中,我们展示了使用新项目向导为 APEX2、ISP 或两者创建新应用程序项目的步骤。   1. 启动 S32DS for Vision 2.选择“S32DS应用程序项目” 3. 输入项目名称 4.选择“A53 APEX2/ISP Linux”处理器选项 5.单击“下一步” 6.选择您需要的APEX2/ISP选项。 一个。APEX2 编程 - 将为您的项目添加对 APEX2 应用程序的支持,对于任何新的 APEX2 项目,您都需要此功能 b.APEX2 可视化建模 - 将为您的 APEX2 程序图创建一个单独的项目,您需要它将您的 APEX2 图形图表连接在一起。但您也可以稍后单独创建它。必须使用另一个新项目向导单独创建 APEX 图表。 c.ISP 编程 - 将为您的项目添加对 ISP 应用程序的支持,对于任何新的 ISP 项目,您都需要它 d.ISP 可视化建模 - 将为您的 ISP 数据流图创建一个单独的项目,如果您计划使用现有的图表,则不需要这样做。这也可以稍后创建。 例如ISP 静态序列器 - 默认情况下,动态序列器是从图形图表中生成的,启用此功能可以生成静态序列器。这可以稍后在发射配置中设置/更改。 7.点击完成 8.您现在有一个项目或一组在 S32V234 上开发的项目。 Eclipse IDE 使用和设置 新建项目向导 - 项目管理和设置
View full article
iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 参考代码基于L4.14.78 GA1.0.0 BSP和M4 SDK 2.5.1。 它在 iMX8QXP MEK 板上进行了测试,并且也适用于 iMX8QM 板。 在L4.14.78 GA1.0.0 BSP中,MU_5用于M4 FreeRTOS和A35 Linux之间的RPMSG,SC_R_MU_5B是M4侧,SC_R_MU_5A是A35侧。在Linux端,我们使用“imx_rpmsg_tty.ko”进行此测试,此驱动程序在默认BSP中构建为模块。 情况1:M4唤醒A35。 将“L4.14.78_rpmsg_wakeup.patch”应用到Linux内核,此补丁将启用RPMSG唤醒功能。 “rpmsg_lite_pingpong_rtos.tar.bz2”是M4端测试代码。使用 Linux + M4 rpmsg 软件启动开发板后,运行以下测试命令: 1.在 A35 UART 端,运行以下命令: # 启用回显 > /sys/bus/platform/devices/90000000.rpmsg/power/wakeup     # insmod ./imx_rpmsg_tty.ko #/unit_tests/Remote_Processor_Messaging/mxc_mcc_tty_test.out/dev/ttyRPMSG30 115200 R 100 1000&     # echo deadbeaf > /dev/ttyRPMSG30 # echo mem > /sys/power/state 2. M4 UART端: 在Linux端运行“echo deadbeaf > /dev/ttyRPMSG30”后,会显示“Got ping...”并等待,运行A35挂起命令“echo mem > /sys/power/state”后,Linux挂起。然后从 M4 UART 端按“c”键,它将发送 RPMSG 到 A35 并唤醒 A35 Linux。 情况2:A35唤醒M4。 “power_mode_switch_rpmsg_wakeup.tar.bz2”是M4端测试代码,使用Linux + M4 rpmsg软件启动主板后,M4 UART将等待A35 RPMSG驱动程序准备就绪。测试命令: 1.在 A35 UART 端,运行以下命令以使 RPMSG 驱动程序准备就绪:     # insmod ./imx_rpmsg_tty.ko #/unit_tests/Remote_Processor_Messaging/mxc_mcc_tty_test.out/dev/ttyRPMSG30 115200 R 100 1000&     # echo deadbeaf > /dev/ttyRPMSG30 2. 现在 M4 UART 显示乒乓消息以确保 RPMSG 已准备就绪。现在M4处于电源开关菜单,在M4 UART中选择VLLS电源模式: 按 H 键进入:VLLS - 极低泄漏停止模式     ... ... 按 R 键选择 RPMSG。 按下 M4 UART 中的“R”键后,M4 将打印“发送 RPMSG 消息以唤醒”并进入挂起模式。 3.从A35端唤醒M4,向RPMSG发送任意数据:     # echo deadbeaf > /dev/ttyRPMSG30 M4恢复并再次进入电源开关菜单。 SDK文件夹中编译出两个M4示例代码: SDK/boards/mekmimx8qx/multicore_examples/rpmsg_lite_pingpong_rtos SDK/boards/mekmimx8qx/demo_apps/power_mode_switch i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 实际上,我目前使用的是 5.4.24 内核。驱动程序看起来非常不同,我没有在那里看到 MU ISR 代码。您有关于此内核的任何更新吗? 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,Siva Prabhakara , 我认为除了文件“arch/arm64/boot/dts/freescale/fsl-imx8qxp-mek.dts”中的修改之外,您仍然可以应用该补丁。iMX8MM 和 iMX8QXP 的 RPMSG 驱动程序相同。 但对于 M4 端,我没有代码来为 iMX8MM 生成 MU 中断。你需要自己实现它。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Qiang_FSL谢谢您的信息,由于 SCU 不可用并且补丁可能也不适用,您能否提供一些详细信息来启用 MU 中断,对吗? 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,Siva Prabhakara , iMX8MM与iMX8QXP不同,iMX8QXP中有SCU来管理所有唤醒事件,而iMX8MM没有。 但我认为唤醒源是相同的,如果在 Linux 进入挂起模式之前启用 MU 唤醒中断,那么 M4 可以使用此中断唤醒 A 核心。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 对于我之前关于 iMX8MM 的问题,任何帮助我都非常感谢。5.4.24 内核是否也需要 pathc L4.14.78_rpmsg_wakeup.patch? 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢李强 - Mpu Se 我会检查 谢谢! Vinoth S, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> SCFW API 几乎相同,因此您可以将其从 8QXP 复制到 8QM。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se 谢谢您的回复。 BOARD_EnablePadWakeup(sc_pad_t pad, bool enable, sc_pad_wakeup_t pad_wakeup_config) 仅适用于 IMX8QX,我正在寻找 IMX8QM 谢谢和问候, 维诺斯 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 在 M4 端,您只需调用 BOARD_EnablePadWakeup(sc_pad_t pad, bool enable, sc_pad_wakeup_t pad_wakeup_config) 即可设置 PIN 唤醒。 请注意,您应该确保 PIN 已分配给 M4 分区。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se 谢谢您的回复。如果可以的话,请提供一些使用sc_pad_set_wakeup 从 M4 唤醒 ACore 的示例代码。 此致, 维诺斯 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 是的,使用一个引脚作为唤醒源是最好的方式,例如,如果你将此引脚分配给M4分区,并调用sc_pad_set_wakeup()使其成为唤醒源,那么这个引脚可以用来唤醒M4;如果你将它分配给ACore分区,并用sc_pad_set_wakeup()设置唤醒源,那么这个引脚就可以唤醒ACore。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se, 我有电源键。是否可以在 Arm Cortex M4 代码端注册电源键唤醒(而不是按下,在代码中硬编码)? 谢谢和问候, 维诺斯 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se 请提供您的 Linux 源代码( imx_rpmsg.c和所需文件)补丁已应用 谢谢! Vinoth S, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, 我遵循了案例 1, 通常我可以发送和接收消息。但是,系统挂起后我无法唤醒。 # cat ./sys/devices/platform/imx_rpmsg/90100000.rpmsg1/power/wakeup 启用 # cat /proc/interrupts 105:         49          0          0          0          0          0     GICv3 217 Level     imx-mu-rpmsg 我正确地应用了补丁。在我的情况下使用 rpmsg1。 Linux Version: 4.14.98 OS: Android 9 谢谢和问候, Vinoth S, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4.14.98 BSP 已经添加了硬件分区,所以你不能直接在其上运行 2.5.1 SDK 代码,我认为你需要运行 SDK2.5.2 代码,待其工作完成后,再将相关的测试代码移植到其中。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se, 我正在关注相同的补丁。   M4 MCU 在此处停止( GETCHAR ),我无法提供输入   //qiang_debug添加开始 PRINTF("已 ping 通...\r\n"); while(1) { ch = GETCHAR(); 如果(ch =='c') 休息; } //qiang_debug add end   while (msg.DATA <= 100) { PRINTF("等待ping...\r\n"); rpmsg_queue_recv(my_rpmsg,my_queue,(unsigned long *)&remote_addr,(char *)&msg,sizeof(THE_MESSAGE),NULL,RL_BLOCK); 消息.数据++; //qiang_debug添加开始 PRINTF("已 ping 通...\r\n"); while(1) { ch = GETCHAR(); 如果(ch =='c') 休息; } //qiang_debug添加结束 PRINTF("正在发送 pong...\r\n"); rpmsg_lite_send(my_rpmsg,my_ept,remote_addr,(char *)&msg,sizeof(THE_MESSAGE),RL_BLOCK); } 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 正常情况下,当linux挂起时,如果保持中断启用,那么该中断可以用来唤醒linux。 您可以在 flex can devie tree 中添加如下字符串尝试一下: &flexcan1 { 唤醒源; }; 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢李强 - Mpu Se 请告诉我是否有任何 Flex CAN 可以从VMCU唤醒,而不是通过开/关按钮。 此致, Vinoth S, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> power_mode_switch应用程序不会将M4与Linux一起暂停,因此当M4继续运行时,您可以通过ON/OFF按钮唤醒Linux,也可以在Linux端使用命令“echo mem > /sys/power/state”单独暂停Linux。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 感谢Qiang Li - Mpu Se 的快速回复。 从你的观点来看,我知道power_mode_switch应用程序将能够唤醒系统。 我说得对吗? 此致, 维诺斯 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 对于已发布的 BSP,ACore 和 M4 核心将同时进入睡眠和唤醒状态。 为了测试 M4 工作但 ACore 暂停,您可以使用 Linux 发布的带有 RPMSG 设备树的 BSP,例如“fsl-imx8qxp-mek-rpmsg.dtb”,而在 M4 端,您可以使用“MEK-MIMX8QX-SDK\boards\mekmimx8qx\demo_apps\power_mode_switch”,然后如果您暂停 Linux,M4 将保持唤醒状态。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se Deep Sleep 在带有 IMX8QM-MEK 板的Android 9 Automotive中运行。但是我不知道如何从M4唤醒。目前,可以通过MEK板上的电源键(SW1)唤醒。 我无法继续您的后续程序。你能帮我找出唤醒的原因吗? 谢谢! 维诺斯 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Raluca Popa, 抱歉,暂无此耗电量数据。但我认为仅在 MEK 板上运行 M4 就差不多了。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang_FSL, 是否有一些可用的功耗测量数据?我更感兴趣的是 Cortex A 处于 DSM 中并且 M4 唤醒它的情况。 目前正在为 mini 开发类似的应用程序。我们注意到VDD_GPU_VPU_DRAM的功耗非常高( 8MMini:当 Cortex A 处于深度睡眠状态且 Cortex M 处于活动状态时,如何切断 GPU/VPU/DDR_PHY 功率)。 我想知道您是否分析过功耗,了解一些结论将会很有帮助。 谢谢! 拉卢卡 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 解决方案在这里, IMX8QM-MEK Linux和Android之间的电源管理差异 此致, VinothS. 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该文档不能用于 iMX8MQ,它没有 SCU 和硬件分区。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我正在尝试将此应用程序应用到我们的 i.MX8MQ 板上。使用: 内核版本 - 4.14.78 SDK 版本 - 2.7.0 RPMSG 共享基址为 0xb8000000。 我遇到的问题是没有唤醒选项。下列内容不存在: /sys/bus/platform/devices/b8000000.rpmsg/power/wakeup 知道为什么没有唤醒选项吗?这是需要添加的设备树选项吗? 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Qiang Li - Mpu Se , 醒来后我得到了这样的结果, mek_8q:/$ cat /sys/power/pm_wakeup_irq cat:/sys/power/pm_wakeup_irq:没有可用数据 此致, VinothS, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 感谢 Qiang Li 的快速回复 此致, VinothS, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi vinothkumar s 您可以使用以下命令获取唤醒原因,然后检查是否可以禁用它? 猫/系统/电源/pm_wakeup_irq 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢李强 - Mpu Se 是的,你说得对,我也在做同样的事情。 请告诉我是否有可能禁用自动唤醒功能。 ==> 回显内存 > /sys/power/state 系统唤醒 30 到 40 秒后进入深度睡眠。 是否可以在应用处理器端禁用自动唤醒? 此致, VinothS, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我认为您需要将 power_mode_switch 合并到 RVC M4 代码中。这不是一件简单的事情。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢李强 - Mpu Se 是的,我正在使用 RVC。默认情况下,M4 加载后视摄像头演示应用程序。 为了唤醒 A35,我是否需要从 M4 运行power_mode_switch应用程序? 那么,我需要在主板上刷新power_mode_switch ,对吗? 谢谢和问候, Vinoth S, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您不需要添加 Linux 单元测试,Android Auto 已经使用 RPMSG 在 A35 和 M4 之间进行通信。您可以从 Android 用户指南文档中查看“EVS/HVAC 功能”。 并且M4端应用程序也包含在Android BSP中,它是“android_build / vendor / nxp / mcu-sdk-auto”文件夹。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 感谢Qiang Li - Mpu Se的回复。 > 基本上,当 Linux/Android 内核进入挂起模式时,它可以设置唤醒源(保持某些唤醒中断启用),然后 M4 可以使用这些中断来唤醒 Linux/Android。 您能提供更多信息吗? 您能告诉我如何添加这个单元测试吗? 谢谢和问候, VinothS, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 基本上,当 Linux/Android 内核进入挂起模式时,它可以设置唤醒源(保持某些唤醒中断启用),然后 M4 可以使用这些中断来唤醒 Linux/Android。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢李强 - Mpu Se 我正在研究基于 Android 9 Automotive( android_p9.0.0_2.1.1-auto )的 IMX8QM-MEK。 内核版本 - 4.14.98 SDK 版本 - 2.5.1 我找不到单元测试, 请您提供一些信息以便在我的源代码中添加单元测试。 如果可以的话,请分享从 MCU M4 到 A35 的 CAN/GPIO 唤醒。 目前,我正在按照车辆文档进行电源管理, https://source.android.com/devices/automotive/power/power 谢谢和问候, VinothS, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 当您构建 NXP 发布的 BSP 作为用户指南时,单元测试应用程序将默认内置。 对于M4 SDK,下载SDK后,其中有用户指南文档,您可以按照它进行构建。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, 您能告诉我如何添加单元测试( /unit_tests/Remote_Processor_Messaging )吗? 以及如何使用 SDK 构建此演示应用程序? 谢谢和问候, VInothS, 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好,先生, 谢谢〜这是工作。 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 抱歉,我错过了启用 RPMSG 作为案例 1 的唤醒源的后续行,现在已更新。 启用回显 > /sys/bus/platform/devices/90000000.rpmsg/power/wakeup 回复:iMX8QXP:使用 RPMSG 唤醒 M4 和 A35 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好,先生, 我按照您的案例 1 步骤并可以通过测试命令,当我按下“c”键时,我的 imx8qxp mek A35 没有唤醒。 我需要重新配置内核或 u-boot 吗?
View full article
使用 mbed 的 FRDM-K64 USB 鼠标基本示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您将在这里找到 USB 鼠标项目的代码和项目文件。在这个项目中,USB 模块被配置为一个设备,移动光标的 X 和 Y 坐标是从加速度计测量中获得的。代码加载完成后,需要断开 USB 电缆与 J26 USB 连接器的连接,并将其插入 K64 USB 连接器。一旦设备枚举,您就可以将其用作空中鼠标。 左键和右键按钮尚未启用。 要编译项目,您必须导入以下库: USB鼠标.h FXOS8700Q.h 代码: #包括“mbed.h” #包括“USBMouse.h” #包括“FXOS8700Q.h” //FXOS8700Q 加速度计/磁力计的 I2C 线 FXOS8700Q_acc acc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); USBMouse鼠标; int main() { acc.启用();     float faX, faY, faZ;     int16_t x = 0;     int16_t y = 0; while(1)     { //acc.获取轴(acc_data);         acc.getX(&faX); acc.getY(&faY); x = 10*faX;         y = 10*faY;       鼠标.移动(x,y); 等待(0.001);     } } Freedom开发平台 Kinetis K系列MCU
View full article
如何在 i.MX51 WinCE6 上启用双显示 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 附加补丁可在 i.MX51 wince6 上启用双显示。它将设置 DI0 为主显示屏。 i.MX51 Windows
View full article
USB HID キーボード USB スタックのホスト 4.1.1 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, Processor ExpertとCodeWarrior 10.2が作成したTWR-K20デモキット用のプロジェクトがあります。 USBスタック4.1.1のProcessor Expert USB HIDキーボードホストを使用するのに問題がありますので、非 PE USB HID キーボード ホストをプロジェクトに追加するには、変更する必要があります。 誰かが私にそれを行う方法を教えてもらえますか?簡単な「PE」サンプルプロジェクトを提供し、PE以外のUSB HIDキーボードホストスタックを追加すると非常にありがたいです。 ご回答をよろしくお願い申し上げます。 スタンレー Kinetis KシリーズMCU USB
View full article
Linux 操作系统上的 iw61x mfg 模式设置 本文档分享如何将特定的 mfg sdk 移植到特定的 Linux 版本。然后本文档介绍如何配置labtool。mfg 工具用于无线产品射频测试和校准。 设置环境: 被测设备: 评估套件:iw612 QFN-IPA V2 驱动程序版本:Linux_5_15_32_IMX8_SD-UART-BT-IW612-18.99.1.p154.38-18.99.1.p154.38- MXM5X18364.p19_V1-MGPL 实验室工具包:MFG-AW-IW61X-MF-BRG-U16-WIN-X86-1.0.0.39.1-18.80.1.p154.38 o 主办方: 主机板:i.MX8mm-evk 操作系统:i.MX8mm Linux 5.15.32 演示映像 动手实践培训 OS LINUX 产品:WiFi IW6XX
View full article
自由特征矩阵 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> “这些自由板之间有什么区别?” 首先,让我们讨论一下既定事实。所有 Freedom 主板均具有以下特性: -OpenSDA调试接口 -引脚布局可接受任何 Arduino(R3)屏蔽 -多种电源选项(USB、电池或外部电源) -Cortex-M0+系列在低功耗运行方面表现出色!! 现在来看看花哨的东西: FRDM-K20D50M FRDM-KL25Z FRDM-KL26Z FRDM-KL05Z FRDM-KL02Z FRDM-KE027Z FRDM-KL46Z 内核 MHz Flash/RAM/FlexMem Cortex-M4 50 128K/16K/32K Cortex-M0+ 48 128K/16K Cortex-M0+ 48 128K/16K Cortex-M0+ 48 32K/4K Cortex-M0+ 48 32K/4K Cortex-M0+ 20 64K/4K Cortex-M0+ 48 256K/32K 典型工作电压 3.3v 3.3v 3.3v 3.3v 3.3v 5V 3.3v 电容滑动触摸传感板 :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: RGB LED :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: 光传感器 :笑脸检查: 3-Axis Acceleromter :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: :笑脸检查: Magnometer :笑脸检查: IrDA :笑脸检查: 热敏电阻 :笑脸检查: LCD显示器 :笑脸检查: 开关 2 支持mbed :笑脸检查: :笑脸检查: 标价(美元) $18.00 $12.95 $15.00 $12.95 $12.95 $12.95 $15.00 链接到产品页面 :smileyinfo: :smileyinfo: :smileyinfo: :smileyinfo: :smileyinfo: :smileyinfo: :smileyinfo: 如果您希望我向矩阵添加任何内容,请发布到下面的评论部分! 回复:自由特征矩阵 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi John, 自由板的细分很好。最好将其作为 PDF 格式以便快速参考。
View full article
通过 IPU 为 sii902x hdmi 驱动程序打补丁 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 默认 BSP 版本通过 i.MX6 Solo 中的 LCDIF 支持 sii902x hdmi 卡,但不支持通过 i.MX6 Dual/Quad/Plus 中的 IPU 显示接口支持它。该补丁为 i.MX6 Dual/Quad/Plus 的 Sii902x HDMI 视频驱动程序提供支持。 有用的文件: MCIMXHDMICARD:sii902x hdmi 卡示意图 MCIMX6Q-智能设备平台:i.MX6 Quad Sabre SDP 原理图 软件版本: Linux 3.14.52_1.1.0-ga 已验证平台: imx6q-sabresd imx6qp-sabresd 修补: 0001-视频-MXC-SII902X-添加-SII902X-HDMI-卡驱动程序.补丁 0002-arch-arm-boot-dts-add-sii902x-hdmi-卡-设备树-n.patch 功能: 支持通过uboot命令设置视频模式; 支持通过设备树设置视频模式; 支持HDMI热插拔; 支持多种视频模式并动态切换; 说明: 默认设置(不要在bootcmd中添加“video=”)如下: ---------------------------------------------------------------------------------------- ------------ /sys/class/graphics/fb0 DISP4 BG-DI1 U:1024x768p-60 ldb 2 层-FB-BG ------------ /sys/class/graphics/fb1 DISP4 FG 覆盖 2层-FB-FG ------------ /sys/class/graphics/fb2 DISP3 BG-DI1 高清:1920x1080p-60 HDMI接口 2 层-FB-BG ------------ /sys/class/graphics/fb3 DISP3 FG 覆盖 2层-FB-FG ------------ /sys/class/graphics/fb4 DISP3 BG sii902x_hdmi 1层FB ------------ /sys/class/graphics/fb5 DISP4 BG --------------------------------------------------------------------------------------- 如果希望sii902x_hdmi为fb0,可以向bootcmd添加以下参数: 视频=mxcfb0:dev=sii902x_hdmi,1920x1080M@60,if=RGB24 视频=mxcfb1:off 视频=mxcfb2:off 视频=mxcfb2:off consoleblank=0 风险: 有时sii902x无法读取hdmi edid信息,并且此帧缓冲区的模型将为NULL。此时,驱动程序将设置已在 imx6q-sabresd 和 imx6qp-sabresd 上调整的默认视频模式。默认视频模式如下: /* 1080p @ 56赫兹 */ 60, 1920, 1080, 7692, 100, 40, 30, 3, 10, 2, 0, FB_VMODE_NONINTERLACED, 0 用户可以根据自己的情况修改此默认设置。 特别是,对于 imx6qp-sabresd 使用 1080p@60 视频模式存在一些风险。在这种情况下,hdmi设备将没有有效的hdmi信号输出。例如, /* 1080p @ 60赫兹 */ 60、1920、1080、6734、148、88、36、4、44、4、FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT、FB_VMODE_NONINTERLACED、0 用户应根据硬件参数设置这些值。
View full article
[オープンスレッド]Udoo Neo + K32W/JN5189 ボーダールーター 境界ルーターデバイスは、Threadネットワーク内のノードの接続を提供し、wwwとしてネットワークに接続する可能性があります。 要件 ハードウェア K32W/JN5189 DK6ボード Udoo Neo Ethernetケーブル ソフトウェア MCUXpresso IDE v11.4.1 o newer. SDK 2.6.4.https://mcuxpresso.nxp.com/en/dashboard DK6プロダクションフラッシュプログラマーツール udoo_neo_os_nxp.img Docker イメージ ソフトウェアのセットアップ 1.ツールを使用してSDカードに udoo_neo_os_nxp.img をフラッシュします。任意のツールを使用して画像をフラッシュし、SDカードが正しくフォーマットされていることを確認してください。 2. SDKに付属のUSBドングル(K32W/JN5189)にot-rcp.binファイルを書き込みます。 \K32W061DK6ミドルウェア\ワイヤレス\openthread\openthread\output\k32w061\bin DK6Programmer.exe -V5 -s COM2 -p ot-rcp.bin OpenThread BorderRouter の実行 Udoo Neoボードをイーサネットケーブルに接続したら、新しい端子を開いて接続していることを確認します。ping 8.8.8.8 コマンドを入力できます。 IPV4をお持ちでない場合は、ボードをコンピューターに接続して、USBIPを使用できます。その後、ブラウザを開き、USB IPを使用してUdoo Neoページに入ることができます。SSH 接続の作成には、別のアドレスを使用できます。   Docker のインストール Docker イメージと Bash スクリプトを Udoo ボードにコピーします。 dockerをインストールします。 curl -sSl https://get.docker.com | sh; コマンドには時間がかかります Docker イメージが正常に読み込まれたことを確認します Docker コンテナを起動する   この場合、UDOO NEO Extendedにはイーサネットポートがないため、イーサネットへのUSBコンバーターがあります。OpenThread の例では IPV6 アドレスが必要です sudo ./run_br_container.sh; 注: OpenThread には IPV6 が必要なため、イーサネット接続が必要です。 ファイルに実行権限があることを確認してください。 次の図は、コンテナのプロセスを示しています。 このターミナルは実行中のDockerインスタンスであるため、使用できません。実行中にwpantundからログを出力します。   新しいターミナルを開き、コンテナIDを確認します   その後、ブラウザを開いてUDOO NeoのIPV4を検索すると、OpenThreadのWebページが表示されます。   左側でオプションフォームを選択すると、ネットワーク作成用の新しいページが表示されます。 次に、wpanctlのステータスを尋ねると、すべてのスレッド情報、アドレス、ネットワークのチャネルなどが表示されます。 sudo wpanctl status sudo wpanctl getprop Thread:OnMeshPrefixes Node A 同じ UDOO ターミナルで、境界ルーターの内部コミッショナーを開始し、事前共有キーを持つ Thread ノードがこのネットワークに参加できるようにします。 sudo wpanctl commissioner start; sudo wpanctl commissioner joiner-add “*” 120 J01NME; Node B REEDの例を使用して別のJN5189 / K32Wをフラッシュし、次のコマンドを入力して有効にし、Threadネットワークに参加させます。 \K32W061DK6\ボード\k32w061dk6\wireless_examples\openthread\reed ifconfig up joiner start J01NME 参加プロセスが完了したら、次のコマンドを入力して境界ルーターに接続します。 thread start 下の画像を見ると、ノードBコマンドに気づくでしょう。 外部インターネット64:ff9b::808:808にpingを実行して、インターネットにアクセスできることを確認します。 詳細については、SDK ドキュメントに含まれている OpenThread デモ アプリケーション ユーザーガイドをご覧ください。"\K32W061DK6\docs\wireless\OpenThread" 11 章 境界ルーターアプリケーションシナリオの実行 よろしくお願いします。 Mario JN Threadソフトウェア
View full article
KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> KL系列ROM BOOTLOADER启动问题分析及解决方案 1 摘要 客户在使用闪存容量大于128K的Kinetis芯片KL43、KL27、KL17时发现,如果代码从ROM启动而不是从闪存启动,那么关于LPUART和I2C的应用程序代码将运行异常,特别是当使用PTA1作为LPUART接收引脚时,UART发送功能没有问题,但是当PTA1接收到UART数据时,代码将运行到异常区域并且无法返回,代码将崩溃。该问题仅发生在从 ROM 启动时,并且在 BCA 0x3d0 地址中启用 uart 和 i2c 外设,BCA 区域中的 uart 外设启用将影响应用程序 PTA1 uart 接收,BCA 区域中的 i2c 外设启用将影响应用程序代码中的 i2c0 模块。如果从闪存启动或从 ROM 启动,但在 BCA 0x3d0 地址中禁用 uart 和 I2C 外设,则应用程序代码中的一切工作正常。 本文档将以UART问题为例,详细介绍问题的复现、测试、分析以及解决方案。从 ROM 引导加载程序启动时,I2C 问题是一样的。 2 问题复现与分析 测试准备: IDE: KDS 和IAR 硬件: FRDM-KL43 软件: 3.0和KSDK2.0_FRDM-KL43 我们主要通过两种方式复现uart接收问题:基于KSDK1.3.0的全新KDS PE项目和官方最新示例代码包KSDK2.0_FRDM-KL43。 2.1 新建kds项目中问题复现 由于KSDK2.0仍然不支持KDS IDE中的PE功能,因此我们使用KSDK1.3.0作为PE KSDK来创建新的KDS项目。 2.1.1创建 KDS KL43 项目 新的KDS PE项目创建非常简单,这里只描述与从ROM启动后UART问题相关的重点。首先新建一个基于KSDK1.3.0的KDS PE工程,选择芯片为MKL43Z256VLH4,MCG模式选择为HIRC,配置核心时钟为48Mhz,总线时钟为24Mhz。 然后添加uart模块fls_debug_console进行测试,因为FRDM_KL43使用的是PTA1和PTA2,所以console模块可以像下图这样配置,模块配置完成后,按代码生成按钮生成工程代码。 然后在文件main.c中添加简单的代码测试的主要功能: 字符a; 为了(;;) { PRINTF( “测试!\n” ); a=GETCHAR(); 放置字符(a); } 代码功能为:将“test!”打印到PC的COM口,然后等待uart数据,如果接收到数据,则将接收到的数据打印回去,并再次运行此循环函数。   2.1.2添加 BCA 区域 从KL43参考手册中我们可以得知,BCA起始地址是0X3C0: KDS新建的工程在链接文件中没有包含BCA区域,所以需要在链接文件中添加这个区域,并在启动文件里自己添加BCA数据。 2.1.2.1 将BCA flash划分为.ld文件文件 在ProcessorExpert.ld内存区域中添加以下代码来定义BCA起始闪存地址和闪存大小: m_bca(RX):起源 = 0x000003C0,长度 = 0x00000040 然后在SECTIONS区域添加以下代码: .bca: {              . = ALIGN(4); KEEP(*(.bca)) /* 引导加载程序配置区域 (BCA) */              . = ALIGN(4);            } > m_bca 最后ld文件如下: 对于ld文件的保护,我们可以将ld文件的属性改为只读,那么生成后这个文件就不会再变成初始文件了。 2.1.2.2 在启动文件中添加BCA数据 添加BCA flash区域划分代码后,我们还需要定义在启动文件中的BCA数据: /* BCA 区域 */ .部分 .bca,“一个”                 .ascii "kcfg"                            // [00:03] tag 。长的0xFFFFFFFF // [07:04] crc起始地址 。长的0xFFFFFFFF // [0B:08] crc字节计数 。长的0xFFFFFFFF // [0F:0C] crcExpectedValue 。字节0x03 // [10] 启用外围设备 I2C 和 UART 。字节0xFF // [11] i2c从设备地址 。短的3000 // [13:12] 外设检测超时(毫秒) 。短的0xFFFF // [15:14] usbVid 。短的0xFFFF // [17:16] usbPid 。长的0xFFFFFFFF // [1B:18] usbStringsPointer 。字节0xFF // [1C] 时钟标志 。字节0xFF // [1D] 时钟分频器 。字节0xFF // [1E] 启动标志 。字节0xFF // [1F] 保留*/ 更多细节请参考此图: 到目前为止,我们已经创建了包含BCA区域的FRDM-KL43测试项目,并从可在闪存地址0X40D中修改的ROM启动,0X40D中的位6-7是BOOTSRC_SEL位,00从闪存启动,10和11从ROM启动,有关FOPT的更多详细信息,请参阅表6-2。参考手册中的Flash选项寄存器(FTFA_FOPT)定义。 2.1.3测试结果与分析 现在,列出从 ROM 或闪存启动后的测试结果,并从 ROM 启动但启用外围设备。 启动自: ROM外设 测试结果 闪存 XX OK ROM 0XFF,启用所有 否,UART无法接收 0X08,启用USB 是的,UART可以接收 0X04,启用SPI 是的,UART可以接收 0X02,启用I2C 是的,UART可以接收 0X01,启用LPUART 否,UART无法接收 从测试结果来看,我们可以重现该问题。UART接收问题只发生在从ROM启动并且LPUART启用时,当我们用调试器运行它并逐步测试它时,我们可以发现在PTA1接收到数据后,代码将运行到异常区域。 注意: 调试此代码时,请选择JLINK作为调试器,因为P&E工具在调试时会自动保护KDS IDE中的FOPT区域,代码仍将从闪存运行,因此如果客户使用P&E工具,他们会发现PTA1仍然可以接收数据,这不是真正的结果,但是JLINK不会保护KDS IDE中的FOPT区域,它可以反映真实的结果。 使用JLINK作为调试器后,我们发现PTA1获取数据或者拉低后,代码会进入如下异常区域: 我们可以得到代码运行到defaultISR,并显示USB_IRQHander,但这并不是真正的USB_IRQHander,只是由于PC异常引起的。一般是由于缺少中断服务函数造成的。 现在,我们测试NVIC数据来检查哪个模块中断导致了这个问题,下图是通过启用ROM BCA区域中的LPUART和I2C外设得到的结果。 我们可以发现,即使我们从ROM启动后没有进行CPU和外设初始化,仍然有外设被启用,那么启用了什么中断呢?摘自 ARM Cortex-M0.pdf 权威指南: NVIC_ISER = 0x40000100,Vector46=IRQ30 和vector24=IRQ8 已启用,从 ROM 启动后不应禁用它。现在检查KL43参考手册,表3-2。中断向量分配,我们可以得到I2C0和PORTA中断已启用。 在进行CPU和外设初始化之前检查PORTA寄存器,PTA1启用端口中断,并在下降沿选择标志和中断。 这可以告诉我们为什么PTA1引脚存在uart接收数据的问题或者在PTA1上给出下降沿会运行不正常,因为默认情况下,即使我们将PTA1配置为uart接收功能,但代码没有清除IRQ和NVIC寄存器,当信号发生在PTA1引脚上时,它会引起PORTA中断,但是我们没有添加PORTA中断ISR功能,它对我们也没有用,那么PC就不知道去哪里了,所以它会运行不正常,进入默认ISR,并且无法恢复。如果你有兴趣,你可以添加PORTA_IRQHandler函数,你会发现代码会运行到这个函数。 2.2 KSDK2.0中的问题复现IAR项目 测试项目:SDK_2.0_FRDM-KL43Z\boards\frdmkl43z\demo_apps\hello_world 测试官方项目只是为了确保它确实是芯片硬件功能的问题,而不仅仅是 KDS 中新生成的代码的问题。 因为IAR IDE会保护0X400区域,那么我们如果要修改FOPT,就需要修改.board,首先添加 –enable_config_write。   然后修改startup_MKL43Z.s中的FOPT: __FlashConfig         DCD 0xFFFFFFFF         DCD 0xFFFFFFFF         DCD 0xFFFFFFFF         DCD 0xFFFFFFFE   ; 0xFFFF3FFE   __FlashConfig_End 因为BCA外设区域默认为0XFF,它启用所有外设,我们不需要单独定义BCA区域。 为了得到真实的测试结果,我们在主函数中添加了NVIC和PORTA_PCR1寄存器的printf代码, PRINTF("PORTA_PCR1=%X \n",PORTA->PCR[1]); PRINTF("NVIC=%X \n", NVIC->ICER[0U]); 并将修改后的KSDK示例代码下载到芯片中,经过测试,得到这样的结果: 你好世界。 PORTA_PCR1=A0205 NVIC=40000100 和新建工程从ROM启动后的结果一样,PORTA中断和I2C中断都开启,导致PTA1接收数据问题。 3 解决方案及测试结果 3.1 解决方案 从第二章的测试分析中,我们可以得知UART接收问题是由于从ROM启动后PORT中断和NVIC被启用引起的,这应该是由于退出ROM时,ROM忘记禁用它造成的。我们还可以从KL43参考手册第211页找到一些描述: 因此,如果客户想要解决这个问题,为了避免应用程序进入异常区域,我们可以像这样在应用程序代码中禁用NVIC,I2C NVIC是相同的: NVIC_DisableIRQ(8);//禁用I2C0中断 NVIC_DisableIRQ(30); //禁用PTA中断 3.2 测试结果 从添加 NVIC I2C 和 PORTA 禁用代码后的测试结果来看,uart 可以正常工作,如果您有兴趣测试,I2C 也可以正常工作。 4 结论 当客户使用闪存容量大于128K的Kinetis芯片KL43、KL27和KL17,并希望从ROM启动并在BCA区域启用LPUART和I2C时,请在应用程序代码中添加NVIC I2C(IRQ8)和PORTA(IRQ30)禁用代码: NVIC_DisableIRQ(8);//禁用I2C0中断 NVIC_DisableIRQ(30); //禁用PTA中断 到目前为止,我刚刚发现闪存大小超过 128K 的 KL43、KL27 和 KL17 存在此问题,其他具有 ROM 引导加载程序的 Kinetis 芯片没有此问题。 Kinetis L系列MCU 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 正确的是,需要禁用 NVIC 源和引脚源,以避免应用程序使用这些功能时可能发生意外中断的风险。 此致 Mark 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好,我收到了一位顾客的以下评论。是否可以审查 DOC-332389 的可能更新? **** 我实际上不同意 DOC-332389 中显示的解决方案,因为他们使用了过于简化的测试用例。他们提出的阻止 LPUART Rx 引脚的端口引脚中断的解决方案如下: NVIC_DisableIRQ(30); //禁用PTA中断   这会转到 NVIC 并禁用端口 A 上所有引脚的中断。如果您想从端口 A 上的任何其他引脚获取中断,则必须返回 NVIC 并重新启用 PTA 中断,这将允许相同的未处理中断发生。由于我们试图避免特定端口引脚(PTA1)上出现意外中断,我认为更好的解决方案是执行以下操作,其中“gpio”是修改 PTA1 所需要的: PORT_HAL_SetPinIntMode(gpioGetPortPtr(gpio),gpio->pinIdx,GpioIrq_Never); ****** 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 鲍勃 谢谢,听起来您的经历比文档中预期的更详细。 因此,几周后,当我开始在工厂中对需要 USB 编程(在新部件上)的基于 KL27 的部件进行新生产运行时,我将重新审视这个问题 - USB-MSD 加载器将被编程用于后续操作,因此 ROM 错误不会产生巨大的影响,但它将提供一个机会来更好地了解它的真实行为。 此致 Mark 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 马克·布彻写道: 您是否测试过在检测到 ROM BOOT LOADER 运行后命令重置的代码? RCM_FM = 0是默认值,因此可以被任何其他强制 BOOT 设置(例如 BOOTCFG0 或 FOPT[7])覆盖,这表明这将导致永远循环......   我还决定不命令软件重置,因为最初的重置原因(例如。由于看门狗的原因)丢失(由 SW 复位代替)。 Yes I tested.  It is what I found that worked after several experiments.  There are sections in the datasheet that don't seem to reflect how the part really works.  In booting FOPT et.al. appear to set internal latches that are not cleared until after the reset vector has been taken.  There is also the bug that if booting from the USB HID the bootloader will not reset via the software command from the PC.  It gets stuck in endless cycle of enumeration. To see if the part was reset by the Watchdog look at RCM_SSRS0 the 'Sticky' register. The datasheet values reflect Power Up (Vcc Rise), not all reset sources.  This can be seen in the SPIN bit.  SPIN indicates if there was a Reset Pin reset, clearing this bit at reset makes no sense, which is what the datasheet default value indicates.  I look at Sticky SWDOG to log it in my code; I have a complex timer/DMA/LPUART thing going on and am not convinced that the LPUART does not lock up at times leading the watchdog to bark.  I've not seen anyone else complaining about LPUART issues. 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,鲍勃 您是否测试过在检测到 ROM BOOT LOADER 运行后命令重置的代码? RCM_FM = 0是默认值,因此可以被任何其他强制 BOOT 设置(例如 BOOTCFG0 或 FOPT[7])覆盖,这表明这将导致永久循环: - ROM 加载器(例如由于 BOOTCGG0) - 软件重置 - ROM 加载器(例如由于 BOOTCGG0) - 软件重置 .. 我没有测试过这个但这正是我所期望的。 我还决定不命令软件重置,因为最初的重置原因(例如。由于看门狗的原因)丢失(由 SW 复位代替)。 以下是我在 uTasker 项目中使用的解决方法 - 请注意,可能的待处理中断也被清除(而不仅仅是屏蔽),因为意外的待处理外围设备中断也是启用外围设备时应用程序故障的根源,而这在“分析和解决方案”文档中是缺失的。 此致 Mark #if defined KINETIS_KL && defined ROM_BOOTLOADER && defined BOOTLOADER_ERRATA // {125}     if ((RCM_MR & (RCM_MR_BOOTROM_BOOT_FROM_ROM_BOOTCFG0 | RCM_MR_BOOTROM_BOOT_FROM_ROM_FOPT7)) != 0) { // if the reset was via the ROM loader         // PORT clock gate, pin mux and peripheral registers are not reset to default values on ROM exit         //         PORTA_PCR1 = PORT_PS_UP_ENABLE;                                  // set LPUAR0, I2C0 and SPI0 ports back to defaults         PORTA_PCR2 = PORT_PS_UP_ENABLE;         PORTB_PCR0 = PORT_PS_UP_ENABLE;         PORTB_PCR1 = PORT_PS_UP_ENABLE;         PORTC_PCR4 = PORT_PS_UP_ENABLE;         PORTC_PCR5 = PORT_PS_UP_ENABLE;         PORTC_PCR6 = PORT_PS_UP_ENABLE;         PORTC_PCR7 = PORT_PS_UP_ENABLE;         POWER_DOWN(5, (SIM_SCGC5_PORTA | SIM_SCGC5_PORTB | SIM_SCGC5_PORTC | SIM_SCGC5_PORTD | SIM_SCGC5_PORTE | SIM_SCGC5_LPUART0)); // power down ports and LPUART0         POWER_DOWN(4, (SIM_SCGC4_I2C0 | SIM_SCGC4_SPI0));                // power down I2C0 and SPI0         SIM_SOPT2 = 0;                                                   // set default LPUART0 clock source         IRQ0_31_CER = 0xffffffff;                                        // disable and clear all possible pending interrupts         IRQ32_63_CER = 0xffffffff;         IRQ64_95_CER = 0xffffffff;         IRQ0_31_CPR = 0xffffffff;         IRQ32_63_CPR = 0xffffffff;         IRQ64_95_CPR = 0xffffffff;         // UART cannot work at 57600 baudrate with default core clock (not worked around)         //         // COP is disabled in ROM and it cannot be re-enabled by an application that is jumped to from ROM         // - cannot be worked around; advise to use FTFL_FOPT_BOOTSRC_SEL_FLASH together with FTFL_FOPT_BOOTPIN_OPT_ENABLE         //     } #endif‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢你的分析。 归结为在任何代码开始时清除 NVIC,以及完全初始化所使用的任何外围设备的良好卫生习惯。 将其放在vectors.c中reset_init()的开头(或代码的等效名称)。   /* * 《ROM BOOTLOADER启动问题分析及解决方案》 * 在 KL 系列中”表示 KL43/27/17 引导加载程序存在错误。非线性矢量控制寄存器 * 如果通过有缺陷的引导加载程序到达这里,则需要清除。    */ NVIC_ICER |= ~0UL; NVIC_ICPR |= ~0UL; 要按照 Rastislav Pavlanin 的建议进行重置,无需任何框架或类似的东西,获取数据表重置值,请执行以下操作:   /* * RCM_MR 指示启动源,启动源保持设置 *直到下一次系统复位或软件可以写入逻辑1到 * 清除相应的模式位。当任一位被设置时 * NMI 输入被禁用,向量表被重新定位到 * ROM 基地址位于 0x1C00_0000。这些位应该通过 * 在执行 Flash 或    * SRAM.    * * 强制重置以清除 ROM 中的所有内容 * 引导加载程序确实如此,所以我们确定我们已经重置了数据表    * values.    * * 此方法适用于存在缺陷的 KL43/27/17 引导加载程序,因为 * 描述于:《从 * KL 系列中的 ROM BOOTLOADER”。    */   if( 0U != (RCM_MR & RCM_MR_BOOTROM_MASK) )     { RCM_MR = RCM_MR_BOOTROM_MASK; /* 清除指示通过 ROM 启动引导程序的位 */ RCM_FM = 0U; /* 下次复位时从 Flash 而不是 ROM 启动 */ SCB_AIRCR = (SCB_AIRCR_VECTKEY(0x05FAU) | SCB_AIRCR_SYSRESETREQ_MASK); /* 强制软件复位 */     } 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jingjing, 它是在 .h 中定义的内联函数文件 静态内联 rcm_boot_rom_config_t RCM_GetBootRomSource(RCM_Type *base) {     return (rcm_boot_rom_config_t)((base->MR & RCM_MR_BOOTROM_MASK) >> RCM_MR_BOOTROM_SHIFT); } 此致问候 R. 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Rastislav, 感谢您的评论。 是的,你是对的,它花费了我很多时间来寻找根本问题,确实需要在从 ROM 启动后重置 NVIC。 您能告诉我您使用的函数 RCM_GetBootRomSource 来自哪里吗?是来自KSDK2.0吗API还是需要客户自己写?我检查了fsl_rcm.c,并没有找到这个API。 顺祝商祺! Jingjing 回复:KL系列ROM BOOTLOADER启动问题分析及解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jingjing, 看起来您的代码在退出 ROM 引导加载程序代码后将向量表地址保留在 ROM 内存位置。这意味着如果您的应用程序代码程序想要进入中断处理程序(LPUART 或 I2C),NVIC(中断控制器)将从 ROM 获取向量并进入可能的 ROM 中断处理程序,该处理程序在此 ROM 代码位置处停顿。 此解决方案可能会有所帮助: 在您的应用程序代码中检查启动源(如果基于 ROM)。如果是,则清除启动源标志并生成系统重置,例如(在 SDK 2.0 中) 如果(RCM_GetBootRomSource(RCM)&kRCM_BootRomBoth)   { RCM_ClearBootRomSource(RCM);     NVIC_SystemReset();   } 这会将 VTOR(中断向量表)重新分配到闪存中。希望对您有所帮助。 此致问候 R.
View full article