Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
eIQ FAQ This document will cover some of the most commonly asked questions we've gotten about eIQ and embedded machine learning. Anything requiring more in-depth discussion/explanation will be put in a separate thread. All new questions should go into their own thread as well What is eIQ? The NXP® eIQ™ machine learning (ML) software development environment enables the use of ML algorithms on NXP EdgeVerse™ microcontrollers and microprocessors, including MCX-N microcontrollers, i.MX RT crossover MCUs, and i.MX family application processors. eIQ ML software is made up of several pieces of enablement including inference engines, neural network compilers and optimized libraries. This software leverages open-source and proprietary technologies and is fully integrated into our MCUXpresso SDK and Yocto development environments, allowing you to develop complete system-level applications with ease. eIQ enablement also enables models to use the new eIQ Neutron NPU found on the MCX-N and i.MX RT700 microcontroller devices and upcoming future NPU enabled embedded devices like i.MX95.  What are the key pieces of eIQ enablement?  eIQ Time Series Studio - PC tool to create and deploy classical machine learning and neural network models for time series analysis eIQ Inference Engines - Included as part of MCUXpresso SDK or Yocto Linux, this software is used to do inferencing of pre-trained neural network models on embedded devices eIQ Toolkit - Contains the Neutron Converter tool for enabling neural network models to be accelerated with eIQ Neutron NPUs eIQ Model Zoo - browse models tested on NXP silicon eIQ Model Watermarking Extension - Enhance copyright protections on custom models eIQ Model Creator - Partnership with ModelCat for vision-based model development How much does eIQ cost? eIQ Time Series Studio, eIQ Toolkit, and eIQ Inference engines are complimentary and royalty free. eIQ Model Creator has a subscription fee with ModelCat.  What is the development flow for developing and deploying AI/ML models with eIQ? There are two options depending on if already have a model or not, or if interested in Time Series or not: 1) Deploy a neural network model using the eIQ Inference Engines 2) Use eIQ Time Series Studio (TSS) to train and deploy a time series model using a simple C library eIQ Inference Engines What is the key enablement for using eIQ Inference Engines? 1) The inference engine, like TensorFlow Lite for Microcontrollers, that is included in the MCUXpresso SDK 2) eIQ Neutron Converter Tool - used to convert a quantized TFLite model into a Neutron-enabled TFLite model that can be parsed by the eIQ software. This is only required if using an eIQ Neutron NPU enabled device.  You can use any workflow to create and train your ML model. The model just needs to be exported as TFLite file so it can be converted by the eIQ Neutron Converter Tool and/or use the TFLM inference engine.  What inference engines are available in eIQ? i.MX apps processors and i.MX RT MCUs support different inference engines. The best inference engine can depend on the particular model being used, so eIQ offers several inference engine options to find the best fit for your particular application.  Inference engines for i.MX: TensorFlow Lite (Supported on both CPU and GPU/NPU) ARM NN (Supported on both CPU and GPU/NPU) OpenCV (Supported on only CPU) ONNX Runtime (Currently only supported on CPU) Inference engines for MCX and i.MX RT TensorFlow Lite for Microcontrollers ExecuTorch (Coming Soon) What devices are supported by eIQ inference engines? eIQ inference engines are available for the following i.MX application processors: i.MX 8M Plus i.MX 8M i.MX 8M Nano i.MX 8M Mini i.MX 8ULP i.MX 8X i.MX 93 i.MX 95 eIQ inference engines are available for the following MCX MCUs: MCX-N eIQ inference engines are is available for the following i.MX RT crossover MCUs: i.MX RT1180 i.MX RT1170 i.MX RT1160 i.MX RT1064 i.MX RT1060 i.MX RT1050 i.MX RT700 i.MX RT685 i.MX RT595 anthony_huereca_0-1730269555807.png Can eIQ inference engines run on other NXP MCU devices? There's no special hardware module required to run eIQ inference engines and it is possible to port the inference engines to other NXP devices.  Is eIQ Toolkit required to use eIQ inference engines?  eIQ Toolkit is required if using a device with an eIQ Neutron NPU as it includes the Neutron Converter tool which is used to convert a model to be accelerated by the NPU.  For devices that do not have an NPU, eIQ Toolkit is optional enablement from NXP to provide an option to generate models that can then be used with the eIQ inference engines. However if you already have your model development flow in place, or want to use pre-created models from a model zoo, you can use those models with eIQ inference engines as well.  What is the eIQ Neutron NPU?  The new eIQ Neutron NPU is a Neural Processing Unit developed by NXP which has been integrated into the MCX N, i.MX RT700, and i.MX95 devices, with many more to come. It was designed to accelerate neural network computations and significantly reduce model inference time. The scalability of this module allows NXP to integrate this NPU into a wide range of devices all while having the same eIQ software enablement.  For more details on the NPU for MCX N see this Community post.  How can I start using the eIQ Neutron NPU?  There are hands-on NPU lab guides available for MCX N or i.MX RT700 that walk through the steps for converting and running a model with the eIQ Neutron NPU. There is also an app note AN14700 - i.MX RT700 eIQ Neutron NPU Enablement and Performance which has more details.  What TFLite operators are supported bythe eIQ Neutron NPU on different devices?  The details and constraints for supported operators can be found in the MCUXpresso SDK documentation.  eIQ Time Series Studio What is eIQ Time Series Studio (TSS)?   eIQ TSS is software application that provides an automated machine-learning workflow that streamlines the development and deployment of time series-based machine learning models across microcontroller (MCU) class devices such as the MCX portfolio of MCUs and i.MX RT portfolio of crossover MCUs. Time Series Studio supports a wide range of sensor input signals, including voltage, current, temperature, vibration, pressure, sound, time of flight, among others, as well as combinations of these for multimodal sensor fusion. The automatic machine learning capability enables developers to extract meaningful insights from raw time-sequential data and quickly build AI models tailored to meet accuracy, RAM and storage criteria for microcontrollers. The tool offers a comprehensive development environment, including data curation, visualization and analysis, as well as model autogeneration, optimization, emulation and deployment. eIQ Time Series Studio was previously included in eIQ Toolkit but is now available as a standalone installer for both Windows and Linux. A web based version is also under development.   What devices are supported by the eIQ Time Series Studio?   TSS will generate a C library that can be included in your application and does not require an Deep Learning inference engine, so it can be deployed to a much wider range of NXP devices as it has very minimal flash and RAM requirements.  MCX FRDM-MCXA153 FRDM-MCXC444 FRDM-MCXN947 FRDM-MCXW17 i.MX RT MIMXRT1060-EVK MIMXRT1170-EVK MIMXRT1180-EVK i.MXRT685 i.MXRT595 i.MXRT700 LPC LPC55S69-EVK Kinetis FRDM-K66F FRDM-KV31F FRDM-K32L3A6 DSC MC56F83000-EVK MC56F80000-EVK i.MX i.MX93 i.MX 8M Plus Can eIQ Time Series Studio create models that can take advantage of the eIQ Neutron NPU?  Yes, TSS now supports creating both Classical Machine Learning (CML) models as well as Neural Network models. Neural Network models can be accelerated by the NPU. However in many cases it will make more sense to use the CML models for time series applications as they can be just as accurate for many time series datasets but will be much faster and use far less memory due to their smaller model size. Even when using NPU acceleration Neural Network models can be slower than their far smaller CML model counterparts. However in some situations Neural Networks may give better accuracy for complex multi-modal analysis. TSS make it easy to determine if a NN or CML model is the best fit for a particular dataset.  But as many time series applications perform well with CML models then it opens up running time series AI on a wide variety of devices even if they do not have an integrated NPU.  How can I start using the eIQ Time Series Studio tool?  There is a hands-on lab guide available to walk through how to use the tool as well as documentation and guides in the tool itself.  General eIQ Questions How can I get eIQ? For MCU devices: eIQ inference engine libraries and examples are included as part of MCUXpresso SDK for supported devices. Make sure to select the “eIQ” middleware option. eIQ Neutron Converter Tool that converts your own neural network model to use the Neutron NPU can be found in eIQ Toolkit.  eIQ Time Series Studio is available as a standalone installer For i.MX devices: eIQ is distributed as part of the Yocto Linux BSP. Starting with the 4.19 release line there is a dedicated Yocto image that includes all the Machine Learning features: ‘imx-image-full’. For pre-build binaries refer to i.MX Linux Releases and Pre-releases pages. There is eIQ Toolkit - for model conversion.   What documentation is available for eIQ? For i.MX RT and MCX devices:  eIQ MCUXPresso SDK documentation can be found online here.  For i.MX devices: The eIQ documentation for i.MX is integrated in the Yocto BSP documentation. Refer to i.MX Linux Releases and Pre-releases pages. i.MX Reference Manual: presents an overview of the NXP eIQ Machine Learning technology. i.MX Linux_User's Guide: presents detailed instructions on how to run and develop applications using the ML frameworks available in eIQ (currently ArmNN, TFLite, OpenCV and ONNX). i.MX Yocto Project User's Guide: presents build instructions to include eIQ ML support (check sections referring to ‘imx-image-full’ that includes all eIQ features). It is recommended to also check the i.MX Linux Release Notes which includes eIQ details. For i.MX devices, what type of Machine Learning applications can I create?  Following the BYOM principle described above, you can create a wide variety of applications for running on I.MX. To help kickstart your efforts, refer to PyeIQ – a collection of demos and applications that demonstrate the Machine Learning capabilities available on i.MX. They are very easy to use (install with a single command, retrieve input data automatically) The implementation is very easy to understand (using the python API for TFLite, ArmNN and OpenCV) They demonstrate several types of ML applications (e.g., object detection, classification, facial expression detection) running on the different compute units available on i.MX to execute the inference (Cortex-A, GPU, NPU). Can I use the python API provided by PyeIQ to develop my own application on i.MX devices? For developing a custom application in python, it is recommended to directly use the python API for ArmNN, TFLite, and OpenCV. Refer to the i.MX Linux User’s Guide for more details. You can use the PyeIQ scripts as a starting point and include code snippets in a custom application (please make sure to add the right copyright terms) but shouldn’t rely on PyeIQ to entirely develop a product. The PyeIQ python API is meant to help demo developers with the creation of new examples. What eIQ example applications are available for MCUs? eIQ example applications can be found in the \boards\ \eiq_examples directory:  What are Glow and DeepViewRT inference engines in the MCUXpresso SDK?  These are inference engines that were supported in previous versions of eIQ but are now deprecated as new development has focused on TensorFlow Lite for Microcontrollers. These projects are still available in MCUXpresso SDK 2.15 for legacy users, but it is highly recommended that any new projects use TensorFlow Lite for Microcontrollers.   How can I learn more about using TensorFlow Lite with eIQ? There is a hands-on TensorFlow Lite for Microcontrollers lab available. There is also a i.MX TensorFlow Lite Lab that provide a step-by-step guide on how to get started with eIQ for TensorFlow Lite for i.MX devices.  What application notes are available to learn more about eIQ? i.MX RT700 eIQ Neutron NPU Enablement and Performance  Anomaly Detection App Note  Handwritten Digit Recognition  Datasets and Transfer Learning App Note  Security for Machine Learning Package  i.MX 8M Plus NPU Warmup Time App Note  What is the advantage of using eIQ instead of using the open-sourced software directly from Github? eIQ supported inference engines work out of the box and are already tested and optimized, allowing for performance enhancements compared to the original code. eIQ also includes the software to capture the camera or voice data from external peripherals. eIQ allows you to get up and running within minutes instead of weeks. As a comparison, rolling your own is like grinding your own flour to make a pizza from scratch, instead of just ordering a great pizza from your favorite pizza place.  Does eIQ include ML models? Do I use it to train a model? eIQ has options to both create model and run pre-existing models so you can Bring Your Own Model (BYOM) and run it on NXP embedded devices. eIQ provides the ability to run your own specialized model on NXP’s embedded devices.  MCUXpresso SDK and the i.MX Linux releases come with several examples that use pre-created models that can be used to get a sense of what is possible on our platforms, and it is very easy to substitute in your own model into those examples. eIQ Time Series Studio can be used to create and deploy time series models eIQ Model Creator is an option to create your own vision based models with our partner ModelCat I’m new to AI/ML and don’t know how to create a model, what can I do? A wide variety of resources are available for creating models, from labs and tutorials, to automated model generation tools like eIQ Time Series Studio, eIQ Model Creator, Google Cloud AutoML, Microsoft Azure Machine Learning, or Amazon ML Services, to 3 rd party partners like ModelCat, SensiML and Au-Zone that can help you define, enhance, and create a model for your specific application. I’m interested in anomaly detect or time series models on microcontrollers, where can I get started? The eIQ Time Series Studio (TSS) tool, included as part of the eIQ Toolkit, is perfect for getting started with time series or anomaly detection models. It allows you to import time series datasets, generate models, and deploy them to NXP microcontrollers.  There is also ML-based System State Monitor Application Software Pack which provides an example of gathering time-series data, in this case vibrations picked up by an accelerometer, and includes Python scripts to use the data that was collected to generate a small model that can be deployed on many different microcontrollers (including i.MX RT1170, LPC55S69, K66F) for anomaly detection. The same concepts and technique can be used for any sort of times series data like magnetometers, pressure, temperature, flow speed, and much more. This can simplify the work of coming up with a customer algorithm to detect the different states of whatever system you're interested in, as you can let the power of machine learning figure all that out for you.  There is also an on-device trained anomaly detection model example that can be found on the Application Code Hub. Troubleshooting: Why do I get an error when running Tensorflow Lite Micro that it "Didn't find op for builtin opcode"? The full error will look something like this: Didn't find op for builtin opcode 'PAD' version '1' Failed to get registration from op code ADD Failed starting model allocation. AllocateTensors() failed Failed initializing model The reason is that with MCUXpresso SDK, the TFLM examples have been optimized to only support the operands necessary for the default models. If you are using your own model, it may use extra types of operands. To fix this issue, add that operator to MODEL_GetOpsResolver function found in source\model\model_name_ops_npu.cpp Also make sure to also increase the size of the static array s_microOpResolver to match the number of operators An alternative method is also described in the TFLM Lab Guide on how to use the All Ops Resolver. Add the following header file #include"tensorflow/lite/micro/all_ops_resolver.h" and then comment out the micro_op_resolver and use this instead:  //tflite::MicroOpResolver &micro_op_resolver = //MODEL_GetOpsResolver(s_errorReporter); tflite::AllOpsResolver micro_op_resolver; Why do I get the error “Internal Neutron NPU driver error 281b in model prepare!” or "Incompatible Neutron NPU microcode and driver versions!" when using the Neutron NPU? The version of the eIQ Neutron Converter Tool needs to be compatible with the NPU libraries used by your project. See more details in this post on using custom models with eIQ Neutron NPU.  Sometimes in eIQ Toolkit the Validation page hangs and it stays stuck on "Converting Model". How do I work around this?  On the Validation section of the wizard, you will need to wait for the "Input Data Type" and "Output Data Type" selection boxes to be populated before clicking on the "Validation" button at the bottom. It may take a minute or two for those selection boxes to pop up on the left hand side. Once they do, then click on Validate and it should no longer hang.  How do I use my GPU when training with eIQ Toolkit? eIQ Toolkit 1.10 only supports GPU training on Linux due to the latest TensorFlow versions no longer supporting GPU on Windows.  Why do I get a blank or black LCD screen when I use the eIQ demos that have camera+LCD support on RT1170 or RT1160? There are different versions of the LCD, so you need to make sure you have the software configured correctly for the LCD you have. See this post for more details on what to change. There is a Javascript error in Time Series Studio when I start the training.  There is a bug where if the eIQ Portal window is closed after opening the Time Series Studio then that error comes up. Try relaunching Time Series Studio but keep the original eIQ Portal window open.  The eIQ Time Series Studio in eIQ Toolkit v1.17 is v1.3.4 but it says there's a newer version?  The eIQ Toolkit v1.17 contains an older version of eIQ Time Series Studio. The latest version can always be found on the eIQ Time Series Studio website. General AI/ML: What is Artificial Intelligence, Machine Learning, and Deep Learning? Artificial intelligence is the idea of using machines to do “smart” things like a human. Machine Learning is one way to implement artificial intelligence, and is the idea that if you give a computer a lot of data, it can learn how to do smart things on its own. Deep Learning is a particular way of implementing machine learning by using something called a neural network. It’s one of the more promising subareas of artificial intelligence today. This video series on Neural Network basics provides an excellent introduction into what a neural network is and the basics of how one works.  What are some uses for machine learning on embedded systems? Image classification – identify what a camera is looking at Coffee pods Empty vs full trucks Factory defects on manufacturing line Produce on supermarket scale Facial recognition – identifying faces for personalization without uploading that private information to the cloud Home Personalization Appliances Toys Auto Audio Analysis Wake-word detection Voice commands Alarm Analytics (Breaking glass/crying baby) Anomaly Detection Identify factory issues before they become catastrophic Motor analysis Personalized health analysis What is training and inference? Machine learning consists of two phases: Training and Inference Training is the process of creating and teaching the model. This occurs on a PC or in the cloud and requires a lot of data to do the training. eIQ is not used during the training process. Inference is using a completed and trained model to do predictions on new data. eIQ is focused on enhancing the inferencing of models on embedded devices. What are the benefits for “on the edge” inference? When inference occurs on the embedded device instead of the cloud, it’s called “on the edge”. The biggest advantage of on the edge inferencing is that the data being analyzed never goes anywhere except the local embedded system, providing increased security and privacy. It also saves BOM costs because there’s no need for WiFi or BLE to get data up to the cloud, and there’s no charge for the cloud compute costs to do the inferencing.  It also allows for faster inferencing since there’s no latency waiting for data to be uploaded and then the answer received from the cloud. What processor do I need to do inferencing of models? Inferencing simply means doing millions of multiple and accumulate math calculations – the dominant operation when processing any neural network -, which any MCU or MPU is capable of. There’s no special hardware or module required to do inferencing. However specialized ML hardware accelerators, high core clock speeds, and fast memory can drastically reduce inference time. Determining if a particular model can run on a specific device is based on: How long will it take the inference to run. The same model will take much longer to run on less powerful devices. The maximum acceptable inference time is dependent on your particular application. Is there enough non-volatile memory to store the weights, the model itself, and the inference engine Is there enough RAM to keep track of the intermediate calculations and output As an example, the performance required for image recognition will be very dependent on the model is being used to do image recognition. This will vary depending on how many classes, what size of images to be analyzed, if multiple objects or just one will be identified, and how that particular model is structured. In general image classification can be done on i.MX RT devices and multiple object detection requires i.MX devices, as those models are significantly more complex. eIQ provides several examples of image recognition for i.MX RT and i.MX devices and your own custom models can be easily evaluated using those example projects.  How is accuracy affected when running on slower/simpler MCUs? The same model running on different processors will give the exact same result if given the same input. It will just take longer to run the inference on a slower processor. In order to get an acceptable inference time on a simpler MCU, it may be necessary to simplify the model, which will affect accuracy. How much the accuracy is affected is extremely model dependent and also very dependent on what techniques are used to simplify the model. What are some ways models can be simplified? Quantization – Transforming the model from its original 32-bit floating point weights to 8-bit fixed point weights. Requires ¼ the space for weights and fixed point math is faster than floating point math. Often does not have much impact on accuracy but that is model dependent. Fewer output classifications can allow for a simpler yet still accurate model Decreasing the input data size (e.g. 128x128 image input instead of 256x256) can reduce complexity with the trade-off of accuracy due to the reduced resolution. How much that trade-off is depends on the model and requires experimentation to find. Software could rotate image to specific position using classic image manipulation techniques, which means the neural network for identification can be much smaller while maintaining good accuracy compared to case that neural network has to analyze an image that could be in all possible orientations. What is the difference between image classification, object detection, and instance segmentation? Image classification identifies an entire image and gives a single answer for what it thinks it is seeing. Object detection is detecting one or more objects in an image. Instance segmentation is finding the exact outline of the objects in an image. Larger and more complex models are needed to do object detection or instance segmentation compared to image classification.   anthony_huereca_2-1762925966820.png What is the difference between Facial Detection and Facial Recognition? Facial detection finds any human face. Facial recognition identifies a particular human face. A model that does facial recognition will be more complex than a model that only does facial detection.  anthony_huereca_0-1762925921960.png How come I don’t see 100% accuracy on the data I trained my model on? Models need to generalize the training data in order to avoid overfitting. This means a model will not always give 100% confidence , even on the data a model was trained on. What are some resources to learn more about machine learning concepts?  Video series on Neural Network basics  ARM Embedded Machine Learning for Dummies Google TensorFlow Lab Google Machine Learning Crash Course Google Image Classification Practica YouTube series on the basics of ML and TensorFlow (ML Zero to Hero Series) i.MX 8 i.MX RT Re: eIQ FAQ Hi David,   eIQ Toolkit 1.0.5 is using TensorFlow version is 2.3.2, so to use the GPU when training you will need to install cuDNN v7.6 and CUDA 10.2. If you have newer versions of those tools installed on your PC you may need to uninstall those first before installing the version needed for the 1.0.5 version of eIQ Toolkit. I've also updated the FAQ with this information and it will be in the documentation in the next version of eIQ Toolkit that is released. -Anthony Re: eIQ FAQ Hi @anthony_huereca , I am using eIQ tool on model training for i.MXRT1170 platform. I find eIQ tool is always use PC CPU resource, so when it perform the model training that will occupy around 60 ~ 80% CPU resource. But it not use any GPU resource. Is there any method to configure eIQ tool to use GPU resource on the model training ? In case that will have better performance on the AI training. Is it? davidchenb3693_0-1625734326453.png davidchenb3693_1-1625734379837.png Thanks. David  
記事全体を表示
S32K344's rx interrupt can't work Hi,     I am working on S32K344's UART. We use this chip's UART0/UART1/UART8, and every UART connect to a RS485 chip and pull out A/B pin to external circuit. I connect UART1 RS485's A to UART8' RS485's A, and UART1 RS485's B to UART8' RS485's B. I set UART1 RS485's DE/RE=1, and UART8 RS485's DE/RE=0. I try to send data from UART1 to UART8, and I observe there is waveform in LPUART1_TX and LPUART8_RX in scope. That means, data has been sent from UART1 to UART8. But there is no rx interrupt in UART8, so the uart8's rx procedure can't run. During Debug, I can see the UART8 CTRL's RE=1/RIE=1 , but STAT's RDRF=0. I switch to UART8 sending and UART1's receiving, but the phenomeno is same. Could you help to check where is the problem? I attach the project. Thanks. Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) S32K344's rx interrupt can't work Hi Julián, Thank you for your reply. Yes, other interrups, such CAN, PIT is OK. Now I comments out all code in callback(that means tx and rx interrupt won't run the rx function in callback), but the code still can't run out of the check receiver status loop and can't get RDRF flag set(see red rectangle in interrupt.png). I don't use Rx FIFO, so, when data is received, the RDRF ought to become 1. But it dosen't. I send char 'R'(ASCII=0x01010010) and 'Q'(ASCII=0x01010001) from UART1 and measure the the UART1's TXD and UART8's RXD, it seems the waveform is correct. Is there any other possible reason to cause this issue? I also attach my SDK version. Re: S32K344's rx interrupt can't work Hi @Jimmybai, I imagine other interrupts work with no issue? (PIT, CAN, etc). Are you pinning breakpoints inside the callback to confirm if interrupt is firing?  From your code, I can see you are using both Lpuart_Uart_Ip_SyncReceive & Lpuart_Uart_Ip_AsyncReceive. SyncReceive uses polling, while AsyncReceive function enables reception and immediately leaves function. The application has to get the receive status to know when the receive is complete. After receiving is completed (defined number of bytes received), you need to call AsyncReceive again to start new reception. However, inside the callback, instead of calling AsyncReceive again, use the Lpuart_Uart_Ip_SyncReceive function for blocking reception. You never re-arm UART's reception.  There are some examples in our community you can refer to:  [RTD600 IP] S32K312-EVB Lpuart interrupt echo - NXP Community Example S32K344 LPUART RX/TX ISR FreeRTOS S32DS36 RTD600 - NXP Community Best regards, Julián Re: S32K344's rx interrupt can't work I wonder why my attachment is missing. re-attach it. S32K344's LPUART rx interrupt can't work Hi Julián,       I found the root cause. In below code, the Async receive code should be put before the Async send code. Becasue uart transmit is very fast, when send complete, the data have sent to receiver bus. At this time, you start receiver recv procedure, the data signal has disappeared in bus. So, we need enable receiver, when data signal come, the receiver can work. What we only need to do is to check receiver's receive interrupt signal. Thank you for helping analysis my code. Jimmybai_0-1781766992780.png
記事全体を表示
如何使用 S32K 的编译脚本? 各位恩智浦专家:   目前,我使用 IDE("S32 Design Studio for S32 Platform 3.4" )手动编译项目。 我能否通过脚本在项目中执行清理、刷新、构建和切换链接文件等操作? 这样一来,我就能实现部分自动编译,而无需打开 IDE 进行操作。 Re: How to use the compilation script for S32K? 谢谢你,petervlna!  我试试看,非常感谢! Re: How to use the compilation script for S32K? 你好 是的,你可以在不打开 IDE GUI 的情况下自动版本 S32 Design Studio。S32 设计工作室基于 Eclipse,你可以利用 Eclipse 无头编译机制进行命令行编译。 您可以在以下链接中找到教程: https://community.nxp.com/t5/S32-Design-Studio-Knowledge-Base/S32DS-list-of-HOWTOs/ta-p/1113475 对于命令行界面: https://community.nxp.com/t5/S32-Design-Studio-Knowledge-Base/HOWTO-S32-Design-Studio-Command-Line-Interface/ta-p/1112410 顺祝商祺! Peter
記事全体を表示
Dentolyn: Reviews, Benefits, and More Dentolyn is a modern oral care solution designed to support healthy teeth and gums through effective daily dental hygiene. Regular use of Dentolyn can contribute to stronger teeth, healthier gums, and improved overall oral health. With a focus on quality and effectiveness, Dentolyn promotes better oral hygiene habits while helping prevent common dental problems. ->>> https://bit.ly/3S9NgdT  
記事全体を表示
S32K344 Mini EVB上でlwIP FreeRTOSを使用したPing応答なしの例 私は、 S32K344 Mini EVBボード上でのイーサネット通信の参考として、 lwip_FreeRTOS_s32k344のサンプルを使用しています。 しかし、PCからボードへのpingに応答がありません。当社では、RTDバージョン5.0.0とNXP TCPIPスタックバージョン2.0.0を使用しています。 この時点で、この例を正しく動作させるために、PHY構成、クロック設定、ピン構成、IPアドレス設定、またはS32K344 Mini EVBに必要な特定の変更など、追加の構成が必要かどうかを把握したいと考えています。 不足しているものや設定ミスがある可能性のある箇所を特定するのにご協力いただけますでしょうか? Re: Ping Not Responding Using lwIP FreeRTOS Example on S32K344 Mini EVB こんにちは、@brunoGT88 さん。 標準のlwipサンプルは、S32K344 mini EVBでは動作しません。必要な変更は、ピン配置とクロック構成のみです。 Julin_AragnM_0-1781036970999.png 私の同僚の一人が提供した例を参照してください:例 S32K344 EMAC lwIP FreeRTOS miniEVB S32DS 3.6.1 RTD 6.0.0 。 コミュニティのサンプルでは、ピンとクロックを更新し、IPアドレスを192.168.0.209に変更し、サンプルが実行されていることを示すためにLEDスタックを追加します。 また、UDP_ECHOを有効にし、TCP/IPスタックのシャットダウンのタイムアウトをスキップします。 よろしくお願いします、 ジュリアン
記事全体を表示
Mifare Classic clone to Handy Hello and good day. At our gym, we use a wristband equipped with a Mifare Classic EV1 (MF1S50) chip. Is there a way to clone this chip and store it on a mobile phone, so that one can simply use the phone's NFC sensor instead? In other words, could I use the phone itself to log in, rather than the wristband? If so, how can I do this? I have already tried using two apps: NXP TagInfo and NXP TagWriter. Unfortunately, I wasn't able to get it to work using those tools—or perhaps I made a mistake somewhere along the way. Could you please help me? Best regards from Geraberg (Thuringia). Touch Sensors Re: Mifare Classic clone to Handy Hello @digamcrown  Unfortunately, it is not possible to clone a MIFARE Classic EV1 card and use it directly on a smartphone NFC interface. The main reasons are: Smartphones do not support MIFARE Classic card emulation (Crypto-1 is not supported in NFC controllers) Card UID cannot be replicated on mobile devices Mobile operating systems (Android/iOS) restrict low-level NFC access for security reasons Therefore, tools such as NXP TagInfo or TagWriter cannot achieve this functionality. Re: Mifare Classic clone to Handy Hello, Hello, You should contact the supplier of the gym’s system and ask if they offer a solution to create a digital badge on your smartphone, since MIFARE Classic cards have secure memory. You can check out MIFARE 2GO https://www.nxp.com/products/security-and-authentication/secure-service-2go-platform/mifare-2go:MIFARE2GO
記事全体を表示
Vision AI/ML with i.MX RT700 The i.MX RT700 microcontroller family includes an eIQ Neutron N3-64 NPU for accelerating neural network models. The i.MX RT700 EVK can be combined with a camera and LCD screen to showcase running TinyML vision models on a microcontroller. It's recommended to also go through the basic i.MX RT700 NPU Lab to learn more about eIQ enablement on RT700. The rest of this post will cover using vision models with camera+LCD on i.MX RT700.  i.MX RT700 Camera Hardware Setup: The following hardware is used: i.MX RT700 EVK RK055HDMIPI4MA0 LCD panel Camera Options: USB Camera with USB A to micro-B converter OV7670 parallel camera (with optional wide-angle lens) The USB camera should be attached to the i.MX RT700 EVK on USB OTG port J40. anthony_huereca_0-1777502759149.png The parallel camera interface is available on J53 and uses FlexIO with eDMA to read in the camera data. AN14836 describes the details. Note that the links in that app note for the demo software do not work but the demo code is in the process of being posted on NXP’s Application Code Hub.  When inserting the parallel camera align it to the left most side, as shown in the image below: anthony_huereca_0-1782156759078.png anthony_huereca_0-1782154106527.png Directions for attaching the LCD panel to the J52 connector on the underside of the i.MX RT700 EVK can be found on this Community post.  Note that there are multiple names used for the LCD panel and all these part numbers refer to the exact same panel: RK055HDMIPI4MA0 RK055MHD091 RK055MHD091-CTG RK055MHD091A0-CTG i.MX RT700 Vision ML Examples: There are two vision AI/ML examples for i.MX RT700 available today: Object Detection (part of AN14718) Hand Gesture Recognition Both of these examples use a USB camera.  i.MX RT700 Vision MPP Examples:  The Media Processing Pipeline (MPP) interference examples in i.MX RT700 MCUXpresso SDK 26.06 and later support both parallel and USB camera interfaces. These SDK examples are only available for command line GCC and VS Code MCUXpresso SDK layouts. They are not available for MCUXpresso IDE, IAR, or Keil.  anthony_huereca_0-1782155634010.png A parallel camera is used by default in the RT700 MPP projects. A USB camera can be enabled by adding a USE_USB_CAMERA declaration in the project's CMakeLists.txt file by adding the following macro: mcux_add_macro(     CC "-DUSE_USB_CAMERA"     CX "-DUSE_USB_CAMERA" ) However it's important to note that the camera_usb_final_fr_app_view project is setup to use USB camera by default, but it only works with a very specific HM2131 camera. All other MPP demos can work with most generic USB cameras. 
記事全体を表示
SBCFS26 FCCU 外部上拉配置所需说明 你好,恩智浦、 我们在电机控制器项目中使用了 MFS2613AMDA6 集成电路。 我们已经阅读了产品数据手册,使用双稳定的协议配置(默认)实现了 FCCU。 我们发现图 54。在这一点上,我们理解外部上拉/下拉并不是生物稳定协议配置所必需的。 正确吗? Sivahari_0-1776416066658.png 但在引用 FCCU12_FLT_POL = 1 的配置时却出现了矛盾。 Sivahari_2-1776416964331.png 如果故障条件为 FCCU1 = 1 和 FCCU2 = 0 电平,那么在 FCCU 1 连接上拉电阻器和在 FCCU2 连接下拉电阻器的目的是什么? 该上拉/下拉是针对无故障条件还是故障条件? 感谢您的支持。 Re: Clarifications required for SBCFS26 FCCU External pullup configuration 你好,西瓦、 5.1 kΩ 和 22 kΩ 电阻器是使用 FCCU 极性 1(FCCU12_FLT_POL = 1)时特别需要的外部电阻器。 FS26 的内部电阻很弱(FCCU1:~800 kΩ 下拉;FCCU2:~200 kΩ 上拉)。系统设计必须确保 MCU 引脚进入高 Z(三态)状态时,SBC 会检测到故障状态。 极性 0(正常 = H/L):如果 MCU 进入高电平 Z,内部电阻会将引脚拉到 L/H,FS26 会将其正确理解为故障。无需外接电阻器。 极性 1(正常 = L/H):如果 MCU 进入高电平 Z,内部电阻会将引脚拉到 L/H,FS26 将其理解为 "正常"。这是不安全的。 因此,对于极性 1,必须添加更强的外部电阻器,以覆盖内部电阻器,并在高 Z 期间强制进入故障状态: FCCU1:5.1 kΩ 外部上拉至VDDIO。 FCCU2:22 kΩ 外部下拉至 GND。 BRs, Tomas
記事全体を表示
如何使用安全元件 SE05x:在树莓派上设置即插即用中间件(日文博客) 介绍 许多人对安全元件感兴趣,但或许他们觉得这些元件“使用起来有些困难”。 NXP 的安全元件SE05x附带名为 Plug and Trust Middleware 的中间件。该中间件包含一个专用于 SE05x 的 API,以及 OpenSSL 和 mbed-TLS 等常用库的插件。因此,使用这些库的应用程序(例如 Eclipse Mosquitto ™等)几乎无需修改即可利用安全元件的功能。 shinjihontanib_1-1770695212552.png 该中间件的参考操作系统环境支持“Windows PC”和“各种 NXP MCU/MPU(Linux)”,但也支持现成的“Raspberry Pi”。 Windows 和 Linux 环境下都提供了命令行工具,使得验证各种操作变得容易。 本文介绍了如何在树莓派上设置 Plug and Trust 中间件。 本文撰写过程中使用的硬件、软件及其版本 硬件: 树莓派 3 B+ 型 EdgeLock ® SE050 开发套件( OM-SE050ARD-E ) 五根跳线(公对母或母对母)或一个 Arduino 转 Raspberry Pi 适配器板( OM-SE050RPI ) 软件: 树莓派操作系统 12 64 位 SE-PLUG-TRUST-MW_04.07.01 *访问文档的方法如下所述。 下载 Plug and Trust 中间件软件包。 首先,请从这里下载Plug and Trust 中间件软件包 (SE05x-PLUG-TRUST-MW) 。 * 下载需要 MyNXP账户 。注册免费且简单。 Keita_Nagashima_0-1770697997899.png * 解压缩后,您可以从 simw-top/doc/index.html 访问文档(以下,“文档”指的是此 HTML 文件)。 有关将 Plug and Trust 中间件与 Raspberry Pi 一起使用的信息,另请参阅AN12570 。 硬件准备 使用跳线连接 Raspberry Pi 和 OM-SE050ARD-E(或 OM-SE050RPI)。 对于使用跳线进行的连接,请参阅文档中的第 4.5 节。请参考下图了解树莓派的组装方法。 shinjihontanib_0-1755587854058.png 然而,截至撰写本文时,由于树莓派操作系统的 GPIO 控制规范发生了变化,按照上述方式连接的 GPIO22 无法正常工作。 虽然原因和解决方法已经明确,但目前本文将介绍如何通过更改跳线设置来禁用 GPIO22 控制。 要不使用 GPIO22 进行操作,请更改 OM-SE050ARD-E 上的以下两个跳线设置。 J13:1-2 J14:1-2 shinjihontanib_0-1755588509035.png shinjihontanib_0-1770373763911.png 将 J13 设置为 1-2 可将 SE050 的 ENA 连接到 GND,将 J14 设置为 1-2 可将 SE050 的 VCC 连接到 VIN。 ENA 是 DPD(深度掉电)模式的控制引脚。使用 DPD 模式时,连接 VOUT 和 VCC,并使用 ENA 通过 VOUT 控制电源,以降低电流消耗。 由于本次 ENA 控制功能出现故障,我们将暂时禁用 DPD 设置。 如果不使用 DPD,请保持 VOUT 开路并将 VCC 连接到 VIN,以确保持续供电。 虽然从评估的角度来看,将 ENA 连接到 GND 似乎是可以接受的,但数据手册建议,如果 ENA 未使用,则将其连接到 VCC。 施工前准备 使用 Raspberry Pi Imager 刷写 Raspberry Pi OS 并启动后,打开终端。 启用 I2C 如果运行以下命令后未显示 i2c-1,则表示 I2C 未启用,请启用它。 ls /sys/bus/i2c/devices 执行以下命令后,转到接口选项 -> I2C 并启用 I2C。 sudo raspi-config - 安装其他构建工具 执行以下操作: sudo apt-get install cmake cmake-curses-gui cmake-gui libssl-dev libsystemd-dev 中间件设置和运行示例应用程序 将下载的 Plug and Trust 中间件软件包复制到您的 Raspberry Pi 中。 导航到您复制 Plug and Trust 中间件的目录,然后执行以下操作: cd simw-top python scripts/create_cmake_projects.py cd ../simw-top_build/raspberrypi_native_se050_t1oi2c cmake --build . sudo make install sudo ldconfig /usr/local/lib 构建好的应用程序位于 simw-top_build/raspbian_native_se050_t1oi2c/bin 中。 由于在前面描述的安装过程中,文件被复制到了 /usr/local/bin/ 目录,因此您可以运行该程序而无需指定该位置的文件。 运行 se05x_GetInfo 以验证操作,将显示设备信息。 shinji@raspberrypi:~/SE-PLUG-TRUST-MW_04.07.01/simw-top_build/raspbian_native_se050_t1oi2c $ se05x_GetInfo Failed to export Enable pin : Invalid argument Failed to open GPIO value file : No such file or directory Failed to unexport GPIO : Invalid argument App :INFO :Running se05x_GetInfo App :INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments. App :INFO :PlugAndTrust_v04.07.01_20250519 sss :INFO :atr (Len=35) 01 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 00 01 00 00 00 00 64 13 88 0A 00 65 53 45 30 35 31 00 00 00 App :WARN :No SemsLite Applet Available. App :INFO :Running se05x_GetInfo App :INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments. sss :INFO :atr (Len=35) 01 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 00 01 00 00 00 00 64 13 88 0A 00 65 53 45 30 35 31 00 00 00 sss :WARN :Communication channel is Plain. sss :WARN :!!!Not recommended for production use.!!! App :WARN :##################################################### App :INFO :uid (Len=18) 04 00 50 01 6A 17 2A E0 43 2E 7C 04 27 6A D2 9C 1D 90 App :WARN :##################################################### App :INFO :Applet Major = 7 App :INFO :Applet Minor = 2 App :INFO :Applet patch = 0 App :INFO :AppletConfig = 3F9F App :INFO :With ECDSA_ECDH_ECDHE App :INFO :With EDDSA App :INFO :With DH_MONT App :INFO :With HMAC App :INFO :WithOut RSA_PLAIN App :INFO :WithOut RSA_CRT App :INFO :With AES App :INFO :With DES App :INFO :With PBKDF App :INFO :With TLS App :INFO :With MIFARE App :INFO :With I2CM App :INFO :Internal = FFFF App :WARN :##################################################### App :INFO :Tag value - proprietary data 0xFE = 0xFE App :INFO :Length of following data 0x45 = 0x45 App :INFO :Tag card identification data (Len=2) DF 28 App :INFO :Length of card identification data = 0x42 App :INFO :Tag configuration ID (Must be 0x01) = 0x01 App :INFO :Configuration ID (Len=12) 00 01 A9 21 89 0A 6F 56 4A 23 9C 41 App :INFO :OEF ID (Len=2) A9 21 App :INFO :Tag patch ID (Must be 0x02) = 0x02 App :INFO :Patch ID (Len=8) 00 00 00 00 00 00 00 01 App :INFO :Tag platform build ID1 (Must be 0x03) = 0x03 App :INFO :Platform build ID (Len=24) 4A 33 52 33 35 31 30 32 39 42 34 31 31 31 30 30 1A 08 FA 50 67 B5 F2 56 App :INFO :JCOP Platform ID = J3R351029B411100 App :INFO :Tag FIPS mode (Must be 0x05) = 0x05 App :INFO :FIPS mode var = 0x00 App :INFO :Tag pre-perso state (Must be 0x07) = 0x07 App :INFO :Bit mask of pre-perso state var = 0x00 App :INFO :Tag ROM ID (Must be 0x08) = 0x08 App :INFO :ROM ID (Len=8) 2E 5A D8 84 09 C9 BA DB App :INFO :Status Word (SW) (Len=2) 90 00 App :INFO :se05x_GetInfoPlainApplet Example Success !!!... App :WARN :##################################################### App :INFO :cplc_data.IC_fabricator (Len=2) 47 90 App :INFO :cplc_data.IC_type1 (Len=2) D3 21 App :INFO :cplc_data.Operating_system_identifier (Len=2) 47 00 App :INFO :cplc_data.Operating_system_release_date (Len=2) 00 00 App :INFO :cplc_data.Operating_system_release_level (Len=2) 00 00 App :INFO :cplc_data.IC_fabrication_date (Len=2) 41 50 App :INFO :cplc_data.IC_Serial_number (Len=4) 13 93 77 21 App :INFO :cplc_data.IC_Batch_identifier (Len=2) 05 57 App :INFO :cplc_data.IC_module_fabricator (Len=2) 00 00 App :INFO :cplc_data.IC_module_packaging_date (Len=2) 00 00 App :INFO :cplc_data.ICC_manufacturer (Len=2) 00 00 App :INFO :cplc_data.IC_embedding_date (Len=2) 00 00 App :INFO :cplc_data.IC_OS_initializer (Len=2) 07 27 App :INFO :cplc_data.IC_OS_initialization_date (Len=2) 6A 33 App :INFO :cplc_data.IC_OS_initialization_equipment (Len=4) 39 33 37 37 App :INFO :cplc_data.IC_personalizer (Len=2) 00 00 App :INFO :cplc_data.IC_personalization_date (Len=2) 00 00 App :INFO :cplc_data.IC_personalization_equipment_ID (Len=4) 00 00 00 00 App :INFO :cplc_data.SW (Len=2) 90 00 App :INFO :ex_sss Finished Failed to open GPIO value file : No such file or directory Failed to unexport GPIO : Invalid argument Failed to unexport GPIO : Invalid argument 如前所述,GPIO 控制存在问题,因此消息的开头和结尾将显示与 GPIO 相关的错误,但这不会影响操作。 如果您看到如下所示的读取 uid(唯一标识符)的部分,则说明它工作正常。由于每个设备的 uid 值都不同,因此应根据所使用的开发板读取不同的值。 App :INFO :uid (Len=18) 04 00 50 01 6A 17 2A E0 43 2E 7C 04 27 6A D2 9C 1D 90 还会显示以下消息,表明主机与 SE050 之间的通信保护(消息认证和加密)未启用。 在批量生产期间,我们强烈建议更改中间件构建设置以启用保护功能。 sss :WARN :Communication channel is Plain. sss :WARN :!!!Not recommended for production use.!!! 设置命令行工具 (ssscli) ssscli 是一个基于 Python 的命令行工具,用于控制 SE05X。 文件 9.3.1.3。我们将按照树莓派的说明书进行设置。 以下说明将在 simw-top/pycli 中创建一个虚拟环境,但您可以根据自己的喜好进行更改。 cd simw-top/pycli sudo apt-get install python3-pip python3-dev libffi-dev sudo apt install python3-virtualenv virtualenv venv source venv/bin/activate pip install -r requirements.txt cd src pip install --editable . 完成上述步骤后,尝试使用 ssscli 获取 uid。 (venv) shinji@raspberrypi:~/SE-PLUG-TRUST-MW_04.07.01/simw-top/pycli $ ssscli connect se05x t1oi2c none (venv) shinji@raspberrypi:~/SE-PLUG-TRUST-MW_04.07.01/simw-top/pycli $ ssscli se05x uid sss :INFO :atr (Len=35) 01 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 00 01 00 00 00 00 64 13 88 0A 00 65 53 45 30 35 31 00 00 00 sss :WARN :Communication channel is Plain. sss :WARN :!!!Not recommended for production use.!!! 040050016a172ae0432e7c04276ad29c1d90 Unique ID: 040050016a172ae0432e7c04276ad29c1d90 (venv) shinji@raspberrypi:~/SE-PLUG-TRUST-MW_04.07.01/simw-top/pycli $ ssscli disconnect 得到的 ID 与之前执行 se05x_GetInfo 时得到的 ID 相同,表明该函数运行正常。 至此,Plug and Trust 中间件的设置完成。 具体使用示例将在另一篇文章中介绍。 ========================= 我们目前无法 回复 此帖子“ 评论”部分留下的评论。 对于由此造成的不便,我们深表歉意,但 在进行咨询时, 请 参考“ NXP 技术问题 - 如何联系我们 ( 日语博客 ) ” 。 (如果您已经是 恩智浦的 分销商或 与 恩智浦 有合作关系 ,您可以直接咨询您的代表。) 许多人对安全元件感兴趣,但或许他们觉得这些元件“使用起来有些困难”。 NXP 的安全元件SE05x附带名为 Plug and Trust Middleware 的中间件。该中间件包含一个专用于 SE05x 的 API,以及适用于 OpenSSL 和 mbed-TLS 等常用库的插件。因此,使用这些库的应用程序(例如 Eclipse Mosquitto ™等)几乎无需修改即可利用安全元件的功能。 该中间件的参考操作系统环境支持 Windows PC 和各种 NXP MCU/MPU(Linux),但也支持现成的 Raspberry Pi。 Windows 和 Linux 环境下均有命令行工具可用,使得验证各种操作变得容易。 本文介绍了如何在树莓派上设置 Plug and Trust 中间件。 (操作时间:20分钟) 安全 技术聚焦 日本博客
記事全体を表示
Imx8xm IPC A53 cores I am trying to use the Rmesg lite library to send messages from A53 core 1 to A53 core 2. I will be using the MU in both cores to synchronize the core messaging. Is this feasable, and is there any example of this protocol on github? I am using the IMX8mm Som It has to be secure i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus Re: Imx8xm IPC A53 cores Hi @rheslar1  Please refer 3 Heterogeneous Multicore Framework in below guide. https://www.nxp.com/docs/en/user-guide/REALTIMEEDGEUG.pdf Best Regards, Zhiming
記事全体を表示
[不正行為] 投稿者: @RishavKaaraTech / 掲示板: TapLinx-SDK / 報告者: xdzgvh xdzgvh は、 @RishavKaaraTech が投稿した 「RFIDDiscover ツールを入手したが、その使い方はわからない」という 投稿を以下の理由で報告しました。 理由:裸体または性行為 詳細: ゼベータの購入方法 購入zebeta オンライン迅速配送 または、オンラインでゼベタを購入できます zebetaをオンラインで購入 ゼベタ錠を速達便で購入 zebeta holland order ゼベタジェネリック錠剤ゼベタ割引 ベストゼベタ錠の価格(医薬品) または、オンラインでゼベータを購入できます 最も安いゼベタ5mg錠を一晩服用 格安ゼベタ送料無料処方箋 ユタゼベタを安く手に入れよう ゼベタオランダの注文 安いzebeta 送料無料 rx ベストゼベタを購入できるサイト 最安値のゼベタ5mg錠を翌日配送 高血圧処方箋なしでゼベタをオンラインで購入 高血圧治療薬ゼベタを処方箋なしでオンラインで購入 注文ビソプロロール ゼベタ コロラド または、zebetaをオンラインで購入できます 購入ゼベタ ミシシッピ 注文ゼベタ タラ 土曜日 ゼベタ ゼベタタブレット優先配送購入 購入zebetaオンラインCOD現金 購入ゼベタ 最安値 レキシントン 購入zebetaオンライン男性向け 購入zebetaオンラインCOD現金 zebetaオンラインストア ジェネリックゼベタACH錠 注文zebeta mastercard fast 注文ゼベタ タラ 土曜日 ゼベタ ゼベタの迅速配送購入 whereゼベタは買えますか? ゼベータをオンラインで購入 価格ゼベタバルクアルバカーキ 購入リンマスのゼベタ zebetaの注文方法 価格ゼベタバルクアルバカーキ オンラインでゼベタダイナースクラブを購入する zebetaの購入方法 投稿リンク: https://community.nxp.com/t5/TapLinx-SDK-TagWriter-and/RFIDDiscover-tool-acquired-but-how-to-use-it/mp/2164324#M205 投稿者: @RishavKaaraTech |作成者に電子メールを送信する 報告者: xdzgvh |メールによる報告 報告された投稿には3件の返信があります。
記事全体を表示
i.MX 93 EVK debug console relocation [Continued] Introduction. This is an update to the previous article i.MX 93/91 debug console relocation with Yocto Project. It was initiated because a customer wanted to replicate the mentioned document in newer BSPs. i.MX93EVK uses LPUART1 as the debug console, this article will contribute to relocate debug console to LPUART2, which is connected to USB-to-UART FTDI bridge, so it's very easy to confirm your changes. Key differences from the past article are we don't explore porting tools but provide specific instructions and code, you will follow this article to confirm changes made on your own or replicate this process, if you want to explore BSP customizing tools and process, review the other article. BSP version is LF-6.12.49 Yocto Walnascar. HW setup simplifies too. 1. Hardware Setup. i.MX93EVK featuring REV A1. Connect USB Type-C PD power source to J301. Connect USB type-C cable to USB debug J1401. Connect USB type-C cable to USB1 J401. [Optional] SD card for booting, eMMC is the other option. 2. Yocto Project setup for recipes development. Start by creating a fresh build. $ cd ~ $ mkdir Yocto-BSP $ cd Yocto-BSP $ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-walnascar -m imx-6.12.49-2.2.0.xml $ repo sync You can build any image, custom projects may need multiple builds for development, then imx-image-core is a great option since it's light and compiling it requires less time. $ MACHINE=imx93-11x11-lpddr4x-evk DISTRO=fsl-imx-xwayland source imx-setup-release.sh -b i.MX93 $ bitbake imx-image-core OE Connectivity Sanity Checker can cause issues if not configured, you can skip host connectivity tests. Patches provided in this document are for testing purposes, they lack upstreaming status to Yocto Project as they simulate an early starter porting process, you can disable QA errors that interrupt bitbaking and turn them to warnings. ERROR: do_patch: QA Issue: Missing Upstream-Status in patch Please add according to https://docs.yoctoproject.org/contributor-guide/ ERROR: do_patch: Fatal QA errors were found, failing task. ERROR: Task failed with exit code '1' Make the following modification. $ nano conf/local.conf CONNECTIVITY_CHECK_URIS = "" ERROR_QA:remove = "patch-status" WARN_QA:append = " patch-status" 3. Add debug-console-relocation layer to Yocto environment build. As said at the introduction, you are provided with the meta-layer zipped so you can just move it to your Yocto build directory. # Feel free to change this path to your download path $ cd ~ $ unzip meta-imx-console.zip $ cp -r meta-imx-console ~/Yocto-BSP/sources $ cd ~/Yocto-BSP/i.MX93 $ bitbake-layers add-layer meta-imx-console $ bitbake-layers show-layers You should be able to see the following output layer path priority ======================================================================================================== core /home/joseph/Yocto-Console/sources/poky/meta 5 yocto /home/joseph/Yocto-Console/sources/poky/meta-poky 5 openembedded-layer /home/joseph/Yocto-Console/sources/meta-openembedded/meta-oe 5 multimedia-layer /home/joseph/Yocto-Console/sources/meta-openembedded/meta-multimedia 5 meta-python /home/joseph/Yocto-Console/sources/meta-openembedded/meta-python 5 freescale-layer /home/joseph/Yocto-Console/sources/meta-freescale 5 freescale-3rdparty /home/joseph/Yocto-Console/sources/meta-freescale-3rdparty 4 freescale-distro /home/joseph/Yocto-Console/sources/meta-freescale-distro 4 fsl-bsp-release /home/joseph/Yocto-Console/sources/meta-imx/meta-imx-bsp 8 fsl-sdk-release /home/joseph/Yocto-Console/sources/meta-imx/meta-imx-sdk 8 imx-machine-learning /home/joseph/Yocto-Console/sources/meta-imx/meta-imx-ml 9 v2x-imx /home/joseph/Yocto-Console/sources/meta-imx/meta-imx-v2x 9 imx-demo /home/joseph/Yocto-Console/sources/meta-nxp-demo-experience 7 nxp-matter-baseline /home/joseph/Yocto-Console/sources/meta-nxp-connectivity/meta-nxp-matter-baseline 7 nxp-openthread /home/joseph/Yocto-Console/sources/meta-nxp-connectivity/meta-nxp-openthread 7 meta-arm /home/joseph/Yocto-Console/sources/meta-arm/meta-arm 5 arm-toolchain /home/joseph/Yocto-Console/sources/meta-arm/meta-arm-toolchain 5 clang-layer /home/joseph/Yocto-Console/sources/meta-clang 7 gnome-layer /home/joseph/Yocto-Console/sources/meta-openembedded/meta-gnome 5 networking-layer /home/joseph/Yocto-Console/sources/meta-openembedded/meta-networking 5 filesystems-layer /home/joseph/Yocto-Console/sources/meta-openembedded/meta-filesystems 5 perl-layer /home/joseph/Yocto-Console/sources/meta-openembedded/meta-perl 5 qt6-layer /home/joseph/Yocto-Console/sources/meta-qt6 5 parsec-layer /home/joseph/Yocto-Console/sources/meta-security/meta-parsec 5 tpm-layer /home/joseph/Yocto-Console/sources/meta-security/meta-tpm 6 virtualization-layer /home/joseph/Yocto-Console/sources/meta-virtualization 8 meta-freescale-ml /home/joseph/Yocto-Console/sources/meta-freescale-ml 8 meta-imx-console /home/joseph/Yocto-Console/sources/meta-imx-console 9 * Remember to run all steps within the Yocto session, otherwise source your setup again. * $ cd Yocto-BSP $ source imx-setup-release.sh -b i.MX93 4. Rebuild the core image. Perform bitbake command again, it unpacks, patches, builds, deploys the source code and creates the root filesystem again with only running a few tasks. NOTE: Tasks Summary: Attempted 11106 tasks of which 10941 didn't need to be rerun and all succeeded.  You can find the images for flashing under the build folder. $ cd tmp/deploy/images/imx93-11x11-lpddr4x-evk/ $ zstd -d imx-image-core-imx93-11x11-lpddr4x-evk.rootfs-*.wic.zst imx-image-core-imx93-11x11-lpddr4x-evk.rootfs-20260207040424.wic.zst: 2596424704 bytes Flash the imx-boot firmware and imx-image-core root filesystem. $ uuu -b emmc_all imx-boot-imx93-11x11-lpddr4x-evk-sd.bin-flash_singleboot imx-image-core-imx93-11x11-lpddr4x-evk.rootfs-*.wic Conclusions. You can open the consoles for Cortex-A and Cortex-M to experiment booting a normal image and the relocated LPUART image. * This new image would require Cortex-M demos to change debug console to LPUART1. * image.png  Debug console outputs through LPUART2 and prints a custom message. image (1).png  Normal image debug console. Remember that the patches below are provided as is, they were developed under LF-6.12.49. When using them you are subject to the record of acceptance and legal compliance from EULA agreement in your Yocto build. If applying them under other circumstances (another BSP repository, another Yocto version, etc.) or the same circumstances, and they fail, please create a support ticket to help you. Extras. If you compare the differences at patch-level, you can see that only a file was relocated in U-boot, the file containing the environment variables was renamed and the syntax changes a little. The procedure performed was the same as the last article, if you are making your own layer, remember to modify conf/layer.conf with: BBFILE_PRIORITY_meta-imx-console = "9" #LAYERDEPENDS_meta-imx-console = "core" i.MX 93 EVK LF-6.12.49 patches
記事全体を表示
i.MX 93 No max frequency info for FlexSPI clocking mode 0x2 in datasheet Hello, I'm planning a FlexSPI FPGA interface application for i.MX 93 and reviewing possible throughput. I'm using a module that provides SD3 for QSPI and SD1 for eMMC. Because DQS line is already occupied with eMMC interface, I'm restricted to clocking mode FlexSPIn_MCR0[RXCLKSRC] = 0x0 and 0x2 if I understand right. Although reference manual suggests "medium" speed similar to mode 0x1, there's no max frequency specification for mode 0x2 in datasheet. Any reason why mode 0x2 has been omitted in datasheet? Can we expect speed similar to mode 0x1? I presume mode 0x1 can't be used if DQS pin is muxed to other usage? Best regards Frank   Re: i.MX 93 No max frequency info for FlexSPI clocking mode 0x2 in datasheet Hello @FvM  I hope you are doing very well. You can find more information related to the FlexSPI interface in the table 195 of the Reference Manual. Manuel_Salas_0-1770662918630.png Manuel_Salas_1-1770663139258.png Best regards, Salas. Re: i.MX 93 No max frequency info for FlexSPI clocking mode 0x2 in datasheet Hello @FvM  I asked internally. Unfortunately, the RXCLKsrc=2 option was remove from the datasheet because characterization of the device revealed signal integrity issues on the loopback signal such that the behavior could not be guaranteed. The mention of the option in the RM will be removed. Best regards, Salas. Re: i.MX 93 No max frequency info for FlexSPI clocking mode 0x2 in datasheet Hello @Manuel_Salas, thanks for answering. I'm aware of FlexSPI reference manual section. My problem is that datasheet paragraph 4.12.9 FlexSPI timing parameters only specifies modes 0, 1 and 3 and doesn't even mention mode 2.  Specifically I'm asking for mode 2 (SCK output and loopback from SCK pad) DDR timing parameters in nominal mode. Can we assume they are equal to mode 1?  I'm unable to use mode 1 or 3 because SD1_STROBE pin is occupied by eMMC interface in my application. Nevertheless I'm trying to achieve maximal throughput with QSPI FPGA interface. Regards Frank Re: i.MX 93 No max frequency info for FlexSPI clocking mode 0x2 in datasheet Hello @Manuel_Salas, many thanks for communicating the RXCLKsrc=2 issue openly. I understand our application is restricted to 66 MHz SDR/33 MHz DDR clock speed then, because it can't use DQS pin. Best regards Frank
記事全体を表示
恩智浦接口产品 - 概览页面 - (日语博客) 在使用微控制器和处理器进行系统开发时,必须决定集成电路、组件和电路板之间“使用哪种通信方法以及如何连接”。功能性、稳定性、可调试性和未来扩展性都是至关重要的考虑因素。 根据应用的不同,接口技术正在不断多样化和变得更加复杂,从集成电路之间的通信(如 I²C/I3C/SPI)到汽车和工业应用必不可少的现场总线(如 CAN),以及电压电平转换和 USB Type-C。 本页面提供有关恩智浦半导体接口相关技术和产品的信息。 “理解基础知识 → 付诸实践 → 解读其行为” 这是我系统地整理日语技术文章的方法。 本资源不仅对通信领域的初学者有帮助,也对面临设计和调试难题(例如“为什么它不工作?”或“这个波形正确吗?”)的工程师有所帮助。请根据您的目的选择感兴趣的类别。 <目的別ガイド> 目的 类别 我想了解串行通信的工作原理。 串行通信:I²C / I3C / SPI(板对板和IC对IC通信) 我想学习CAN通信。 CAN(汽车和工业通信) 我们希望通过扩展公交网络、安装交换机和转换电压来管理公交交通。 电压转换和信号控制(公交交通管理) 我正在寻找诸如实时时钟 (RTC)、温度传感器、GPIO 扩展器和 LED/LCD 驱动器之类的外围集成电路。 外围设备(I²C / I3C / SPI 连接 IC) 我想考虑使用USB接口。 USB相关产品(USB Type-C等) 串行通信:I²C / I3C / SPI(板对板和IC对IC通信) ■基础与说明部分 I²C 总线概述(日本博客) I3C总线概述(日文博客) 【您现在需要了解的内容】下一代接口“I3C”的基础知识(日语研讨会视频) SPI总线概述(日文博客) ■实践部分 I3C 操作示例代码:如何运行“i3c-temperature-sensor”(日文博客) 使用恩智浦MCX微控制器和SDK进行基本SPI通信:两个连接单元的实际设备测试(日文博客) NXP MCX 微控制器和 SDK 的基本 SPI 通信:SPI 的四种模式和实际信号验证(日语博客) ■设计和调试 I²C硬件调试(日语博客) I²C、I3C、SPI 产品选型指南 CAN(汽车和工业通信) CAN收发器 ■基础与说明部分 CAN总线/协议概述及特性(日语博客) 对恩智浦半导体(NXP)汽车CAN/LIN收发器产品 (NEXTY电子公司) 特性的详尽解释 NXP CAN 收发器产品配备信号增强 (SIC) 技术说明(NEXTY 电子公司) ■实践部分 我尝试使用恩智浦半导体的MCX微控制器和SDK运行CAN环回(日本博客) (一块微控制器板就足够了) 使用恩智浦MCX微控制器进行基本CAN通信:两台连接单元的实际设备测试(日文博客) (需要2块微控制器板) 电压转换和信号控制(公交交通管理) 电压电平转换器(电平转换器) [通用型,兼容I²C、SPI、I3C] ■基础与说明部分 如何转换数字信号的电压?(日语博客) ■实践部分 我们发布了一个名为“让我们来试用电压电平转换器评估板:NTS0304EUK-ARD”的 YouTube 视频(日语博客)。 I²C/I3C总线缓冲器 I²C/I3C 多路复用器/开关 外围设备(I²C / I3C / SPI 连接 IC) GPIO扩展器[兼容I²C、SPI总线] LED驱动器[兼容I²C、SPI总线] 恩智浦半导体(NXP)面向汽车应用的LED驱动器简介(Nexty Electronics Corporation) LCD驱动器[兼容I²C、SPI总线] 实时时钟 (RTC) [I²C、SPI 总线兼容] 什么是实时时钟(RTC)芯片?(日文博客) 温度传感器[兼容 I²C、I3C 总线] I3C 操作示例代码:如何运行“i3c-temperature-sensor”(日语博客) 串行协议桥 [I²C→UART,SPI→UART,SPI→I²C,I²C→SPI,UART→I²C] 协议桥接器简介及I²C转SPI转换操作示例(YouTube视频) USB相关产品(USB Type-C等) 恩智浦半导体:USB Type-C 解决方案(Macnica 公司) USB PD-PHY/电源传输物理层 CC逻辑控制器(USB Type-C) USB重驱动多路复用器 USB Type-C 端子保护(过压保护、防腐蚀、防潮检测) 用于评估恩智浦接口产品的扩展板(兼容Arduino引脚) 接口产品包括Arduino ®扩展板解决方案,可轻松与各种微控制器板配合使用进行评估。这些扩展板还配有即用型示例代码,方便您轻松了解每款产品的特性。有关示例代码的可用性,请参阅此文档。 スクリーンショット 2026-02-09 13.04.40.png   如果您对界面相关的内容有任何改进要求或建议,请随时使用以下信息与我们联系。 NXP日本技术博客(日语)内容请求/改进调查——请填写表格 =========================​ 我们目前无法 回复 此帖子“ 评论”部分的评论。 对于由此造成的不便,我们深表歉意。如有任何疑问, 请 参考“ 如何就 技术问题 联系 NXP ( 日语 博客 ) ” 。 (如果您已经是 恩智浦的 分销商或 与 恩智浦 有业务往来 ,您可以直接联系负责人。 ) 本页概述了恩智浦的接口产品。 根据应用的不同,接口技术正在不断多样化和变得更加复杂,从 I²C/I3C/SPI 等 IC 间通信,到 CAN 等汽车和工业应用必不可少的现场总线,以及电压电平转换和 USB Type-C。 本页面提供有关恩智浦半导体接口相关技术和产品的信息。 “理解基础知识 → 付诸实践 → 解读其行为” 这是我系统地整理日语技术文章的方法。 本资源不仅对通信领域的初学者有帮助,也对面临设计和调试难题(例如“为什么它不工作?”或“这个波形正确吗?”)的工程师有所帮助。请根据您的目的选择感兴趣的类别。 界面 传感器 技术聚焦 日本博客
記事全体を表示
リポジトリからの例のインポートに失敗しました こんにちは、NXPチーム VS Codeを使ってサンプルをインポートすると、必ず「'west'ツールが見つかりません」というエラーが表示されます。どうすればいいでしょうか? VSCODE を使用して exsample をインポートすると、常に「'west' ツールが見つかりません」というエラーが発生します。どうすればいいですか? ありがとう ハリー LPC55xx Re: Import Example from Repository fail 我已近解决了 すでに解決しました。
記事全体を表示
imx95-19x19-evkボードでDebian LSDK2512を解凍する方法 imx95-19x19-evk ボードのサポートを有効にするには、次の 2 つの方法があります。   1. Yocto リリースから flash.bin を直接置き換えます。 1)。Debian LSDK2512でサポートされているimx95-15x15-evkボード上のdepoly LSDK2512 A: $ flex-installer -i pf -d /dev/sdX -F B: $ flex-installer -i auto -m imx95evk -d /dev/sdX   2)。Yocto リリースから imx95-19x19-evk ボード用のビルド済み flash.bin をダウンロードします。 A: ダウンロード: https://www.nxp.com/webapp/sps/download/license.jsp?colCode=L6.12.20-2.0.0_MX95&appType=file1&DOWNLOAD_ID=null B:ダウンロードしたファイルを解凍して、flash.binファイルを取得します:imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_all   3)。flash.binを上書きする $ sudo umount /dev/sdX; sudo dd if=imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_allof=/dev/sdX bs=1024 シーク=32   4)。用意したSDカードをボードに挿入し、電源を入れます。U-Boot プロンプトに入ったら、ブート コマンドを設定します。 => setenv bootcmd "setenv bootargs 'root=/dev/mmcblk1p3 rw rootwait console=ttyLP0,115200 earlycon';ext2load mmc 1:1 0x90400000 Image;ext2load mmc 1:1 0x93000000 imx95-19x19-evk.dtb;booti0x90400000 - 0x93000000"; 保存環境 => リセット   Debian システムが自動的に起動します。   2. FlexBuild を使用して BSP イメージをビルドします。 1) Flexbuild のソース コードを複製し、添付されているパッチを適用します。 2). bsp とブートイメージをビルドします。 $ bld bsp -m imx95evk $ bld ブート -m imx95evk または、次の場所からビルド済みのイメージをダウンロードしてください: http://sun.ap.freescale.net/images/debian/lsdk2512/firmware_imx95evk_19x19_sdboot.img 3). イメージをインストールします。 $ ./flex-installer -f firmware_imx95evk_sdboot.img -d /dev/sdX -m imx95evk -b boot_IMX_arm64_lts_6.12.20.tar.zst -r rootfs_lsdk2512_debian_imx95evk.tar.zst 4)。用意したSDカードをボードに挿入し、電源を入れます。U-Boot プロンプトに入ったら、次のコマンドを実行してボードを起動します。 u-boot=>ブートフロースキャン -lb
記事全体を表示
i.MX 93 プロセッサ: セキュアブートの実 インストール方法 - 実践 (日本语ブログ) 前の記事はi.MX 93を例にセキュアブートの士组みについて解説を行いました。 (前章については前章を、次章をご参照ください。) 注: i.MX 93 プロセッサ: セキュアブートの署名と認定公式グループみを解説 (日本語ブログ) 今回は、実记にセキュアブートを実装するためのハンズオンフォームをご紹介します。 目次 i.MX 93 セキュアブートハンズオン 1. 実践的な環境 2. ホストPCのセットアップ(Linux) 3. コード署名ツールのダウンロード 4. SRKの生成 5. gitのセットアップ 6. i.MX Linux BSPのダウンロード 7.meta-imx-frdmのダウンロード 8.meta-nxp-security-reference-designのダウンロード 9. ビルド環境のセットアップ 10. イメージのビルド 11. 途中でbitbakeが再び開かれる場合 12. サインをやりたい 13. RAMディスクの署名 14. ホストPCと目的の接続 15. UUUのインストール(Linux) 16. UUUのインストール(Windows) 17. コンソール(Linux) 18. コンソール(Windows) 19. Linux 起動テスト(1) 19.1.シリアルダウンロードとLinuxの起動 19.2.SDまたはeMMCでLinux起動 20. SRKハッシュをヒューズに书き込み 21. Linux 起動テスト(2) 22. OEM が終了して移行 23. Linux 起動テスト(3) 24. 参考文献 i.MX 93 セキュアブートハンズオン¶ i.MX 93 プロセッサで Advanced High Assurance Boot (AHAB) を使用したセキュア ブートを実装するための手顺を紹介します。 1.実践的な環境 ホストPC: Yocto は、Linux PC および Windows PC に最適な環境 (WSL2、VMware、VirtualBox など) です。 OSはUbuntu 22.04です。 続への接続にはネットワークを使用する必要があります。 ストレージ容量は約100GBです。(FRDM-IMX93 core-image-minimalの場合) UUU、コンソールによる仕事はLinux PCでもWindows PCでも可能です。 UUUはLinux版、Windows版がそれぞれあります シリーズコンソールは、Linux PCではscreenやminicomなどを、Windows PCではTeraTermやPuTTYなどを使うのが一般です。 ターゲット: FRDM-IMX93 microSDまたはeMMCを使用します。 ホスト PC とターゲットには 2 本の USB ケーブルが接続されています。 i.MX Linux BSP 6.6.36-2.1.0(GitHub) meta-imx-frdm (ブランチ: lf-6.6.36-2.1.0、タグ: imx-frdm-4.0)(GitHub) meta-nxp-security-reference-design (ブランチ: scarthgap-6.6.23-2.0.0) (GitHub) 2.ホストPCのセットアップ(Linux) ¶ ホストPCのOSはUbuntu 22.04です。システムを最新ステータス更新します。 $ sudo apt-get -y update $ sudo apt-get -y upgrade Yoctoでイメージをビルドするために必要なパッケージをインストールします。 imx-dockerのDockerfileをリファレンスしています。 $ sudo apt-get -y install gawk wget git-core diffstat unzip texinfo \ gcc-multilib build-essential chrpath socat file cpio python3 \ python3-pip python3-pexpect xz-utils debianutils iputils-ping \ libsdl1.2-dev xterm tar locales net-tools rsync sudo vim curl zstd \ liblz4-tool libssl-dev bc lzop libgnutls28-dev efitools git-lfs \ bsdmainutils 今回の宿題は ~/imx93-secure-boot 上の、HOME宿題.ディレクトリの場所や名前は任意ですので、必要に応じて読んで代えてください。 $ mkdir ~/imx93-secure-boot $ cd ~/imx93-secure-boot ホスト PC の最終プログラムは、次のプログラムに基づいています。 imx93-secure-boot ├── IMX_CST_TOOL_NEW.tgz ├── cst-4.0.1 │ ├── ... │ ├── keys │ ├── crts │ └── linux64 │ └── bin ├── backup-cst └── yocto ├── ... ├── bin ├── build-imx93-11x11-lpddr4x-frdm │ ├── ... │ ├── conf │ └── tmp │ └── deploy │ └── images │ └── imx93-11x11-lpddr4x-frdm ├── downloads └── sources ├── ... ├── meta-imx ├── meta-imx-frdm └── meta-nxp-security-reference-design   3.コード署名ツールのダウンロード¶ コード署名ツール (以下、CST)、i.MX プロセッサの高保証ブート (HAB)、および高度な高保証ブート (AHAB) 機能は、i.MX プロセッサの署名および署名機能に基づいています。 NXP の Web ブラウザの最新バージョン。 コード署名ツール(最新バージョン) i.MX ソフトウェアおよび開発ツール ページの下の先にはコード署名ツールへのリンクがあります。 最新バージョンをダウンロードすると、 IMX_CST_TOOL_NEW.tgz というファイルなので、最上位のディレクトリに保存してから、展開します。 $ cd ~/imx93-secure-boot $ cp ~/Downloads/IMX_CST_TOOL_NEW.tgz . $ tar xf IMX_CST_TOOL_NEW.tgz 拡張すると (2025/08 最新の最新バージョンです) cst-4.0.1 というディレクトリに開発されます。バージョンが異なる場合は読み替えてください。 4. SRK生成¶ CSTはセキュアブートのためのSuper Root Key(以下SRK)を使用して生成を行います。詳細は以下をご参照ください。 UG10106、コード署名ツール ユーザーガイド、Rev. 4.0.1 — 2025年6月27日 cst-4.0.1/docs/UG10106_Rev4.0.1.pdfにあります。 ahab_pki_tree.shでSRKを生成します。オプションとして次の選択が行われます。 既存の CA キーは「するか/n で選択します」を使用しています。 使用する場合、CA キー名と CA 証明書名が使用されます。 SRK のキー タイプは rsa、rsa-pss、ecc から選択します。 rsa、rsa-pss、キーのビット长を2048、3072、4096から選択します。 eccの場合はキーが長く、p256、p384、p521とキーが選択されます。 ダイジェストアルゴリズムをsha256、sha384、sha512から選択します。 SRKの有効期間は年数によって決まります。 SRKをCA証明書は証明書によって生成され、証明書の証明書は証明書/nで選択します。 今回SRKで生成した設定は以下のとおりです。 既存の CA ではない キータイプ = ecc キーの長さ = p384 ダイジェストアルゴリズム = sha384 期間 = 10年 ユーザー証明書としての生成 ahab_pki_tree.shでインタラクティブにSRKの成を行う機会は、以下のような手顺になります。 $ cd ~/imx93-secure-boot $ cd cst-4.0.1/keys $ ./ahab_pki_tree.sh ... Do you want to use an existing CA key (y/n)?: n Do you want to use Elliptic Curve Cryptography (y/n)?: y Enter length for elliptic curve to be used for PKI tree: Possible values p256, p384, p521: p384 Enter the digest algorithm to use: sha384 Enter PKI tree duration (years): 10 Do you want the SRK certificates to have the CA flag set? (y/n)?: n ... $ cd - その際の指定には ahab_pki_tree.sh のパラメータが使用され、次のようなものが便利です。 $ cd ~/imx93-secure-boot $ cd cst-4.0.1/keys $ ./ahab_pki_tree.sh -existing-ca n -kt ecc -kl p384 -da sha384 -duration 10 -srk-ca n $ cd - 時間に、i.MX プロセッサーのヒューズに証明書のハッシュ値を、srktool で生成します。 $ cd cst-4.0.1/crts $ ../linux64/bin/srktool -a -d sha256 -s sha384 -t SRK_1_2_3_4_table.bin \ -e SRK_1_2_3_4_fuse.bin -f 1 \ -c SRK1_sha384_secp384r1_v3_usr_crt.pem,SRK2_sha384_secp384r1_v3_usr_crt.pem,SRK3_sha384_secp384r1_v3_usr_crt.pem,SRK4_sha384_secp384r1_v3_usr_crt.pem 警告 -cオプションで指定する4つのファイル名は、コンマのみOKで、スペースなどの文が入らないようご注意ください。 正常に終了し、SRK_1_2_3_4_table.bin と SRK_1_2_3_4_fuse.bin が生成されます。この2つのファイルが正しく生成されます確認します。 SRK_1_2_3_4_table.bin の sha256 ダイジェストを意味します。 $ openssl dgst -binary -sha256 SRK_1_2_3_4_table.bin | hexdump -e '/4 "0x"' -e '/4 "%08x""\n"' このダイジェストとSRK_1_2_3_4_fuse.binが同じ内容であることを確認します。 $ hexdump -e '/4 "0x"' -e '/4 "%08x""\n"' SRK_1_2_3_4_fuse.bin | tee srk_fuse.txt じであれば、SRK_1_2_3_4_table.bin と SRK_1_2_3_4_fuse.bin が正しく生成されていると卡えられます。 i.MX 93のヒューズに书き込み値は証明書のハッシュ夤、ちなみにsrk_fuse.txtに书かれた内容になります。 ございます。元のファイルをu-boot_cmd_temp.txtというファイル名で制作します。これは、i.MX 93のヒューズ、Bank 16、Word 0-7に书き込み(プログラミング)を行うためのコマンドのテンプレートになります。 fuse prog -y 16 0 fuse prog -y 16 1 fuse prog -y 16 2 fuse prog -y 16 3 fuse prog -y 16 4 fuse prog -y 16 5 fuse prog -y 16 6 fuse prog -y 16 7 u-boot_cmd_temp.txtにヒューズが书かれたsrk_fuse.txtを右側に有料にして、u-boot_cmd.txtというファイルが生成されます。 $ paste -d" " u-boot_cmd_temp.txt srk_fuse.txt | tee u-boot_cmd.txt 以下の形式のu-boot_cmd.txtが生成されます。本文が完成したら、本文を参照してください。 fuse prog -y 16 0 fuse prog -y 16 1 fuse prog -y 16 2 fuse prog -y 16 3 fuse prog -y 16 4 fuse prog -y 16 5 fuse prog -y 16 6 fuse prog -y 16 7 今回は、Yocto のセキュアブートが自動生成されます。そのプロセスでnxp-cst-signerというツールが実行されます。 nxp-cst-signerはCSTディレクトリの正下にある設定ファイル(csf_ahab.cfg)を参照するルールになっているため、 ~/imx93-secure-boot/cst-4.0.1/csf_ahab.cfg します。 $ cd ~/imx93-secure-boot $ cd cst-4.0.1 $ edit csf_ahab.cfg 以下の設定を行い、以下の説明を保存します。 #Header header_version=1.0 #Install SRK srktable_file=SRK_1_2_3_4_table.bin srk_source=SRK1_sha384_secp384r1_v3_usr_crt.pem srk_source_index=0 srk_source_set=OEM srk_revocations=0x0 #Install Certificate sgk_file= sgk_permissions= CSTの設定が完了しました。 このCSTディレクトリは、ヒューズを书きつけたi.MX 93デバイスのソフトウェアに署名する際になりますので、入手して安全な場所に長期間保管する必要があります。 $ cd ~/imx93-secure-boot $ mkdir backup-cst $ tar cf backup-cst/cst-4.0.1_$(date +"%Y%m%d-%H%M%S").tar.gz cst-4.0.1/   5. gitのセットアップ¶ Yoctoのビルドを行う记に、gitのユーザー名とメールアドレスを登录していないとエラーになる機会がありますので、していない機会は登録します。 $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"   6. i.MX Linux BSPのダウンロード¶ Yocto ビルドはのディレクトリを使用して「します」を作成します。 $ cd ~/imx93-secure-boot $ mkdir yocto $ cd yocto リポツールをダウンロードします。 $ mkdir bin $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > bin/repo リポジトリに実行権を支払って、PATH を守ることで使用できるようになります。 $ chmod a+x bin/repo $ PATH=${PATH}:$(pwd)/bin repoでi.MX Linux BSP 6.6.36-2.1.0のレシピをダウンロードするための初期化を行います。 $ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml リポでi.MX Linux BSP 6.6.36-2.1.0のレシピをダウンロードします。 $ repo sync   7.meta -imx-frdmのダウンロード¶ FRDM-IMX93 は追加のメタレイヤーを使用します。 $ cd sources $ git clone https://github.com/nxp-imx-support/meta-imx-frdm -b imx-frdm-4.0 $ cd ..   8.meta -nxp-security-reference-designのダウンロード¶ Yoctoによるセキュアブートの自動ビルドを行うための追加メタレイヤーをダウンロードします。 このレイヤには i.MX Linux BSP 6.6.36-2.1.0 は「存在しませんが」を使用し、近似のscarthgap-6.6.23-2.0.0ブランチを「します」を使用します。 $ cd sources $ git clone https://github.com/nxp-imx-support/meta-nxp-security-reference-design -b scarthgap-6.6.23-2.0.0 $ cd .. このレイヤーをFRDM-IMX93に適用すると、署名を行った時にi.MX 93 EVKのdtbが使われてしまう無合があるため修正をしてください。 (このコントリビューションリファレンスにしています。 < https://github.com/nxp-imx-support/meta-nxp-security-reference-design/pull/2 > ) diff --git a/meta-secure-boot/recipes-secure-boot/imx-mkimage/imx-boot_%.bbappend b/meta-secure-boot/recipes-secure-boot/imx-mkimage/imx-boot_%.bbappend index 1bbc7b2..6a2f069 100644 --- a/meta-secure-boot/recipes-secure-boot/imx-mkimage/imx-boot_%.bbappend +++ b/meta-secure-boot/recipes-secure-boot/imx-mkimage/imx-boot_%.bbappend @@ -15,7 +15,7 @@ do_compile:append:ahab() { mv ${BOOT_STAGING}/flash.bin ${BOOT_STAGING}/flash.bak # Invoke mkimage again to Get container info - make SOC=${IMX_BOOT_SOC_TARGET} flash_kernel + make SOC=${IMX_BOOT_SOC_TARGET} ${MKIMAGE_EXTRA_ARGS} flash_kernel # Rename kernel image name and move back the imx-boot flash image name mv ${BOOT_STAGING}/flash.bin ${BOOT_STAGING}/flash_os.bin   9.ビルド環境のセットアップ¶ Yocto ビルドのプロジェクトのセットアップを行います。 FRDM-IMX93は以下のような場合に適しています。 $ MACHINE=imx93-11x11-lpddr4x-frdm DISTRO=fsl-imx-xwayland EULA=1 source sources/meta-imx-frdm/tools/imx-frdm-setup.sh -b build-imx93-11x11-lpddr4x-frdm コマンドが正常終了すると、build-imx93-11x11-lpddr4x-frdmディレクトリにモバイルしています。 のコマンドで、 meta-nxp-security-reference-design/meta-secure-boot をレイヤーとして追加します。これは自動にセキュアブートの署名を行うために必要です。 $ bitbake-layers add-layer ../sources/meta-nxp-security-reference-design/meta-secure-boot ここでプロジェクトの設定(local.conf).エディタでlocal.confを开きますに「を行います」を追加しました。 $ edit conf/local.conf local.conf の最後に最初の行を追加します。これにより、ramboot するための rootfs が追加で生成されます。 IMAGE_FSTYPES:append = " cpio.gz.u-boot" local.conf の最後に最初の行を追加します。 CST_PATH 値は CST_PATH によって設定されます。 これは、meta-nxp-security-reference-designがCSTディレクトリを参照するために必須です。 CST_PATH = local.conf の最後に最初の行を追加します。 これは、meta-nxp-security-reference-designがFRDM-IMX93のカーネルとdtbに署名を支払う時にi.MX 93 EVKのdtbを组み込んでしまうので質問を回避するためです。 MKIMAGE_EXTRA_ARGS:imx93-11x11-lpddr4x-frdm = "KERNEL_DTB=imx93-11x11-frdm.dtb" エディタを終了してlocal.confを保存します。   10.イメージのビルド¶ 今回はサイズを小さくして、かつ、セキュア ブートの署名を自動に行います core-image-minimal-secure-boot をbitbakeします。時間が経って処理が終わりました。 $ bitbake core-image-minimal-secure-boot -k イメージのビルドが正常に終了すると、次の2つのファイルが生成されます。 1つ目は署名paykibootloaderで、2つ目はlinuxカーネルとdtbが組み合わせられた署名paykiOSコンテナです。 $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/signed-imx-boot-imx93-11x11-lpddr4x-frdm-sd.bin-flash_singleboot $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/os_cntr_signed.bin Signed to pay kiBootloader と Signed to pay OS コンテナをグループみき投げイメージファイルも生成されています。 $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/core-image-minimal-secure-boot-imx93-11x11-lpddr4x-frdm.rootfs.wic.zst Linux でシリアル ダウンロードを開始すると、RAM ディスクを使用してシリアル ダウンロードが生成されます。このファイルはその後ですによって署名されています。 ( RAMディスクによる署名) $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/core-image-minimal-secure-boot-imx93-11x11-lpddr4x-frdm.rootfs.cpio.gz.u-boot   11. bitbakeから开开开到了したい機会¶ Bitbake は途中で中断され、シェルは時々再起動され、必要に応じて Yocto 環境値が設定されます。そのためには、次のスクリプトを使用します。 $ cd ~/imx93-secure-boot $ cd yocto $ source setup-environment build-imx93-11x11-lpddr4x-frdm   12.をやりたいの署名付き¶ SRKしたときなど、署名をやりたい機会は、 imx-boot 、 imx-boot-signature 、 linux-imx-signature とイメージ(この章 core-image-minimal-secure-boot ) の 4 つのパッケージをクリーンオールして、イメージを Zai ビルドします。 $ bitbake imx-boot imx-boot-signature linux-imx-signature core-image-minimal-secure-boot -c cleanall $ bitbake core-image-minimal-secure-boot -k   13. RAMディスクの署名¶ イメージのビルドが正常に終了したら、deploy ディレクトリに 2 つのツールが存在します。 mkimage_imx8 はコンテナを作るツールですによって起動されます。 cst_signerはコンテナに署名を行うツールです。 $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/imx-boot-tools/mkimage_imx8 $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/imx-boot-tools/cst_signer また、deployディレクトリにramdiskファイルも存在します。 $ stat tmp/deploy/images/imx93-11x11-lpddr4x-frdm/core-image-minimal-secure-boot-imx93-11x11-lpddr4x-frdm.rootfs.cpio.gz.u-boot mkimage_imx8とcst_signerを使って、ramdiskファイルに署名をします。 本来はmkimage_imx8でramdiskをコンテナにします。コマンドの形式は以下のとおりです。 $ INITRD= $ INITRD_ADDR= $ mkimage_imx8 -soc IMX9 -container -data ${INITRD} a55 ${INITRD_ADDR} -out 具体的なものは以下のとおりです。 $ tmp/deploy/images/imx93-11x11-lpddr4x-frdm/imx-boot-tools/mkimage_imx8 \ -soc IMX9 \ -container \ -data tmp/deploy/images/imx93-11x11-lpddr4x-frdm/core-image-minimal-secure-boot-imx93-11x11-lpddr4x-frdm.rootfs.cpio.gz.u-boot \ a55 \ 0x83800000 \ -out initrd_cntr.bin 時間にcst_signerでコンテナに署名します。コマンドの形式は以下のとおりです。 $ CST_PATH= cst_signer -d -i -c /csf_ahab.cfg 具体的なものは以下のとおりです。 $ CST_PATH=/home/nxp/imx93-secure-boot/cst-4.0.1 \ tmp/deploy/images/imx93-11x11-lpddr4x-frdm/imx-boot-tools/cst_signer \ -d \ -i initrd_cntr.bin \ -c /home/nxp/imx93-secure-boot/cst-4.0.1/csf_ahab.cfg 署名したramdiskはdeployディレクトリに手机お待ちしています。 $ mv signed-initrd_cntr.bin tmp/deploy/images/imx93-11x11-lpddr4x-frdm/ これでセキュアブートを行う環境がビルドできました。   14.ホストPCとターゲットの回線¶ ホスト PC とターゲットには 2 本の USB ケーブルが接続されています。 Keita_Nagashima_0-1766478908473.png 図 1 ホストPCの配線¶   15. UUUのインストール(Linux) ¶ Linux 版 UUU は次のサイトから uuu をダウンロードして、 /usr/local/bin などのPATH を通った場所に設定します。 UUU リリース (最新バージョン) < https://github.com/nxp-imx/mfgtools/releases/latest > 次のコマンドで、sudoなしでuuuを実行できるようにSETファイルをインストールします。 $ sudo sh -c "uuu -udev > /etc/udev/rules.d/70-uuu.rules" $ sudo udevadm control --reload ホストPCとFRDM-IMX93のUSB1ポートをUSB接続して、FRDM-IMX93をシリアルダウンロードモードに設定して電源をONにすると、 以下はFRDM-IMX93の情報の確認です。 $ uuu -lsusb uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.201-11-gf2a4e3e Connected Known USB Devices Path Chip Pro Vid Pid BcdVersion Serial_no ==================================================================== 3:1224 MX93 SDPS: 0x1FC9 0x014E 0x0001 3A24F36BB35F4594   16. UUUのインストール(Windows) ¶ UUU の Windows バージョンは次の uuu.exe 構成されています。 UUU リリース (最新バージョン) < https://github.com/nxp-imx/mfgtools/releases/latest > ホストPCとFRDM-IMX93のUSB1ポートをUSB接続して、FRDM-IMX93をシリアルダウンロードモードに設定して電源をONにすると、 以下はFRDM-IMX93の情報の確認です。 > uuu -lsusb uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.201-11-gf2a4e3e Connected Known USB Devices Path Chip Pro Vid Pid BcdVersion Serial_no ==================================================================== 3:1224 MX93 SDPS: 0x1FC9 0x014E 0x0001 3A24F36BB35F4594   17.コンソール(Linux) ¶ ホスト PC でコンソールを开きます。たとえば、 minicom でFRDM-IMX93のシリアルポートを開く」は次の条件を満たします。 $ minicom -D/dev/ttyACM0   18.コンソール(Windows) ¶ Windows のシリアルコンソールのアプリケーションで、FRDM-IMX93 の場合は COM ポート USB-Enhanced-SERIAL-A CH342 を使います。 i.MX 93 EVK の 4 番目のバージョン、EVK の 4 番目のバージョン、および COM のバージョンの 3 番目のバージョン。   19. Linux 起動テスト(1) ¶ ブートローダーとLinuxを起動して、AHABのエラーを確認します。 BOOT_MODEによって方法が異なりますので、いずれかを選択してテストします。 シリアルダウンロードとLinuxの起動 SDまたはeMMCでLinux起動   19.1.シリアルダウンロードとLinuxの起動¶ シリアルダウンロードでブートローダーとLinuxのスタートアップテストを行います。 3番目の「つのファイル」は「します」を使用します。 キブートローダーファイルによる署名 signed-imx-boot-imx93-11x11-lpddr4x-frdm-sd.bin-flash_singleboot Linuxカーネル os_cntr_signed.bin きのramdiskファイルの署名付き signed-initrd_cntr.bin 3つのファイルが以下のパスに存在することを確認します。 $ cd ~/imx93-secure-boot $ cd yocto/build-imx93-11x11-lpddr4x-frdm/tmp/deploy/images/imx93-11x11-lpddr4x-frdm $ stat signed-imx-boot-imx93-11x11-lpddr4x-frdm-sd.bin-flash_singleboot $ stat os_cntr_signed.bin $ stat signed-initrd_cntr.bin $ cd - UUUで実行するスクリプトファイル sdp-ramboot-yocto-signed.uuu を成します。 $ cd ~/imx93-secure-boot $ edit sdp-ramboot-yocto-signed.uuu 以下の内容を記述して保存します。 uuu_version 1.2.39 SDPS: boot -f yocto/build-imx93-11x11-lpddr4x-frdm/tmp/deploy/images/imx93-11x11-lpddr4x-frdm/signed-imx-boot-imx93-11x11-lpddr4x-frdm-sd.bin-flash_singleboot FB: ucmd ahab_status FB: ucmd setenv ramargs 'setenv bootargs ${jh_clk} console=${console} root=/dev/ram rw' FB: ucmd setenv ramboot 'echo Booting from initramfs ...; run ramargs; booti ${loadaddr} ${initrd_addr} ${fdt_addr};' FB: ucmd setenv fastboot_buffer ${cntr_addr} FB: download -f yocto/build-imx93-11x11-lpddr4x-frdm/tmp/deploy/images/imx93-11x11-lpddr4x-frdm/os_cntr_signed.bin FB: ucmd auth_cntr ${cntr_addr} FB: ucmd ahab_status FB: ucmd setenv fastboot_buffer ${cntr_addr} FB: download -f yocto/build-imx93-11x11-lpddr4x-frdm/tmp/deploy/images/imx93-11x11-lpddr4x-frdm/signed-initrd_cntr.bin FB: ucmd auth_cntr ${cntr_addr} FB: ucmd ahab_status FB: acmd run ramboot FB: done UUUでスクリプトを実行します。 $ uuu -d -v sdp-ramboot-yocto-signed.uuu FRDM-IMX93をシリアルダウンロードモードにSETUPして電源をONにすると、ブートローダーからLinuxが起動します。 AHAB のエラーは、Linux が起動する直接フロントに実行しました ahab_status コマンドの結果で判断します。 Authenticate OS container at 0x98000000 ... Lifecycle: 0x00000008, OEM Open 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) Detect USB boot. Will enter fastboot mode! Booting from initramfs ... ## Loading init Ramdisk from Legacy Image at 83800000 ... Image Name: core-image-minimal-secure-boot-i Created: 2011-04-05 23:00:00 UTC Image Type: AArch64 Linux RAMDisk Image (uncompressed) Data Size: 56894907 Bytes = 54.3 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ## Flattened Device Tree blob at 83000000 Booting using the fdt blob at 0x83000000 Working FDT set to 83000000 Using Device Tree in place at 0000000083000000, end 000000008300eaef Working FDT set to 83000000 fail to find output device probe video device failed, ret -19 Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050] [ 0.000000] Linux version 6.6.36-lts-next-g20aa8fc92c79 (oe-user@oe-host) (aarch64-poky-linux-gcc (GCC) 13.3.0, GNU ld 4 [ 0.000000] KASLR disabled due to lack of seed [ 0.000000] Machine model: NXP i.MX93 11X11 FRDM board ... Linux が起動するまでに、u-boot-spl、u-boot、kernel+dtb、ramdisk の 4 回の認証が行われますが、まだ SRK Hash がヒューズに书かれていないステータスでは、4 回の認証エラー ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) が発生したことがあります。 エラー ELE_NO_AUTHENTICATION_FAILURE_IND (0xEE) が出る場合は、「イメージに署名が無いので認証できなかった」という意味で、署名はきイメージのビルドが正しくできていない可能性があります。 Lifecycle: 0x00000008, OEM Open 0x0287eed6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_NO_AUTHENTICATION_FAILURE_IND (0xEE) STA = ELE_SUCCESS_IND (0xD6) SRK ハッシュがヒューズに书かれて認定が正しく行われれば、AHAB のエラーがなくなり、次のように No Events Found! という意味になります。 Lifecycle: 0x00000008, OEM Open No Events Found!   19.2.SDまたはeMMCでLinux起動¶ FRDM-IMX93のBOOT_MODEスイッチをシリアルダウンロードモードに設定して電源をONにします。 SDブートの機会は书き込み可能なmicroSDカードをカードスロットに挿入してから、のコマンドでSDにイメージを书き込みます。 リスト 1 SD にき込み¶ $ cd ~/imx93-secure-boot $ cd yocto/build-imx93-11x11-lpddr4x-frdm/tmp/deploy/images/imx93-11x11-lpddr4x-frdm/ $ uuu -b sd_all signed-imx-boot-imx93-11x11-lpddr4x-frdm-sd.bin-flash_singleboot core-image-minimal-secure-boot-imx93-11x11-lpddr4x-frdm.rootfs.wic.zst $ cd - eMMC ブートの際は、次のコマンドで eMMC にイメージを书き込みます。 リスト 2 eMMC への組み込み¶ $ cd ~/imx93-secure-boot $ cd yocto/build-imx93-11x11-lpddr4x-frdm/tmp/deploy/images/imx93-11x11-lpddr4x-frdm/ $ uuu -b emmc_all signed-imx-boot-imx93-11x11-lpddr4x-frdm-sd.bin-flash_singleboot core-image-minimal-secure-boot-imx93-11x11-lpddr4x-frdm.rootfs.wic.zst $ cd - 本が読み終わり、FRDM-IMX93の電源がOFFになります。 FRDM-IMX93のBOOT_MODEスイッチを、SDブートモードまたはeMMCブートモードに設定して電源をONにします。 U-Bootの「起動」は「起動」を意味し、「起動」は「一時停止」を意味します。以下のコマンドを入力して、署名payKOSイメージ(kernel + dtb)を認証します。 リスト 3Signature payKIOS イメージの証明書¶ u-boot=> mmc dev ${mmcdev} u-boot=> mmc rescan u-boot=> run loadcntr u-boot=> run mmcargs u-boot=> run auth_os ahab_status コマンドを入力してAHABのエラーを確認します。 リスト 4 署名および認定されたエラー¶ u-boot=> ahab_status Lifecycle: 0x00000008, OEM Open 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) 0x0287fad6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) STA = ELE_SUCCESS_IND (0xD6) Linux するまでに、u-boot-spl、u-boot、kernel+dtb の 3 期の認証が行われますが、先に SRK ハッシュがヒューズに书かれていないステータスでは、3 回の認証エラー ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) が発生したことがあります。 エラー ELE_NO_AUTHENTICATION_FAILURE_IND (0xEE) が出る場合は、「イメージに署名が無いので認証できなかった」という意味で、署名はきイメージのビルドが正しくできていない可能性があります。 リスト 5署名なしイメージの機会¶ Lifecycle: 0x00000008, OEM Open 0x0287eed6 IPC = MU APD (0x2) CMD = ELE_OEM_CNTN_AUTH_REQ (0x87) IND = ELE_NO_AUTHENTICATION_FAILURE_IND (0xEE) STA = ELE_SUCCESS_IND (0xD6) SRK ハッシュがヒューズに书かれて認定が正しく行われれば、AHAB のエラーがなくなり、次のように No Events Found! という意味になります。 リスト 6 AHABエラー無しの場合¶ Lifecycle: 0x00000008, OEM Open No Events Found! 最後に、次のコマンドを実行して、Linux のログインプロンプトまで開始することを確認します。 リスト7 Linuxの起動¶ u-boot=> run boot_os   20. SRKハッシュをヒューズに书き込み¶ i.MX 93のヒューズバンク16、Word 0-7の値が0x00000000であることを確認します。 u-boot=> fuse read 16 0 u-boot=> fuse read 16 1 u-boot=> fuse read 16 2 u-boot=> fuse read 16 3 u-boot=> fuse read 16 4 u-boot=> fuse read 16 5 u-boot=> fuse read 16 6 u-boot=> fuse read 16 7 SRKの制作 u-boot_cmd.txt が確認されました。 (ここでは実记の値ではなく ~ という面记をしています。) $ cd ~/imx93-secure-boot $ cat cst-4.0.1/crts/u-boot_cmd.txt fuse prog -y 16 0 fuse prog -y 16 1 fuse prog -y 16 2 fuse prog -y 16 3 fuse prog -y 16 4 fuse prog -y 16 5 fuse prog -y 16 6 fuse prog -y 16 7 u-boot_cmd.txt 通りに、u-bootのプロンプトからSRKハッシュをヒューズに书き込みます。 (ここでは実记の値ではなく ~ という面记をしています。) 警告 ヒューの书き込みは一度きりであり、元に戻すことはできません。しっかり確認して丁寧に作業をすることが大切です。 u-boot=> fuse prog -y 16 0 u-boot=> fuse prog -y 16 1 u-boot=> fuse prog -y 16 2 u-boot=> fuse prog -y 16 3 u-boot=> fuse prog -y 16 4 u-boot=> fuse prog -y 16 5 u-boot=> fuse prog -y 16 6 u-boot=> fuse prog -y 16 7   21. Linux 起動テスト(2) ¶ ブートローダーとLinuxを起動して、AHABのエラーを確認します。 Linux起動プログラム(1)と同様の方法です。 シリアルダウンロードとLinuxの起動 SDまたはeMMCでLinux起動 ahab_status ハッシュ hash はされる No Events Found! です。これは署名が支払います きイメージがすべて認証されたことを意味します。 Lifecycle: 0x00000008, OEM Open No Events Found!   22. OEM のクローズと移行¶ i.MX 93デバイスのライフサイクルがOEMクローズすることで、署名された支払いきイメージのみstartできるようになり、署名のいイメージや、間違った署名きイメージはstartできなくなります。 きイメージで開始して ahab_status コマンドでAHABエラーが無いことを確認しました。 u-boot=> ahab_status Lifecycle: 0x00000008, OEM Open No Events Found! ahab_close コマンドを実行すると、OEM Closedに再配置されます。 警告 OEM Closedへの移行は一度であり、OEM OpenのSTATEに戻すことはできません。しっかり確認して丁寧に作業をすることが大切です。 u-boot=> ahab_close Warning: Please ensure your sample is in NXP closed state, OEM SRK hash has been fused, and you are able to boot a signed image successfully without any SECO events reported. If not, your sample will be unrecoverable. Really perform this operation? y Change to OEM closed successfully u-boot=> リセットを行うと、からOEMクローズとなります。サイン入りきイメージであれば再起動します。 u-boot=> reset resetting ... U-Boot SPL 2024.04+gde16f4f1722+p0 (Sep 02 2024 - 10:44:35 +0000) SOC: 0xa1009300 ... ahab_status コマンドを実行すると、OEM Closedに再配置されていることがわかります。 u-boot=> ahab_status Lifecycle: 0x00000020, OEM closed No Events Found! u-boot=>   23. Linux 起動テスト(3) ¶ ブートローダーとLinuxを起動できることを確認します。 Linux起動プログラム(1)と同様の方法です。 シリアルダウンロードとLinuxの起動 SDまたはeMMCでLinux起動 Linux が正常に起動し、セキュア ブートも成功しました。   24.参考文献¶ i.MX 93 アプリケーションプロセッサリファレンスマニュアル i.MX 93 アプリケーションプロセッサ セキュリティリファレンスマニュアル、Rev. 5、2025-03-04 (Get はi.MX 93 サイトセキュアドキュメントのセキュリティリファレンスマニュアルのリンクからリクエストを信して、承認されましたとNXPからダウンロードURLのメールが来ます)。 UG10106、コード署名ツール ユーザーガイド、Rev. 4.0.1 — 2025年6月27日 (CSTのパッケージにあります。cst-4.0.1/docs/UG10106_Rev4.0.1.pdf) U-Boot AHAB文書 AN12312、AHAB 対応デバイスでのセキュアブート UG10195、i.MX FRDM ソフトウェア ユーザー ガイド UM12181、FRDM-IMX93ボード ユーザーマニュアル meta-imx-frdm README (imx-frdm-4.0) meta-nxp-security-reference-design/meta-secure-boot README (scarthgap-6.6.23-2.0.0) この情報は、NXP 製品で使用するための参考資料です。 正式な様は製品マニュアル・アプリケーションノートを指します。 ソフトウェアのバージョンなど、さまざまな条件や条件の違い、その時々の状況に応じた内容や動作の説明を記載しています。 使用目的に適合した機能試験証明書であり、使用目的に適合していることを証明します。 ========================= この投稿の 「 コメント 」欄は 投稿者によって書かれており、返信レターも投稿者によって書かれるようになりました 。 おロット番号を電話しますが、お質問い合わせの间には「 NXP への技術的な質問 - い合わせ方法( 日本語ブログ) 」をご参照ください 。 (弊社は NXP 社の代理店であり、 NXP社 のNXPディーラー であり、NXP社の取締役であり、質問の直接の担当者はNXP社です。 ) 前の記事はi.MX 93を例にセキュアブートの士组みについて解説を行いました。 (前章については前章を、次章をご参照ください。) 注: i.MX 93 プロセッサ: セキュアブートの署名と認定公式グループみを解説 (日本語ブログ) 今回は、実记にセキュアブートを実装するためのハンズオンフォームをご紹介します。 i.MX プロセッサ 安全 日本語ブログ
記事全体を表示
[不正使用] 記事作成者: @jeremyzhou / ナレッジベース: imxrt@tkb / 報告者: zucsvhzk zucsvhzk は、 @jeremyzhou が投稿した記事 「マイクロコントローラ使用の認識モデル」を 以下の理由で報告しました。 理由:その他 詳細: チザニジンにはジェネリック医薬品があります ラノキシンをどこで買えますか ラノキシンを購入したい チザニジンオンラインで購入する ラノキシンを土曜日に代金引換で購入 についてチザニジンを購入する 購入ラノキシンなし 次のラノキシンをどこで注文できるか 購入チザニジン2mg ジョージア 購入ラノキシン エスパニャ フェデックス処方箋なしのチザニジンストア 購入ラノキシン エスパニャ ベストチザニジン ザナフレックスの価格 ラノキシンオンライン代金引換 割引デラウェア州の薬局ラノキシン 購入ジェネリックチザニジンベスト チザニジンオンラインカナダ人 低いジョージア州のチザニジンの費用 ラノキシンオンライン代金引換 いいえ最も安いラノキシン処方箋 ベストチザニジン ザナフレックスの価格 購入チザニジンをオンラインで安く購入 ベストチザニジン ザナフレックスの価格 ラノキシン当日発送のご注文 価格チザニジンとアシクロビルの比較 pdaラノキシンを購入する 購入チザニジンを一晩服用 購入チザニジンをオンラインで安く購入 米国薬局でラノキシンをオンラインで購入 チザニジン錠剤オンラインタラ 購入チザニジン・デモイン ラノキシンをどこで買えますか 安いチザニジンの販売 チザニジンの注文方法 エクスプレス宅配便によるチザニジン配達 チザニジンにはジェネリック医薬品があります 処方箋チザニジンを安く購入 処方箋なしのFedexチザニジンストア ジェネリックのラノキシンは縫い付けられています 処方箋鎮痛剤ラノキシン 記事リンク: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/Recognition-model-for-microcontroller-use/ta-p/1103364 記事の著者: @jeremyzhou |メールアドレス 報告者: zucsvhzk |メールレポーター 報告された記事には 8 件のコメントがあります。
記事全体を表示
MCXN947 USB 硬件设计 我想在 MCXN947VDFT 上将 USB 2.0 HS (USB1) 仅配置为外设。 我不需要 OTG 功能,如果不需要,也不想添加 FRDM-MCXN947 开发板上演示的 VBUS 电源控制或 CC 逻辑 IC。 我使用的是 USB C 型连接器 CC1 和 CC2 引脚使用 5.1k 电阻器下拉 ID 引脚能否在 uC 端保持浮空? 我需要用于 USB1_VBUS 引脚的电阻分压器吗。MCX-N9XX-EVK 增加了分频器。FRDM-MCXN947 则没有。 引脚标明容差为 5V。 这样的设计可行吗?如有任何见解,不胜感激。谢谢 ashwinanil_0-1769192484237.png ashwinanil_1-1769192493342.png MCX N Re: MCXN947 USB hardware design 你好@ashwinanil 感谢您的来信 请参阅 UG10092:mcxnx4x 硬件设计指南 | 恩智浦半导体 ,在此重点介绍第 8.3 章 高速USB(也指第 8. 1 章)和 11 个未使用的引脚。 VBUS 建议将其直接连接到 USB 连接器,而不使用电阻分压器。正如文件所述:"USB VBUS 引脚是一个独特的引脚,因为它是唯一的 5 V 容差引脚。连接器的 VBUS 引脚必须直接连接到 USB_VBUS MCX 引脚。" 建议不连接的 USB_ID carlos_o_0-1769207337822.png 如果这些信息对您有帮助,请告诉我。 Re: MCXN947 USB hardware design 你好@carlos_o ,感谢您的回复。我按照你的指导,在没有分压器的情况下将 5V 引脚直接连接到 usb_vbus MCXN 引脚。其余引脚配置如上,我没有使用控制 OTG 的 CC 逻辑芯片,不确定是否需要。无论如何,我还是无法让 USB 正常工作。目前我怀疑是固件问题。 谢谢您的帮助! Re: MCXN947 USB hardware design 你好@carlos_o 我们正在使用 Linux 下的 zephyr testusb 样本进行测试。使用 evk 时,我们可以看到设备枚举,我们可以运行 USB 测试。但当我们尝试使用自定义边界时,却出现了枚举错误,请参阅以下主机端的 dmesg 日志。 [1115238.671144] usb 1-2 :使用 xhci_hcd 的新款高速 USB 设备 编号 36 [1115238.785192] usb 1- 2:设备描述符读取/64,错误 -71 [1115239.003075] usb 1-2:设备描述符读取/64,错误 -71 [1115239.219143] usb 1-2 :使用 xhci_hcd 的新款高速 USB 设备 编号 37 [1115239.333176] usb 1-2:设备描述符读取/64,错误 -71 [1115239.555205] usb 1-2:设备描述符读取/64,错误 -71 [1115239.657153] usb usb1-port2:尝试电源循环 [1115240.037109] usb 1-2:使用 xhci_hcd 的新款高速 USB 设备编号 38 [1115240.037252] usb 1- 2 :设备 未响应设置地址。 [1115240.241247] usb 1-2:设备未响应设置地址。 [1115240.449124] usb 1-2:设备不接受地址 38,错误 -71 [1115240.562935] usb 1-2 :使用 xhci_hcd 的新款高速 USB 设备 编号 39 [1115240.563074] usb 1-2:设备未响应设置地址。 [1115240.769196] usb 1-2:设备未响应设置地址。 [1115240.977079] usb 1-2:设备不接受地址 39,错误 -71 [1115240.977312] usb usb1-port2:无法枚举 USB 设备   表示设备在本例中自定义主板未响应来自主机的安装数据包 Re: MCXN947 USB hardware design 你好@ashwinanil 您是如何测试 USB 功能的? Re: MCXN947 USB hardware design 你好@wima88 抱歉迟复 由于您将 Zephyr 与自定义主板一起使用,请参阅以下 Zephyr 自定义主板和应用程序 在使用 Zephyr 为自定义板开发代码时,您可以遵循一些技巧。 Re: MCXN947 USB hardware design 这是决心,感谢@carlos_o的支持。问题是硬件/软件设置的时钟频率不匹配
記事全体を表示
割り込みハンドラからI/Oを実行する この質問に関連するパラメータは次のとおりです。 1. IDE: S32 DS for ARM v 2.2 (これは古いですが、問題の製品自体も古いので、既存のコードのサポートが必要です) 2. チップ: S32K148 3. OS: Windows 11 4. システムOS: ベアメタル ISR であらゆる種類の SPI マスター転送を実行しようとするとハングし、通常、中断された API はブロッキング I/O (I2C または SPI) 呼び出しです。 ブロッキング呼び出し (LPSPI_DRV_MasterTransferBlocking() へ) では、sysTick 割り込みが発生していないように見えるため呼び出しがハングし、MCU は経過時間を把握できません。 非ブロッキング呼び出し (LPSPI_DRV_MasterTransfer() の後に LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) が続く) では、byte_remaining は元の値のままになります。非同期転送のために LPSPI_DRV_MasterTransfer() を呼び出す前に LPSPI_DRV_MasterAbortTransfer(SPI1) への呼び出しを追加しようとしましたが、結果は同じです。 少し関連する質問ですが、SysTick_Handler() をトリガーするものは何ですか?私の直感では、1 ミリ秒ごとにティック カウントを増やしながら常に実行されているはずですが、その本体にブレーク ポイントを設定すると、一部の時間しかヒットしないようです。不思議なことに、ブロッキング SPI 転送が成功した場合でもヒットしないことがあります。これは、システム タイマーが以前は解除されていた場合は、システム タイマーが起動される必要があるためです。 もう 1 つの関連する質問は、SPI の S32 クックブックのサンプル コードでは、SDKs が提供する API が使用されていないことです。サンプルでは、すべてのレジスタ ビットを直接操作します。車輪の再発明ではなく、少なくとも NXP API を呼び出すという点で、本番環境に適したコードに近い例はありますか? Re: Doing I/O from an interrupt handler こんにちは@PetrS どうもありがとうございます。割り込み優先度によって、問題は確かに解決しました。しかし、私は疑問を持っています。 ISR 内でブロックするのは良いアイデアではないことに同意しますが、シングル スレッド アプリケーションでは代替手段は何でしょうか?SPI 転送が完了するまで、アプリケーション コンテキストでスピンできます。これにより、他の I/O 割り込みが発生するようになります (私の理解では、負の優先度の割り込みはいずれにせよ発生します。正の優先度の ISR に入っても、それらは無効になりません)。しかし、私の状況では、重複する I/O を実行することは不可能であり、望ましくもありません。 1.S32K148 はすべてのバスのバス・マスタであるため、これは不可能です。SO、ISR で SPI 転送を実行している場合、別の I/O バスを駆動することはできず、したがって割り込みをトリガーすることはできません。 2. ISR 間でグローバルが共有される可能性があるため、現在の I/O が完了するまで新しい I/O を開始したくない、SO これは望ましくありません。 シングル Thread のベア メタル アプリケーションの場合、この状況に対処するにはどのような方法をお勧めしますか? Re: Doing I/O from an interrupt handler こんにちは、 OK、では単純に優先順位を中断すると、この動作が発生する可能性があります。両方の割り込みの優先度が同じ場合、GPIO ISR がアクティブな間は LPSPI ISR を実行できないため、ブロッキング API がハングします。ブロッキング呼び出しは、ISR が転送を完了してセマフォをポストするまで待機しますが、その ISR は GPIO ISR が終了するまで CPU 時間を取得しません。SDKs のドライバは実際には LPSPI 割り込みで転送を終了し、その後でセマフォをポストしてブロッキング呼び出しを解放します。SO、優先順位が同じ ISR はこのように転送をデッドロックします。 非ブロッキング API の動作は同じです。同じ優先度の GPIO ISR から呼び出された場合、LPSPI ISR はそれをプリエンプトすることができないSO、ドライバ ステート マシンは LPSPI IRQ によって処理されないSO、byte_remaining は変更されません。LPSPI の優先度を高く(数値的に低い値に)した後にのみ、LPSPI 割り込みが直ちに発生し、転送が完了し、ブロッキング API と非ブロッキング API の両方が期待どおりに動作できるようになります。試す /* 数字が小さいほど、Cortex-M での優先度が高くなります */ INT_SYS_SetPriority ( SysTick_IRQn 、 0 ) ;     // ティックタイムアウトに依存している場合 INT_SYS_SetPriority ( LPSPI1_IRQn 、 1 ) ;      // GPIO より高くなければなりません INT_SYS_SetPriority ( PORTC_IRQn 、 2 ) ;       // ボタンの PORTx IRQ   注: 優先度の修正に関係なく、ISR 内でブロッキング SPI API を使用しないことをお勧めします。同様に、ISR 内で非ブロッキング転送が完了するまで待機しないこともお勧めします。S32K LPSPI ドライバーは割り込みハンドラー内で転送を進行しますが、ISR が長いと他の割り込みの実行が妨げられる可能性があります。   BR、ペトル Re: Doing I/O from an interrupt handler こんにちは@PetrS ご返答ありがとうございます。しかし、よく理解できていないようで申し訳ありません。 あなたが言っているのは、ISR 内でブロッキング I/O を実行するのは悪い考えだということのようですが、私も同感です。しかし、なぜそれが機能しないのでしょうか?ティック カウンタは、優先度 -1 の割り込みハンドラ内で増加します。これは、どの I/O 割り込み優先度よりも高い優先度です。また、コード内の割り込みマスクは変更していませんが、ドライバが内部的にそれを変更するのでしょうか? 私たちのアプリケーションはベアメタル (シングル スレッド) なので、ISR コンテキストとアプリケーション コンテキストで待機することはほぼ同じです。唯一の違いは、ISR コンテキストでは、他の I/O 割り込みがブロックされることです。しかし、これはまさに私が望んでいるものなのです。ただし、優先度が高いため、タイマー ISR をブロックしてはなりません。ISR の最初の行に ENABLE_INTERRPUTS() の呼び出しを追加してみましたが、違いはありませんでした。 非ブロッキング バージョンも試してみましたが、これも別の方法でハングします。非ブロッキング呼び出し(LPSPI_DRV_MasterTransfer() の後に LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) )では、byte_remaining は元の値のままです。非同期転送のために LPSPI_DRV_MasterTransfer() を呼び出す前に LPSPI_DRV_MasterAbortTransfer(SPI1) の呼び出しを追加しようとしましたが、結果は同じでした。上記のAPI呼び出しはどちらもISRから実行されます。ユースケースとしては、ユーザーがボタンを押すとGPIO割り込みが発生し、SPI経由で値を読み取るというものです。 もう一度指摘しておく価値のあることは、ISR が中断している API はブロッキング SPI 転送であるということです。新しい転送を開始する前に ISR に LPSPI_DRV_MasterAbortTransfer() の呼び出しを追加しても、効果はありませんでした。 この問題に関しては期限が非常に迫っているため、どんな助けでも大歓迎です。 Re: Doing I/O from an interrupt handler こんにちは、 ISR からの I/O をブロックすることは、S32K1 SDK では機能しません。LPSPI_DRV_MasterTransferBlocking() は OSIF セマフォを待機します。ISR コンテキストではブロックする場所がなく、進めるティック/タイム ベースもないため、ハングします。非ブロッキング API (LPSPI_DRV_MasterTransfer) を使用して、LPSPI ISR/コールバックで転送を完了し、タスク/メイン ループを信号します。また、SysTick はタイマー ラップ時に起動しますが、そのハンドラーはマスクされておらず、十分な NVIC 優先度がある場合にのみ実行されます。そのため、PRIMASK が設定されている場合、または優先度の高い ISR にいる場合は延期されます。 クックブック プロジェクトは意図的に軽量化されており、高レベルのドライバの抽象化なしでペリフェラルの使用を直接示します。これは、実稼働での使用ではなく、学習の開始点として意図されています。NXP ドライバ スタイルの例が必要な場合は、クックブックではなく SDK、または RTD ドライバ/サンプル プロジェクトを参照してください。   BR、ペトル Re: Doing I/O from an interrupt handler こんにちは、 今では「動作する」ようになりましたが、ISR 内で SPI 転送を行うことは依然として推奨されません。 後で優先順位を変更したり、別のペリフェラルを追加したりする場合は、診断したデッドロック状態を簡単に再現できます。最も安全なデザインは、ISR を常に短く保ち、実際の作業をメイン ループに延期することです。 ISR はトリガーとしてのみ使用し、SPI 転送を main() で同期的に実行するか、ISR で開始されて LPSPI ISR によって完了する非ブロッキング転送として実行し、main は完了フラグを待機します。 BR、ペトル
記事全体を表示