Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
在自定义 i.MX95 板上 “启动内核...” 后 Debian 13 内核挂起 你好 我们目前正在定制的基于 i.MX 95 的板上测试 Debian 13。 构建成功完成,所有必需的二进制文件(uboot、内核和 rootfs)均已生成并使用 SD 卡闪存到主板上。在 U-Boot 之前,板可以正常启动,而且 U-Boot 日志显示正常。但是,在出现"启动内核...... "的信息后,系统会无限期挂起,控制台上也不会再打印内核日志。 我们曾尝试启用早期的主机输出,但从 U-Boot 移交后仍未观察到内核输出。 请查看随附的启动日志以供参考。 如果您能就定制 i.MX95 板上出现此问题的可能原因或推荐的调试步骤提供指导,我们将不胜感激。 感谢您的支持。 致以最崇高的敬意, Maruti Naik Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 你好,查维拉、 感谢您的反馈, 我们已经在我们的自定义主板上成功移植和验证了 Linux 6.12.20 和 Android 15.0.0_2.0.0 BSP。对于 Debian 13,我们使用相同的 BSP 改编和系统管理器 (SM) 配置,因为板的硬件配置没有改变。 这些映像使用 FlexBuild 生成,并使用我们平台的标准恩智浦闪存程序闪存。根据我们的分析,这个问题似乎与 U-Boot 有关。解决方法是,当我们使用 Linux BSP 中的 flash.bin 时,主板可以完全启动并按预期运行。但是,当我们使用通过 FlexBuild 生成的 Debian 13 flash.bin 时,会遇到启动问题。 这表明 Debian 13 U-Boot 与 Linux 电路板支持包 U-Boot 相比可能存在配置不匹配或差异。请与我们联系,告知是否有任何特定于 Debian 13 的已知 U-Boot 配置更改,或者在使用 FlexBuild 生成 flash.bin 时是否需要进行其他修改。 致以最崇高的敬意, Maruti Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 嗨,@Maruti、 感谢您联系恩智浦支持中心! 为了进一步帮助您,请您提供以下信息? 你是如何生成图像并将其闪存到板上的? 您是否根据自定义板的硬件配置正确移植了电路板支持包。?系统管理器 (SM) 的配置是否正确以匹配定制板上的硬件? 致以最崇高的敬意, Chavira Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 我们可以使用 Debian 13 编译的二进制文件启动板,而不会出现任何问题。 目前,我正在测试 3.4.5 版Debian 13 用户指南中的 GoPoint 演示。我以 debian 用户身份登录。 运行后: debian@imx95ig61m:~$systemctl stop gdm&& systemctl start weston ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units==== 停止 "gdm.service "需要身份验证。 验证身份: debian ==== 验证完成 ==== ==== 验证 org.freedesktop.systemd1.manage-units==== 启动 "weston.service "需要身份验证。 验证身份: debian ==== 验证完成 ==== 屏幕就会变成空白,什么也不显示。 请问 weston.ini 中是否需要其他配置才能使 Weston 和 GoPoint 演示正常工作? 我们使用的是 1024x600 分辨率的 lvds 显示器。 Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 嗨,@Maruti、 对不起,我的回复晚了--我们的社区跟踪系统遇到了一些问题。 您还需要帮助吗?
View full article
MCUXpresso IDEターミナル・チュートリアル MCUXpresso IDE の最新バージョンには、ターミナル エミュレーション アプリケーションが付属しています。このツールは、NXP開発プラットフォームの仮想シリアルポートから送信された情報を表示するために使用できます。 1. MCUXpresso IDEを開く   2. IDEの上部にある「ターミナルを開く」ボタンをクリックするか、「Ctrl + Alt + Shift + T」を押して、MCUXpresso IDEターミナルを起動します。 3. シリアルターミナルを選択   4. シリアルポート設定(LPC-Link2 COMポート番号を使用)を115200ボーレート、8データビット、パリティなし、1ストップビットに設定し、「OK」ボタンを押します。 5. 接続が開いていることを確認します。コネクテッドの場合、MCUXpresso IDEはターミナルビューで下図のようになります。 6. 出発の準備は完了です
View full article
CIFAR10 TFLM Quick Build Guide catalogs I. Overview II. Environment Preparation 2.1 Virtual environment 2.2 Using Google Colab III. Core Steps 3.1 CIFAR10 dataset 3.2 Model creation 3.3 Model Training 3.4 Model Transformation 3.5 Inference Validation 3.6 Benchmark Performance 3.7 Full Implementation 3.7 Simplified version (Colab) IV. TFLite Micro Deployment V. Quick Verification Application Examples VII. Conclusion Reference Spoiler (Highlight to read) more details, please see the attachment. more details, please see the attachment. I. Overview CIFAR-10 : Alex Krizhevsky, University of Toronto The CIFAR-10 public dataset, and one of the most classic and commonly used entry-level benchmark datasets in computer vision, contains 60,000 32x32 color images (50,000 training, 10,000 testing) in 10 categories, such as airplanes, cars, birds, cats, and more. tflm_cifar10 : Demonstrates how to run a CIFAR-10 image classification model in real-time on a microcontroller from NXP using the TensorFlow Lite Micro framework. That is, a pre-trained convolutional neural network model for the CIFAR-10 dataset is deployed to the MCU, giving it the ability to recognize 10 classes of common objects (airplanes, cars, birds, cats, etc.). Model: a lightweight CNN model with 3 convolutional layers, ReLU activation layer, pooling layer and a fully connected layer. Input: 32x32 pixel color image. Output: probability that an image belongs to one of the 10 categories in CIFAR-10. This document: provides the complete process of building for the CIFAR10 dataset, from the dataset, model training transformation, deployment of inference of the rapid implementation of the program, can be used as an example of the tflm_cifar10 (inference-based) front complement, this paper does not involve the deployment and optimization of the end-side. ... """ CIFAR10 快速训练、测试、部署与推理完整流程 """ import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 减少TensorFlow日志 import tensorflow as tf import numpy as np import time import matplotlib.pyplot as plt print(f"TensorFlow版本: {tf.__version__}") print(f"NumPy版本: {np.__version__}") class CIFAR10QuickPipeline: def __init__(self): """初始化管道""" self.model = None self.tflite_model = None def load_data(self, sample_size=1000): """加载简化数据集""" print("\n1. 加载CIFAR10数据集...") (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() # 预处理 x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 # 使用少量数据(快速训练) x_train_small = x_train[:sample_size] y_train_small = y_train[:sample_size] x_test_small = x_test[:200] y_test_small = y_test[:200] # 转换为独热编码 y_train_onehot = tf.keras.utils.to_categorical(y_train_small, 10) y_test_onehot = tf.keras.utils.to_categorical(y_test_small, 10) print(f"训练数据: {x_train_small.shape}") print(f"测试数据: {x_test_small.shape}") return (x_train_small, y_train_onehot), (x_test_small, y_test_onehot) def create_simple_model(self): """创建简化CNN模型""" print("\n2. 创建简单CNN模型...") model = tf.keras.Sequential([ # 输入层 tf.keras.layers.Input(shape=(32, 32, 3)), # 卷积层1 tf.keras.layers.Conv2D(8, (3, 3), padding='same', activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), # 卷积层2 tf.keras.layers.Conv2D(16, (3, 3), padding='same', activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), # 全连接层 tf.keras.layers.Flatten(), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile( optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'] ) model.summary() self.model = model return model def train_model(self, x_train, y_train, x_test, y_test, epochs=10): """训练模型""" print("\n3. 训练模型...") # 回调函数:早停 callbacks = [ tf.keras.callbacks.EarlyStopping( monitor='val_loss', patience=3, restore_best_weights=True ) ] history = self.model.fit( x_train, y_train, epochs=epochs, batch_size=32, validation_data=(x_test, y_test), callbacks=callbacks, verbose=1 ) # 评估模型 test_loss, test_acc = self.model.evaluate(x_test, y_test, verbose=0) print(f"\n测试准确率: {test_acc:.4f}") return history def convert_to_tflite(self): """转换为TFLite格式""" print("\n4. 转换为TFLite格式...") # 转换为TFLite converter = tf.lite.TFLiteConverter.from_keras_model(self.model) # 优化配置 converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.target_spec.supported_types = [tf.float32] # 转换 tflite_model = converter.convert() # 保存模型 with open('cifar10_model.tflite', 'wb') as f: f.write(tflite_model) # 保存为字节数组(用于嵌入式部署) self.save_as_c_array(tflite_model) self.tflite_model = tflite_model model_size = len(tflite_model) / 1024 print(f"模型大小: {model_size:.1f} KB") return tflite_model def save_as_c_array(self, tflite_model): """保存为C数组格式""" c_array = '// 自动生成的CIFAR10模型数组\n' c_array += '#include \n\n' c_array += 'const unsigned char cifar10_model_tflite[] = {\n' # 每行显示12个字节 for i in range(0, len(tflite_model), 12): line_bytes = tflite_model[i:i+12] c_array += ' ' + ', '.join(f'0x{b:02x}' for b in line_bytes) + ',\n' c_array += '};\n\n' c_array += f'const unsigned int cifar10_model_tflite_len = {len(tflite_model)};\n' with open('cifar10_model_array.h', 'w') as f: f.write(c_array) print("C数组已保存: cifar10_model_array.h") def test_tflite_inference(self, x_test, y_test, num_tests=10): """测试TFLite推理""" print(f"\n5. 测试TFLite推理 ({num_tests}个样本)...") if self.tflite_model is None: with open('cifar10_model.tflite', 'rb') as f: self.tflite_model = f.read() # 加载TFLite模型 interpreter = tf.lite.Interpreter(model_content=self.tflite_model) interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details() # 类别名称 class_names = ['飞机', '汽车', '鸟', '猫', '鹿', '狗', '青蛙', '马', '船', '卡车'] correct = 0 times = [] for i in range(min(num_tests, len(x_test))): # 准备输入 input_data = x_test[i:i+1] # 推理 start_time = time.perf_counter() interpreter.set_tensor(input_details[0]['index'], input_data) interpreter.invoke() inference_time = time.perf_counter() - start_time times.append(inference_time) # 获取输出 output = interpreter.get_tensor(output_details[0]['index']) predicted_class = np.argmax(output[0]) actual_class = np.argmax(y_test[i]) # 检查是否正确 if predicted_class == actual_class: correct += 1 print(f"样本 {i+1}: 预测={class_names[predicted_class]:<5} " f"实际={class_names[actual_class]:<5} " f"时间={inference_time*1000:.1f}ms " f"{'✓' if predicted_class == actual_class else '✗'}") accuracy = correct / num_tests avg_time = np.mean(times) * 1000 print(f"\n推理统计:") print(f" 准确率: {accuracy:.1%} ({correct}/{num_tests})") print(f" 平均推理时间: {avg_time:.1f}ms") print(f" 推理速度: {1000/avg_time:.0f} FPS") return accuracy, avg_time def benchmark_performance(self, x_test): """性能基准测试""" print("\n6. 性能基准测试...") interpreter = tf.lite.Interpreter(model_content=self.tflite_model) interpreter.allocate_tensors() input_details = interpreter.get_input_details() # 预热 test_input = x_test[0:1] for _ in range(10): interpreter.set_tensor(input_details[0]['index'], test_input) interpreter.invoke() # 基准测试 num_runs = 100 start_time = time.perf_counter() for _ in range(num_runs): interpreter.invoke() total_time = time.perf_counter() - start_time avg_time = total_time / num_runs * 1000 print(f"基准测试结果:") print(f" 总推理次数: {num_runs}") print(f" 总时间: {total_time*1000:.1f}ms") print(f" 平均推理时间: {avg_time:.1f}ms") print(f" 推理速度: {1000/avg_time:.0f} FPS") return avg_time def save_model_summary(self): """保存模型摘要""" summary = [] self.model.summary(print_fn=lambda x: summary.append(x)) with open('model_summary.txt', 'w') as f: f.write('\n'.join(summary)) f.write(f"\n\n模型信息:") f.write(f"\n参数数量: {self.model.count_params():,}") f.write(f"\n保存时间: {time.ctime()}") print("模型摘要已保存: model_summary.txt") def main(): """主函数""" print("=" * 60) print("CIFAR10 快速训练、测试、部署管道") print("=" * 60) # 创建管道 pipeline = CIFAR10QuickPipeline() # 1. 加载数据 (x_train, y_train), (x_test, y_test) = pipeline.load_data(sample_size=2000) # 2. 创建模型 pipeline.create_simple_model() # 3. 训练模型 history = pipeline.train_model(x_train, y_train, x_test, y_test, epochs=15) # 4. 保存模型摘要 pipeline.save_model_summary() # 5. 转换为TFLite pipeline.convert_to_tflite() # 6. 测试推理 pipeline.test_tflite_inference(x_test, y_test, num_tests=20) # 7. 性能测试 pipeline.benchmark_performance(x_test) print("\n" + "=" * 60) print("流程完成!生成的文件:") print(" 1. cifar10_model.tflite - TFLite模型") print(" 2. cifar10_model_array.h - C数组格式") print(" 3. model_summary.txt - 模型摘要") print("=" * 60) if __name__ == "__main__": main() ... VII. Conclusion The purpose of this paper is to take a common image classification scenario (CIFAR10) as an example, so that readers can quickly understand the complete process from data building, model creation, training, inference and validation, which can be used as an example of the tflm_cifar10 (end-side inference-based) front complement, this paper does not involve the end-side deployment and optimization.
View full article
RT1170 以太网中的自由缓冲区超出范围问题 您好, 我正在尝试从自定义板上的自定义项目中执行基本的以太网测试。作为该项目(该项目集成了不同的模块,如SD卡、CAN、GPIO、ADC、以太网和EEPROM)的一部分,基本的以太网发送和接收有待验证。但我在 ping 发送前遇到"freed buffer out of range 错误" 。我已经完成了与以太网有关的所有基本初始化和配置。我看到出现错误的原因是函数"ethernetif_rx_free" (enet_ethernetif_kinetis.c) 中的 LWIP_ASSERT("Freed buffer out of range", ((idx>= 0)&& (idx< ENET_RXBUFF_NUM))); 其中的 idx 值为负数。这一完整的功能可在 EVK 套件上使用。 还能缺少什么?请提出建议。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 大家好 这个问题也发生在我的 RT1024 客户板上,当我在某个地方放了一个断点然后它就停止了,然后恢复正常运行更有可能导致这个错误。 此致敬礼! Ping Re: Freed Buffer out of Range Issue in Ethernet for RT1170 如果示例项目在您的自定义板中运行良好,则问题似乎出在软件方面。 您使用的不是 FreeRTOS 对吗? 似乎有什么东西干扰了示例的行为,可能是缺少某些配置,或者只是示例流程受到应用程序其他部分的影响。 我建议你尝试使用最新的软件开发工具包版本,即2.15.000。如果您的问题在此版本中仍然出现,那么恐怕您的应用程序流程出现了问题。 此致, 丹尼尔 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 是的,在自定义板中实现合并的源代码时会出现问题。但是,没有与其他接口合并的 Ethernet_PING 的单个来源在自定义板中运行良好。当以太网的单个源与其余接口合并时,就会出现问题。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 如果我没有理解错的话,当您运行 SDK 示例时,它是可以工作的。但当您添加自定义应用程序时,问题就出现了。你能确认吗? 此致, 丹尼尔 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 实际上,以太网的各个源代码在自定义板中运行良好。当我尝试集成代码时,以太网无法正常工作。我观察到EIR 寄存器的第 25 (RXF)、26 (TXB) 和 27 (TXF) 位被设置为 0,RDAR 寄存器的第 24 位被更新为 0,但在以太网的工作代码中,这些寄存器被设置为 "1"。 我怀疑这些寄存器更新是由中断处理的,但我无法在自定义项目代码库中找到负责这些更新的特定处理程序。请帮帮我。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 请仔细检查是否有任何外围更改(例如:......)。为了让 EVK 示例在您的定制硬件中运行,您的项目中需要哪些外围实例? 如果您已经验证了这一点,看来问题出在硬件方面。 您是否已经用 HDG 验证了您的设计? 此致, 丹尼尔 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 我使用的是 SDK 11.6.1 版。我正在尝试测试 lwip_ping_bm_cm7 示例。在 EVK 中运行正常。 但是,当尝试将所有源代码与以太网连接时,它在自定义板上不起作用。如果我们面临"Freed Buffer out of range" ,可能会出现什么问题?请帮我解决这个问题。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 您使用的是哪个版本的 SDK? 您用来测试的 SDK 示例是什么? 如果我理解正确,应用程序在 EVK 中运行正常,对吗? 此致, 丹尼尔
View full article
PCIe: i.MX 95: 複数の MSI IRQ ベクトルを割り当てる こんにちは、 PCIe2 インスタンス経由でコネクテッドされた i.MX95 ベースのシステムで ATH12K Wi-Fi モジュールを使用しています。 linux-imx lf‑6.12.y ベースのカーネルではこのセットアップは失敗しますが、lf‑6.6.y ベースのカーネルでは期待どおりに動作します。 カーネル ドライバは 16 個の MSI 割り込みを正常に要求し、受信します。しかし、その後、Wi-Fi モジュールの起動に失敗します。 [ 5.888139] ath12k_pci 0001:01:00.0:iommuグループ5に追加 [ 5.888506] ath12k_pci 0001:01:00.0:BAR 0 [mem 0xa10000000-0xa101fffff 64bit]: 割り当て済み [ 5.888553] ath12k_pci 0001:01:00.0:有効化デバイス (0000 -> 0002) [ 5.889315] ath12k_pci 0001:01:00.0:MSIベクター: 16 [ 5.889334] ath12k_pci 0001:01:00.0:ハードウェア名: wcn7850 hw2.0 [ 6.475718] ath12k_pci 0001:01:00.0:チップID 0x2 チップファミリー 0x4 ボードID 0xff soc_id 0x40170200 [ 6.475743] ath12k_pci 0001:01:00.0:fw_version 0x110cffff fw_build_timestamp 2025-06-25 09:26 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3 [ 7.647106] ath12k_pci 0001:01:00.0:制御応答完了、ポーリングを受信できませんでした。 [ 8.675241] ath12k_pci 0001:01:00.0:サービス接続タイムアウト [ 8.681002] ath12k_pci 0001:01:00.0:HTTへの接続に失敗しました: -110 [ 8.692180] ath12k_pci 0001:01:00.0:コアの起動に失敗しました: -110 カーネルメーリングリスト[1]では別のPCIeデバイスに関する関連した議論がありましたが、まだ私たちのシステムで動作する構成には至っていません。 どうすれば最善の進め方でしょうか? 再開まで今しばらくお待ちください。 最大 [1] https://lore.kernel.org/all/1819305.VLH7GnMWUR@steina-w/ Re: PCIe: i.MX 95: Allocate Multiple MSI IRQ Vectors こんにちは、 i,MX95 はまだ初期段階であり、一部の構成はデザインされていません。しかし、PCIe2経由でATH12Kを搭載したi.MX95は lf-6.12.y ですが、 lf-6.6.y で作業中ですこれは、新しいカーネルの PCIe または Wi-Fi スタックにおける回帰またはドライバー相互作用の変更を示唆しており、PCIe パワーマネージメント (ASPM)、MSI マッピング、または ATH12K の特定の PCIe エンドポイントの癖に関係している可能性があります。多くの場合、カーネル パッチを適用するか、新しいカーネルのブート引数で ASPM を無効にすることで解決できます。dmesg で PCIe エラーを確認し、デバイスツリーを比較し、NXP/Linux カーネル メーリング リストで関連するコミットを探します。  考えられる原因とトラブルシューティングの手順を次に示します。 1. カーネルログを確認する ( dmesg ) PCIe エラーを探す: 障害が発生した lf-6.12.y カーネルの dmesg で、「PCI」、「MSI」、「ATH12K」、「Error」、「Firmware」、または「Timeout」メッセージを検索します。 ファームウェアのロード: ath12k ファームウェアが正しくロードされているかどうか、および初期化中にエラーが発生していないかどうかを確認します。  2. PCIe電源管理(ASPM) 一般的な問題:新しいカーネルでは、多くの場合、Active State パワーマネージメント (ASPM) がデフォルトで有効になっています。これにより、組み込みシステム上の ATH12K などの PCIe デバイス、特に古いファームウェア/ハードウェアで問題が発生する可能性があります。 ASPM を無効にしてみてください:カーネル ブート引数 (U-Boot または GRUB など) に pcie_aspm=off を追加して、再度テストします。  3. Devicetree/DTBの違い DTB の比較:両方のカーネル ( .dtb ファイル) で使用されるデバイス ツリー BLOB (DTB) を生成して比較します。特に割り込み、電源ドメイン、または互換性プロパティに関連する、 pci2 の PCIe ノードの変更を探します。  4. カーネルドライバー/ファームウェアの回帰 特定のコミット: ATH12K ドライバ ( ath12k )、 mac80211 、または lf-6.12.y のコア PCIe/Arm コードによって、セットアップを壊す変更が導入された可能性があります。 メーリング リストを検索: ath12k 、 i.MX95 、およびそれ以降のカーネル (6.12+) に関するパッチやディスカッションについては、Linux カーネル メーリング リスト (LKML) および NXP のリストを確認してください。  5. MSIの取り扱い 割り込み再マッピング:割り込みを受信すると、その処理方法 (MSI-X と MSI、割り込み再マッピング) が微妙に変わる場合があります。 proc/interrupts で割り込みをチェックします。カーネル間で割り込みの分布またはカウントが異なるかどうかを確認します。  6. ファームウェアブロブ ファームウェア バージョン:新しいカーネルのドライバと互換性のある、ATH12K 用の正しいファームウェアを使用していることを確認します。新しいドライバには新しいファームウェアが必要になる場合があります。  要約すると、 dmesg から始めてASPMを無効にしてみてください。これらは、組み込みプラットフォームの新しいカーネルでPCIe Wi-Fiの障害が発生する最も一般的な原因です。   よろしくお願いします。 Re: PCIe: i.MX 95: Allocate Multiple MSI IRQ Vectors 提案は問題をデバッグするための良い指針でしたが、解決策を見つけることができませんでした。つまり、すべての MSI IRQ ベクトルがドライバ内の IRQ ルーチンをトリガーしたわけではありません。 最終的には、ath12k ドライバーを変更して、1 つの MSI IRQ のみを要求するようにすることで、この問題を回避しました。 現在の Linux マスターにはこの問題は発生しないことに注意してください。 よろしくお願いします。 最大
View full article
在 imx8mp 上使用 rproc 希望你一切都好。这可能是一组零星的问题,但我是 Yocto 和异构芯片的新手。如有任何帮助,我们将不胜感激。 我使用的是使用 imx8mp 的Kontron 底板。我可以通过 SD 卡在 A 核上构建并运行 Yocto,同样,我也可以在 M 核上运行代码。但是后者是使用 U-启动 完成的,现在我想将其移到使用 rpmsg 功能进行 rproc 控制。 我用 menuconfig 启用了驱动程序,现在加载 Linux 时,我在 sys/class/ 中看到了 remoteproc 文件夹。然而,它是空的。我相信这意味着它没有在设备树中启用。如果我的理解有误,请纠正我,我想按以下步骤操作: 修改设备树以为 TCM 保留内存(并启用邮箱?)。 用叠加法来完成,而不是修改调入的 dtb 文件。 使用配方/层将其添加到内核版本中。 我找到了这份imx linux rproc 支持文档,但它没有告诉我如何像上面描述的那样加载覆盖层,也没有告诉我不同的加载方法。 我的模糊问题是 我朝着设备树的方向冲错树了吗?"的" 方式是什么? 我的最终目标是我用 Yocto 构建所有东西,将图像闪存到板上,无需进一步的板互动。这可能吗? 更尖锐的问题: 如何在 Yocto 版本时应用叠加层? imx linux rproc 支持文档提到了rproc DTS 节点和使用的内存节点。只需要做这些改动吗? 提前感谢! i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Yocto Project Re: Using rproc on the imx8mp 嗨,@waker、 我用设备树冲错树了吗?什么是 “完成” 的方式? 你说得对:完成的方法是在 DT 中启用 i.MX remoteproc 节点,保留固件和 RPMsg 使用的内存区域(ITCM/DTCM 或 DDR、vrings、vdev 缓冲区、可选资源表),然后连接 rpmsg‑virtio 使用的邮箱(MU)。i.MX 的内核 rproc 驱动程序(imx-rproc)需要这些 DT 节点;如果存在,你会在 /sys/class/remoteproc/ 下看到 remoteproc0。 如何在 Yocto 版本时应用叠加层? 您可以按照以下指南实现这一目标: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/How-to-use-Devshell-to-compile-device-tree-files/ta-p/1727428 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/How-to-compile-Linux-Kernel-Image-and-device-tree-using-Yocto/ta-p/2022759 我的最终目标是我用 Yocto 版本所有东西,将图像闪存到板上,无需进一步的板互动。这可能吗? 是的,你可以根据需要生成合适的补丁并将补丁应用到Yocto Project。 imx linux rproc 支持文档是否提到了 rproc DTS 节点和使用的内存节点。只需要做这些改动吗? 是的。 你可以查看我们的 imx8MP-EVK 板的演示和设备树作为参考。 要启用虚拟通道,必须在系统中安装一个内核模块,如我们在示例中所述。 https://github.com/nxp-mcuxpresso/legacy-mcux-sdk-examples/tree/main/evkmimx8mp/multicore_examples/rpmsg_lite_str_echo_rtos https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx8mp-evk-rpmsg.dts 敬上, Chavira Re: Using rproc on the imx8mp 感谢您的回复,我已经将设备树加载到系统上(附上了经过修改的 Kontron 提供的设备树)。我可以看到这是预留内存目录: root@kontron-mx8mp:~# ls /proc/device-tree/reserved-memory/ '#address-cells' m4@0x10000000 m4@0x800000 name '#size-cells' vdev0vring1@55008000 dsp@92400000 m4@0x7E0000 m4@80000000 ranges vdev0vring0@55000000 vdevbuffer@55400000 但是,远程程序目录(/sys/class/remoteproc/)是空的,我读过这是设备树中的内存问题。知道我哪里出错了吗? 可能还值得一提的是,我在启动时看到了以下内容: [ 13.286497] remoteproc remoteproc0: releasing imx-rproc 我还使用您提到的evk rpmsg dts 进行了校准,但没有成功。我也遇到了同样的问题。 Re: Using rproc on the imx8mp 我在启动时也看到了这个: `[13.289371] 平台 imx8mp-cm7:延迟探测等待中`
View full article
iMX93の全コアにZephyrを搭載 こんにちは、 iMX93 のすべてのコアで RTOS を実行したいと考えています。それは可能ですか? Zephyr の Web サイトを見ると、FRDM-IMX93 ボードの M33 コアで Zephyr を実行するプロジェクトがあるようです。また、A55 コアで Zephyr を実行するプロジェクトもあります。 しかし、両方実行することはできますか?両方の A55 プロセッサで別々の Zephyr プロジェクトを実行できますか? チップの初期化はどのように機能しますか。クロックやメモリコントローラの初期化のようなものですか?誰がそんなことをするのでしょうか? 不可能な場合は、MCUXPresso を使用して M33 コア上で RTOS を実行し、チップを初期化することはできますか?両方の A55 コアに Zephyr を使用しますか? すべてのコアで RTOS を実行する方法は何ですか? Re: Zephyr on all cores of a iMX93 こんにちは@simmania 2x A55 で実行される 2 つの Zephyr プロジェクトの場合、これはサポートされません。サポートされているフレームワークは、Linux を実行する A55 --> Jailhouse --> Zephyr を実行するその他の A55 であるため、Jailhouse がハードウェアのアイソレータを管理する必要があります。 不可能な場合は、MCUXPresso を使用して M33 コア上で RTOS を実行し、チップを初期化することはできますか?両方の A55 コアに Zephyr を使用しますか? --> i.MX93は、ブートROMからM33を起動する低消費電力ブートをサポートしています。目的を達成するには、SDKのコードを大幅に書き換える必要があります。根本的な問題は、DDRを誰が初期化するかです。ドキュメントによると、U-Bootを維持するのが最適な選択です。U-BootはM33とA55プロセッサの両方でZephyrを同時にロードできるためです。 https://docs.zephyrproject.org/latest/boards/nxp/imx93_evk/doc/index.html よろしくお願いします、 志明 Re: Zephyr on all cores of a iMX93 NXPの社員によると、銛を使えば可能だという。 NXPのテクニカルサポートは、それは不可能だと言っています。 非常に紛らわしい。 Re: Zephyr on all cores of a iMX93 iMX93のAコアとmコアの両方がZephyrリリースをサポートしています。ZephyrランディングページにアクセスしてMPU Zephyr使用ガイドを入手してください。Aコアとmコアの両方でZephyrを同時に実行したい場合は、NXPのHarpoonリリースを探してください。 https://www.nxp.com/design/design-center/software/embedded-software/zephyr-os-for-edge-connected-devices:ZEPHYR-OS-EDGE Re: Zephyr on all cores of a iMX93 Harpoonのドキュメントで、以下の記述を見つけました。 Harpoonは、Linuxディストリビューション上で並列動作する1つ(または複数)のCortex-Aコア上で動作するRTOS上で、リアルタイム処理能力が要求されるアプリケーションを開発するための環境を提供し、64ビットArmアーキテクチャを活用して高いパフォーマンスを実現します。 つまり、一部のコアではまだLinuxが必要なのです。つまり、iMX93の全コアでZephyrを実行することは不可能のようだ。 Re: Zephyr on all cores of a iMX93 @simmania コアユーザーガイドはこちら UG10199:NXP MPU Cortex-Aコア Zephyrユーザーガイド | NXPセミコンダクターズ Zephyrのウェブページには、すでに93 Aコアとmコアのサポートについて記載されています。 i.MX93 EVK — Zephyrプロジェクトドキュメント 銛ユーザーガイド UG10170:Harpoonユーザーガイド|NXPセミコンダクターズ Re: Zephyr on all cores of a iMX93 ご回答ありがとうございます。 しかし、私たちはまだiMX93を使った開発を行っておらず、私たちにとってはまだ明確な答えが出ていません。 私たちは現在、新しいプロジェクトで使用するハードウェアを選定しているところです。今私たちが知りたいのは、Linuxを必要とせずにZephyrをすべてのコアで実行できるかどうかだけです。 Re: Zephyr on all cores of a iMX93 @simmania 1 つの A コアで Harpoon を実行し、別の A コアで Zephyr を実行し、mcore で Zephyr を実行することもできます。あるいは、A コアでネイティブ Zephyr を実行し、mcore Zephyr を実行する BootROM を使用することもできます。 プログラム flash.bin を UUU を使用して SD/eMMC に書き込む — MCUXpresso SDK ドキュメントを参照してください。 ステップ4でzephyr.binをimx-mkimage/i.MX9のm33_image.binにコピーしてフラッシュbinを作成します 対応するLinux BSPリリースからブートイメージとimx-mkimageソースリポジトリを入手してください。imx-mkimage/i.MX9に配置する必要のあるブートイメージは以下のとおりです。 - u-boot-imx93evk.bin-sd (rename to u-boot.bin) - u-boot-spl.bin-imx93evk-sd (rename to u-boot-spl.bin) - bl31-imx93.bin (rename to bl31.bin) - mx93a0-ahab-container.img - lpddr4_dmem_1d_v202201.bin - lpddr4_dmem_2d_v202201.bin - lpddr4_imem_1d_v202201.bin - lpddr4_imem_2d_v202201.bin Re: Zephyr on all cores of a iMX93 実際、私はついにFRDM iMX93上で、両方のA55コアを使用してSMPでZephyrを動作させることに成功しました。鍵は「```west flash -r spsdk``` でした」でした。 Re: Zephyr on all cores of a iMX93 リアルタイムエッジソフトウェアユーザーガイドの第3.3章「柔軟なリアルタイムシステム」を参照してください。 表30は、i.MX 93プラットフォーム上で実行可能なすべてのAMPシステムを示しています。 また、 hetogeneous-multicore は、これらの可能なすべての AMP システムを実行するためのハローワールドの例を提供します。たとえば、i.MX 93 は構築でき、Realtime Edge も次の事前構築済みバイナリ イメージを提供します。 i.MX93の各Cortex-Aコアで2つのZephyrを実行するための重要な技術的ポイント: 1. リソースの割り当て 第3.3.2.2章の技術的なポイントを参照し、リソースの競合を避けるために、これら2つのZephyrインスタンスには異なるUARTとRAMメモリを使用してください。 heterogeneous-multicoreを使用せずに Zephyr のサンプルを構築することもできますが、リソース割り当ての方法についてはheterogeneous-multicoreを参照することができます。 2. 起動方法 現在、ubootコマンドを使用してこれら2つのZephyrインストールを起動できます。最初のZephyrは「cpu release」コマンドを使用して起動し、次に「go」コマンドを使用して起動します。詳細については、ユーザーガイドを参照してください。 また、Real-time Edgeで提供されるCortex-Aコアの統合ライフマネジメントをサポートするには、TF-A、U-BootなどのReal-time Edgeリポジトリを使用する必要があります。 そして、次回のRealtime Edgeリリース(7月リリース予定)では、「高速起動」という新機能が提供されます。この新機能により、TF-Aはこれら2つのZephyrインスタンスを1秒未満で起動できるようになります。 この件に関して他に何かお手伝いが必要な場合は、遠慮なくお知らせください。ありがとうございます。 Re: Zephyr on all cores of a iMX93 それは素晴らしいですね! 銛を使う?しかし、Harpoonのドキュメントにはこう書かれている。 「システムはLinux上で起動し、Jailhouseハイパーバイザがハードウェアを分割して、LinuxとゲストRTOSを並行して実行します。」 私たちは、LinuxなしでZephyrがすべてのコアで動作することを望んでいます。 Re: Zephyr on all cores of a iMX93 答えはイエスですが、これ以上の詳細情報は提供できません。さらに質問がある場合は、 @Jiafei_Pan までお問い合わせください。 Re: Zephyr on all cores of a iMX93 同時に2つのZephyrアプリケーションを実行することについて話しているのですか、それともSMPを使用して両方のコアをスケジューリングに利用できるようにしているアプリケーションについて話しているのですか? 2番目のケースには非常に興味があるのですが、うまく動作させることができません。 Re: Zephyr on all cores of a iMX93 @Jiafei_Pan さん、Harpoon を導入せずに A コアと mcore 上で 2 つの Zephyr を実行できるようにする方法について何か情報を提供していただけますか。ありがとう!
View full article
溦【xins4698】腾龙新公司注册游戏账号网址是多少 溦【xins4698】腾龙新公司注册游戏账号网址是多少 LPC Marketing LPC51Uxx LPC546xx LPC54xxx LPC55xx LPC800
View full article
如何:使用 NXP Vision SDK 示例项目中的现有代码在 S32DS 中创建新的 Makefile 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本文档详细介绍了如何在 S32 Design Studio 中创建新项目,以及如何使用 NXP Vision SDK 示例项目中提供的现有代码和 makefile 进行构建。如果您使用来自任何其他来源的代码创建新的 makefile 项目,则过程可能会有所不同。 在从现有代码创建新的 makefile 项目之前,我们需要向环境变量 PATH 添加一些路径和几个新的环境变量。添加这些路径和变量主要有 3 种方法。哪种方法取决于您的需要。 方法 1 路径和变量可以单独添加到每个项目。如果您只希望这些更改影响少数项目,这将很有用。或者如果您的项目需要不同的路径和变量。注意:这些更改将在项目创建后进行(如下面的步骤 15 - 17 所示) 方法 2 路径和变量可以添加到 S32DS 内的整个工作区。这些在 S32DS 之外是不可见的,因此不会影响整个 Windows 环境。如果您有大量对路径和变量有共同要求的项目,并且不希望它们在 S32DS 之外的任何工具中可见,这将非常有用。 方法 3 路径和变量可以全局添加到 Windows 环境中,并将影响所有已安装的工具。不推荐使用这种方法。 选择方法后,将以下路径添加到 PATH 变量(使用 S32DS 的默认安装设置显示的路径): C:\NXP\S32DS.3.1\S32DS\build_tools\gcc-6.3-arm32-eabi\bin C:\NXP\S32DS.3.1\S32DS\build_tools\gcc-6.3-arm64-eabi\bin C:\NXP\S32DS.3.1\S32DS\build_tools\gcc-6.3-arm64-linux\bin C:\NXP\S32DS.3.1\S32DS\build_tools\msys32\mingw32\bin 或者在 Eclipse 中(可以使用变量,如果 S32DS 安装布局在未来版本中发生变化,则无需更新这些变量) ${S32DS_ARM32_TOOLCHAIN_DIR} ${S32DS_ARM64_LINUX_TOOLCHAIN_DIR} ${S32DS_ARM64_TOOLCHAIN_DIR} ${S32DS_GCC_TOOCHAIN_DIR} 还需要添加以下 Windows 系统变量: 变量名称:S32V234_SDK_ROOT 变量值:C:\NXP\S32DS_Vision_v2018.R1\S32DS\s32v234_sdk 变量名称:APU_TOOLS 变量值:C:\NXP\S32DS_Vision_v2018.R1\S32DS\APUC 以下步骤演示了基于上述方法 1 的过程。 1)启动S32DS for Vision 2)点击“新建” 3)选择“使用现有代码的 Makefile 项目” 4)选择下一步 5)输入项目名称。 6)对于“现有代码位置”, a)选择“浏览… ”,然后选择目录C:\NXP\S32DS.3.1\S32DS\software\VSDK_S32V2_RTM_1_3_0\s32v234_sdk\demos\isp\isp_sonyimx224_rgb_yuv_gs8    b) Click OK 7)对于“索引器设置工具链”,选择与您所需的构建配置相匹配的选项。对于我们这里的示例,我们将选择“ ARM Linux 64 位目标二进制工具链”。有关工具链选项的更多详细信息,请参阅 Vision 扩展包用户指南。这设置了一些工具链路径,但稍后我们将根据 VSDK 示例的特定需求设置更多路径。 8)点击完成 9) 在项目资源管理器中右键单击该项目。选择“属性” 10) 转到“C/C++ 构建”部分 11)转到“行为”选项卡,在“构建”旁边的字段中输入: ISP 示例:' allsub ' APEX 示例:' APU_COMP=nxp allsub ' 12)转到“构建器设置”选项卡,在“构建位置”部分更改“构建目录”的路径。点击“工作区... ”按钮 13) 在文件夹选择菜单中,选择子文件夹“ build-v234ce-gnu-linux-d ”,然后单击“确定” 14)转到“环境”部分 15)选择环境变量“ PATH ”,然后单击“编辑... ” 16)将路径变量添加到值字段,每个变量用逗号“;”分隔 ${S32DS_ARM32_TOOLCHAIN_DIR} ${S32DS_ARM64_LINUX_TOOLCHAIN_DIR} ${S32DS_ARM64_TOOLCHAIN_DIR} ${S32DS_GCC_TOOCHAIN_DIR} 单击OK。 17) Click 'Add...' 18) 单击“添加... ”,然后输入变量名称“ APU_TOOLS ”和值“ ${S32DS_APU_TOOLCHAIN_DIR} ” 单击OK。 19)单击“确定”关闭“属性”菜单。 20)点击“构建” 21) 构建完成后,将创建二进制文件(ELF)
View full article
楼宇及家居自动化系统 Overview 智能的集成楼宇系统使用户能够提高能效、降低维护成本,并方便地控制智能手机和高级 HMI 的环境。 它们的互联功能拥有大数据平台,可做出更智能、环保的决策,同时确保最大的舒适度和性能。 NXP ®提供全方位的解决方案,旨在满足智能建筑的环境、寿命和节能要求,从照明到暖通空调、网络到楼宇门禁等等。我们的集成产品功能有助于推动下一波智能建筑浪潮、降低系统成本并加快产品上市时间。 用例 智能控制和访问 楼宇安全 暖通空调(HVAC) 照明 安全监控 连接 结构框图 产品 类别 MCU 产品URL K70_120:Kinetis ® K70-120–150 MHz,基于 Arm ® Cortex ® -M4 内核的高速 USB、以太网、DDR 和防篡改微控制器 产品描述 Kinetis ® K70 MCU 系列为工业控制面板、导航显示器、销售点终端和医疗监控设备等应用提供业界领先的低功耗和混合信号模拟集成。 类别 电源管理 产品网址 1 TEA1723FT:集成MOSFET的高压启动反激控制器,适用于11 W应用,F~Burst = 1750 Hz 产品描述 1 TEA1723是一款小体积低成本开关模式电源(SMPS)控制器IC,适合低功率应用(最高11 W),可直接使用整流市电电源工作。 产品网址 2 NTS0104:双电源转换收发器;开漏;自动方向感应 产品描述 2 NTS0104是4位双电源转换收发器,具有自动方向感测功能,可使能双向电压电平转换。 类别 Zigbee 产品URL JN5189/88 (T):适用于 Zigbee ®和 Thread 的高性能、超低功耗 MCU,内置 NFC 选项 产品描述 JN5189 产品组合旨在为下一代极低电流无线设备供电,支持 Zigbee 3.0、Thread 和 IEEE 802.15.4。 类别 传感器 产品网址 1 PCF85063A:具有闹钟功能和 I2C 总线的微型实时时钟/日历 产品描述 1 PCF85063ATL是一款CMOS实时时钟(RTC)和日历,最适合低功耗应用。 产品网址 2 PCT2075:I2C 总线 Fm+,精度为 1 摄氏度,数字温度传感器和热看门狗 产品描述 2 PCT2075 是一款温度数字转换器,在 -25 °C 至 +100 °C 范围内具有 ±1 °C 的精度。 类别 驱动程序 产品网址 1 PCF85176:适用于低复用率的 40 x 4 通用 LCD 驱动器 产品描述 1 PCF85176是一款外围器件,能驱动几乎任何低复用率液晶显示器(LCD)。 产品网址 2 PCA9633: 4位Fm+ I²C总线LED驱动器 产品描述 2 PCA9633是一款I²C总线控制的4位LED驱动器,最适合红/绿/蓝/琥珀(RGBA)调色应用。 类别 接口 产品网址 1 SC16IS752_SC16IS762:双 UART,带 I²C 总线/SPI 接口、64 字节发送和接收 FIFO、内置 IrDA SIR 支持 产品描述 1 SC16IS752/SC16IS762是一个连接双通道高性能UART的I²C总线/SPI总线接口,提供最大5Mbit/s的数据速率、低工作和睡眠电流;还为应用提供8个额外可编程I/O引脚。 产品网址 2 TDA5051AT: 家庭自动化调制解调器 产品描述 2 TDA5051A是一款调制解调器IC,专用于使用家庭电源网络以600波特或1200波特的数据速率进行ASK传输。 它通过单个5V电源工作。 产品网址 3 PCA9848:8通道超低电压、带复位功能的Fm+ I2C总线开关 产品描述 3 PCA9848是一款超低电压的八通道双向变换开关,通过I²C总线进行控制。 产品网址 4 PCA6408A:低压、8 位 I²C 总线和 SMBus I/O 扩展器,带有中断输出、复位和配置寄存器 产品描述 4 PCA6408A 是一款 8 位通用 I/O 扩展器,可通过 I²C 总线接口为大多数微控制器系列提供远程 I/O 扩展。 产品网址 5 PCA9629APW: Fm+ I2C总线高级步进电机控制器 产品描述 5 PCA9629A 是一款 I²C 总线控制的低功耗 CMOS 器件,可提供驱动四相步进电机所需的所有逻辑和控制。 框图 智能家居
View full article
Android 启动时解锁设备 背景 一些客户将运行 Android 的 imx 连接到云端,因此重新启动引导加载程序和使用fastboot oem unlock是不可接受的。这样系统就断开了连接,无法使用adb进行远程操作。 因此本文建议在系统首次运行时,在启动bootloader之前执行oem unlock,即可直接解锁。 补丁 diff --git a/drivers/fastboot/fb_fsl/fb_fsl_boot.c b/drivers/fastboot/fb_fsl/fb_fsl_boot.c index 86b919775a..d60cd248ee 100644 --- a/drivers/fastboot/fb_fsl/fb_fsl_boot.c +++ b/drivers/fastboot/fb_fsl/fb_fsl_boot.c @@ -529,6 +529,42 @@ bool __weak is_power_key_pressed(void) { return false; } +static void wipe_all_userdata(void) +{ + char response[FASTBOOT_RESPONSE_LEN]; + + /* Erase all user data */ + printf("Start userdata wipe process....\n"); + /* Erase /data partition */ + fastboot_wipe_data_partition(); + +#if defined (CONFIG_ANDROID_SUPPORT) || defined (CONFIG_ANDROID_AUTO_SUPPORT) + /* Erase the misc partition. */ + process_erase_mmc(FASTBOOT_PARTITION_MISC, response); +#endif + +#ifndef CONFIG_ANDROID_AB_SUPPORT + /* Erase the cache partition for legacy imx6/7 */ + process_erase_mmc(FASTBOOT_PARTITION_CACHE, response); +#endif + +#if defined(AVB_RPMB) && !defined(CONFIG_IMX_TRUSTY_OS) + printf("Start stored_rollback_index wipe process....\n"); + rbkidx_erase(); + printf("Wipe stored_rollback_index completed.\n"); +#endif + process_erase_mmc(FASTBOOT_PARTITION_METADATA, response); + printf("Wipe userdata completed.\n"); +} +void do_unlock(void) +{ + int status; + wipe_all_userdata(); + status = fastboot_set_lock_stat(FASTBOOT_UNLOCK); + if (status < 0) + return FASTBOOT_LOCK_ERROR; + printf("Unlock device\n"); +} int do_boota(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { ulong addr = 0; @@ -563,6 +599,9 @@ int do_boota(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { fastboot_set_lock_stat(FASTBOOT_LOCK); lock_status = FASTBOOT_LOCK; } + if (lock_status == FASTBOOT_LOCK){ + do_unlock(); + } bool allow_fail = (lock_status == FASTBOOT_UNLOCK ? true : false); avb_metric = get_timer(0); Android i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano
View full article
适用于 ARM 2018.R1 的 S32 Design Studio - 更新 4 现已发布 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />       产品发布公告 汽车微控制器和处理器 ARM ® 2018.R1 版 S32 设计工作室  Update 4          新增内容 适用于 S32K14x 的 S32 SDK 1.9.0 BETA 版。这是一个累积更新 - 它包含之前更新的所有内容(更新 1 、更新 2 、更新 3 ) 要在新项目向导中选择新的 SDK,必须将工具链更改为“ARM Bare-Metal 32 位目标二进制工具链” 安装说明 此更新适用于 在线的 (通过 Eclipse Updater)或 离线安装(直接下载链接) 在线的 安装: 进入菜单“帮助”->“安装新软件...”对话框  select predefined update site "S32DesignStudio - http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_ARM_2018.R1/updatesite" 选择所有可用项目并单击“下一步”按钮   离线安装: 转到 S32 Design Studio for ARM 产品页面 -> 下载部分或使用 直接链接下载更新存档 zip 文件 启动 S32DS 并转到“帮助”->“安装新软件...” 添加一个新的 “Archive” 仓库,然后浏览并选择您在之前步骤中下载的更新归档.zip 文件。 选择所有可用项目并单击“下一步”按钮。   这将启动更新安装过程。 概述
View full article
将 MCUXpresso SDK 导入 MCUXpresso IDE <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> MCUXpresso SDK 软件包以 .zip 格式下载文件。如果您使用 第三方 IDE(例如 IAR 或 Keil),则必须解压缩该包才能访问项目文件。此外,还必须为 MCUXpresso 配置工具提供解压缩的 SDK 文件夹。这就是为什么默认建议继续解压下载的 SDK 包。   但是,如果使用 MCUXpresso IDE,则可以将压缩或解压缩的 SDK 导入 MCUXpresso IDE。压缩的 SDK 将节省磁盘空间,并且可以比解压缩的 SDK 文件夹更快地导入 IDE。通过将 MCUXpresso SDK 导入 IDE,可以扩展 MCUXpresso 的 IDE 部件支持,因此如果您需要添加新设备,这可以节省一些时间。另请注意,您的 SDK 包必须支持 MCUXpresso,因此必须是最近在 SDK Builder 中创建的(3 月 24 日之后),并且包中明确支持 MCUXpresso,否则您在尝试导入它时会收到错误。 将 MCUXpresso SDK zip 包或文件夹拖放到 IDE 中时,会创建该 zip/文件夹的副本并将其放入 C:\Users\ \mcuxpresso\SDKPackages 目录中。因此,您可以删除已下载的原始副本以节省磁盘空间。     如果导入的 SDK 是压缩的,那么在创建或导入示例项目时,SDK 源文件总是会被复制到工作区中。如果导入的 SDK 已解压,那么您可以选择将 SDK 源文件复制到工作区(这是默认设置),或者可以直接将 SDK 文件作为链接引用进行引用。 如果将 SDK 作为压缩文件导入,则可以稍后从 MCUXpresso IDE 内部解压缩。此解压缩已经过优化,因此比通过 WinZip 等程序解压缩要快得多。在 MCUXpresso IDE 内部解压时,MCUXpresso SDKPackages 文件夹中的 zip 文件将在解压完成后自动从硬盘中删除。然后,您可以在使用 MCUXpresso 配置工具时将此解压缩的文件夹用作该 SDK 位置。       您还可以通过将 SDK 包(压缩或解压)放入默认 SDKPackages 目录( C:\Users\ \mcuxpresso\SDKPackage) 并重新启动 MCUXpresso IDE 来添加 MCUXpresso SDK。   最后,您还可以通过转到窗口 -> 首选项 -> MCUXpresso IDE -> SDK 选项来指定 MCUXpresso IDE 应该搜索 SDK 文件(压缩或解压)的其他目录。这对于将 SDK 存储库保存在硬盘驱动器上的特殊位置非常有用。但是,对于存储在默认位置之外的 SDK,IDE 内部的“删除 SDK”功能是禁用的,并且额外的搜索路径仅保存在每个工作区中,因此如果您选择另一个工作区,它将不会知道新的 SDK 文件夹,直到您重新添加路径。如果在不同位置为同一设备找到多个 SDK,IDE 会根据列表中的优先级选择要使用的包(顶部优先)。   有关预安装部件支持和导入 SDK 的更多详细信息,请参阅 MCUXpresso IDE 用户指南第 4 部分以及此信息丰富的培训视频。
View full article
KSDK 段式 LCD 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 此补丁为带有 TWRPI-SLCD 模块的 Kinetis Tower 板添加了段式 LCD (SLCD) 示例。它重用了“用于 FRDM-KL43Z 的 KL33Z 的 Kinetis SDK 1.2.0 独立版”中包含的 SLCD 驱动程序,并使用 TWRPI-SLCD 模块将示例移植到电路板上。   该补丁是为 KSDK v1.2.0 编写的,可在www.freescale.com/KSDK上找到。要安装补丁,请解压缩到 KSDK 安装目录,默认情况下为 C:\Freescale\KSDK_1.2.0。仅针对这些示例更新了库和示例应用程序中的调试构建配置。使用前需要更新发布构建配置。这些示例支持的主板有:   TWR-KL46Z48M   TWR-KL43Z48M   TWR-KL46Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。此示例的路径为\KSDK_1.2.0\examples\twrkl46z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。   TWR-KL43Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。本例的路径是 \KSDK_1.2.0\examples\twrkl43z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 此补丁为带有 TWRPI-SLCD 模块的 Kinetis Tower 板添加了段式 LCD (SLCD) 示例。它重用了“用于 FRDM-KL43Z 的 KL33Z 的 Kinetis SDK 1.2.0 独立版”中包含的 SLCD 驱动程序,并使用 TWRPI-SLCD 模块将示例移植到电路板上。   该补丁是为 KSDK v1.2.0 编写的,可在www.freescale.com/KSDK上找到。要安装补丁,请解压缩到 KSDK 安装目录,默认情况下为 C:\Freescale\KSDK_1.2.0。仅针对这些示例更新了库和示例应用程序中的调试构建配置。使用前需要更新发布构建配置。这些示例支持的主板有:   TWR-KL46Z48M   TWR-KL43Z48M   TWR-KL46Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。此示例的路径为\KSDK_1.2.0\examples\twrkl46z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。   TWR-KL43Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。本例的路径是 \KSDK_1.2.0\examples\twrkl43z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。 概述 回复:KSDK段式LCD示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 如何将 fsl_slcd 组件纳入处理器专家?
View full article
LS1046 RESET_REQ 和 RSTRQSR 我们看到 RESET_REQ_B 在我们的定制 LS1046 硬件上被断言。当我们读取 RSTRQSR 时,我们得到以下内容: md 1ee00C8 01ee00c8: 00480000 00000000 00000000 00000000 如果我正确排序字节,则意味着: MBEE_RR(多位 ECC 重置请求)和 SRDS_RST_RR(SerDes 复位事件。如果任何启用的 SerDes PLL 未锁定,则会发生这种情况。) 有人能确认我的解码是否正确,并指出可能导致 MBEE_RR 的原因吗?我不确定从哪里开始寻找这个。 谢谢! 回复:LS1046 RESET_REQ 和 RSTRQSR 我们修复了这个问题 - 我们的 SRDS_PLL_PD_S1 和 SRDS_PLL_PD_S2 的值是错误的 - 参考手册对这些值有点令人困惑。一旦我们解决了这个问题,错误就消失了。 回复:LS1046 RESET_REQ 和 RSTRQSR 亲爱的@SimonRo , 您能否指出在“4.4.1 开机复位序列”的哪一步中遇到了这个问题? 还是启动结束后才会发生? 我需要更多信息才能了解可能发生的情况。 回复:LS1046 RESET_REQ 和 RSTRQSR 我通过将 SRDS_PLL_PD_S1 和 SRDS_PLL_PD_S2 设置为 0 来关闭 SERDES。 我的 RCW 现在看起来像这样: 00000000: 0c150010 10000000 00000000 00000000 00000010: 11330559 40000012 60040000 c1000000 00000020: 00000000 00000000 00000000 10038ffe 00000030: 20124000 04261301 00000096 00000001 但RESET_REQ_B 仍然有效: => md 1ee0000 01ee0000: 7f7f7720 0000004f 00000000 00000000 w..O........... 01ee0010: 00000000 00000000 00000000 00000000 ................ 01ee0020: 00000000 00000000 00000000 00000000 ................ 01ee0030: 00000000 00000000 00000000 00000000 ................ 01ee0040: 00000000 00000000 00000000 00000000 ................ 01ee0050: 00000000 00000000 00000000 00000000 ................ 01ee0060: 00000000 00000000 00000000 00000000 ................ 01ee0070: 00000000 00000000 00000000 00000000 ................ 01ee0080: 00000000 00000000 00000000 00000000 ................ 01ee0090: 00000000 00000000 00000000 00000000 ................ 01ee00a0: 00000000 10010787 40000000 00000000 ...........@.... 01ee00b0: 00000000 00000000 00000000 00000000 ................ 01ee00c0: 00400000 00000000 00480000 00000000 [email protected]..... 01ee00d0: 00000000 00000000 00000000 00000000 ................ 01ee00e0: 00000000 00000000 00000000 00000000 ................ 01ee00f0: 00000000 00000000 00000000 00000000 ................ 我认为是: SRDS_RST_RR(SerDes 重置事件。如果任何启用的 SerDes PLL 未锁定,则会发生。) 我想知道如果 SERDES 断电为什么会看到这个? 谢谢!
View full article
LX2160A の DPDMUX インスタンスの最大サポートはいくつですか Hi, LX2160A で作成できる DPDMUX インスタンスの最大数はいくつですか? 私は8つのdpdmuxオブジェクトを作成しようとしましたが、6つでしか成功しません。 dpdmux作成のパラメータは次のとおりです #--default-if=1 --num-ifs=2 --method DPDMUX_METHOD_CUSTOM --options=DPDMUX_OPT_CLS_MASK_SUPPORT,DPDMUX_OPT_AUTO_MAX_FRAME_LEN 7番目のものを試そうとすると、次のようにエラーが表示されます。 MC エラー: 使用可能なメモリがありません (ステータス 0x9) Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか これは、DPAA2 のリソース使用量を調整する際に役立つ情報です。ただし、DPAA2 で使用されるメモリ バッファーに収まるすべてのオブジェクト (8x DPDMUX + DPMAC/DPNI) を詰め込むには、さらに微調整が必要です。 - DPNI:トラフィックが単に管理目的である場合、フローステアリングルールを下げます、パラメータ '--fs-entries' - DPDMUX: 分割が複雑でない場合は、カスタムルールの使用量を減らします (パラメータ '--max-dmat-entries')。また、dpdmux の作成中にメモリ (PEB バッファ) の使用量を減らし、パラメータ '--mem-size' さらなる調整が進行中です。これがコミュニティに役立つことを願っています。 Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか @dunk  どうもありがとうございます 素晴らしい一日をお過ごしください。 BR, ヘクター Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか こんにちはヘクター、 はい、NXPからのサポートに感謝します。私はあなたのチームメンバーとの議論を続けます。そして、最近コミュニティのために得たいくつかの役立つ情報を共有しようとしています。 Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか Hello @dunk  この投稿があなたを元気に見つけてくれることを願っています、 私たちのチームメンバーの1人が、このテーマに関してすでにサポートを提供していることに気づきました。 混乱を避け、できるだけ明確なコミュニケーションを保つために、 チームメンバーとのコミュニケーションを心がけてください。 素晴らしい一日をお過ごしください。 BR, ヘクター Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか こんにちは@Hector_Villarruel 、 DPAA2 mem設定のフィードバックについてコメントはありますか? セットアップで 8 つの DPDMUX を作成できません。 Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか ありがとう、@Hector_Villarruel。 これがMCファームウェアの構成とメモリ割り当てです。 - Uブート: mcmemsize=0x70000000 - DPC:total_bman_buffers = <0x9EB100> DPCファイルにtotal_num_buffersが見つからないので、デフォルト設定では640000だと思います。 上記のような設定や設定については、メモリは十分だと思います。他に何か足りないものはありますか? Re:LX2160Aの最大DPDMUXインスタンスサポートはどれくらいですか Hello @dunk  このメールがあなたを元気に見つけてくれることを願っています、 このエラー (MC エラー: 使用可能なメモリがありません (ステータス 0x9)) は、MC メモリの制限に関するバッファの最大数を超えた場合に発生することがあります。詳細については、DPAA2UM、Rev 53、08/2023 の 3.5 最小メモリ要件を参照してください。 LX2160の場合、256MBのメモリがありますが、次の制限があることに注意してください。 すべてのキューに同時に存在できるバッファの総数は 640000 に制限されています。もし DPCファイルのtotal_num_buffersが640000より大きい場合、MCは起動に失敗します。 total_num_buffers が dpc ファイルにない場合、MC はデフォルト値の 640000 を使用します。 素晴らしい一日をお過ごしください。 BR, ヘクター・ビジャルエル
View full article
LS1028A 2.5G SGMII 以太网无法与 QCA8081 配合使用 我们在 LS1028A 的 Serdes Lane A 上使用 QCA8081 PHY 实现 2.5G SGMII。 我们启用了 QCA8081 驱动程序 (CONFIG_QCA808X_PHY=y),并更新了 rcw(rcw_1500_sdboot.rcw) 和 dts(ls1028a-rdb.dts)如下图所示。 rcw: SRDS_PRTCL_S1_L0=1 SRDS_PRTCL_S1_L1=5 SRDS_PRTCL_S1_L2=11 SRDS_PRTCL_S1_L3=11 dts: &enetc_mdio_pf3 { sgmii_phy0: ethernet-phy@24 { reg =<0x18>; }; }; &enetc_port0 { phy-handle =<& sgmii_phy0>; phy-mode ="2500base-x"; status ="okay"; }; 观察结果: Ping 在 2.5G 模式下不起作用。但 1G 模式正常。 2.5G 的 Ethtool 输出: root@ls1028ardb:/home/user# ethtool eno0 eno0 的设置: 支持的端口:[ ] 支持的链接模式: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 2500baseT/Full 支持暂停帧使用:对称只接收 支持自动协商:是 支持 FEC 模式:未报告 广告链接模式: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 2500baseT/Full 广告暂停帧使用:对称只接收 广告自动协商:是 宣传的 FEC 模式:未报告 链接伙伴宣传的链接模式: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 2500baseT/Full 链接伙伴宣传的暂停帧使用:对称只接收 链路合作伙伴宣传的自动协商:是 链路合作伙伴宣传的 FEC 模式:未报告 速度:2500Mb/s 双工:全 自动协商:开 主从配置文件:首选从 主从状态:从 端口:双绞线 PHYAD:24 收发器:外部 MDI-X:关(自动) 支持唤醒:g 唤醒:d 检测到链接:是 Dmesg 日志: root@ls1028ardb:/home/user# dmesg | grep eno0 [ 13.165970] fsl_enetc 0000:00:00.0 eno0: 从 eth0 重命名 [ 13.721100] fsl_enetc 0000:00:00.0 eno0: PHY [0000:00:00.3:18]驱动程序 [Qualcomm QCA8081] (irq=POLL) [ 13.722673] fsl_enetc 0000:00:00.0 eno0: configuring for phy/2500base-x link mode [ 17.813736] fsl_enetc 0000:00:00.0 eno0: Link is Up - 2.5Gbps/Full - flow control rx/tx 如有遗漏,请提出宝贵意见。 Re: LS1028A 2.5G SGMII ethernet not working with QCA8081 感谢您的答复。 是的,我们还尝试了 SRDS_PRTCL_S1_L0 的 1 和 6 请参见所附 RCW 文件: /* * SerDes 协议 - 0x85bb * * 频率: * 内核 -- 1500 MHz * 平台 -- 400 MHz * DDR -- 1600 MHz * DDR 数据速率 -- 1.600 GT/s */ #include<../ls1028asi/ls1028a.rcwi> SYS_PLL_RAT=4 MEM_PLL_RAT=16 CGA_PLL1_RAT=15 CGA_PLL2_RAT=12 HWA_CGA_M1_CLK_SEL=1 HWA_CGA_M2_CLK_SEL=7 HWA_CGA_M3_CLK_SEL=6 HWA_CGA_M4_CLK_SEL=3 DDR_REFCLK_SEL=2 DRAM_LAT=1 BOOT_LOC=21 FLASH_CFG1=3 SYSCLK_FREQ=600 IIC2_PMUX=6 IIC3_PMUX=2 IIC4_PMUX=2 IIC5_PMUX=2 IIC6_PMUX=3 CLK_OUT_PMUX=2 EC1_SAI4_5_PMUX=5 EC1_SAI3_6_PMUX=5 USB3_CLK_FSEL=39 ENETC_RCW=3 GTX_CLK125_PMUX=2 SRDS /* PCIe 控制器的勘误表 */ #include<../ls1028asi/a008851.rcw> #include<../ls1028asi/a010477.rcw> #include<../ls1028asi/a009531.rcw> /* 增加 FSPI 时钟频率 */ #include<../ls1028asi/fspi_speed.rcw 我们为 Serdes 接口使用 100MHz 的参考时钟。 用于 QSGMII(2.5G)的 Serdes 通道 B分布式 4 端口)正在工作。 Re: LS1028A 2.5G SGMII ethernet not working with QCA8081 SRDS_PRTCL_S1_L0=1 SRDS_PRTCL_S1_L1=5 SRDS_PRTCL_S1_L2=11 SRDS_PRTCL_S1_L3=11 配置是否 srds_prtcl_s1_l0=0x1 srds_prtcl_s1_l1=0x5 srds_prtcl_s1_l2=0xb srds_prtcl_s1_l3=0xb   能否请您提供输入和 RCW 设置的 PLL 频率信息? 谢谢! Re: LS1028A 2.5G SGMII ethernet not working with QCA8081 我们还使用125MHz的参考时钟进行了测试,并观察到了相同的结果。 Re: LS1028A 2.5G SGMII ethernet not working with QCA8081 亲爱的 June-Lu 我们计划对 SerDes 配置进行以下修改,以支持 SerDes 通道 A 上的 2.5G SGMII 操作: 按照 2.5G SGMII 操作的要求,将 SD1_REF_CLK1_P/N 和 SD1_REF_CLK2_P/N 的 SerD es 参考时钟更改 为 156.25 MHz 。 (目前我们使用的时钟发生器相同的时钟频率,仅测试 SerDes Lane A ) 将 SerDes PLL 参考时钟选择位[945:944] 从现有值 “00” 更新 为“10”。 你能帮我们做这个改变吗? 更改 协议选择至 "65BB用于所需的 SerDes 通道配置。 请确认是否需要进行其他更改(PLL 设置、SerDes 寄存器、RCW/DTS 更新或 PHY 相关配置)以支持这一更改? 期待您的支持。 同时附上我们的框图,供您参考。 谢谢 谨致问候 Re: LS1028A 2.5G SGMII ethernet not working with QCA8081 1.如果 SerDes 将 SD1_REF_CLK1_P/N 和 SD1_REF_CLK2_P /N 的参考时钟均设置为 156.25 MHz,那么如何实现 Q SGMII 和 PCIe。 2.SRDs_pll_ref_clk_sel_s1=2,请参阅 https://github.com/nxp-qoriq/rcw/blob/LSDK-21.08/ls1028asi/ls1028a.rcwi 由于这不是官方配置,您可以尝试一下。 谢谢!
View full article
RT1175 は、CANFD の送受信にコールバック関数を使用します。 コールバック関数を使用して CANFD データの送受信デモを作成する方法。つまり、CANFD データのフレームが受信されると、そのデータはそのまますぐに送り返されます。 Re: RT1175 使用回调函数进行CANFD收发 こんにちは@JerrmyLiさん、 NXPのRTシリーズ製品にご興味をお持ちいただきありがとうございます。喜んでお手伝いさせていただきます。 カスタム開発ボードを使用しているのか、それとも MIMXRT1170-EVKB を使用しているのかを明確にしていただけますか? MIMXRT1170-EVKB の場合は、SDK デモ例 evkbmimxrt1170_canfd_interrupt_transfer_cm7 を参考にして、ニーズに合わせて若干の変更を加えることをお勧めします。 1 つの方法としては、受信した CAN FD フレーム データを FlexCAN コールバック関数でコピーし、CAN FD 送信関数を呼び出して送信する方法があります。 テストには 2 つの開発ボードが必要ですが、CANoe または CANalyzer を使用して CAN ノードをシミュレートすることもできます。 同時に、双方の CAN FD フォーマット(ビット レート、フレーム長など)が一致していることを確認し、バス上に終端抵抗があるかどうかを確認します。   よろしくお願いします メイリュー
View full article
S32K358 多核调试器 我 按照文件 S32K32X_Multicore_Project_Quick_Start_Guide.pdf 中的说明 删除了 路径 C:\NXP\S32DS.3.6.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_5.9.2.202409131555\supportFiles_ARM\NXP\S32K3xx 中的 s32K358.mac 文件 ,但 core2 仍然无法调试。能否请您帮助排除故障并找出问题所在? 回复: S32K358 multicore Debug 您能帮我调试一下项目吗? 回复: S32K358 multicore Debug 已经解决了,是启动文件错了
View full article
重金求A1006UK 开发工程师,有做过的工程师联系我, I am requesting a development engineer for A1006UK at a high cost. Engineers who have worked before have contacted me. Thank you very much, vx jesssaid 重金求A1006UK 开发工程师,有做过的工程师联系我,重谢,vx jesssaid Facebook 13922881086 回复: 重金求A1006UK 开发工程师,有做过的工程师联系我, There is an old project that uses this ic, if you have done this project contact me, thank you!
View full article