Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32N55 FSS: チェックメカニズムとエラー処理ロジックの改善 こんにちは、エキスパート S32N55 上の Bosch のセキュア ブート問題をサポートした後、EB tresos の GrayVIP の FSS 構成について Bosch からいくつかのフィードバックを受け取りました。 1.Bosch は、EB tresos がBootConfig で FSS BTM に送られた SMR ID と FSS BTM CR_Config で使用される SMR マップ間の不一致を検出しなかったと考えています。 例: CRSのBootPrimaryConfigには、2つのSMR ID(0x4、0x6)のみが使用されます。 CRS の CR_Config では、プライマリ SMR マップを 0xF0 として構成できます。EB tresos によってエラーが報告されず、セキュア ブートの失敗が発生します。私のテストでは、CR_ConfigのプライマリSMRマップには、BootPrimaryConfigに設定されているすべてのSMRエントリが含まれている必要があります。つまり、0x4(0x4 SMRエントリを含まない)として設定することはできません。私の意見では、CR_ConfigのSMRマップは、BootPrimaryConfigのSMR IDコレクションのサブセットであるべきです。設定されているすべてのSMRエントリがCRエントリにリンクされる必要はないため、一部のSMRはCRエントリにリンクされる可能性があります。 要求に応じて hseSmrVerifySrv_t サービスによって検証されます。 2.FSSファームウェアのランタイムエラー処理ロジックは改善の余地があります。例えば、例外ハンドラを介してシャットダウン状態に移行する代わりに、FSSファームウェアはデバッグコンソールにエラーテキストメッセージを追加で記録し、適切なヒントを伝えることができます。 GRAY_VIP 優先度: 中 SECURITY_CRYPTO Re: S32N55 FSS: Improve the check mechanism and error handle logic こんにちは、アーサー。 チームがこのCASEを引き受け、できるだけ早く回答を提供します。 よろしくお願いします、 ラドゥ
View full article
CIFAR10 TFLM快速搭建指南 目录 一、概述 二、环境准备   2.1 虚拟环境   2.2 使用Google Colab 三、核心步骤   3.1 CIFAR10数据集   3.2 模型创建   3.3 模型训练   3.4 模型转换   3.5 推理验证   3.6 benchmark性能   3.7 完整实现   3.7 简化版本(Colab) 四、TFLite Micro部署 五、快速验证 六、应用示例 七、结论 八、参考 Spoiler (Highlight to read) more details, please see the attachment. more details, please see the attachment. 一、概述 CIFAR-10: 多伦多大学Alex Krizhevsky CIFAR-10公开数据集,也是计算机视觉领域最经典、最常用的入门级基准数据集之一,包含10个类别的6万张32x32彩色图像(5万训练,1万测试),例如飞机、汽车、鸟、猫等。 tflm_cifar10:演示了如何在恩智浦的微控制器上使用TensorFlow Lite Micro框架,实时运行CIFAR-10图像分类模型。即将一个预先训练好的、针对CIFAR-10数据集的卷积神经网络模型部署到MCU上,让其具备了识别10类常见物体(飞机、汽车、鸟、猫等)的能力。 模型:一个轻量级CNN模型,包含3个卷积层、ReLU激活层、池化层和一个全连接层。 输入: 32x32像素的彩色图像。 输出:图像属于CIFAR-10中10个类别的概率。 本文档:提供针对CIFAR10数据集搭建的完整流程,从数据集、模型训练转换、部署推理的快速实现方案,可作为示例tflm_cifar10(推理为主)的前置补充,本文不涉及到端侧的部署与优化。  ... """ 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() ... 七、结论 本文旨在以常见图像分类场景(CIFAR10)为例,让读者快速了解从数据搭建、模型创建、训练、推理和验证的完整流程,可作为示例tflm_cifar10(端推理为主)的前置补充,本文不涉及到端侧部署与优化。
View full article
使用S32DS V2.2LIN配置工具,发送帧头进不去中断一直卡在间隔场 芯片包是RTM3.0,使用S32DSV2.2LIN配置工具在S32K148上配置了三条总线,其中LIN1与LIN2分别是用的是LPUART0与LPUART1,这两条的发送与接收是没有问题的,能在上位机上显示。但是LIN3使用的是LPUART3,发送帧头之前,节点状态是 LIN_NODE_STATE_IDLE ,发送完帧头后就一直处于LIN_NODE_STATE_SEND_BREAK_FIELD,一直卡在发间隔场,然后总线状态就是busy,进入不了中断,请教如何解决这个错误 Re: 使用S32DS V2.2LIN配置工具,发送帧头进不去中断一直卡在间隔场 Hi@张宏华、 能否使用示波器验证 LIN3 的信号路径? 探查 TX 线路,确认 LIN 标头(断开 → 同步 → PID)已正确传输。 测量 LPUART3 的 RX 引脚,确保该引脚出现相同的波形。这将检查收发器和路由是否正确。 如果 RX 引脚未显示预期数据,请检查: 用于 TX/RX 焊盘的引脚复用(PCR MUX)。 MCU 和 LIN 收发器之间的物理接线。 谢谢! BR,丹尼尔 Re: 使用S32DS V2.2LIN配置工具,发送帧头进不去中断一直卡在间隔场 感谢您的回答,问题我已经解决了。我的S32K148芯片虚焊了,这样给lin收发器唤醒的引脚就没有工作,很低级的错误。
View full article
i.MX 95 EVK 启动过程日志 恩智浦专家们,你们好、 我们正在使用Yocto Linux镜像研究i.MX 95的启动过程,并希望更深入地了解启动流程。 有关于启动过程顺序的详细文档吗? 另外,你能否提供来自 i.MX 95 EVK 板的硬件启动日志,这将对我们的参考非常有帮助。 谢谢! Re: i.MX 95 EVK boot process log i.mx95 仍在试生产阶段,所有材料均可在官方网站上查阅 https://www.nxp.com/products/i.MX95 有关启动日志,请参阅随附的文件,我使用了 imx95-19x19-evk-it6263-lvds0.dtb 然后连接了 HDMI Re: i.MX 95 EVK boot process log 嗨 Joanxie: 感谢你之前提供的 imx95 启动日志,它非常有帮助。 我们目前正在研究 i.MX 952 (https://www.nxp.com/products/i.MX-952),想问一下相应的启动日志是否可供参考和调试。 谢谢
View full article
安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好,恩智浦: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗, 可以幫忙看看log 是啥麼問題?感謝! 错误: ==== 许可证列表结束。==== ==== 32-bit license service installation log start: ==== Returned: 1 Console: C:\Users\ericclsung\AppData\Local\Temp\I1764729332\Windows>cd"C:\Users\ericclsung\AppData\Local\Temp\036160.tmp\cll\i86" C:\Users\ericclsung\AppData\Local\Temp\036160.tmp\cll\i86>cllSvrUtility.exe -installService LAXCompiler -installService LAXCompiler -installService(LAXCompiler) was successful 错误:系统找不到指定的路徑。 ==== 32 位许可证服务安装日志结束。==== XMLScriptWriter:没有跳过任何安装对象 8. final log file name=C:\NXP\S32DS.3.4\_S32Design Studio for S32 Platform 3.4_installation\Logs\S32_Design_Studio_for_S32_Platform_3.4_Install_12_03_2025_10_38_16.log Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好、 能否提供您的恩智浦 ID?我试过您的电子邮件地址,但系统中没有这个地址。 Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 您好 NXP ,能否检查一下您的系统中是否有这封电子邮件 ID:[email protected]? Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好、 对不起,[email protected]也不是活动或非活动账户 。 Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好,恩智浦 您能再次检查我的 NXP ID 吗?我已经完成了我的个人资料。 EricSung_0-1764903124177.png Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 嗨,埃里克、 我检查了两个电子邮件地址,但系统中仍然没有该账户。您有激活码吗? Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 您好,恩智浦, 您指的是 S32 Design Studio v.3.4 版激活码吗?还是其他激活码? Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好、 抱歉耽搁了。是的,S32DS v3.4 激活码。
View full article
i.MX 8M Mini LPD4-EVK の個々の電源レールの消費電力を測定する方法は? こんにちは、 i.MX 8M Mini LPD4-EVK を稼働させており、VDD_1V8 や NVCC_DRAM_1V1 などの特定の独立した電源レールで消費電力測定を実行したいと考えています。 対応する PMIC 出力 (BUCK8 および BUCK7) を回路図上で見つけましたが、これらのラインにはオンボードのシャント抵抗 (センス抵抗) がないことに気付きました。 これらのレールの電流 (または電力) を測定するための最良の方法についてアドバイスをいただけますか? よろしくお願いします! Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? こんにちは、 i.MX8MM のCASE、i.MX 8M Plus 評価キットの電力測定を可能にする他のボードのように、各電源レールで電力測定を行うボードはありません。 これを測定する必要がある場合は、これらのシャット抵抗器を組み込んだ新しい SOM ボードのデザインを行うか、ボードを作り直してトレース内にシャント抵抗器を追加してみる必要があります。 上記のボードの回路図を参考にして抵抗器を追加し、測定を行うことができます。 i.MX 8M Plus 電力測定ボードデザインファイル よろしくお願いいたします。 Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? わかりました、ありがとう
View full article
CodeWarrior 8.3 - 支持 DSP56F807PY80E,正确的 .cfg文件和闪存编程器/CCS 问题 留言: 你好 我正在使用 CodeWarrior 8.3(56800E 架构),我需要使用 USB TAP 对 DSP56F807PY80E 进行编程。我有几个问题,希望得到官方的澄清。 创建新目标时,CPU 列表中未显示 DSP56F807。我只看到 DSP5685x 和 M56F8002。我想知道在 CodeWarrior 8.3 中是否有任何支持 DSP56F807 的代码包、更新或附加组件,或者它是否包含在较旧的代码包中。 闪存程序员需要此设备的配置文件,通常称为 56807_flash.cfg。恩智浦是否提供该处理器的官方 cfg 文件?如果是,在哪里可以下载?如果不是,请确认有效配置所需的 HFM 内存范围和参数是否正确? 关于 CCS,我按照 AN4338 中的程序(更换 ccs 文件夹并使用 libusb-win32 驱动程序)让 USB TAP 正常工作。这仍然是 CodeWarrior 8.3 的正确方法吗?Windows 7 或 Windows 10 有更新的 CCS 版本吗?libusb-win32 仍然是受支持的驱动程序吗? 有时 CodeWarrior 会成功擦除闪存,但无法完成编程。将 56800E 闪存编程器与 DSP56F807 一起使用时,是否存在已知的限制?是否有推荐的 JTAG 时钟设置或超时? 最后,CodeWarrior 8.x 中使用 DSP56F807 的最新文档是什么? 谢谢! Re: CodeWarrior 8.3 – Support for DSP56F807PY80E, correct .cfg file, and Flash Programmer/CCS issues 你好@Raffaele_AQS、 谢谢您的帖子。 创建新目标时,CPU 列表中未显示 DSP56F807。我只看到 DSP5685x 和 M56F8002。我想知道在 CodeWarrior 8.3 中是否有任何支持 DSP56F807 的代码包、更新或附加组件,或者它是否包含在较旧的代码包中。 ->> 我认为不需要任何更新,CW8.3下载后即原生支持 DSP56F807。就我而言,通过选择 “文件-> 新建”,然后选择除第一个选项 " DSP56800E Quick Start r2.5 Stateries " 之外的任何项目模板,你可以在可用设备选项中找到列出的 DSP56F807。 Celeste_Liu_0-1764210242189.png 闪存程序员需要此设备的配置文件,通常称为 56807_flash.cfg。恩智浦是否提供该处理器的官方 cfg 文件?如果是,在哪里可以下载?如果不是,请确认有效配置所需的 HFM 内存范围和参数是否正确? ->> 我可以在这里找到它,附在后面。 Celeste_Liu_2-1764210464788.png 关于 CCS,我按照 AN4338 中的程序(更换 ccs 文件夹并使用 libusb-win32 驱动程序)让 USB TAP 正常工作。这仍然是 CodeWarrior 8.3 的正确方法吗?Windows 7 或 Windows 10 有更新的 CCS 版本吗?libusb-win32 仍然是受支持的驱动程序吗? -> > 要在 win7/10 电脑中使用 CW 8.3,请参阅 Windows 7/10:在 DSC 版 CodeWarrior 上使用 USB TAP。 只需将适用于微控制器的 Eclipse IDE | 恩智浦半导体安装到计算机上,将 ccs 文件夹从 CodeWarrior v11 安装文件夹复制到 CodeWarrior v8.3 安装文件夹,替换原来的 ccs 文件夹。 有时 CodeWarrior 会成功擦除闪存,但无法完成编程。将 56800E 闪存编程器与 DSP56F807 一起使用时,是否存在已知的限制?是否有推荐的 JTAG 时钟设置或超时? ->> 闪存编程名为"56800E Flash programmer" ,但从工具名称可以看出,它只支持以 DSP56800E 为内核的 DSC 处理器,例如 MC56F83xx,DSP56F807 使用的是 DSP56800 内核,而不是 DSP56800E,因此我认为不能使用"56800E Flash programmer" 工具对 DSP56F807 进行编程。 您可以考虑使用 flash-over-jtag.exe 工具,它支持 S_record 文件下载。但是,这些工具必须在DOS操作系统和并行命令变流器设备(Wiggler)中运行,它不支持usbtap设备。 你可以使用 USBTAP 设备下载代码,只能使用 CodeWarrior 来下载适用于 DSP56800E ver8.3 工具的代码,但它不支持 S_Record 文件下载。 Flash-over-jtag 工具可在此处找到: [CodeWarrior Installation Directory]\ProcessorExpert\Tools\applications\flash_over_jtag 最后,CodeWarrior 8.x 中使用 DSP56F807 的最新文档是什么? -> > DSP56F807 是传统设备,不建议用于新设计。我们没有为其提供最新的文档,但我会尽我所能寻找任何可用的资源。 制作 Flash 程序 使用适用于 DSC 的 CodeWarrior 8.3 版对飞思卡尔 DSC 进行生产闪存编程 您还可以尝试使用串行引导加载程序更新固件。 56F8xx 串行引导加载程序 希望对你有所帮助。 如果您有更多问题,请告诉我。 祝你愉快 BR 西莱斯特 ---------------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。Thank you! ----------------------------------------------------------------------------------------------------------------------
View full article
i.MX 数据表中 NVCC 的含义 你好 我正在查看 i.MX 数据表,经常看到以 NVCC_* 开头的引脚名称。 能否请您解释一下 NVCC 代表什么? 此外,名称中包含 NVCC 的徽章有何意义? 感谢您的支持。 顺祝商祺! Re: Meaning of NVCC in i.MX Datasheet 您指的是哪种产品? NVCC 是"Nominal Voltage Common Collector" 的缩写,NVCC_* 引脚是为一组 I/O 焊盘(如 GPIO、UART、SPI 等)提供电压的电源引脚。 如 NVCC_SD 为 SD 卡接口引脚供电。 Re: Meaning of NVCC in i.MX Datasheet 你好,丽塔、 谢谢您的解释。我所指的产品是 i.MX93。 我知道 NVCC 代表标称电压共集电极,而 NVCC_* 引脚是为特定 I/O 组(如 GPIO、UART、SPI)提供电压的电源引脚。NVCC_SD 为 SD 卡接口供电的例子非常有用。 感谢您的支持。 致以最诚挚的问候, tkato Re: Meaning of NVCC in i.MX Datasheet 你好@tkato, 不客气。 如有任何疑问,您可以创建新的主题,与我们自由联系。 祝您有美好的一天 顺祝商祺! Rita
View full article
KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. KW47— Datasheet suggest  the value of DCDC capacitor (Cout) is 22uf  and must not exceed the min(6uf)/max (30uf)value.But we found NXP‘s SCH like SPF-91101_C use 1μf instead. KW45‘s SCH use the same value 22uf with datasheet. So Which value should we use ? Re: KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. Hello,  Please help us check the following  The best way to build a PCB first time right with KW47 (Automotive) or MCX W72 (IoT/Industrial) Any question , let us know Re: KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. Hi, I don't understand what your mean. My question is about the output capacitor of the DCDC does not match between the schematic and the datasheet,not about how to build a pcb. Re: KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. Hello @nicosuki , hope you are doing well. I apologize for the inconveniences, but as this device has not been officially launched, most of the information about this product is still under NDA. The information available is the one mentioned previously on: The best way to build a PCB first time right with KW47 (Automotive) or MCX W72 (IoT/Industrial) Could you please contact the person who helped you get the documentation in the first place? Best regards, Ana Sofia.
View full article
I²C 总线概述(日本博客) 0. 目录 目录 什么是I²C? 1.1 历史和规格 1.2 控制器/目标 物理/电气特性 2.1 信号线数量:SDA、SCL 2.2 开漏输出(线与门) 2.3 时钟频率 2.4 连接拓扑 协议 3.1 必需功能和可选功能 3.2 数据传输单元 3.3 公交车状态:换乘的开始和结束 3.4 交易结构 3.5 写入和读取事务 参考资料 1. 什么是 I²C? 1.1 历史和规格 I²C (I²C)总线是一种串行总线规范,由荷兰飞利浦公司(现为恩智浦半导体公司)于 1982 年开发和发布。 I²C 是“集成电路间电路” (Inter Integrated Circuit )的缩写,写作“IIC”,其中重叠的“I”是平方的。 当年开发这条总线的时代,电视和无线电电路尚在使用可变电阻和可变电容器,通过线圈芯的螺丝进行调整和设置。I²C取代了这些,并开始被用作总线,以通过设备中内置的控制器和工厂计算机来控制各项功能并实现其自动化。 为此,原始时钟频率设置为 100 kHz,并且没有预料到会有大量的数据传输。 上世纪 80 年代末我加入飞利浦时,实验室配备了闭路电视(计算机控制电视)和其他设备来演示这一概念。 当前的I²C 规范由恩智浦半导体公司(NXP Semiconductors)管理,该公司原为飞利浦半导体部门。该规范以《 I²C 总线规范及用户手册》 (文档编号 UM10204 )的形式发布,最新版本为 Rev.7。日文版Rev.5 也以《 I²C 总线规范及用户手册》的形式发布。Rev.5 和 Rev.7 的区别在于:图 41 和图 42 的修改、表 5 的新增内容、主/从模式改为控制器/目标模式(与 I3C 类似),以及在第 9 章中新增了“I3C 概述”(详情请参见 Rev.1 中的表 1:修订历史)。由于这些差异不影响 I²C 规范的主要内容,因此日文版可作为参考。 1.2 控制器/目标 I²C 通信始终以主从关系进行。用于指代这些角色的术语分别是控制器和目标[图 1]。 スクリーンショット 2025-02-02 9.47.05.png图 1:控制器和目标 该规范允许多个控制器存在于一条 I²C 总线上。 旧规范中使用了“主/从”术语,但现在已改为“控制器/目标”。 2. 物理/电气特性 2.1 信号线数量:SDA、SCL I²C 是一种双线串行总线,一根线用于传输时钟信号,一根线用于传输数据信号。由于数据与时钟信号同步交换,因此它被归类为“同步串行接口”。 数据通信可以双向进行,但由于它通过单条数据线传输,因此无法同时进行,必须交替切换。正因如此,这种通信方式被称为半双工,而不是全双工,后者允许同时进行发送和接收。 时钟信号线和数据信号线分别称为SCL(串行时钟线)和SDA(串行数据线) 。 数据以比特为单位进行传输或接收,并与时钟周期同步。 2.2 开漏输出(线与门) I²C 的一个显著特点是使用一种称为“开漏”的方法来产生信号。 在许多通信应用中,使用一种称为推挽的方法来输出数字信号。推挽是一种当输出高电平信号时,在信号线上输出(推)特定电压,而输出低电平信号时,将信号线拉至地线(拉)的方法[图 2-a]。 开漏输出与“上拉”输出类似,都是输出低电平,但当输出高电平时,电路会进入高阻抗状态。在这种状态下,连接到信号线的上拉电阻可以确保获得指定的电压[图2-b]。 スクリーンショット 2025-02-02 6.44.00.png图 2-a:推挽输出 スクリーンショット 2025-02-02 6.44.11.png图 2-b:开漏输出 那么,为什么要采用这种输出方法呢? 这是因为 I²C 允许多个设备同时输出到同一信号线。当多个设备处于输出状态时,即使只有一个设备输出低电平,信号也会变为低电平。 这种连接方式,即当所有设备输出高电平时信号为高电平,否则为低电平,称为“线与”[图 3]。 スクリーンショット 2025-02-02 7.14.11.png图 3:已接线并连接   I²C 具有名为“时钟拉伸”和“多控制器”的可选功能。这些功能允许连接到同一总线的多个设备同时输出,并使用开漏连接来管理它们的状态。 I²C 高电平电压在规范中没有明确定义。上拉电阻所连接的电源电压 (VDD) 因器件而异。通信时,必须使用连接器件之间通用的电压。在许多情况下,VDD 使用 5V 或 3.3V 等电压,但在 SoC 芯片和其他电压越来越低的器件中,有时会使用 1V 或更低的电压。I²C输入信号电压在 0.3VDD 或更低时设置为低电平,在 0.7VDD 或更高时设置为高电平,因此,当连接电压不同的 I²C 总线时,必须使用“信号电压转换器( VLT :电压电平转换器)”。要转换此信号电压,需要选择一个与 I²C 兼容的器件,并考虑到 I²C 信号是双向开漏信号。 使用 I²C 时,还必须考虑信号的模拟特性。这是指由于漏极开路而导致信号输出发生变化所需的时间。从高电平到低电平的下降时间很快,但从低电平到高的上升时间则可能很慢,具体取决于总线的状态。具体来说,随着连接设备数量的增加或信号线长度的增加,上升时间会变慢。这是因为信号线的电容增大了[图 4]。 每种模式都限制了允许的电容值,这决定了 I²C 时钟速度的上限。 capacitance.png图 4:电容和信号上升时间   2.3 时钟频率 I²C 根据可使用的最大时钟频率定义了“模式”[表 1]。 最基本的模式称为标准模式( Sm ),工作频率低于 100kHz 。 其次是上限为 400kHz 的快速模式( Fm )。大多数控制器和目标设备都支持 Sm 和 Fm 模式。 还有快速模式增强版( Fm+ ),其时钟速度可以低于 1MHz ,适用于数据速率高的应用。 此外,还有一种最高速度可达3.4MHz的高速模式( HS 模式或Hs )。这种高速模式有其特定的协议,用于切换到该速度进行通信,并且需要桥接器才能与其他模式混合通信。目前配备支持此模式控制器的设备并不多。 针对特殊应用,还规定了一种超高速模式。该模式的时钟频率上限为 5MHz,并且通信方向限制为从控制器到目标设备的单向通信,因此与其他模式不兼容。 当使用“I²C”而未提及模式时,通常指的是最常见的标准模式或快速模式,本博客也将基于这些模式。 模式 缩写 最大时钟频率 评论 标准模式 小 100kHz 最受欢迎的模式 一般来说,I²C 指的是最高兼容 400kHz 频率的 Fm 接口。 快速模式 调频 400kHz 第一模式+ FM+ 1MHz 规格参数包括更高的速度、电流消耗和母线容量 许多微控制器中都安装了具有这种功能的控制器。 高速模式 赫斯 3.4MHz 收养案例并不多。 兼容SM和FM。通过协议切换到HS模式。 在总线上混合使用 Sm 和 Fm 设备时需要桥接器。 超快模式 UFm 5MHz 只写加速模式 需配合专用控制器和目标设备使用。与其他 I²C 模式不兼容。 表1:各模式的频率和特征   2.4 连接拓扑 任何连接到 I²C 的设备都连接到两条信号线:SCL 和 SDA 。 这种连接方式称为“多点连接”。每个设备都通过两根导线“悬挂”连接[图5]。可连接的设备数量受“总线容量”的限制。信号线越长,连接的设备越多,总线容量就越大。 通信发生在“控制器”和“目标”之间。所有通信均由控制器发起。 在 I²C 中,控制器和目标之间每次传输都是一对一进行的。虽然可以有意地让多个目标拥有相同的地址,但从控制器的角度来看,只能“与一个地址通信”[图 6]。 控制器通过目标地址指定要通信的设备,并指示数据传输方向。 控制器控制所有传输(开始和结束、指定通信目标和传输方向以及向 SCL 输出时钟)。 也可以在同一条 I²C 总线上连接多个控制器。这可以通过使用名为“多控制器”的可选 I²C 功能来实现。 在这种配置下,一旦一个控制器完成数据传输,另一个控制器即可进行通信。此外,还建立了总线仲裁机制,以应对多个控制器同时开始传输数据的情况。 在多控制器配置中,所有连接的控制器都必须支持这种仲裁机制。 然而,采用多控制器配置的系统并不多见。虽然许多微控制器和其他设备内置的 I²C 控制器支持多控制器,但大多数简单的系统都使用单个控制器。 在本文中,我们将只考虑单个控制器的情况,以便解释 I²C 的基本原理。 スクリーンショット 2025-02-02 8.42.43.png图 5 :多点连接   スクリーンショット 2025-02-02 9.05.39.png图 6:与单个目标地址的通信 3. 协议 3.1 必需功能和可选功能 该协议决定了数据传输方式。 I²C协议包含必需功能和可选功能。上一节提到的多控制器就是一个可选功能。如前所述,本文将不讨论可选功能,而只解释必需功能。 I²C 的必要功能和可选功能总结在[表 2]中。 スクリーンショット 2025-02-02 9.48.32.png表 2:I²C 功能。必需/可选(摘自 I²C 规范(日文版:rev5.0)) I²C 通信通常具有以下结构: 沟通开始 数据传输 沟通结束 作为此原理的应用,也可以在不先结束上一次通信的情况下开始下一次通信(重复开始)。 数据传输部分可以传输 1 字节到多个字节的数据。 传输开始后的第一个字节总是从控制器传输到目标,并指定目标地址和后续数据传输的方向(发送或接收) 。 I²C 规范对第二个字节之后可以传输的字节数没有施加任何特殊限制[图 7]。 在与同一目标通信时,如果需要在发送和接收数据之间切换;或者在与不同目标通信时,需要重新开始通信,并再次指定目标地址和传输方向。 スクリーンショット 2025-02-02 16.10.54.png图 7:I²C 通信的基本结构 3.2 数据传输单元 通信的基本单位是 9 位,其中 8 位是数据,后跟 1 位。数据为 8 位,最高有效位 (MSB) 在前。最后一位是确认位,它以与发送数据相反的方向返回,用于确认每次通信。在 I²C 中,数据传输始终以 9 位为单位进行 [图 8]。 数据以每个时钟周期发送或接收一位。 数据变化与时钟同步。SDA 只能在 SCL 为低电平时改变状态(从低电平变为高电平或从高电平变为低电平),并且在 SCL 为高电平时保持低电平或高电平[图 9]。 スクリーンショット 2025-02-02 16.29.10.png图 8:每次 8 位数据传输都会返回一个 1 位确认信息。   スクリーンショット 2025-02-02 16.45.18.png图 9:SCL 低时 SDA 信号的变化 3.3 公交车状态:换乘的开始和结束 通信的开始和结束分别由开始条件和停止条件通知,它们标志着传输的结束。 如前所述,“只有当 SCL 为低时才允许 SDA 更改”,但此启动/停止条件是一个例外。 当 SCL 为高电平时,如果 SDA 从高电平变为低电平,则为启动条件。类似地,当 SCL 为高电平时,如果 SCL 从低电平变为高电平,则为停止条件[图 10]。 スクリーンショット 2025-02-02 17.06.31.png图 10:启动和停止条件 在启动条件发出后,正在进行转账的状态称为“忙碌”;在停止条件发出后,没有正在进行转账的状态称为“空闲”。启动条件在空闲状态下发起。 控制器输出启动/停止条件和 SCL。 起始条件之后的 9 位传输用于指定目标地址和传输方向。 然后数据通过一次或多次连续的 9 位传输进行传输。 除了开始条件和停止条件之外,还定义了“重复开始条件”来分隔数据传输。 启动条件是公交车处于自由状态,但必须先满足停止条件,公交车才能进入自由状态。 如果控制器执行连续传输,则可以省略此停止条件。重复启动条件会直接启动下一次传输,而无需经过自由状态(图 11)。 スクリーンショット 2025-02-02 17.21.48.png图 11:重复起始条件   当在前一次传输中生成启动条件而未生成停止条件时,就会出现重复启动条件。重复启动条件在功能上与普通启动条件相同。除非另有明确说明,否则下文中的启动条件均指重复启动条件。 在多控制器环境中,提供重复启动条件是为了允许一个控制器在保持总线所有权的同时,连续执行多次传输操作。这是因为一旦总线空闲,另一个控制器就可以立即启动传输操作。通过保持总线繁忙状态而不使用停止条件,控制器可以维持总线的所有权。 从现在开始,为了方便起见,我们将把从(重复)开始条件到停止条件,或者从(重复)开始条件到下一个重复开始条件的单元称为“事务”。 3.4 交易结构 事务(图 12)总是以起始条件开始。起始条件之后,控制器发送的数据指定目标地址和传输方向。 スクリーンショット 2025-02-02 18.25.03.png图 12:基本 I2C 传输示例及波形(写入事务示例)   目标地址是7 位信息,用于指定要与之通信的设备。通信将与匹配此地址的设备进行(I²C 规范将“10 位寻址”定义为一个选项,但由于大多数情况下使用 7 位寻址,因此我们不再赘述)。 在7位地址之后,会发送一个指定传输方向(读/写)的位。如果该位为“0”,则表示从控制器到目标的写传输;如果该位为“1”,则表示从目标到控制器的读传输。 目标地址第七位之后的第九位加上一个读/写位是确认位。该位是目标端返回的低电平信号。 如果控制器输出的目标地址所指定的设备存在,则目标设备会向 SDA 输出低电平作为确认位。此时,控制器输出高电平,因此如果目标设备不存在,SDA 将保持高电平。换句话说,如果目标设备存在,则确认位为低电平;如果目标设备不存在,则确认位为高电平。当此确认位为低电平时,称为ACK (确认);当其为高电平时,称为NACK (不确认)。 输出目标地址和传输方向,如果返回 ACK,则数据传输继续进行。如果目标地址不存在且返回 NACK,则事务到此结束(控制器发出停止条件或重复启动条件)。 如果数据传输方向为写,则接下来的 8 位数据从控制器传输到目标设备,然后目标设备向控制器发送 1 位确认位。 如果是读取传输,控制器会将 SDA 保持高电平,并与 SCL 同步读取目标输出的 8 位数据。此读取传输始终包含一个确认位。控制器会将附加在读取传输数据上的确认位输出。如果读取传输继续进行,则返回 ACK;如果传输要中止,则返回 NACK。 ACK/NACK 对 I²C 通信至关重要。这是因为 ACK 机制允许通信在持续检查对方状态的同时进行。当收到 NACK 时,通信即告终止。 根据 I²C 规范,NACK 发生的条件如下: 目标地址指定的设备在总线上不存在。 目标设备当前正在执行一些处理操作,不处于可以与控制器通信的状态,因此无法发送或接收数据。 目标设备无法理解传输过程中接收到的数据或命令。 传输过程中,目标设备无法接收更多数据字节。 在读取传输过程中,当控制器通知目标设备传输完成时 3.5 写入和读取事务 在单次事务中,数据传输方向是恒定的。因此,如果您向目标设备写入数据,然后再从中读取数据,则会发生连续的事务。 例如,当指定目标设备的寄存器号并从中读取数据时,可以先执行写入传输,然后再执行读取传输。 在这种类型的传输中,某些目标设备需要重复的启动条件来分隔事务,而另一些设备在重复启动条件的情况下可能无法按预期运行。这取决于目标设备的具体规格,因此您必须谨慎操作。 4. 参考资料 I2C 总线规范和用户手册(版本 5.0)日文版) I2C 总线规范和用户手册(版本 7.0)英文版) NXP社区博客:I²C硬件调试 NXP社区博客:I3C:下一代串行总线 NXP社区博客:SPI总线概述 Interface 2024 年 3 月刊(CQ Publishing) :专题文章“从零开始的串行通信 [使用 Pico 进行 UART/I2C/SPI 通信]” 晶体管技术特刊第 161 期“测量、测量、测量电路与技术汇编”附录:“2 线串行接口 I²C 的详细说明”——以上杂志文章摘自该文章。 首次登场: 《晶体管技术》,2014年10月刊(CQ出版社),“基础知识:双线串行接口I²C的详细说明”,第152-176页 Interface Magazine,2024 年 3 月刊(CQ Publishing),“从零开始构建 I²C 和 SPI ②...I²C 通信标准”,第 55-61 页 ← 上述文章的更新和重新组织版本。 在这篇博文中,我摘录、补充并修改了解释通信规范的部分。 变更历史记录: 2025年2月3日:第一版 2025-02-04:“4.在“参考资料”部分添加了博文“I²C 硬件调试”。 2025 年 3 月 5 日:第 2.2 节 开漏输出(有线和嵌入式)更正了参考图号。 2025-11-30:更正了一处拼写错误。 2026-04-03:更正了原始条目。 ========================= 我们目前无法回复此帖子“评论”部分的评论。 对于由此造成的不便,我们深表歉意。如有任何疑问,请参阅“ NXP技术问题-如何联系我们(日语博客) ”。 (如果您已经是恩智浦的分销商或与恩智浦有合作关系,您可以直接询问负责人。) I²C 总线用于微控制器/处理器与外围设备之间的通信。 虽然这种串行总线应用非常广泛,但我还是想借此机会简要介绍一下它的起源。 通信标准 界面 日本博客
View full article
NXP汽车以太网:10BASE-T1(S)基础知识(日文博客) 介绍 这次我们将解释 10Mbps 车载以太网 10BASE-T1(S) 的基础知识。 1. 背景 首先,我将解释10BASE-T1(S)标准诞生的背景。 到目前为止, CAN已广泛应用于高速工业和汽车网络。 另一方面,由于大容量通信的需求,Ethernet也开始被引入。 然而,两种方法的通信速度都是 ・CAN FD(0.5M~8Mbps) ・100BASE-T1 (100Mbps) 存在约10Mbps的差距。 CAN FD 速度不够快,而 100BASE-T1 以太网又太贵也太快了。 在许多应用场景中,100BASE-T1 性能过剩,因此需要以合理的成本获得良好的性能,而 10BASE-T1 正是针对这些领域而设计的。 与 10BASE-T1 类似,还有一种名为 CAN XL(10M 至 20Mbps)的新标准,可以覆盖 10Mbps 的范围。我们将在其他场合对此进行详细解释。 2. 10BASE-T1(L)和10BASE-T1(S) IEEE 802.3cg 规范为 10Mbps 范围提供了两种类型的以太网。PHY规范已定义。 10BASE-T1 L:工业 点对点 传输距离1000 m(L表示Long) 全双工通信 10BASE-T1 S :用于汽车 点对点 传输距离:一对一通信15米(S代表短距离) 半双工通信 * 选项:全双工通信 *选项:半双工通信,多点连接(总线连接,最多 8 个节点) 多点传输采用一对双绞线,传输距离为25米,短截线长度为10厘米。 可选:PLCA(物理层碰撞避免)。如果未实现 PLCA,则使用 CSMA/CD(载波感知/碰撞检测)。 未假定使用中继器(最初的 10BASE 假定使用四个中继器连接) 3. 10BASE-T1(S)的优势 兼容 100BASE-T1/1000BASE-T1 车载网络可以与以太网系统统一。 更简单的架构 无需协议转换 减少设计工时 降低 100BASE-T1/1000BASE-T1 的成本 允许使用廉价的电线和连接器 半双工模式,差动曼彻斯特编码 与全双工相比,功能更少/更简单(无需 PHY 控制、简化时钟恢复、无需链路控制、无需链路监视器、无需自动协商、无需 DFE/FFE(判决反馈均衡器/前馈均衡器)、无需基线漂移校正、无需 AGC(自动增益控制)、简化 ADC(模数转换器))。 多点配置 显著减少网络配置所需的交换机/PHY数量 PLCA 提供比 CSMA/CD 和 TDMA 更高效的冲突控制 → 低延迟 4. 10BASE-T1(S) 的用途 以下是一些 10BASE-T1(S) 适用于的车载应用示例。 写作 前大灯、尾灯、氛围灯、内饰灯的LED控制 前照灯中使用的矩阵式 LED 包含数万个 LED,使用传统的 CAN(最大 1Mbps)很难控制它们,但 10BASE-T1S 可以控制它们。 利用LED灯进行高分辨率符号显示和视频投影,照亮路面。 传感器 近距离声纳和各种环境传感器等 执行器 车门车窗、座椅电机等。 音频 扬声器和麦克风音频传输 以上只是一个例子,预计未来价格低廉且易于使用的 10BASE-T1(s) 将有各种各样的用途。 5-1. 主要特性:多点连接 10BASE-T1(S) 除了像 1000BASE-T1 和 100BASE-T1 一样支持菊花链连接外,还支持多点连接,这大大降低了网络配置成本。 マルチドロップ1.png 如上图所示,即使节点数量相同,与菊花链相比,多点连接也能显著减少所需的以太网交换机和 PHY 的数量。 5-2. PLCA选项的主要特点 对于菊花链连接,由于是一对一链路,因此不存在数据冲突问题;但在多点连接配置中,多个节点共享总线,因此需要数据冲突预防机制。10BASE-T1(S) 也可以使用一种名为 PLCA 的冲突预防技术。 采用仲裁方法,利用PLCA(物理层冲突避免)来避免数据冲突。 由管理设备为每个已连接的设备分配唯一的节点 ID;并依次为各 PHY 授予传输机会。 节点 ID 可以赋值为 0 到 254。 如果未实施PLCA,则CSMA/CD PLCA.png PHY传输机会以轮询方式确定。 ID=0 的节点(被指定为主节点)在总线上发出 BEACON 信号。该 BEACON 信号标志着新一轮传输机会的开始。 当具有其他 ID 的节点收到信标时,它会等待自己的传输机会。 每个节点在发送数据包之前,都会在传输机会期间发送 COMMIT 信号。 每个节点只有在时隙与其自身 ID 匹配时才开始传输(如果 TO_TIMER 周期已过,节点也可以跳过传输机会)。 →与TDMA(时分多址)不同,它不会因为打包未使用的时隙而浪费时间。 COMMIT 请求会停止其他节点的定时器 (TO_TIMER),并让它们等待数据包。 PLCA_2.png 这样,通过将每个节点的通信时间除以时间,就可以避免冲突。 6. 10BASE-T1(S) PHY 和 100BASE-T1/1000BASE-T1 的 比较 在OSI参考模型中的位置 IEEE 802.3cg 定义的 10BASE-T1(S) 对应于 OSI 参考模型的物理层 (PHY),就像 100BASE-T1 和 1000BASE-T1 一样。 从主机控制器通过MII接收的数据会发送到以太网线路。接收过程则相反。 OSI.png *恩智浦提供主机控制器和10BASE-T1(S)兼容的PHY器件。 物理层模块 下图所示为 10BASE-T1(S) 的 PHY 模块。该配置与 100BASE-T1 和 1000BASE-T1 基本相同,即主机控制器通过 MII 输入的数据经 PCS 编码,PMA 转换为模拟信号,然后发送到传输路径。接收过程则相反。 PHYブロック.png   PCS区块 PCS 与 100BASE-T1/1000BASE-T1 的主要区别在于,PCS 执行 PLCA 冲突控制。 此外,编码使用的是DME,而不是PMA。 PCS.png DME(差分曼彻斯特编码) 10BASE-T1(S) 使用 DME 的主要原因是降低成本,其主要特点如下: 10Base-T1(S)的DME信号比100BASE-T1等使用的PAM信号成本更低。 由于DME内置时钟,其0和1电平之间的转换频率高于PAM,即使0和1连续出现,同步丢失的可能性也更小。这有助于降低产品成本。 DME.png PMA块 PMA模块执行D/A转换和校正控制。 从下面的框图可以看出,10BASE-T1(S) 中许多模块已被消除(或简化),这简化了设备设计并有助于降低成本。 PMA.png 电缆 使用 10BASE-T1(S) 可以采用价格低廉的以太网电缆。 10BASE-T1(S) 使用一对(两根电缆)非屏蔽双绞线 (UTP) 电缆。 (与 100BASE-T1/1000BASE-T1 以太网线相比,可以显著减轻重量并节省空间。) 到目前为止,我们已经解释了支持 10Mbps 范围的 10BASE-T1(S) 汽车以太网 PHY。 希望您能够理解我们是如何降低成本的,以及我们采取的各种措施。 参考信息 NXP 车载以太网网页 TJA1410,10BASE-T1S PMD 收发器网页 =========================​ 我们目前无法 回复 此帖子“ 评论”部分的评论。 对于由此造成的不便,我们深表歉意。如有任何疑问, 请 参考“ 如何就 技术问题 联系 NXP ( 日语 博客 ) ” 。 (如果您已经是 恩智浦的 分销商或 与 恩智浦 有业务往来 ,您可以直接咨询负责人。) 本页概述了车载以太网 10BASE-T1S 的基本知识。 汽车以太网 界面 日本博客
View full article
S32K344-CMU_FC 总线时钟和 CMU_FC_0 行为 我目前正在我的 S32K344EVB-T172 评估板上实现 CMU_FC 模块。 我很难理解"bus_clock" 在计算 REF_CNT 时具体指的是什么,它被定义为" 时钟信号,在此信号上执行寄存器读/写操作" ,但我不知道这到底与哪个时钟有关。 S32K3XXRM 中的示例使用的总线时钟是 16 MHz, ,我是否应该坚持使用这个值,还是有办法知道它指的是什么?它指的是特定的互连桥吗? 我还注意到,虽然 CMU_FC_0、3 和 4 的编程没有问题,但监控 HSE_CLK的 CMU_FC_5 似乎受到写保护,无法修改。 我确定 HSE-B 已被禁用,并通过检查HSE_GPR 和 UTEST 寄存器进行了仔细检查,但根据我的 MUX_0_DC_3 配置,它应为 HSE-B 内核提供 80mhz 时钟(根据 S32K344 的选项 A - 高性能模式进行配置)。 fede_ls_1-1752647478658.png Re: S32K344 - CMU_FC bus clock and CMU_FC_0 behaviour 你好@fede_ls、 Bus_clk为 AIPS_SLOW_CLK danielmartynek_0-1752656068733.png 参考手册 (RM) 中显示的 16 MHz 值仅用作示例。 要实际实现,请使用 RTD(实时驱动程序)MCU 驱动程序。驱动程序根据 AIPS_SLOW_CLK 频率动态计算所需值,而不是固定的 16 MHz。 您可以参阅驱动程序源代码,了解如何进行计算。 danielmartynek_1-1752656141521.png 应用内核无法配置CMU_FC_5。 danielmartynek_2-1752656643161.png M0+ 内核是 HSE_B 内核。 如果您需要有关此配置的更多详细信息,请提交支持单。相关的 HSE 固件 (HSE_FW) 文档受保密协议 (NDA) 保护。 谢谢! 此致, 丹尼尔 -------------------------------------------------------------------------------------------------------------------------------------------------- NXP 提供的任何支持、信息和技术(“材料”)均按“现状”提供,不附带任何明示或暗示的保证,且 NXP 在适用法律允许的最大范围内,否认与材料相关的所有直接或间接责任和损害。NXP 对任何与应用或产品设计相关的协助不承担任何责任。材料仅可用于与 NXP 产品相关联。NXP 可以不受限制地使用您对材料提供的任何反馈。 --------------------------------------------------------------------------------------------------------------------------------------------------
View full article
T1024 的 PCIe 架构兼容性 大家好, 我们在一个原型中使用 T1024,我们正在尝试将该板与实现 SRNS 架构的 PCIe 交换机集成。 因此,我们的问题是: T1024 与该架构兼容吗? 来自德国的问候 David CONDOR Re: PCIe arquitecture compatibility for T1024 是 T1024 支持 SRNS 时钟架构。
View full article
S32K312 FlexCan的问题 亲爱的NXP社区工作人员你好,目前我想将S32K312的Flex CAN0配置为enhanced Rx FIFO和DMA接收CAN2.0和CANFD报文,我参考了社区中的所有示例,现在仍然存在发送正常,但是无法接收到消息的问题。能否麻烦您帮我查看一下我的初始化过程是否存在问题,以及中断回调函数是否正确配置呢? Re: S32K312 FlexCan的问题 这些都是一致的,我试一下把源工程的其余模块一个个移植去正常运行的测试工程能不能找到问题。 Re: S32K312 FlexCan的问题 Hi@Django_007 排查下工程的一些选项,例如工程的编译优先级是不是一样的 Senlent_0-1737443363703.png Re: S32K312 FlexCan的问题 enhanced_test是我新建的测试工程。 Re: S32K312 FlexCan的问题 我将flexcan相关的代码和.mex的配置移植到一个新的工程之后却能正常运行,但是我检查了很多次这两个项目并没有什么不同,您有什么思路吗? Re: S32K312 FlexCan的问题 好的我再创建一个工程尝试一下 Re: S32K312 FlexCan的问题 Hi@Django_007 好吧,我今天来不及帮你处理了,明天我再帮你看下。 或者我建议你创建一个新的工程,对照链接中的demo重新做个测试demo,看看是不是有什么地方自己的工程中疏漏了,如果还没有成功,你再把你创建的这个新的demo发给我,我帮你看下。 Re: S32K312 FlexCan的问题 还是没有解决,刚刚我测试时没注意发送的是MB配置接受的ID,enhanced RxFIFO配置接受的ID的CAN报文还是无法接收。 Re: S32K312 FlexCan的问题 Hi@Django_007 解决了?什么问题? Re: S32K312 FlexCan的问题 Hi@Django_007 我测试了你的代码,总体是没有任何问题的。你的代码里面mask是使用“Individual Mask Type.” 我简单的帮你改了下方便你测试。 1.0xface,拓展帧 2.0x01,标准帧,这里我将mask设置为全1, 3.新增0x12,标准帧 Senlent_0-1737348632476.png 中断里面你需要为每个MB重新调用FlexCAN_Ip_Receive,否则你无法启动下一次接收的 Senlent_2-1737348686716.png 附件是我测试的截图,关于mask的设置原理参考下面我之前写的文档,自己去深入的研究下 https://community.nxp.com/t5/S32K-Knowledge-Base/S32K1xx-FlexCAN-Mask-Setting-Demo/ta-p/1519753 Re: S32K312 FlexCan的问题 抱歉,上传工程花费了一些时间,非常感谢您能抽空解决我的问题。 Re: S32K312 FlexCan的问题 Hi@Django_007 完整的测试工程贴上来,你提供的这两个文档我也没看到你使能中断之类的 Re: S32K312 FlexCan的问题 对不起,我已经被这个问题困扰一周了,这些示例我都有参考,并且在debug配置过程中返回的结果都是正常的,但是我发送can报文给MCU却无法接收到消息。 Re: S32K312 FlexCan的问题 Hi@Django_007 在这个S32K论坛里面,类似的问题至少有几十个,你自己下次多尝试搜索一下。 这里我给出我们knowledge base上的demo,你可以去参考(其实还可以搜到很多类似的) https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-test-S32DS3-5/ta-p/2015832
View full article
imx8mボード用エミュレータの構築と使用方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 私はimx8m mini EVKとAndriod 9.0 AOSPバージョンを使用しています。 imx8 EVK ボード用の AOSP を正常にダウンロードしてビルドすることができ、正常に動作しています。 imx8mm evk の AOSP をビルドするには、以下のコマンドを使用しました。 $ ソースビルド/envsetup.sh $ ランチ evk_8mm-userdebug $ make 2>&1 | ビルドログ.txtを保存する しかし、開発やテストの作業にはエミュレーターを使用したいと考えています。 エミュレータコマンドを実行すると - $ エミュレータ エミュレータは開きますが、起動も動作もまったくしません。 いくつかのブログやAOSPのドキュメントでは、ランチaosp_x86_64-engで動作すると記載されています。 しかし、私はimx8 mini EVKボードでエミュレーターを使用したいと考えています。つまり - ランチ evk_8mm-userdebug imx8MMビルドでエミュレータを使用する方法を教えてください。例:-> lunch evk_8mm-userdebug それを実行するために必要なすべての変更と設定は何ですか。 ありがとう、よろしく。 マニーシュ Android i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M ミニ | i.MX 8M ナノ i.MX6_すべて i.MX6DL i.MX6Dual i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7Dual i.MX7Solo i.MX7ULP i.MX RT Linux Re: How to build and use emulator for imx8m board このガイドは、i.MX8M ボード専用のエミュレータをビルディングする人にとって非常に役立ちます。ステップバイステップの指示により、環境を簡単にセットアップし、エミュレータをスムーズに実行できるようになります。自分のデバイスで試してみて、パフォーマンスがどの程度優れているか確認するのが楽しみです。共有していただきありがとうございます! Re: How to build and use emulator for imx8m board こんにちは、 最新の Android を imx8 にどのように移植したのですか? 私は Android システム開発を始めたばかりですが、何かアドバイスをいただけませんか? 私はAOSPをダウンロードしてビルドし、エミュレータで実行しましたが、次のステップはまだ決めていません。アドバイスをいただければ幸いです。 お時間をいただきありがとうございます よろしくお願いいたします。 Re: How to build and use emulator for imx8m board <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 申し訳ございませんが、エミュレーションとaosp_x86_64-engデバイスは弊社のBSPではサポートされておりません。ご不便をおかけして申し訳ございません。 ただし、変更を加えた ASOP コードは、次の git からダウンロードCAN。 repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r35 # このブランチは、最新の Android バージョンで使用されるリビジョンです。 リポジトリ同期 よろしくお願いいたします。 ディエゴ。 Re: How to build and use emulator for imx8m board <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 上記の質問に関して何か提案はありますか? ありがとうございます マニーシュ Re: How to build and use emulator for imx8m board <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 上記の投稿で述べたように、imx8ミニボードのすべてのAOSPソースコードをコンパイルすることができました。 imx8m Mini EVK ボードでテストできました。 しかし、Ubuntu Linux でエミュレータを起動しようとすると、エミュレータ ウィンドウは表示されますが、永久にブラックアウトしたままになります。 コマンドは次のとおりです - $ エミュレータ   Android エミュレータで imx8 mini AOSP とその Android フレームワークを起動することは可能ですか? 可能であれば、その手順は何ですか?または、エミュレーションを行う別の方法はありますか? 注記 - いくつかのブログやAOSPのドキュメントでは、ランチaosp_x86_64-engで動作すると記載されています。 しかし、AOSPをダウンロードして、ランチのaosp_x86_64-engコマンドからビルドしようとすると、次のようなエラーが発生します。 /bin/bash: -c: 行 0: `echo -e "\033[1mvendor/nxp-opensource/fsl_imx_demo/イーサネット/Android.mk:\033[31merror:\033[0m\033[1m" イーサネット: LOCAL_SDK_VERSION (system_current) と LOCAL_PRIVATE_PLATFORM_APIS (current) の両方を指定していますが、どちらか一方だけを指定する必要があります "\033[0m" >&2' build/make/core/sdk_check.mk:34: エラー: 完了。 14:57:53 ckati が失敗しました: 終了ステータス 1 imx8用のNXP WebサイトからAOSPをダウンロードしてビルドするために私が実行した手順 - $リポジトリ初期化 -u https://source.codeaurora.org/external/imx/imx-manifest.git -b imx-android-pie -m imx-p9.0.0_2.0.0-ga.xml $リポジトリ同期 $ ソースビルド/envsetup.sh $ ランチ evk_8mm-userdebug $ make 2>&1 | ビルドログ.txtを保存する さて、私の質問は -> 1. 上記のコマンドで生成されたこの AOSP ビルドでエミュレータを使用するにはどうすればよいですか? 2. ダウンロードした AOSP ソース コードを lunch aosp_x86_64-eng 用にビルドするにはどうすればよいですか? 3. NXP から変更を加えずに Android Pie の生の AOSP ソース コードをどこからダウンロードできますか? ありがとうございます マニーシュ
View full article
yolo11 物体检测 int8 量化模型使用 eiq 无法检测物体 我有一个 YOLOv11 物体检测模型。我登录了 yolo11n.pt 模型,并将其转换为 ONNX 格式。之后,我使用 onnxsim 简化了 ONNX 模型。然后,我使用 onnx2tf 将模型转换为 SavedModel (.pb) 格式。随后,我使用恩智浦的 eIQ 工具包转换了这个 .pb模型转换为 INT8 量化模型。为此,我使用 COCO128 数据集(100 多幅图像)作为校准数据集。 模型转换成功,但没有检测到任何物体,而使用 Ultralytics 导出应用程序接口获得的 INT8 模型却能正确检测到物体。当我检查这两个模型的内部权重时,它们是不同的,而且同一图像的模型输出也有很大差异。 请帮我转换 .pb正确的模型,使检测结果符合预期。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: yolo11 object detection int8 quantized model using eiq does not detect objects 你好,swapnildaphal: 由 yolo 官方 Ultralytics 导出 API 获得的 INT8 模型也在内部调用 onnx2tf API。它应该与您提到的方法相同: yolo11n.pt -> yolo11.onnx -> yolo11_sim.onnx -> yolo11 tensorflow saved model -> tftlie int8 model。 对于 EIQ 工具包,.pb模型转换为 int8quantized,它也封装了 tflite 的量化代码。因此,在获得张量流保存的模型后,可以使用以下代码执行量化测试。需要注意的是,在量化过程中,指定模型的预处理方法应与原始预处理方法保持一致。 因此,您可以通过 ultralytics 的转换 API 生成 tensorflow 保存的 moel,然后调用 tflite 的官方量化工具对模型进行量化。 此致 丹尼尔
View full article
未解決の包含 こんにちは、皆さん MCUXpresso 24.9を使用しています。 私のプロジェクトでは、何らかの理由でコンパイラのコマンドラインを変更する必要がありました。変更は正常に動作しており、プロジェクトは問題なく構築されています。 しかし、副作用があります。インデクサーは lib include ファイルを解決できません。 biafra_0-1728895441980.png この問題をデバッグするために、デフォルトのオプション ([新しいプロジェクト] -> [新しい C/C++ プロジェクトの作成]) を使用してテスト プログラムを作成し、プロジェクトをコンパイルするためのコマンド ライン ([プロジェクト プロパティ] -> [C/C++ ビルド] -> [設定] -> [MCU C コンパイラ]) をデフォルト値 (" arm-none-eabi-gcc") から "../compile.cmd" に変更しました。 biafra_1-1728895775700.png compile.cmd ファイルはプロジェクト ディレクトリにあり、次の 1 行が含まれています。 arm-none-eabi-gcc %*    プログラムをコンパイルすると、プロセスはエラーなしで終了しますが、すべての c ライブラリ ファイルが未解決の包含として強調表示されるSO、問題はインデクサーにのみ存在します。 デフォルト設定の場合、ハイライトは表示されず、 \.metadata\.logに記録されます。ファイルには次のメッセージがあります: !ENTRY org.eclipse.cdt.core 1 0 2024-10-14 10:30:17.365 !MESSAGE Indexed 'MIMXRT1064_Project' (20 sources, 43 headers) in 1,87 sec: 8.359 declarations; 17.870 references; 0 unresolved inclusions; 0 syntax errors; 0 unresolved names (0%) カスタム設定がある場合は、次のメッセージが表示されます。 !ENTRY org.eclipse.cdt.core 4 0 2024-10-14 10:32:13.001 !MESSAGE Error: Cannot run program "..\compile.cmd": Launching failed !STACK 0 java.io.IOException: Cannot run program "..\compile.cmd": Launching failed at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) at org.eclipse.cdt.utils.spawner.Spawner. (Spawner.java:147) at org.eclipse.cdt.utils.spawner.Spawner. (Spawner.java:134) at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) !ENTRY org.eclipse.cdt.core 1 0 2024-10-14 10:32:14.602 !MESSAGE Indexed 'MIMXRT1064_Project' (20 sources, 30 headers) in 1,05 sec: 7.246 declarations; 12.921 references; 18 unresolved inclusions; 59 syntax errors; 3.440 unresolved names (15%) どうすればこの問題を解決できるでしょうか? どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@Alice_Yang 、 私が報告した問題に関して何かニュースはありますか? 開発チームから検証されましたか? その間にMCUXpresso 25.6にスイッチしましたが、何も変わりません。 biafra_0-1757063945602.png biafra_1-1757064191009.png 問題ビューでエラーが報告されているにもかかわらず、プロジェクトは正常にコンパイルされます。 どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@Alice_Yang 、 これで、プロジェクトの場所に応じて絶対パスを設定できるようになりました。この画像のように、ProjDirPath パス変数を使用する必要があります。 biafra_4-1735899636813.png しかし、実際のプロジェクトは非常に複雑なプロジェクトであり、コマンドラインが8191文字の制限を超えているSO、Windowsの.cmdを使用することはできません。バッチファイル。 PCにGitがインストールされているので、.shシェルファイルを使用CANます。 biafra_2-1735899545460.png ファイル compile.sh はプロジェクト ディレクトリ内に compile.cmd として存在し、次の行が含まれています。 #!/bin/sh arm-none-eabi-gcc $@ compile.shファイルではプロジェクトはエラーなくビルドされますが、.shファイルを使用するとファイルでも同じ問題が発生します。インデクサーは lib インクルード ファイルを解決できません。 どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@biafra はい、受け取りました。IDEs 開発チームに確認する必要があります。できるだけ早く返信させていただきます。ご辛抱いただきありがとうございます。 BR アリス Re: Unresolved inclusion こんにちは@Alice_Yang 、 ファイルを受け取りましたか? どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@Alice_Yang 、 間違いをお詫びします。ファイルを添付します。 どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@biafra 申し訳ありませんが、ファイルを受け取っていません。もう一度送っていただけますか? BR アリス BR アリス Re: Unresolved inclusion こんにちは@Alice_Yang 、 一歩先を行きました。 compile.cmd ファイルの絶対パス (C:/MyProject/compile.cmd) を使用してプロジェクトをコンパイルするようにコマンド ラインを設定すると、未解決の包含装飾が消えます。 SO、PROJECT_LOC パス変数を使用しようとしましたが、展開されていないようで、ビルド エラーも発生しました。 インデクサーに compile.cmd ファイルへの相対パスを与える方法はありますか? あるいは、プロジェクトの場所に応じて絶対パスを与えることはできますか? プロジェクト開発者のドライブ パスが異なるため、プロジェクトの場所を変更できる必要があります。 どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@Alice_Yang 、 ご回答ありがとうございます。 プロジェクトを添付します。他に何か必要な場合はお知らせください。 どうもありがとう ビアフラ Re: Unresolved inclusion こんにちは@biafra compile.cmd を含むプロジェクト全体を送信してください。私は自分の側でテストと確認を手伝います。ありがとう。 BR アリス
View full article
S912ZVML32F3MKHチッププログラムのデバッグとダウンロードにはPDOとPDOCLKを使用する必要がありますか? S912ZVML32F3MKHチップを使用しています。PDO ピンと PDOCLK ピンを使用せず、BKCD、RST、GND、VDDX のみを使用すると、プログラムを適切にデバッグしてダウンロード CAN ますか。PDOを行う PDOCLK ではダウンロード プログラムをデバッグするためにダウンロード ポートが必要ですか? Re: Is it necessary to use PDO and PDOCLK for debugging and downloading the S912ZVML32F3MKH chip pro 私は CodeWarrior で Multilink を使用してファームウェアをフラッシュし、適切なドライバを用意して BKCD、RST、GND、および VDDX 接続を適切に設定すると、スムーズに動作しました。最も難しい部分はターゲット セットアップの構成でした。FNF リズム チェックのように感じました。1 つのビート (またはピン) を間違えると、何も同期しなくなります。P&E Micro のドキュメントとサンプル プロジェクトは非常に役立ちましたが、最初は多少の試行錯誤が必要になることを覚悟してください。 Re: Is it necessary to use PDO and PDOCLK for debugging and downloading the S912ZVML32F3MKH chip pro Multilink と Codewarrior をお持ちの場合、ファームウェアをダウンロードするにはどうすればいいですか? また、関連するサンプル プロジェクトやドキュメントはありますか? BKCD、RST、GND、VDDX を使用しようとしています。 Re: Is it necessary to use PDO and PDOCLK for debugging and downloading the S912ZVML32F3MKH chip pro こんにちは、 すべてのデバッグ機能が利用できるSO、必要なピンをすべて使用することをお勧めします。いつ必要になるか分からないし、必要になったら懐かしく思うでしょう。たとえば、トレース機能。さらに、デバッガーではこれらのピンが必要なときにプロパティを実装CAN。これはデバッグ インターフェースの実装、そのプロトコルおよびプロパティによって提供されるものであり、当社の製品ではないため、表示されません。もちろん、具体的な使用方法を確認すれば可能性はありますが、すでに書いたように、完全なインターフェースを使用する方が良いでしょう。 よろしくお願いいたします。 ラディスラフ
View full article
ECSPI_SCLK信号整合性 こんにちは、 i.MX8M miniを使用しています。 i.MX側でSCLKとMISOの波形を測定しました。 SCLKはi.MXをマスターとして出力しますが、立ち上がりエッジにグリッチなどの歪みが生じます。 MISO からデータをキャプチャする場合、i.MX8 はこの SCLK 波形を使用しますか? データ取得を駆動する内部回路は、バッファによって分離されたクリーンな信号を使用し、外部反射の影響を受けないという私の理解は正しいでしょうか? CH1(黄): SCLK CH2(青):味噌 _eg_0-1753761114517.png ありがとうございます Re: ECSPI_SCLK signal integrity 親愛なるジャンシーさん、 お返事ありがとうございます。 現時点では内部デザイン図がないため、私の質問に現時点では答えることはできないと理解しています。 よろしくお願いします、 Re: ECSPI_SCLK signal integrity RMを参照してください。この図しか見つかりませんが、内部設計図はありません。しかし、ECSPIデザインはSCLKにクリーンな信号を提供できます。すべてのボードでジッタが発生する場合は、ハードウェアデザインまたは測定ツールを確認してください。1つまたは2つのボードでのみこの問題が発生する場合は、ABテストを実行して、この問題がチップに関連しているかどうかを確認できます。 joanxie_0-1754032967239.png Re: ECSPI_SCLK signal integrity 親愛なるジャンシーさん、 お返事ありがとうございます。 ECSPI はシフト レジスタに SCLK 信号を使用することを理解しています。 また、SCLK 波形はスレーブ デバイスにとって重要です。 i.MXの内部図を知りたいです。 図1.それが私の理解です。 図2は正しいということですか? _eg_2-1753848826403.png <図1. シフトレジスタは外部の影響を受けない> _eg_3-1753848838651.png <図2. シフトレジスタは外部からの影響を受ける> ありがとう、 Re: ECSPI_SCLK signal integrity 1)MISO からデータをキャプチャする場合、i.MX8 はこの SCLK 波形を使用しますか? >はい、リファレンス マニュアルを参照してください。ECSPI マスターは、チップ セレクト (SS) 信号を使用して外部 SPI デバイスを有効にし、SCLK 信号を使用してシフト レジスタとの間でデータを転送します。 2)データ取得を駆動する内部回路は、バッファによって分離されたクリーンな信号を使用し、外部反射の影響を受けないという私の理解は正しいでしょうか? > ピンの信号整合性の問題は外部の影響を受けるため、ハードウェアデザインを再確認する必要があります。
View full article
imx8qxp セキュアブート AHAB_BAD_KEY_HASH_IND HSM、cst_signer、CST 3.4.0 を使用して、imx-boot と linux-imx に署名しています。 ahab_close を発行する前に、ahab_status を使用して SECO イベント情報を確認すると、u-boot で次のようになります。 => ahab_status ライフサイクル: 0x0020、NXP 終了 SECOイベント情報[0] = 0x0087FA00 コマンド = AHAB_AUTH_CONTAINER_REQ (0x87) IND = AHAB_BAD_KEY_HASH_IND (0xFA) sc_seco_get_event: idx: 1、res:3 fuse read 0 730 16 を使用して u-boot から SRK OTP 値を読み取ると、uuu スクリプトにある値が得られます。 その不一致がどこから来ているのかはCAN理解できません。それを検証するためのご助力やデバッグ方法に関するご指導をいただければ幸いです。 この問題を解決するために追加の情報が必要な場合は、CAN提供できます。 --- 実行しているコマンドの概要。ビルドは yocto ベースです。 HSM 4 証明書をエクスポートします。cert{1,2,3,4}.pem と呼びます。 table.binとfuse.binを作成する .../cst-3.4.0/linux64/bin/srktool -a -s sha384 -t table.bin \ -e fuse.bin -f 1 \ -c cert1.pem、cert2.pem、cert3.pem、cert4.pem linux-imx: .../cst_signer -d -i flash_os.bin -c csf.cfg --pkcs11 mv 署名済みフラッシュOS.bin os_cntr_signed.bin imx-ブート: cst_signer -d -i imx-boot-imx8qxp-d7-sd.bin-flash -c csf.cfg --pkcs11 注: cst_signer の --pkcs11 フラグは、追加したパッチです。cst の呼び出しに -b pkcs11 を追加するだけです。 csf.cfgは次のようになります #ヘッダ ヘッダーバージョン=1.0 #SRKをインストールする srktable_file=SRK_1_2_3_4_table.bin srk_source=pkcs11:model=YubiHSM;token=YubiHSM;object=./SRK1_sha384_p384_v3_usr;type=cert;pin-value=xxyyxxyyxxyyxxyy srk_source_index=0 srk_source_set=OEM srk_revocations=0x0 #証明書をインストールする sgk_file= sgk_permissions= HSM パラメータの PKI ツリー: 既存のCA: N ECCを使用する: Y キーの長さ: p384 ダイジェストアルゴリズム: sha384 期間: 5年 SRK CA: N i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus Security Re: imx8qxp secure boot AHAB_BAD_KEY_HASH_IND このイベント情報では、キーハッシュ検証が OTP と一致しないことを示します。 SRK TABLE ハッシュ計算に問題がある可能性があります。SRK TABLE と Fuse ハッシュ値を比較してみましょう。 よろしくお願いします。 Harvey
View full article