Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
MPC5606B_FlexCAN.rar <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ハードウェア:TRK-MPC560XB、 IDE:codewarrior 10.6; 外部水晶発振器:8M システムコア周波数:64MHz FlexCANバウテレート:250bps BUF[1]割り込み、バスオフ割り込み、エラー割り込みイネーブル;   QQ:511437685 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ハードウェア:TRK-MPC560XB、 IDE:codewarrior 10.6; 外部水晶発振器:8M システムコア周波数:64MHz FlexCANバウテレート:250bps BUF[1]割り込み、バスオフ割り込み、エラー割り込みイネーブル;   QQ:511437685 全般
View full article
示例 MPC5748G PIT ISR GHS614 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 示例配置 DRUN 模式,PLL 运行频率为 160MHz。 * 它还包含用于中断演示的基本 PIT 和 INTC 驱动程序。 * 当 PIT 计时器超时时,PIT 会触发一个中断,该中断由 PIT 中断提供 * 服务例程。 * ------------------------------------------------------------------------------ * 测试硬件:X - PC5748G - MB (rev C) * MCU:          PPC5748GMMN6A * Maskset:    1N81M * 系统频率:160 MHz * Debugger:    Lauterbach Trace32 *               * 目标:Internal_FLASH * ******************************************************************************** <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 示例配置 DRUN 模式,PLL 运行频率为 160MHz。 * 它还包含用于中断演示的基本 PIT 和 INTC 驱动程序。 * 当 PIT 计时器超时时,PIT 会触发一个中断,该中断由 PIT 中断提供 * 服务例程。 * ------------------------------------------------------------------------------ * 测试硬件:X - PC5748G - MB (rev C) * MCU:          PPC5748GMMN6A * Maskset:    1N81M * 系统频率:160 MHz * Debugger:    Lauterbach Trace32 *               * 目标:Internal_FLASH * ******************************************************************************** 概述
View full article
S32K144 上的 SEGGER 实时传输 (RTT) 移植(S32DS for ARM v2.2 + S32K1xx SDK RTM 3.0) 大家好, SEGGER 的实时传输( RTT ) 是嵌入式应用中用于交互式用户 I/O的新技术。它结合了 SWO 和半主机的优点,性能非常高。 与目标应用程序的双向通信 传输速度非常快,不影响实时行为 使用调试通道进行通信 无需额外的硬件或目标引脚 任何 J-Link 型号均支持 由 ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33 和 Renesas RX100/200/600 支持 提供功能和自由的完整实现代码 在这里,我想与大家分享附件中的S32K144上的SEGGER RTT移植项目。 软件要求:S32DS for ARM v2.2 IDE + S32K1xx SDK RTM 3.0 硬件要求:S32K144-EVB + J-LINK调试器 对于SEGGER RTT,可以参考: 关于实时转账: https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/   RTT SEGGER Wiki: https://wiki.segger.com/RTT#SEGGER_RTT_TerminalOut.28.29;   在 Eclipse 中使用 Segger 实时终端(RTT) : https://mcuoneclipse.com/2015/07/07/using-segger-real-time-terminal-rtt-with-eclipse/ 希望这个项目能够帮助您,并享受 RTT! 最良好的问候, Enwei Hu.
View full article
MQX タイマーの使用 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 皆さん、こんにちは。 場合によっては、MQXで短い割り込みを処理する必要がある場合や、遅延を小さくする必要があります。MQXは、秒やミリ秒ではなく、ティックで時間を測定します。 このドキュメントでは、遅延または割り込みを小さくする方法、つまりティックを小さくするためにBSP_ALARM_FREQUENCYを編集する方法について説明します。さらに、このドキュメントでは、MQX hwtimer ドライバーの使用方法も示しています。 気に入っていただければ幸いです。 よろしくお願いいたします。 Soledad Godinez テクニカルサポートエンジニア
View full article
FRDM-MCXN947:USB1_HSの切断検出 Hi, お聞きしたいのですが、OTG USBを使用してUSB1_HS使用しているFRDM-MCXN947ボードでは、このUSBの接続と切断を検出しようとしています。接続検出は正常に機能するため、この機能を使用します。 usb_device_notification_t USB_State(usb_device_struct_t *pDeviceHandle) { usb_device_ehci_state_struct_t *ehciState; ehciState = (usb_device_ehci_state_struct_t *)(pDeviceHandle->controllerHandle); if (0U != (ehciState->registerBase->OTGSC & USBHS_OTGSC_BSV_MASK)) { return kUSB_DeviceNotifyAttach; } return kUSB_DeviceNotifyDetach; } しかし、何らかの理由でこのUSB OTGレジスタは切断を正しく検出しません。他のレジスタを使用して切断を検出することは可能ですか? アドバイスをいただきありがとうございます! ジョン・アダムズ MCXN 日時:FRDM-MCXN947:USB1_HSの切断の検出 こんにちは@John_Adams、 デタッチ検出を有効にする方法については、次のコミュニティ投稿を参照してください: RT1020(デバイス)とホストコンピュータ間のUSBケーブルの取り付けと取り外しを検出する最良の方法は何ですか? - NXP Community RT1020を参照していますが、MCXN947についても同じプロセスです。 BR, Edwin.
View full article
使用 LittleFS 作为 SD 卡文件系统 LittleFS 是用于微控制器内部闪存和外部 NOR 闪存的文件系统。由于它比传统的 FAT 文件系统更适合小型嵌入式系统,因此越来越多的人在他们的项目中使用它。那么除了NOR/NAND flash类型的存储设备之外,LittleFS还能用在SD卡上吗?好像也还可以。本文将利用i.mxRT1050 SDK中的littlefs_shell和sdcard_fatfs demo工程,新建一个littefs_shell工程,用于读写SD卡。 本次实验采用MCUXpresso IDE v11.7,SDK采用2.13版本。littleFS文件系统只有4个文件,其中lfs.h中显示的当前版本是littleFS 2.5。 第一步当然是将SD相关的代码添加到littlefs_shell项目里。最简单的方法是导入另一个 sdcard_fatfs 项目并将所有 sdmmc 目录复制到我们的项目中。然后复制 sdmmc_config.c以及 /board 目录中的 sdmmc_config.h 和 fsl_usdhc.c以及 /drivers 目录中的 fsl_usdhc.h。 第二步是修改程序,包括SD卡检测和初始化,添加从LittleFS到SD驱动程序的桥梁。将以下代码添加到littlefs_shell.c。 extern sd_card_t m_sdCard; status_t sdcardWaitCardInsert(void) { BOARD_SD_Config(&m_sdCard, NULL, BOARD_SDMMC_SD_HOST_IRQ_PRIORITY, NULL); /* SD host init function */ if (SD_HostInit(&m_sdCard) != kStatus_Success) { PRINTF("\r\nSD host init fail\r\n"); return kStatus_Fail; } /* wait card insert */ if (SD_PollingCardInsert(&m_sdCard, kSD_Inserted) == kStatus_Success) { PRINTF("\r\nCard inserted.\r\n"); /* power off card */ SD_SetCardPower(&m_sdCard, false); /* power on the card */ SD_SetCardPower(&m_sdCard, true); // SdMmc_Init(); } else { PRINTF("\r\nCard detect fail.\r\n"); return kStatus_Fail; } return kStatus_Success; } status_t sd_disk_initialize() { static bool isCardInitialized = false; /* demostrate the normal flow of card re-initialization. If re-initialization is not neccessary, return RES_OK directly will be fine */ if(isCardInitialized) { SD_Deinit(&m_sdCard); } if (kStatus_Success != SD_Init(&m_sdCard)) { SD_Deinit(&m_sdCard); memset(&m_sdCard, 0U, sizeof(m_sdCard)); return kStatus_Fail; } isCardInitialized = true; return kStatus_Success; } 在main()函数中添加如下代码 if (sdcardWaitCardInsert() != kStatus_Success) { return -1; } status = sd_disk_initialize(); 接下来创建两个新的c文件,lfs_sdmmc.c和 lfs_sdmmc_bridge.c。调用顺序为littlefs->lfs_sdmmc.c->lfs_sdmmc_bridge.c->fsl_sd.c。lfs_sdmmc.c和 lfs_sdmmc_bridge.c充当连接 LITTLEFS 和 SD 上层驱动程序的中间层。其中必须要注意的一点就是地址的映射。littleFS给出的地址是块地址+偏移地址。参见下图。这是由‘mount’命令发出的读取命令。块地址指的是SD中被擦除扇区的地址。读写操作采用SD的最小读写块地址(BLOCK),如下所述。因此,在 lfs_sdmmc.c 中,littleFS给出的地址首先被转换为字节地址。然后在lfs_sdmmc_bridge.c中将SD卡读写地址改为BLOCK地址。由于目前大多数 SD 卡都超过 4GB,因此字节地址需要一个 64 位变量。 最后,最重要的一步是littleFS参数配置。peripherals.c 中有一个结构体 LittlsFS_config,其中不仅包含了SD卡的操作函数,还包含了读写扇区和缓存大小。这个结构的设置至关重要。如果设置不好,不仅会影响性能,还会引起运行错误。在设置之前我们先来介绍一下SD卡和littleFS的一些通用概念。 SD卡的存储单位是BLOCK,读写都可以按照BLOCK进行。对于不同的卡,每个块的大小可以不同。对于标准SD卡,可以用CMD16设置块命令的长度,对于SDHC卡,块命令长度固定为512字节。SD 卡被逐个扇区地擦除。需要在SD卡的CSD寄存器中检查每个扇区的大小。若CSD寄存器ERASE_BLK_EN = 0,表示Sector为最小擦除单位,其单位为“块”。扇区大小的值等于CSD寄存器中SECTOR_SIZE字段的值加1。例如,如果SECTOR_SIZE为127,则最小擦除单位为512*(127+1)=65536字节。另外,有时候会有疑问,现在的很多SD卡其实都具备磨损功能,以减少频繁擦写带来的损失,延长使用寿命。所以实际上删除操作或者读写操作不一定是真实的物理地址。相反,它是由 SD 控制器映射的。但对于用户来说,这种映射是透明的。所以不必担心这会影响正常运行。 LittleFS 是一种轻量级文件系统,与 FAT 系统相比,它具有断电恢复和动态磨损均衡功能。一旦挂载,littleFS 就会提供一整套类似 POSIX 的文件和目录功能,因此可以像普通文件系统一样进行操作。LittleFS一共只有4个文件,使用时基本不需要修改。由于LittleFS所要操作的NOR/NAND Flash本质上是一个块设备,为了方便使用,LittleFS是以块为单位进行读写的,底层NOR/NAND Flash接口驱动也是以块为单位进行。 我们先来看看LittleFS配置参数的具体内容。 const struct lfs_config LittleFS_config = { .context = (void*)0, .read = lfs_sdmmc_read, .prog = lfs_sdmmc_prog, .erase = lfs_sdmmc_erase, .sync = lfs_sdmmc_sync, .read_size = 512, .prog_size = 512, .block_size = 65536, .block_count = 128, .block_cycles = 100, .cache_size = 512, .lookahead_size = LITTLEFS_LOOKAHEAD_SIZE }; 其中第一项(.context)在本工程中没有用到,在原工程中用来保存文件系统存放在Flash中的偏移量。 第二项(.read)到第五项(.sync)指向每个操作的处理程序。 第六项(.read_size)是读操作的最小单位。该值大约等于SD卡的BLOCK大小。在SD卡驱动中,这个大小已经固定为512。所以为了方便,也设置为512。 第七项(.prog_size)为每次写入的字节数,与.read_size一样,都是512字节。 第八项是.block_size。这可以被认为是SD卡在执行擦除操作时支持的最小擦除块。这里的默认值并不重要,需要在SD卡初始化后根据实际值在程序中设置。本实验所用的卡是64k字节作为擦除块,所以这里直接使用65536。 第9项(.block_count)用于指示有多少个可擦除块。将 .block_size 相乘即可得到卡片的尺寸。如果可以更换卡,需要根据SD卡初始化后的参数来判断。 第十项(.block_cycles)是每个块的擦除周期数。 第 11 项(.cache_size)与缓存缓冲区有关。感觉好像越大越好,但实际上修改这个值是不行的。所以仍然是 512。 第 12 项(lookahead_size),littleFS 使用前瞻缓冲区来管理和分配块。前瞻缓冲区是一个固定大小的位图,用于记录有关区域内块分配的信息。前瞻缓冲区只记录一个区域中的块分配信息,当需要了解其他区域的分配情况时,需要扫描文件系统来查找已分配的块。如果前瞻缓冲区中没有空闲块,则需要移动前瞻缓冲区以在文件系统中查找其他空闲块。前瞻缓冲区位置每次移动一个 lookahead_size。这里使用原始值。  移植工作就到这里。现在我们可以测试项目了。 您可以看到它运行良好。littleFS-SD项目可以读取/写入/创建文件夹和擦除。并且它还支持附加到现有文件。 但是经过更多的测试,发现一个问题,如果反复添加->-关闭->-添加->关闭一个文件,文件打开的速度会越来越慢,甚至需要几秒钟。这个才是应该添加的,并不是直接写在文件的最后一个块里,而是会申请一个新的块,不管前面的块是否满了。参见下图。 上图打印出了每个写入命令中使用的所有读取、写入和擦除操作。可以看到lfs_file_open中每次读取都比上次写入操作多一次。这样经过几十、几百次循环之后,一个文件就会涉及很多个块。依次读取这些块非常耗时。测试发现读取超过100次需要的时间超过秒。为了加快速度,建议在添加数十次之后将一个文件的内容复制到另一个文件。这样,分散的内容就会被整合起来,写成少量的块。这可以大大加快阅读和写作的速度。 i.MXRT 101x i.MXRT 102x i.MXRT 105x i.MXRT 106x i.MXRT 600
View full article
例 MPC5775K ADC_example S32DS_1.0 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 詳細説明: *アプリケーションは基本的な初期化を実行し、PLLを最大許容周波数に設定します。 *周辺機器のセットアップクロック。 * *この例では、ADCとETimerを使用してLEDダイオードを調光する方法を示しています。電圧オン *トリマーの出力は、次のために使用されるデジタル値に変換されます * ETimerによって生成されたPWMのデューティサイクルを制御します。 * * ------------------------------------------------------------------------------ *テストHW:MPC5775K-356DS、MPC57xxマザーボード * MCU:             PPC5775KMMY3A 0N76P *ターミナル: * Fsys:PLL0 266MHz * Z4コア133MHz * Debugger:        Lauterbach Trace32 *                  PeMicro USB-ML-PPCNEXUS ※対象:internal_FLASH(デバッグモード、リリースモード) * EVB接続:UserLED1をP19.4に接続し、ジャンパーj53を接続 * * * ******************************************************************************** <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 詳細説明: *アプリケーションは基本的な初期化を実行し、PLLを最大許容周波数に設定します。 *周辺機器のセットアップクロック。 * *この例では、ADCとETimerを使用してLEDダイオードを調光する方法を示しています。電圧オン *トリマーの出力は、次のために使用されるデジタル値に変換されます * ETimerによって生成されたPWMのデューティサイクルを制御します。 * * ------------------------------------------------------------------------------ *テストHW:MPC5775K-356DS、MPC57xxマザーボード * MCU:             PPC5775KMMY3A 0N76P *ターミナル: * Fsys:PLL0 266MHz * Z4コア133MHz * Debugger:        Lauterbach Trace32 *                  PeMicro USB-ML-PPCNEXUS ※対象:internal_FLASH(デバッグモード、リリースモード) * EVB接続:UserLED1をP19.4に接続し、ジャンパーj53を接続 * * * ******************************************************************************** 全般
View full article
CanbusのアクティベーションMCXN947 FRDM-MCXN947 canbus ループ バックの例を、canbus データを送受信するための出発点として使用しています。 しかし、ループバックを無効にしてピンをミックスすると、MCUはまだcanbusピンに接続されていないようです。 データ出力がオシロスコープで検出されません。 ループバックの例で他の缶ノードと通信できるようにするために、gが欠けているものが他にありますか? 通信&制御(I3C |I2Cの |SPIの |フレックスキャン |イーサネット |FlexIOの) MCXN Re:MCXN947 canbusアクティベーション 私も同じことを行いましたが、デモの前半に理解できないコードが少しありました。 缶Trancieverのデータシートを見た後、初期化機能が留まる必要があることがわかりました。 Re:MCXN947 canbusアクティベーション Hi @stevenlutz  割り込みデモを変更しました。 拡張缶とディスエーブル缶FDを切り替えました。 CANバスでデータ伝送が行われていることがわかります。 BR ハリー Re:MCXN947 canbusアクティベーション 私は3つのCANデモをすべて見ました。 ループバック デモをネットワーク上でアクティブにしても、ループバック モードを無効にすると機能しません。 その理由を教えてください。 また、割り込みデモでは、拡張 can に切り替えて can FD を無効にするときに、データをワイヤに格納しません。   Re:MCXN947 canbusアクティベーション Hi @stevenlutz  FRDM-MCXN947ボードを使用して他のCANノードと通信したい場合は、 flexcan 割り込みのデモを参照してください。 これがお役に立てば幸いです。 BR ハリー
View full article
HCS08 的引导加载程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这是 AN4440 的最新版本源代码。以及MC9S08PT60的迁移。   引导加载程序.zip--- 在 PC 上运行的 GUI。IDE是Visual C# 2008 Express,可以导入到Visual C# 2010 Express。 AC32_Bootloader.zip --- 该项目将 AC32 引导加载程序与用户代码结合在一起。IDE是CW6.3 PT60_Bootloader 20130307 --- 该项目将 PT60 引导加载程序与用户代码结合在一起。IDE是CW10.6。   您可以在此处获取 Visual C# 2010 Express 一体化 ISO: http://go.microsoft.com/?linkid=9709969   visual-studio-express-vs 可能也可以,但我还没有尝试过。 https://www.visualstudio.com/en-US/products/visual-studio-express-vs 概述 回复:HCS08 的引导加载程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这里有不同的 DZ60 引导加载程序可用: GitHub 回复:HCS08 的引导加载程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 此引导加载程序有任何新更新可以提供对 DZ60 的支持吗? 非常感谢, 乔恩 回复:HCS08 的引导加载程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 有人能帮助我吗?我正在尝试使用 MC9S08PT32A 做一个引导加载程序,但我无法请有人能帮助我..... alguém pode me ajudar  estou tentando fazer um bootloader com o MC9S08PT32A  e não estou conseguindo por favor alguem pode me ajudar..... 回复:HCS08 的引导加载程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 朝晖你好。 感谢更新,很高兴看到它仍然有效。我实际上正在使用 S08DZ60,并想知道是否有任何 AN4440 端口已对该部件完成。我正在尝试使用 AC32 版本的 AN4440 进行按摩,但这有点困难(主要是因为我的目标要求。)我实际上在目标上运行着一个 Modbus RTU 堆栈,因此我一直在尝试使用围绕此应用说明元素的许多现有功能。 谢谢! 乔恩
View full article
例 MPC5744P ETimerCountMode S32DS_1.0 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 詳細説明: * アプリケーションは基本的な初期化を行い、PLL1 を最大許容周波数に設定します。PLL1はシステム周波数、 * PLL0 in は 50MHz に初期化されています *周辺機器のクロックを初期化します(MOTC_CLKは5MHzに設定) * ETimer をカウント モードに初期化し、遅延を提供します * ETimer割り込みにより1つのLEDを点滅させて割り込みを初期化します。 * * * *テストHW:X-MPC5744PE257DC、MPC57xxマザーボード * MCU:             PPC5744PFMMM8 1N65H * Fsys:200 MHz * Debugger:    Lauterbach Trace32 *                      PeMicro USB-ML-PPCNEXUS ※対象:internal_FLASH(デバッグモード、リリースモード) * EVB接続:A0(P8.0)に接続されたユーザーLED1、 * * * ------------------------------------------------------------------------------ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 詳細説明: * アプリケーションは基本的な初期化を行い、PLL1 を最大許容周波数に設定します。PLL1はシステム周波数、 * PLL0 in は 50MHz に初期化されています *周辺機器のクロックを初期化します(MOTC_CLKは5MHzに設定) * ETimer をカウント モードに初期化し、遅延を提供します * ETimer割り込みにより1つのLEDを点滅させて割り込みを初期化します。 * * * *テストHW:X-MPC5744PE257DC、MPC57xxマザーボード * MCU:             PPC5744PFMMM8 1N65H * Fsys:200 MHz * Debugger:    Lauterbach Trace32 *                      PeMicro USB-ML-PPCNEXUS ※対象:internal_FLASH(デバッグモード、リリースモード) * EVB接続:A0(P8.0)に接続されたユーザーLED1、 * * * ------------------------------------------------------------------------------ 全般
View full article
uTasker 引导加载程序移植指南 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 简介 大家好, 对于新手(甚至专业人士)和希望在自定义硬件上使用引导加载程序进行快速原型设计的缺乏经验的业余爱好者来说,制作/开发/移植引导加载程序是一项繁琐的任务。 在不同的论坛上搜索了很多之后,我得出结论,我无法开发这样的引导加载程序,所以我的下一个选择是移植,如果你使用支持有限的旧引导加载程序,那也不容易。 然后,我发现了一种非常简单有效的快速软件开发平台,可以在几乎任何 IDE(Keil、Codewarrior、KDS 等)上使用,并且可以用来开发 USB MSD Bootloader、串行 Bootloader 等软件,以及几乎所有 Freedom 开发板、Freescale Kinetis MCU(在定制开发板上)的其他应用程序,只需极少的 ARM 编程知识,这对于像我这样刚刚开始使用 Freescale 或其他开发板进行 ARM 开发的新手来说是完美的。请参阅欢迎来到 µTasker 操作系统主页,它集成了 TCP/IP 堆栈、USB 和目标设备模拟器 现在我的项目是使用 MK22DX256VLF5(48 LQFP)MCU 制作定制电路板,我的电路板相当简单,使用基本滤波电路为 MCU 供电,几乎所有引脚排列都作为开发板上的硬件引脚。不知何故,我能够使用 Keil IDE 使用 FRDM-KL25Z(J-11 走线切割)的 OpenSDA 电路刷新我的第一个闪烁代码,并使用 SWD 编程将 CMSIS-DAP 固件(OpenSDA 应用程序)加载到它上面。 通过下面提到的步骤,我将向您展示如何从头开始使用 uTasker 项目移植大容量存储设备 (MSD) 引导加载程序。 要求 编程器(硬件)或仿真编程器(OpenSDA 应用程序):Segger Jlink、P&E Multilink、OpenSDA 仿真器(Jlink-SDA、CMSIS-DAP、USBDM) IDE:Keil、Codewarrior、Kinetis Design Studio 等。(我更喜欢 CW 10.6) 目标 MCU:在Kinetis、 Coldfire V2、 STM32之间选择任意 MCU(我使用的是 Freescale Kinetis MK22DX256VLF5、48 LQFP)参考 - http://www.utasker.com/ 流程 1.首先从µTasker Kinetis 开发者页面下载 uTasker 项目/框架(适用于 Kinetis)。然后解压并将文件夹复制到您的 CW 工作区,将项目导入 CodeWarrior IDE,它应该如下所示。(我使用的是 2015-9-14 版本) 2.接下来从五个构建配置中选择“uTaskerSerialLoader_Flash”(请参阅http://www.utasker.com/docs/uTasker/uTaskerSerialLoader.PDF)。uTaskerBM_Loader在http://www.utasker.com/docs/uTasker/uTasker_BM_Loader.pdf中有描述。这是一个非常小的加载器替代方案,可与初始应用程序一起使用。uTaskerV1.4_BM_FLASH 是需要构建的应用程序,以便可以加载到加载器(包括 USB-MSD 加载器)。uTaskerV1.4 是应用程序的“独立”版本,不能与加载器一起使用(并且不需要加载器)。如果要构建使用 USB-MSD 加载器加载的应用程序,则需要使用 uTaskerV1.4_BM_FLASH。 之后找到文件 config.h和ap_hw_kinetis.h。这些文件定义了您使用的 MCU 类型。 3.在config.h中选择您的主板或 MCU 类型或与您自己的 MCU 架构最相似的 MCU。我的 MCU MK22DX256VLF5 不存在,所以在mjbcswitzerland的帮助下,我选择了 TWR_K21D50M 板设置,因为TWR-K21D50M 模块是 Freescale Kinetis K11 、 K12 、 K21和K22 MCU 的开发板。 (注意:请务必删除或注释任何其他已定义的板) 选择 Board/MCU 后,向下滚动找到 USB_INTERFACE 和 USB_MSD_LOADER,并确保这两个已定义(未注释)。这对于启用 USB 枚举作为大容量存储设备是必要的。 如果已经定义,还请注释以下内容: HID_加载器 启动_HID_加载器 USB_MSD_主机 这是必要的,因为我们在MSD 设备模式而不是MSD 主机模式下使用引导加载程序。另外我们不使用 HID_LOADER 和 KBOOT。 现在打开ap_hw_kinetis.h 并找到您选择的 MCU(在我的情况下是 TWR_K21D50M),因此,找到字符串“TWR_K21D50M”(或任何您的 MCU)并查看以下行是否已定义。 #定义OSC_LOW_GAIN_MODE #定义晶体频率 8000000 #定义_外部时钟晶振频率 #定义 CLOCK_DIV 4 或者    #if(..........) #定义 CLOCK_MUL 48 #定义系统时钟分频 2     #else #定义 CLOCK_MUL 24 #endif #定义 USB_CLOCK_GENERATED_INTERNALLY 这是 USB MSD 引导/编程的一个组成部分。您一定对CRYSTAL_FREQUENCY 8000000 和 CLOCK_DIV 4 感到疑惑。这是连接在目标 MCU 的 EXTAL0 和 XTAL0 引脚之间的外部晶体振荡器(8mhz)的频率。如果您的 MCU 有内部振荡器,请检查后者是否已定义。 参考https://cache.freescale.com/files/microcontrollers/doc/app_note/AN4905.pdf          http://www.utasker.com/kinetis/MCG.html 有两种方法可以使用 USB: 1. 在 EXTAL0 和 XTAL0 之间使用晶体 - 通常使用 8MHz。(带或不带负载电容器 - 对我来说都可以) 2. 在USB-CLKIN引脚上使用48MHz振荡器。 第一个比较简单,而且对我来说很有效。由于我的 MCU 没有内部振荡器,所以我使用了外部 8Mhz 晶体。如果您想使用16Mhz 晶体,则只需进行以下更改: #定义晶体频率 8000000 #定义_外部时钟晶振频率 #定义 CLOCK_DIV 4 到 #定义晶体频率 16000000 #定义_外部时钟晶振频率 #定义时钟分频 8 注意: CLOCK_DIV 应该将晶体频率预缩放到2-4MHz的范围。 这是我的 MCU 的时钟图。下图显示了外部连接到我的开发板的振荡器晶体。 接下来在相应的 MCU/Board 下搜索“PIN_COUNT”(我的是 TWR_K21D50M)。我的 MCU 是 48 LQFP,带有 256kb 闪存和 32kb SRAM(您必须根据您的 MCU 更改它们)。因此,我更改了以下几行 从 #定义PIN_COUNT PIN_COUNT_121_PIN #定义闪存大小(512 * 1024) #定义SIZE_OF_RAM(64 * 1024) 到 #定义PIN_COUNT PIN_COUNT_48_PIN #定义闪存大小(256 * 1024) #定义SIZE_OF_RAM(32 * 1024) 接下来,如果您搜索您的 MCU/Board(在本例中为 TWR_K21D50M),您将找到以下行: #定义UART2_ON_E 这定义了 UART2 的替代端口,因为许多主板没有 PORTE,所以可以将其更改为其他端口。[但这并不重要] 注意:在为具有较小 RAM 的设备构建串行加载器时,将定义 #define TX_BUFFER_SIZE (5512) 减少到 512 字节,以便可以分配缓冲区(大尺寸仅用于较大设备上的一些调试输出)[加载器版本: 2015.9.14] 现在在相应的 MCU/Board(我的是 TWR_K21D50M)下搜索字符串“BLINK_LED”。uTasker Bootloader 具有特殊功能,只要它处于 MSD/LOADER 模式,它就会闪烁电路板上的测试 LED。这并不重要,但它可以用于调试目的。我的电路板上的 PORTB16 处有一个测试 LED。您还可以指定硬件引脚来强制引导加载程序模式,如果分别将 SWITCH_3 和 SWITCH_2 拉至地面,则停止看门狗定时器。我分别将 SWITCH_3 和 SWITCH_2 设置为 PORTD7 和 PORTD6。 现在在工具栏上,转到项目>属性> C / C ++构建>设置>工具设置>目标处理器:将其更改为您的MCU类型(我的是cortex-m4)。接下来转到链接器>常规并更改链接器脚本文件以匹配您的MCU的闪存,RAM,类型。我已将我的设置为K_256_32.ld(带有256kb闪存和32 kb RAM的Kinetis K型处理器) 应用您的更改。现在您已准备就绪。 4.在 SerialLoader_FLASH 配置下构建您的项目。如果没有编译错误,那么您就成功了!(如果有,则根据本指南重新检查所有内容) 现在单击Flash 编程器图标a 并选择Flash 文件作为目标t。(如果您没有看到图标,请切换到“DEBUG”透视图) 现在您可以选择您的编程器(或模拟编程器)[连接选项卡],选择正确的Flash 配置文件,然后浏览到已生成的二进制文件 C:\Users\ \workspace\Kinetis_14-9-2015\Applications\uTaskerSerialBoot\KinetisCodeWarrior\uTaskerSerialBoot_FLASH\uTaskerSerialBoot.bin 并点击“擦除和编程”。您可以跳过步骤 5 并转到步骤 6。 5.我正在使用我的 FRDM-KL25Z(J-11 走线切割)的OpenSDA 电路作为使用 J-link OpenSDA 应用程序的编程器。根据您的 OpenSDA 版本(FRDM KL25Z 有 OpenSDAv1),从SEGGER(RTOS 和中间件、调试探针和生产编程器的嵌入式专家)下载应用程序 - OpenSDA / OpenSDA V2 。 参考 -使用 Freedom Board 作为 Eclipse 上的 SWD 编程器 | MCU 5.1.首先进入引导加载程序模式并将 Jlink sda 应用程序刷入其中。将开发板的 SWD 线连接到目标 MCU/开发板,同时将目标板连接到外部振荡器。还通过 USB 连接 FRDM 的 OpenSDA。(应该会出现一个名为JLINK的驱动器)                                          5.2.转到目标 Flash 文件并在连接选项卡下单击新建。给出任意名称并单击目标选项卡下的新建。然后选择目标类型(您的目标 MCU,我的是 K22DX256M5)。然后选中初始化选项卡下的执行重置。单击“完成” 。 现在您将获得选择连接类型的选项,然后为 ARM 选择 J-Link/J-Trace并将调试端口接口更改为SWD 。如果出现错误:连接名称不是唯一的,则只需更改名称(我使用了 jlink1)。单击完成。   现在我已经设置了连接,因此我可以在 OpenSDA 电路上使用 Jlink 应用程序刷新 MCU。 6.现在要验证您的定制板的 USB 枚举,请使用 USB 将其连接到 PC,您应该会得到一个名为UPLOAD_DISK 的驱动器。 教师门户内容 飞思卡尔杯内容 图片库 学生项目
View full article
ubuntu 24.04でimx-linux-zeus(5.4.47)用のyocto SDK + BSPをビルドします コミュニティの皆さん、こんにちは。 私は、自分のimx8mmボードのビルドマシンをアップグレードしているところです。BSPベースとしてバージョン5.4.47を引き続き使用し、Ubuntu18.04でビルドを実行しました # Used repo repo init -u https://github.com/nxp-imx/imx-manifest.git -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml ubuntu 18.04はもはや最新ではないので、ubuntu 24.04で新しいマシンをセットアップしました。いくつかのつまずきの後、SDK + BSPバージョン6.6.52のyoctoパッケージをビルドすることができました。 # Used repo for newes BSP repo init -u https://github.com/nxp-imx/imx-manifest.git -b imx-linux-scarthgap -m imx-6.6.52-2.2.0.xml ただし、既に販売している商品はバージョン5.4.47を使用しているため、SDK 5.4.47 を使用して新しいバイナリをビルドする必要があります。 最初のステップでは、ubuntu 18.04のSDKを使用しようとしましたが、ubuntu 24.04のライブラリが欠落しているビルドエラーに終わるため、SDKはビルドシステム自体に強く依存しているようです。 次のステップとして、Ubuntu 24.04で5.4.47用のYoctoパッケージをビルドしようとしましたが、実際には機能しませんでした。最初の問題はPythonのバージョンです。直接利用できないバージョン2.7と3.9を必ず使用する必要があります。pyenvを使用することで、Pythonの問題を解決できます。 今、私はパッケージm4-nativeのビルドエラーに終わってしまいます、これは私がこれまでに持っているものです。 ERROR: Task (/home/starke/imx-yocto-bsp-5.4.47/sources/poky/meta/recipes-devtools/m4/m4-native_1.4.18.bb:do_compile) failed with exit code '1' 問題は、新しいUbuntu 24.04でSDKバージョン5.4.47のビルドを試すのが正しいのか、それとも古いUbuntuマシンのSDKも機能し、不足しているライブラリをインストールする方法を理解する必要があるのかということです。 また、誰かがUbuntu5.4.47でバージョン24.04を実行する方法を知っているなら、それがどのように機能するかに非常に興味があります。 どんな助けでもいただければ幸いです。 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Yocto Project 日時:ubuntu 24.04上のimx-linux-zeus(5.4.47)用のyocto SDK + BSPをビルドする 同じまたは類似の問題を抱えている人のための簡単な要約です。 ubuntu 24.04でのzeus YOCTO BSPのビルドは、終わりのない話のようです。Pythonのバージョンが合わない、gccが新しすぎる、その他多くの問題があります。このため、私はこの道をたどるのをやめました。 私は、ubuntu 18.04のSDKをインストールした後、カーネルとubootビルドが失敗する理由に焦点を当てました。結局、唯一の問題はホストのgccバージョンでした。Ubuntu 24.04はgcc-13またはgcc-14を使用しますが、カーネルとubootビルドにはホスト側にgcc-7バージョンが必要です。さまざまなgccバージョンを処理するために、build-essentialを使用します。このツールとgcc-7を使用すると、Ubuntu 18.04でビルドしたYOCTO SDKを使用して、Ubuntu 24.04でカーネルバージョン5.4.47をビルドすることができます。 したがって、カーネルとubootをビルドする「だけ」の場合、これは機能しますが、私の視点から見ると、Ubuntu 24.04ではzeusのYOCTOビルド全体は不可能です。 日時:ubuntu 24.04上のimx-linux-zeus(5.4.47)用のyocto SDK + BSPをビルドする Hi @Bio_TICFSL  私はまさにそのような答えを恐れていましたが、作成したSDKをUbuntu 18.04から別のサポートされているUbuntuバージョン(20.04や22.04など)に転送することが機能するかどうか教えていただけますか? それとも、使用したいオペレーティングシステムでSDKも作成する必要がありますか? よろしくお願いします。 日時:ubuntu 24.04上のimx-linux-zeus(5.4.47)用のyocto SDK + BSPをビルドする Hello, 申し訳ありませんが、現在MX8で実行されているubuntu24.04はありません よろしくお願いします。
View full article
U-Boot 中的自定义脚本 你好呀。 这是一个通过自定义脚本有效使用 U-boot 的好方法。 引导脚本是引导加载程序启动时自动执行的脚本,在 操作系统自动启动过程。 引导脚本允许用户自动执行一组预定义的 U-Boot 命令 在继续正常的操作系统启动之前。这对于生产环境特别有用, 没有可用串行端口来显示 U-Boot 监视器的目标。 该信息可以在 U-Boot 参考手册中找到。 我将以在IMX8MM-EVK的CORTEX M4中加载二进制文件为例。 就我而言,我在 MMC 2:1 中有一个二进制文件,名为gpio.bin ,我将跳过这些步骤,因为这不是目标。 首先,您需要在 Linux 机器上安装u-boot-tools : sudo apt install u-boot-tools 该软件包为我们提供了工具mkimage来转换文本文件(.src、.txt)文件到 U-Boot 的引导脚本文件。 现在,创建您的自定义脚本,在本例中,这是一个用于在 Cortex M4 中加载二进制文件的简单脚本: nano mycustomscript.scr 并编写你的 U-Boot 命令: fatload mmc 2:1 0x80000000 gpio.bin cp.b 0x80000000 0x7e0000 0x10000 bootaux 0x7e0000 现在我们可以使用 mkimage 将文本文件转换为引导脚本。 句法: mkimage -T 脚本 -n “引导脚本” -C 无 -d mkimage -T script -n "Bootscript" -C none -d mycustomscript.scr LCM4-bootscript 这将创建一个名为 LCM4-bootscript(或按您的称呼)的文件。 将此引导脚本文件加载到 U-Boot 的一种方法是使用 UUU 工具,在 U-Boot 中使用命令在 fastboot 中设置设备: u-boot=> fastboot 0 然后在 Linux 中将开发板通过 USB 连接到 PC 运行以下命令: sudo uuu -b fat_write LCM4-bootscript mmc 2:1 LCM4-bootscript 现在我们在 MMC 2:1 中的 U-Boot 中有了引导脚本。 最后,我们可以在 U-Boot 中运行引导脚本: u-boot=> load mmc 2:1 ${loadaddr} LCM4-bootscript 158 bytes read in 2 ms (77.1 KiB/s) u-boot=> source ${loadaddr} ## Executing script at 40400000 6656 bytes read in 5 ms (1.3 MiB/s) ## No elf image at address 0x007e0000 ## Starting auxiliary core stack = 0x20020000, pc = 0x1FFE02CD... Cortex M4 启动成功: 我希望这对你有帮助。 顺祝商祺! Salas. i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6 全部 i.MX6DL i.MX6 双核 i.MX6DualPlus | 6QuadPlus i.MX6 四核 i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7 双核 i.MX7 单核 i.MX7ULP Linux 回复:U-Boot 中的自定义脚本 @pvsnsubhash谢谢!我会在某一天尝试看看您的解决方案。看看它是否也对我有用。 回复:U-Boot 中的自定义脚本 @Arjen_Hoogesteger我想我已经弄清楚了。我们需要创建一个自定义的.scr文件并在 include/configs/ .h 中的文件中添加详细信息引导加载程序源代码中的文件。 #定义CFG_EXTRA_ENV_SETTINGS \ 额外环境设置 \ “boot_scripts=lx2160ardb_boot.scr\0”   在 boot_scripts 参数值中更改您的自定义脚本名称。 回复:U-Boot 中的自定义脚本 非常有用的信息。我和@pvsnsubhash所寻求的信息基本相同。我们如何才能将这样的自定义脚本作为创建的 Yocto 图像的一部分自动运行? 回复:U-Boot 中的自定义脚本 @Manuel_Salas这非常有用,但是我们如何才能让这个自定义脚本在自动启动计时器和内核加载开始之前自动运行。比如,如果我们想在 uboot 执行期间运行自定义脚本以及默认的 _boot.scr 脚本。 默认启动脚本在 nxp yocto-sdk 中位于哪里
View full article
HCS08用ブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> AN4440の最新バージョンのソースコードは次のとおりです。そしてMC9S08PT60の移住。   Boot_Loader.zipPC上で動作する---GUI。IDEはVisual C# 2008 Expressで、Visual C# 2010 Expressにインポートできます。 AC32_Bootloader.zip --- このプロジェクトは、AC32 ブートローダとユーザコードを組み合わせたものです。IDEはCW6.3です PT60_Bootloader 20130307 --- このプロジェクトは、PT60ブートローダとユーザーコードを組み合わせました。IDEはCW10.6です。   Visual C# 2010 Express は、次の 1 つの ISO にまとめて入手できます。 http://go.microsoft.com/?linkid=9709969   visual-studio-express-vsも動作するかもしれませんが、まだ試していません。 https://www.visualstudio.com/en-US/products/visual-studio-express-vs 全般 日時:HCS08のブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 別のDZ60ブートローダーは、GitHubで入手できます。 日時:HCS08のブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このブートローダーに、DZ60 のサポートを提供する可能性のある新しいアップデートはありますか? どうもありがとう、 ジョン 日時:HCS08のブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 誰かが私を助けてくれますか私はMC9S08PT32Aでブートローダーをやろうとしています、そして私は誰かが私を助けることができる人を喜ばせることができません..... alguém pode me ajudar  estou tentando fazer um bootloader com o MC9S08PT32A  e não estou conseguindo por favor alguem pode me ajudar..... 日時:HCS08のブートローダ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、チャオフイさん。 更新してくれてありがとう、これがまだアクティブであることを知ってうれしいです。私は実際にS08DZ60で作業しており、その部分にAN4440ポートが行われているかどうか疑問に思いました。私はAN4440のAC32バージョンでマッサージを試みていますが、それは少し難しいです(主に私の目標要件のため)。私は実際にターゲット上でModbus RTUスタックを実行しているので、このアプリケーションノートの要素の周りにその既存の機能をたくさん使おうとしています。 ありがとうございます ジョン
View full article
lecchat.zip <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这是 LEC IOT 演示的聊天示例。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这是 LEC IOT 演示的聊天示例。 研讨会文件
View full article
在 S32K314 上只能使用 CM7_0,这是正确的吗? 你好,在查看了 S32K314 数据表 (S32K3XXRM、S32K3XXDS) 后,我有一个问题。 [图1,在S32K3XXRS中图8 ] 根据[图1 ]中的图表,S32K314 中同时引用了 CM7_0 和 CM7_1。 [图2 ,S32K3XXRM表26] 然而,在[图2 ]中,它指出CM7_1不能在S32K314上使用。 哪一个是正确的? #S32K314 #S32K3XX #S32K3 #CM7_0 #CM7_1 回复:S32K314 上只能使用 CM7_0,这是正确的吗? Hi @malove, 没错,它不可用。S32K3 1 4 中的“1”指的是 1 x M7 核心,而“4”(例如 S32K3 4 4)指的是 1 x M7 锁步核心。 Best regards, Julián 回复:S32K314 上只能使用 CM7_0,这是正确的吗?  @Julián_AragónM  谢谢您的回复。哦,我还有一个问题。那么S32K314系列没有Lockstep核心功能吗? 回复:S32K314 上只能使用 CM7_0,这是正确的吗? Hi @malove 您可以在[图1 ]中看到,CM7_1对于S32K314被禁用: Best regards, Julián
View full article
i.MX8系列IEEE1588 1pps测试程序 一些客户需要测试 ENET IEEE1588 1pps 输出信号。本文介绍了所有 i.MX8 系列的测试过程,包括普通的 ENET 端口和 EQOS 端口(i.MX8MP 和 i.MX8DXL 支持 EQOS)。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano
View full article
FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将解释飞思卡尔如何帮助客户使用 MPC577xK MCU 开发 76-81 GHz 短程和长程雷达应用,并将解释雷达算法的概念,包括 SDADC 或 MIPI CSI 采样、Chirp 生成、数据压缩、R、V FFT、检测和跟踪算法等实际方面,以及新飞思卡尔 IP 的优势,这些优势可以帮助客户提高系统分辨率和准确性。在本次会议中,客户将详细了解如何使用 MPC577xK MCU 开发快速调制雷达系统,包括其带来的 BOM 成本优势。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将解释飞思卡尔如何帮助客户使用 MPC577xK MCU 开发 76-81 GHz 短程和长程雷达应用,并将解释雷达算法的概念,包括 SDADC 或 MIPI CSI 采样、Chirp 生成、数据压缩、R、V FFT、检测和跟踪算法等实际方面,以及新飞思卡尔 IP 的优势,这些优势可以帮助客户提高系统分辨率和准确性。在本次会议中,客户将详细了解如何使用 MPC577xK MCU 开发快速调制雷达系统,包括其带来的 BOM 成本优势。 概述 Re: FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好, 安德鲁·罗伯逊 我想检查一下您是否有最终文件。 我需要做最后一次审查,然后将其转换为 PDF 以将其包含在 FTF 应用程序和公共社区页面上。 请尽快选择“操作”下的“编辑”来帮助上传。 谢谢! Re: FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我已将 Marcom 审核版本上传至此链接,以帮助记录审核周期。以下是 Marcom 审核后的评论: 在对标点符号进行微小修改后,我已批准此演示文稿。我还有其他需要强调的担忧: 幻灯片 4 说:FMCW 操作与目标的行进速度或方向无关,精度高。安德鲁,“目标高精度”正确吗? 本演示文稿中没有摘要和结论部分。安德鲁,请添加摘要/结论并根据附件上传最终版本。 你好, 安德鲁·罗伯逊 在完成您的演示时,请考虑 Brian 和 John 的笔记。请确保在进行任何更改时使用最新版本。完成演示文稿后,请在 6 月 15 日星期一之前通过选择“操作”下的“编辑”在此处上传最终文件,然后单击页面底部的“发布”。请帮忙选择类别“4.最终版本 - 适用于 PDF 和 Web”当此最终版本发布时,我知道将您的文件拉出来进行 PDF 转换。 Re: FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 添加已停用用户,因为他将帮助Lisa Bradley审阅此文件 Re: FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi andrewrobertson​ 我正在审查一堆 FTF 演示文稿。对您的一些评论...... 您打算在总结和结论之后添加一些内容吗?你可以吗...您的最后想法,也许是一些 URL,例如 freescale.com/adas或类似 摘要中提到了 BOM 成本优势,但我在幻灯片中并没有看到这一点(可能是第 27 张幻灯片),但这是一个非常小的参考。只是想知道您是否应该更多地提及它,因为它足够重要,值得在摘要中提及。 蕾妮·福滕贝里 Re: FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,丽莎,我只是想确保你被标记到这个文件中。它已准备好供您审阅。请让安迪知道您何时会提取文件,以防他在您审核之前需要进行其他更改。丽莎·布拉德利 Re: FTF_Austin_FTF-ACC-F1276_2015.pptx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> PPT专家已完成演示文稿审核。最新版本已发布并准备接受 Marcom 审核 @Lisa Bradley
View full article
iMX8MM 模块上的 HAB 问题:U-Boot 2022 与 2023 Hello, 当使用 不同版本 的 U-Boot(2022 与 2023)时,我在 iMX8M Mini 模块上启用 高保证启动 (HAB) 功能时遇到问题。 => U-Boot 2023.04 运行良好(未发现 HAB 事件,正如预期的那样)。 => U-Boot 2022.04 无法正常工作(生成 HAB 事件,见下文)。 我附加了两个 bash 脚本( u-boot-2022-hab-variscite-builder和u-boot-2023-hab-variscite-builder ),展示了我为构建两个 U-Boot 二进制文件所执行的步骤的详细信息。 我还附加了两个版本的txt 日志文件(使用 bash 脚本启动)以及生成的CSF *.txt 文件,以便使用代码签名工具生成 SPL 和 FIT 二进制文件。 所有这些文件都已包含在附加到此帖子的单个 zip 存档( HAB-Issues-iMX8MM.zip )中。 这是我在尝试启动我的演示板( imx8mm-var-som-symphony )时从 2022 u-boot 版本构建中获得的HAB 事件的日志。 U-Boot 2022.04-64036-g9a1f574209-dirty(2024 年 8 月 29 日 - 17:34:22 +0200) CPU:i.MX8MMQ rev1.0 1600 MHz(运行频率为1200 MHz) CPU:工业温度级(-40C 至 105C),34C 时 复位原因:POR 型号:Variscite VAR-SOM-MX8M-MINI 动态随机存取存储器:2 GiB 核心:73 个设备、23 个 uclass、设备树:独立 MMC卡:FSL_SDHC: 1,FSL_SDHC: 2 从 MMC 加载环境...*** 警告 - CRC 错误,使用默认环境 在:连续剧 输出:串行 错误:串行 PTN5150:供应商ID[0x3],版本ID[0x1],地址[I2C1 0x3d] 部件编号:VSM-MX8MM-503 组装:AS312212751 生产日期:2024年01月04日 序列号:f8:dc:7a:d0:71:f8 切换到分区#0,确定 mmc1是当前设备 闪存目标是 MMC:1 网络:在地址 4 处检测到 ADIN1300 PHY eth0:以太网@30be0000 快速启动:正常 正常启动 按任意键停止自动启动:0 u-boot=>hab_状态 安全启动已禁用 HAB配置:0xf0,HAB状态:0x66 --------- HAB Event 1 ----------------- event data: 0xdb 0x00 0x14 0x43 0x33 0x22 0x33 0x00 0x00 0x00 0x00 0x0f 0x00 0x7e 0x0b 0xc0 0x00 0x03 0xf8 0x00 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ADDRESS (0x22) CTX = HAB_CTX_TARGET (0x33) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 2 ----------------- event data: 0xdb 0x00 0x14 0x43 0x33 0x22 0x33 0x00 0x00 0x00 0x00 0x0f 0x00 0x7e 0x0b 0xc0 0x00 0x03 0xf6 0x60 STS = HAB_FAILURE(0x33) RSN = HAB_INV_地址(0x22) CTX = HAB_CTX_目标(0x33) ENG = HAB_ENG_ANY (0x00) 您能帮我理解一下这里出了什么问题吗? 回复:iMX8MM 模块上的 HAB 问题:U-Boot 2022 与 2023 按照我原来的帖子,我能够通过在defconfig中启用CONFIG_LTO=y来解决遇到的HAB 错误。这似乎减少了SPL二进制文件的大小(从0x3d200到0x3a600 ),我认为这是解决问题的关键。 在此之前,运行hab_status显示两次HAB 故障,原因为HAB_INV_ADDRESS (0x22) ,表示内存访问无效。我的假设是SPL太大,导致内存溢出或错位。通过启用LTO , SPL大小得到优化,这些HAB 事件消失了。 我不是 100% 确定,但似乎减小SPL大小可以使其正确适应其内存边界,从而防止无效地址错误。如果您遇到类似的问题,我建议尝试CONFIG_LTO=y并看看它是否有帮助! 回复:iMX8MM 模块上的 HAB 问题:U-Boot 2022 与 2023 我检查了这些变化。 我应用了此处描述的补丁,将它们集成到uboot-imx和imx-mkimage存储库中。 我认为带有(可选) FDT-FIT签名的FDT-FIT哈希解决方案可以按预期工作,因为我在 u-boot 命令提示符控制台的第一阶段就看到了此日志: U-Boot SPL 2022.04-64036-g9a1f574209-dirty(2024 年 9 月 3 日 - 09:57:35 +0200) SEC0:RNG实例化 正常启动 尝试从 MMC1 启动 HAB 保险丝未启用 从 DDR 位置 0x401fadc0 验证图像... HAB 保险丝未启用 从 DDR 位置 0x401fadc0 验证图像... U-Boot 2022.04-64036-g9a1f574209-dirty(2024 年 9 月 3 日 - 09:57:35 +0200) CPU:i.MX8MMQ rev1.0 1600 MHz(运行频率为1200 MHz) CPU:工业温度级(-40C 至 105C),34C 时 复位原因:POR 型号:Variscite VAR-SOM-MX8M-MINI 动态随机存取存储器:2 GiB 核心:73 个设备、23 个 uclass、设备树:独立 MMC卡:FSL_SDHC: 1,FSL_SDHC: 2 从 MMC 加载环境...*** 警告 - CRC 错误,使用默认环境 在:连续剧 输出:串行 错误:串行 PTN5150:供应商ID[0x3],版本ID[0x1],地址[I2C1 0x3d] 部件编号:VSM-MX8MM-503 组装:AS312212751 生产日期:2024年01月04日 序列号:f8:dc:7a:d0:71:f8 切换到分区#0,确定 mmc1是当前设备 闪存目标是 MMC:1 网络:在地址 4 处检测到 ADIN1300 PHY eth0:以太网@30be0000 快速启动:正常 正常启动 按任意键停止自动启动:2 无论如何,现在运行hab_status ,它返回 5 个HAB 事件: u-boot=>hab_状态 安全启动已禁用 HAB配置:0xf0,HAB状态:0x66 --------- HAB Event 1 ----------------- event data: 0xdb 0x00 0x1c 0x43 0x33 0x18 0xc0 0x00 0xca 0x00 0x14 0x00 0x02 0xc5 0x1d 0x00 0x00 0x00 0x16 0x3c 0x40 0x1f 0xad 0xc0 0x00 0x00 0x30 0x20 STS = HAB_FAILURE (0x33) RSN = HAB_INV_SIGNATURE (0x18) CTX = HAB_CTX_COMMAND (0xC0) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 2 ----------------- event data: 0xdb 0x00 0x14 0x43 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x1f 0xdd 0xc0 0x00 0x00 0x00 0x20 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 3 ----------------- event data: 0xdb 0x00 0x14 0x43 0x33 0x22 0x33 0x00 0x00 0x00 0x00 0x0f 0x00 0x7e 0x0b 0xc0 0x00 0x03 0xfa 0x00 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ADDRESS (0x22) CTX = HAB_CTX_TARGET (0x33) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 4 ----------------- event data: 0xdb 0x00 0x14 0x43 0x33 0x22 0x33 0x00 0x00 0x00 0x00 0x0f 0x00 0x7e 0x0b 0xc0 0x00 0x03 0xf8 0x60 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ADDRESS (0x22) CTX = HAB_CTX_TARGET (0x33) ENG = HAB_ENG_ANY (0x00) --------- HAB Event 5 ----------------- event data: 0xdb 0x00 0x14 0x43 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x1f 0xad 0xc0 0x00 0x00 0x00 0x04 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) 因此, 2022 版和 2023 版之间 必须进行 一些其他相关更改才能使 HAB 功能正常运行。 您能否提供一个更详细的解决方案,因为我需要应用临时更改才能使HAB功能与 2022.04 U-Boot 版本兼容? 谢谢! 回复:iMX8MM 模块上的 HAB 问题:U-Boot 2022 与 2023 如果您检查 git 日志,您会发现更改(2022 与 2023)。 doc/imx/habv4/指南/mx8m_secure_boot。 回复:iMX8MM 模块上的 HAB 问题:U-Boot 2022 与 2023 为了更好地理解并与我们的供应商一起解决这种情况,您能否提供有关如何在 U-Boot 2023 中解决此问题的更多详细信息?具体来说,如果您能向我指出用于修复 HAB 问题的相关提交或补丁,我将不胜感激。拥有这些信息将极大地帮助确保正确应用必要的更新。 提前感谢您的帮助。 回复:iMX8MM 模块上的 HAB 问题:U-Boot 2022 与 2023 Hello, 是的,uboot 2022 在 HAB 方面存在一些问题,但他们在 2023 年修复了这个问题,您必须与您的供应商核实这种情况。 此致
View full article
S32K3XXのためのOTA 皆さん、こんにちは。 S32K3XXのファームウェア更新プログラムをデプロイする必要があります。 私のスコープは、UARTを介してRAWアプリケーションファイルをA / Bスワップパーティションに転送/書き込みすることです。 まず、R&Dフェーズでは、暗号化は一切必要ありません。 S32K3XXのOTAサンプルをざっと見てみたところ、すべてのサンプルが HSEファームウェアに関連していることがわかりました。 いくつか質問があります。 1. HSEファームウェアのA/Bスワップ機能のみ を使用する(セキュリティ/暗号化などなし)解決策はありますか? それとも、HSEファームウェアを使用せずにA / Bスワップをカバーするソリューションはありますか? 2. URAT経由でホストから任意のパーティションにRAWバイナリファイルを転送し、アクティブ/非アクティブパーティションを切り替えるソリューションはありますか? お時間をいただきありがとうございます。 Br, ヴァン・グエン、トラン 日時:OTA S32K3XX Hello @nguyentrandev! はい、あなたの理解は正しいです。工場出荷時にファームウェアがプリインストールされているデバイスはなく、HSE機能を使用するにはファームウェアをインストールすることが不可欠です。 安全なファイルにアクセスできる場合は、このドキュメントにアクセスするにはNDAが必要なため、HSEリファレンスマニュアルを参照することをお勧めします。また、HSEの詳細については、S32K3XXリファレンスマニュアルの第36章「 S32K3 Microcontrollers for Automotive General Purpose」を参照してください。 さらに疑問がある場合はお知らせください。 - RomanVR。 日時:OTA S32K3XX Hello @RomanVR -san, お返事ありがとうございます! HSEファームウェアの書き込みについていくつかの懸念があります。 1.私の知る限り、S32k3x4のHSEファームウェアは工場で焼いていないので、HSEファームウェアに関連する機能を使いたいお客様にとって、HSEファームウェアの焼成は必須です。私が正しく理解していることを確認するのを手伝ってください。 2. HSEファームウェアを使用する際に重要な注意点はありますか? よろしくお願いいたします。 Br, ヴァン・グエン、トラン 日時:OTA S32K3XX こんにちは@nguyentrandev  前述のように、OTA(Over-the-Air)アップデートにはA / Bスワップ機能が必要であり、HSEファームウェアをMCUにインストールする必要があります。 理論的には、UART を介して任意のタイプのデータを転送することは可能ですが、ストレージのターゲット パーティションを選択することは現実的ではありません。データは自動的にアクティブパーティションに書き込まれます。パーティションの切り替えはコマンドで行うことができますが、すべての操作はアクティブパーティションで実行されます。現在、UART経由でRAWバイナリファイルを転送するための特定のソリューションは提供していないため、実装はお客様側で処理する必要があります。 さらに疑問がある場合はお知らせください。 - RomanVR。
View full article