Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
LPSPI0およびEMACのパッドタイプ こんにちは、 S32K344のリファレンス・マニュアルによると、最大スイッチング周波数をサポートするパッドタイプは以下の通りです。 - 標準: 10 MHz - スタンダードプラス:25MHz - 中速:50MHz - 高速: 120 MHz 標準および標準プラスパッドの選択がLPSPIとEMACペリフェラルにどのような制約をもたらすのか理解しようとしています。 1.EMACの場合、RMIIインターフェースを使用する場合、基準クロックは50 MHzです。つまり、RX/TXCLK、TXD0、TXD1、RXD0、RXD1のピンは50 MHz信号をサポートするはずです。ただし、S32K344_257bgaのピン構成では、すべてのRX/TXCLK、TXD0、TXD1、RXD0、およびRXD1ピンは、標準パッドまたは標準プラスパッド上にあります。これはつまり、S32K344ではRMIIがサポートされていないということでしょうか? 2. EMACの場合、MIIインターフェースを使用する場合、参照クロックは100 Mbpsイーサネットで25 MHz、10 Mbpsイーサネットで2.5 MHzです。これは、MIIインターフェースで100Mbpsのイーサネットを使いたい場合、標準のプラスパッドを使うべきだということですか? 3. LPSPIについて、LPSPIが標準および標準のプラスパッドで確実にサポートするLPSPI0およびLPSPI1-5の最大レートを提供できますか? ありがとうございます プーヤ Re: Pad Types for LPSPI0 and EMAC こんにちは、 1-2) EMACにおいて、パッドスイッチング周波数の制限は主にMCUで駆動される信号に関係します。 RMII/MIIはS32K344で完全にサポートされています。 RMIIの場合、50 MHzの REF_CLK 信号と RX 信号は MCU への入力なので、MCU 出力スイッチングの観点からは Standard または Standard Plus パッド上に問題はありません。重要な信号はTXD[1:0]とTX_ENであり、これらは50 MHz RMIIクロックで切り替わるMCU出力です。これらは、推奨されるピン使用方法に従って、中速またはできれば高速のパッドに割り当てる必要があります。   MII 100 Mbpsの場合、MCUの送信信号は25 MHzのMIIクロックに切り替わるため、これらの出力には標準プラスパッドが一般的に使えます。ただし、より良いマージンのためにミディアムパッドの使用が推奨されます。TX/RXクロックやその他の受信側信号は入力であるため、パッド出力のスイッチング周波数制限は主な懸念事項ではありません。 RMに添付されたIOMUXファイル「S32K34x_Ethernet Use Cases」シートをご確認ください。そこには推奨されるイーサネットパッドの使用方法が記載されています。 3) デバイスRMおよびDSによると、使用するピンに関係なくすべてのSPIインスタンスで10MHzですが、LPSPI0では特定のピンやモードに応じて15MHzまたは20MHzになることがあります(表表48参照)。LPSPI0 20 MHz および 15 MHz DS の組み合わせ。 BR、ペトル Re: Pad Types for LPSPI0 and EMAC こんにちは、 ご返信ありがとうございます。 1-2) S32K344-WBでは、S32K344プロセッサがRMIIインターフェースを使ってイーサネット・スイッチに接続されています。ただし、選択されたTX_EN、TXD0、TXD1ピンはすべて標準プラスパッド(R3、U2、U3)上にあります。RMIIの基準クロックは50MHzなので、MCU出力のスイッチング周波数は標準のプラスパッドを使うべきなので、問題になりませんか? 3) LPSPI用のクロックは10 MHzですが、コントローラーモードでLPSPI出力に標準パッドを割り当てた場合、LPSPIは常に安定して動作しますか?あるいは、境界線上にいるのだから、信頼性の高い通信のために標準的なパッドを割り当てるべきだろうか? 一般的に、パッドの種類の周波数制限について、そしてなぜプロセッサの観点から出力信号にのみ重要なのか、もう少し詳しく説明していただけますか? ありがとうございます プーヤ
查看全文
Scribehow Viewer https://scribehow.com/o/HJxvcW4YSG-OyAaj5IZiaw/viewer/Rhino_Gold_Gel_Fur_Mannliche_Intimitat_Und_Leistung__qvnKuoGRQxmqFoPsspBHlQ
查看全文
Top 10 Ways To Get Free Adopt Me Pets Instantly in 2026 If you play Roblox's Adopt Me, you already know how exciting it is to collect rare, legendary, and ultra-rare pets. From dragons and unicorns to unique event pets, building a strong pet collection is one of the most enjoyable parts of the game. However, not everyone wants to spend Robux to expand their inventory. The good news is that there are several legitimate ways to get free Adopt Me pets without spending real money. ➤➤ Click Here To   In this guide, we'll explore the top 10 ways to get free Adopt Me pets and help you grow your collection safely and efficiently. 1. Complete Daily Login Rewards One of the easiest ways to earn free Adopt Me pets is by logging into the game every day. Adopt Me rewards active players with daily streak bonuses, including Bucks, items, and occasional opportunities to obtain eggs. The longer you maintain your login streak, the more rewards you receive. Consistency is key, and over time these rewards can help you purchase eggs that hatch into valuable pets. 2. Hatch Free Eggs Eggs are the primary source of pets in Adopt Me. Players can purchase various eggs using Bucks earned through gameplay. Some of the most popular options include the Cracked Egg, Pet Egg, and Royal Egg. By participating in daily activities and saving your Bucks, you can continuously purchase eggs without spending Robux. Every egg gives you a chance to hatch rare and legendary pets for free. 3. Participate in Seasonal Events Adopt Me frequently hosts special events during holidays and major celebrations. These events often introduce limited-time pets that can be earned through gameplay challenges rather than purchased with Robux. Halloween, Christmas, Easter, and Summer events are especially popular among players looking for free Adopt Me pets. Completing event tasks and collecting event currencies can unlock exclusive pets before the event ends. 4. Trade Smart with Other Players Trading is one of the best ways to expand your pet collection. Even if you don't have legendary pets, you can work your way up by trading common and uncommon pets strategically. Look for players who are willing to exchange duplicate pets or who need specific items you own. Over time, smart trading can help you obtain pets that would otherwise be difficult to acquire. Always use the official in-game trading system and avoid scams promising free pets outside the game. 5. Complete Tasks and Earn Bucks Adopt Me offers numerous activities that reward players with Bucks. Feeding pets, attending school, camping, showering, and completing other daily tasks generate income that can be used to buy eggs. The more active you are, the faster you'll accumulate Bucks. Many experienced players earn thousands of Bucks simply by completing tasks regularly, allowing them to hatch multiple eggs every week. 6. Join Giveaways Many Adopt Me content creators host giveaways on platforms like YouTube, Discord, and social media. These giveaways often feature legendary pets, rare eggs, and valuable items. Before entering any giveaway, verify that it is hosted by a reputable creator. Legitimate giveaways never require your password or account information. Participating in trusted giveaways can be an excellent way to get free Adopt Me pets. 7. Level Up and Age Your Pets Players often value fully grown pets more highly than newborn pets. By investing time into aging your pets through tasks, you can increase their trading value significantly. A fully grown pet may be worth multiple younger pets in a trade. This strategy allows you to turn common pets into better opportunities and eventually acquire rarer pets without spending Robux. 8. Join Active Adopt Me Communities Adopt Me communities can be valuable resources for players looking for free pets. Roblox groups, Discord servers, and social media communities often organize trading events, contests, and community giveaways. Active communities also provide helpful advice about market values, upcoming events, and safe trading practices. Being involved in these communities can lead to opportunities you might otherwise miss. 9. Take Advantage of New Updates Every major Adopt Me update introduces fresh content and opportunities. New eggs, pets, events, and gameplay features often make it easier for active players to earn valuable rewards. Pay attention to update announcements and participate as soon as new content becomes available. Early participation can sometimes help you obtain pets before they become rare and highly sought after. 10. Use Pet Management Strategies Managing your pets effectively can increase your chances of obtaining better pets over time. Focus on growing multiple pets simultaneously, completing tasks efficiently, and saving Bucks whenever possible. Many successful players use alternate strategies such as caring for several pets at once or combining family gameplay features to maximize earnings. Better resource management leads to more eggs, more hatches, and ultimately more free pets. Tips for Avoiding Free Pet Scams While searching for free Adopt Me pets, you'll likely encounter websites, videos, or individuals claiming to offer instant legendary pets. Be cautious and follow these safety tips: Never share your Roblox password. Avoid websites claiming to generate free pets. Use only the official Adopt Me trading system. Verify giveaway hosts before participating. Enable two-factor authentication on your Roblox account. Remember that legitimate free pets come through gameplay, trading, events, and trusted community activities. Conclusion Getting free Adopt Me pets doesn't require spending Robux. By logging in daily, completing tasks, participating in events, hatching eggs, joining giveaways, and trading wisely, you can steadily build an impressive collection of pets. The most successful players combine several of these methods and remain active in the game. Over time, patience and consistency can help you unlock rare, ultra-rare, and even legendary pets without spending real money. Whether you're a beginner looking for your first pet or a veteran aiming to expand your collection, these top 10 ways to get free Adopt Me pets will help you enjoy everything Adopt Me has to offer while keeping your wallet untouched.
查看全文
S32K314 UART 最近、S32K314シリアルポートのデバッグ中に問題が発生しました。以前はGD32/STM32プラットフォームを使用しており、シリアルポートをリアルタイム印刷に使用する場合、アプリケーション層で印刷文字を処理し、割り込みを介して送信するために基盤となる書き込み関数を呼び出していました。 このデータはデータレジスタに直接書き込まれ、すぐに送信されます。そのため、キューがありデータ転送が高速なので、アプリケーション層が大量のデータを受信しても慌てる必要はありません。しかし、S32K3 を使用すると、ネストされたレイヤーがあるため、非同期送信関数 `Lpuart_Uart_Ip_AsyncSend` が比較的遅いことがわかりました。相対的に言えば、同じバイト数のプリントデータの場合、S32K3 は GD32 よりもはるかに遅いです。AI は解決策を提供します。 アプリケーション層では、書き込みごとの処理方式から、大きなバッファを使用して下位層に書き込む方式に変更されます。そして、下位層の書き込み関数と割り込みは、以下のように処理されます。 この方法は確かに速度を向上させますが、大量のRAMを必要とします。容量と効率の両面でより優れた方法はありますか? Re: S32K314 UART MCUレベルでのOSを使っていますか?それともベアメタルだけですか? Re: S32K314 UART 使用されているオペレーティングシステム Re: S32K314 UART こんにちは@Joker_Y 可能であれば、レジスタを使用してLPUART送信を直接実装してみてください。 Re: S32K314 UART 具体的な手順の例を教えていただけますか?
查看全文
Pad Types for LPSPI0 and EMAC Hi, According to the S32K344 technical reference manual, there are 4 pads types that support maximum switching frequency as follow: - Standard: 10 MHz - Standard Plus: 25 MHz - Medium: 50 MHz - Fast: 120 MHz I am trying to understand what limitation the selection of the standard and standard plus pads introduce to the LPSPI and EMAC peripheral. 1. For EMAC, when RMII interface is used, the reference clock is 50 MHz. That means the RX/TXCLK, TXD0, TXD1, RXD0, and RXD1 pins should support 50 MHz signals. However in S32K344_257bga pin configuration, All RX/TXCLK, TXD0, TXD1, RXD0, and RXD1 pins are either on standard pads or standard plus pads. Does this means that RMII is not supported for S32K344? 2. For EMAC, when MII interface is used, the reference clock is 25 MHz for 100 Mbps Ethernet and 2.5 MHz for 10 Mbps Ethernet. Does this mean if we want to have 100Mbps ethernet using MII interface, the standard plus pads should be used? 3. For LPSPI, can you provide the LPSPI0 and LPSPI1-5 maximum rate that LPSPI support Reliably on standard and standard plus pads? Thanks, Pouya Re: Pad Types for LPSPI0 and EMAC Hi, 1-2) For EMAC, the pad switching-frequency limitation is mainly relevant for signals driven by the MCU. RMII/MII is fully supported on S32K344. For RMII, the 50 MHz REF_CLK and RX signals are inputs to the MCU, so there is no issue if these are on Standard / Standard Plus pads from the MCU output switching point of view. The critical signals are TXD[1:0] and TX_EN, as they are MCU outputs switching with the 50 MHz RMII clock. These should be assigned to Medium or preferably Fast pads, according to the recommended pin usage.   For MII 100 Mbps, the MCU transmit signals switch with the 25 MHz MII clock, so Standard Plus pads are generally feasible for these outputs; however, Medium pads are recommended for better margin. TX/RX clocks and other receive-side signals are inputs, so the pad output switching-frequency limitation is not the primary concern there. Please check the IOMUX file attached to the RM, sheet “S32K34x_Ethernet Use cases”, which lists the recommended Ethernet pad usage. 3) As per the device RM and DS it is 10MHz in all SPI instances regardless of pin used, while on LPSPI0 it can be 15 or 20Mhz for specific pins used and mode, see table Table 48. LPSPI0 20 MHz and 15 MHz Combinations of the DS.   BR, Petr Re: Pad Types for LPSPI0 and EMAC Hi, Thank you for your response. 1-2) In S32K344-WB, the S32K344 processor is connected to the Ethernet Switch using RMII interface. However, TX_EN, TXD0 and TXD1 pins selected are all on standard plus pads (R3, U2 and U3).  Wouldn't that cause an issue since for RMII the reference clock is 50 MHz and hence the switching frequency of MCU output should be 50 MHz while standard plus pads are used? 3) I have a 10 MHz clock for LPSPI, would LPSPI still work reliably all the time if I assign standard pads for LPSPI output in controller mode? Or since I am at the boundary I should assign standard pads for reliable communication? In general, can you please explain more about the pad types frequency limitation and why they are only important for output signals from the processor point of view? Thanks, Pouya
查看全文
Scribehow Viewer https://scribehow.com/o/HJxvcW4YSG-OyAaj5IZiaw/viewer/Rhino_Gold_Gel_Fur_Mannliche_Intimitat_Und_Leistung__qvnKuoGRQxmqFoPsspBHlQ
查看全文
LPSPI0 和 EMAC 的焊盘类型 您好, 根据S32K344技术参考手册,支持最大开关频率的焊盘类型有4种,如下所示: - 标准:10 MHz - 标准增强版:25 MHz - 中频:50 MHz - 高速:120 MHz 我正在尝试了解选择标准焊盘和标准加强焊盘会对 LPSPI 和 EMAC 外设造成哪些限制。 1.对于 EMAC,当使用 RMII 接口时,参考时钟为 50 MHz。这意味着 RX/TXCLK、TXD0、TXD1、RXD0 和 RXD1 引脚应支持 50 MHz 信号。然而,在 S32K344_257bga 引脚配置中,所有 RX/TXCLK、TXD0、TXD1、RXD0 和 RXD1 引脚要么位于标准焊盘上,要么位于标准加焊盘上。这是否意味着 S32K344 不支持 RMII? 2. 对于 EMAC,当使用 MII 接口时,100 Mbps 以太网的参考时钟为 25 MHz,10 Mbps 以太网的参考时钟为 2.5 MHz。这是否意味着,如果我们想使用 MII 接口实现 100Mbps 以太网,就应该使用标准加型焊盘? 3. 对于 LPSPI,能否提供 LPSPI0 和 LPSPI1-5 在标准焊盘和标准加强型焊盘上可靠支持的最大速率? 谢谢! 普亚 Re: Pad Types for LPSPI0 and EMAC 您好, 1-2)对于EMAC而言,焊盘切换频率限制主要与MCU驱动的信号相关。S32K344完全支持RMII/MII。 对于 RMII 而言,50 MHz REF_CLK 和 RX 信号是 MCU 的输入,因此从 MCU 输出切换的角度来看,如果这些信号位于标准/标准加强焊盘上,则不会有问题。关键信号是 TXD[1:0] 和 TX_EN,因为它们是 MCU 输出,与 50 MHz RMII 时钟同步切换。根据推荐的引脚使用方式,这些引脚应分配到中等或最好是快速焊盘上。   对于 MII 100 Mbps,MCU 发送信号与 25 MHz MII 时钟同步切换,因此对于这些输出,标准加强型焊盘通常是可行的;但是,为了获得更好的裕量,建议使用中型焊盘。TX/RX 时钟和其他接收端信号都是输入,因此焊盘输出开关频率限制并不是主要考虑因素。 请查看 RM 附件中的 IOMUX 文件“S32K34x_以太网用例”表格,其中列出了推荐的以太网焊盘使用方法。 3) 根据设备 RM 和 DS,无论使用哪个引脚,所有 SPI 实例的频率均为 10MHz;而对于 LPSPI0,对于使用的特定引脚和模式,频率可以是 15MHz 或 20MHz,请参阅表 48。LPSPI0 20 MHz 和 15 MHz DS 的组合。 BR,彼得 Re: Pad Types for LPSPI0 and EMAC 您好, 感谢您的反馈, 1-2) 在 S32K344-WB 中,S32K344 处理器通过 RMII 接口连接到以太网交换机。但是,选定的 TX_EN、TXD0 和 TXD1 引脚均位于标准加焊盘(R3、U2 和 U3)上。这难道不会造成问题吗?因为 RMII 的参考时钟是 50 MHz,因此 MCU 输出的开关频率应该是 50 MHz,而使用的是标准加焊盘? 3) 我有一个 10 MHz 的 LPSPI 时钟,如果我在控制器模式下将标准焊盘分配给 LPSPI 输出,LPSPI 还能一直可靠地工作吗?或者,既然我位于边界处,我应该分配标准垫片以确保可靠的通信吗? 一般来说,您能否详细解释一下焊盘类型的频率限制,以及为什么从处理器的角度来看,它们只对输出信号重要? 谢谢! 普亚
查看全文
ISP support for iMX95 FRDM Evaluation kit Hi Team, I am trying to port a Bayer sensor on the i.MX95 FRDM platform. Following the software setup guide below, I was able to connect and stream video using the NXP-supported OS08A20 camera module which was provided in the NXP website. Now, I would like to port and stream a different Bayer sensor. Is there any documentation available that explains: Where to obtain the libcamera source code and how to build it for the i.MX95 platform? How to generate ISP-specific YAML and configuration files for a new Bayer sensor? What camera driver parameters and controls are required to support a Bayer sensor on the i.MX95 FRDM platform? The complete software flow for integrating a new Bayer sensor with the NXP ISP pipeline? Can you please let me know at the earliest. Thanks Re: ISP support for iMX95 FRDM Evaluation kit Hello, Please refer to the following guide: https://www.nxp.com/docs/en/user-guide/UG10215.pdf Best regards/Saludos, Aldo.
查看全文
Debug application started by the MCUBOOT Dear Everyone, the board we use is IMXRT1176. I would like to debug my application which is started by mcuboot. I would like the debugger to flash a signed application and debug it afterwards. Let me show you what i did: 1. Original build produced me an app.elf 2. I converted an app.elf to app.bin and singed it with imgtool to create app_signed.bin 3. I used arm-none-eabi-objcopy to wrap app_signed.bin into app_signed.bin.elf 4. I used this lanuch.json configuration ``` { "type": "mcuxpresso-debug", "name": "Debug bootloader app", "request": "launch", "cwd": "${workspaceFolder}", "executable": " /app.elf", "isAttach": false, "probeType": "LinkServer", "stopAtSymbol": "main", "skipBuildBeforeDebug": true, "extraSymbolFiles": [     " /app.elf",     " /bootloader.elf", ], "postLaunchCommands": [     "load /app_signed.bin.elf 0x30100000" ], "gdbInitCommands": [    "set remotetimeout 600",     "set debug-file-directory",     "set non-stop off", ], "gdbServerConfigs": {     "linkserver": {          "device": "MIMXRT1176xxxxx:MIMXRT1170-EVKB",          "core": "cm7", }, "segger": {}, "pemicro": {} }, }, ``` It seems to work, meaning i can debug both bootloader and app, but it feels like a hack. What I don't like the most is that flash is written twice. Once for executable where we write unsigned binary and one for load where we write signed binary (which has the same core code obviously). Could you please tell me if i missed something obvious? Do you think there is a cleaner way to achieve that. Just as an info, I know how to attach to already flashed image, the process above is more about convenience to start debugging in one step, I mention this to express what my goal is. Thanks a lot in advance for any help and suggestions! Best Regards, Jakub Re: Debug application started by the MCUBOOT Hello @jslota13245, There are currently no defined steps that combine flashing and debugging a signed image into a single workflow, as these are typically handled as separate processes. In general, you would first flash the signed image onto the device and then attach the debugger afterwards. As a reference, you may find it helpful to review the "Running the demo" section of the ota_mcuboot_basic example, which demonstrates two different approaches for flashing a signed image that could be adapted to your setup. Additionally, the "Transferring data" to the flash memory section provides an overview of the available tools that can be used for the flashing process. On the other hand, could you please clarify the reason for converting the signed image into a .bin.elf file? Also, could you confirm if you followed a guide for this process? BR Habib Re: Debug application started by the MCUBOOT Hello Habib! thank you for the reply. To answer your question. I followed this guide for flashing multiple binaries at the start-up. We use mcuxpresso for vs-code instead of IDE but the premise should be the same: https://mcuoneclipse.com/2022/11/01/loading-multiple-binary-files-with-gdb/ The idea here is that the elf file has information to debug a signed binary, as signed binary is just a binary with header and trailer attached. If the .elf file was generated with this layout in mind it should work as intended.  For future reference, approach i suggested in my original post doesn't work too well as debugger gets stuck on non-existing 0x00000 breakpoints while the CPU is still running so i suspect no real crash has occurred. There is clearly some configuration/integration debugger problem here but I can't point exactly where. Did you encounter such behaviour by any chance? As for your suggested approach, I found this section: ``` programing signed application image to the primary application partition using an external tool (direct method) jump-starting the application by debugger, performing an image update with the signed image, resetting the board and letting the bootloader to perform the update (indirect method) The latter method is used in the following step-by-step description: Open the demo project and build it. Known issue: MDK linker issues warning about unused boot_hdr sections. This does not affect the functionality of the example. Prepare signed image of the application from raw binary as described in the readme of mcuboot_opensource SDK example. In case of MCUXpresso raw binary may not be generated automatically. Use binary tools after right clicking Binaries/.axf file in the project tree to generate it manually. Launch the debugger in your IDE to jump-start the application. In case of MCUXpresso IDE the execution stalls in an endless loop in the bootloader. Pause the debugging and use debugger console and issue command jump ResetISR.  ``` But I'm a bit lost on what do i need to do with the extension for VS-code - I don't have ide backend unfortunately. Could you please help me by answering the questions below? Let's assume i do have a signed binary and original elf file with symbols.  1. How can debugger kick start signed image? 2. How can debugger kick start it without flashing it first? The point 1 explicitly states to flash it with some tool - i assume point 2 does something else?.  3. The debugger can't flash just base elf file as it'll be discarded by the mcuboot as it doesn't have mcuboot header and a trailer. 4. When point 2.3 states 'Launch the debugger in your IDE to jump-start the application' - does it mean the debugger flashes something? Or does it attach to already flashed image? Thanks in advance for your help and time 🙂 Best Regards, Jakub Re: Debug application started by the MCUBOOT Hello @jslota13245, When you mention "I don't have ide backend unfortunately" I understand this may refer to limited familiarity with the MCUXpresso extension for VS Code, is my understanding correct? If so, I recommend reviewing the chapter "Explore Extension" in the official documentation for the extension, as it provides a helpful overview of its features. Regarding your questions, when you start a debug session, the tool by default programs the generated image into flash and then attaches the debugger, which automatically jump to the main function. this is described in the "starting a debug sesion" section, inside this page you will find more information about the functionality of the debug in the extension.  I can also, suggest you review the chapter "debug a project" which shows the steps to debug your code. I highly recommend first validating and debugging your application without MCUboot or image signing and only introducing MCUboot once your application is fully tested. For make this process we strongly recommend using MCUxpresso Secure Provisioning Tool, which has the capabilities to manage security features such as key generation and image signing for MCUboot, which is why this is standard tool to handle applications just like this one. You can find more information about how sign image and flash your MCUboot in the chapter 7.6.2 " Steps to start MCUboot with such a processor manually"of the Secure Provisioning Tool User Guide 26.03. On the other hand, when integrating MCUboot, ensure that it is placed in a dedicated flash region that is not overwritten by other images, the mcuboot_opensource_cm7 example offers an alternative of how place each image:   | Region         | From       | To         | Size   | |----------------|------------|------------|--------| | MCUboot code   | 0x30000000 | 0x3003FFFF | 256kB  | | Primary slot   | 0x30040000 | 0x3023FFFF | 2048kB | | Secondary slot | 0x30240000 | 0x3043FFFF | 2048kB | You should first program the MCUboot image into its dedicated flash region, and then place the signed application image into the primary or secondary slot. The MCUXpresso Secure Provisioning Tool can facilitate this process by handling both, program the bootloader and program the image within a single workflow, as described in section 7.6.2 of the user guide I previously shared. BR Habib
查看全文
T1024 RESET_REQ 无故注册 您好,我们最近几个月在使用T1024 CPU时遇到了一些问题。 先感谢您。 问题描述: 我们的工业PLC内部使用了T1024NSE7KQA CPU。 直到去年我们还在使用 MQX OS(单核实现),然后我们用 SDKLINUX 将其移植到双核 Linux 实现(该操作系统大部分是由第三方实现的)。 硬件在物理上与之前的MQX操作系统版本相同。 所有单元在 Linux 启动期间都出现问题:MCU 卡住(MCU 本身发出 RESET_REQ_B 信号)。 该事件并非确定性的:只有 10% 的启动周期会受到影响,但它总是发生在操作系统启动的同一阶段。 我们通过周期性的启动/关机序列重现了该问题。 如果事件发生在开机后,则总是在硬件启动/初始化后约 40 秒,操作系统启动完成后 5-8 秒发生(由于操作系统进程调度略有变化,从启动到事件发生的时间略有变化)。 否则,该事件将不会再次出现,我们需要等待几次断电重启才能再次发生。 RCW 正确,PBL 阶段正确完成。 事件发生前,我们用示波器检查了 O1VDD、OVDD、G1VDD、VDD、VDDC 电源轨电压,结果显示电压稳定,且在 CPU 容差范围内。 事件期间,我们测量到 RESET_REQ_B:H->L 转换。 我们中断了 RESET_REQ_B 与板载电路之间的任何板载连接(这样 RESET_REQ_B 就不会强制 HRESET_B 或 PORESET_B 发生转换),以便在同一启动周期或下一个启动周期中读取 DCFG_CCSR_RSTRQSR1 寄存器,但结果始终为0x0值。我们确信CPU内部正在请求RESET,但我们找不到原因。 我们已将操作系统日志的详细程度设置为最高,但在问题启动事件发生之前,我们并未发现任何异常(与正常启动相比):没有内核消息,没有进程消息,没有异常,…… 我们正在通过 UART 定期记录 DCFG_CCSR_RSTRQSR1 寄存器:事件发生后,CPU 无法再写入任何内容。 我们尝试屏蔽所有RESET原因(将 DCFG_CCSR_RSTRQMR1 的所有非保留位设置为 1),但问题仍然存在。 问题: • 是否存在未映射到 DCFG_CCSR_RSTRQSR1 的 RESET_REQ_B 原因?我提醒一下,我们已经屏蔽了 DCFG_CCSR_RSTRQMR1 中的所有非保留位,但没有成功; • 我们如何才能深入了解是哪个 CPU 机制请求了 RESET_REQ_B? • CPU 是否可能进入低功耗电源管理单元状态,从而发出 RESET_REQ_B 信号? 谢谢你的解释。 贾科莫·加斯帕里尼。 Re: T1024 RESET_REQ without any cause registered 顺便问一下,我无法访问我的官方账号:请问你们处理这类问题的参考邮箱地址是什么?谢谢 Re: T1024 RESET_REQ without any cause registered 你好, 关于你提出的三个问题: 1) 是否 存在 未 映射 到 DCFG_CCSR_RSTRQSR1 的 RESET_REQ_B 原因 ? 是的: CPU/核心 看门狗 定时器 复位请求 原因 未 映射 到 RSTRQSR1 ; 当 配置 为 看门狗 复位 请求 模式 时 , 它们 会 在 DCFG_CCSR_RSTRQWDTSR 中 捕获 。T1024 RM 明确 指出 RSTRQSR1 不包括 核心 看门狗 定时器 源, 而 RSTRQSR1 是 专用 RSTRQWDTSR 看门狗 状态 寄存器 。 对于记录在案的非看门狗原因, RSTRQSR1 至少包括: IFC_RR 、 WDT_RR (摘要,指示RSTRQWDTSR中至少设置了一个看门狗位 )、 SW_RR 、 CCM_RR 、 PBL_RR 、 SFP_RR 、 SEC_RR 、 SDC_RR 、 MBEE_RR 、 RPTOE_RR 和SRDS_RST_RR SRDS_RST_RR 2 ) 如何 才能 进一步 挖掘 ? 下一步 最 有用的 方法 是 在 同 一个 失败 的 启动 周期 中 捕获 更 广泛的 RESET 快照 , 而 不仅仅是 RSTRQSR1 。在 之前的 T1024 支持 案例 中 , 推荐 的 寄存器 集 为: DCFG_CCSR_RSTCR 、 DCFG_CCSR_RSTRQPBLSR 、 DCFG_CCSR_RSTRQMR1 、 DCFG_CCSR_RSTRQSR1 、 DCFG_CCSR_RSTRQWDTMR 和 DCFG_CCSR_RSTRQWDTSR 。 根据 您的 症状 出现 时间——Linux 系统 完全 启动 后 , 大约 5-8 秒 后 出现 故障 —— 可能 需要 注意 的 字段 是 : RSTRQWDTSR 用于线程监视程序过期详情 如果 软件 直接 或 通过 某种 复位 路径 写入 DCFG_CCSR_RSTCR[RESET_REQ] (位 30) , 则 RSTRQSR1[SW_RR] 值会 发生变化 。 RSTRQSR1[RPTOE_RR] 表示 与 核心 停止/复位 请求 处理 相关 的 RCPM 超时 复位 请求 事件 RSTRQSR1[MBEE_RR] 用于平台内部存储器多位ECC RSTRQSR1[SRDS_RST_RR] 表示已启用SerDes PLL未锁定 一些基于源代码的调试观察: RESET_REQ_B 可以 在 任何 时候 被钳位 , 并且 一旦 被钳位, 它将 一直保持 钳位状态, 直到 PORESET_B 被 钳位为止。 设计 清单 建议 保留 一个 选项 ,可以 将 RESET_REQ_B 与 PORESET_B 或 HRESET_B 断开 , 专门 用于 调试/RCW 覆盖 场景, 因为 否则 反复的 复位 循环 会妨碍 诊断。 NXP 在 类似 情况 下 提供的支持 指南 指出, 在 发生 灾难性的 内部 事件 后, CPLD 通常 不是 RSTRQSR1 的 实用 记录 器 ; 使用调试器 读取 复位 寄存器 , 同时 尽量 减少 SoC 的 参与, 则被 认为 更 实用 。 根据 我 找到 的 文档 , 最 直接的 调试 方法 是 : 在调试期间 , 防止 RESET_REQ_B 导致 立即 触发 POR 路径 。 捕获 RSTRQSR1 和 RSTRQWDTSR , 以及 RSTCR 、 RSTRQPBLSR 和 掩码 寄存器 。 RSTRQSR1 如果 可能, 在 RESET_REQ_B 置位 后 但 在 任何 外部 复位 传播 之前 , 立即 使用 JTAG 停止 。 3) CPU 是否可能 进入 低 功耗 状态 , 从而 发出 RESET_REQ_B 信号 ? 对于 标准 的 T1024 电源管理单元 状态 ——PH10/doze、 RESET_REQ_B /nap、 LPM20/sleep—— 检索到的 T1024 文档 并未 将 进入 这些 状态 描述 为 RESET_REQ_B 的 原因 。这些 模式 通过 RCPM 控制 进入 ,并 通过 唤醒 事件、 中断、 硬 RESET 或 其他 已记录的 唤醒 机制 退出 。 深度 睡眠 有所 不同: 在 深度 睡眠 唤醒 时 , EPU 有限状态 机 在 退出期间 明确 请求 热 设备 RESET ( Exit.2 : XTRIG[ 9 Exit.2: XTRIG[9]: Request warm device reset )。 此外, 白皮书 中的 Linux 挂起/深度睡眠 流程 指出, EPU 在 启动 代码 恢复 之前 , 会 在 深度睡眠 唤醒 过程 中 发出 设备 热 复位 指令 。 然而, 这 是 一种 深度睡眠 恢复 机制 , 而不是 在 正常 运行时进入 PH10 /PH15/LPM20 的 正常 结果 。   此致问候 Re: T1024 RESET_REQ without any cause registered 首先,非常感谢您的详细且迅速的回复! 1)根据您的回复,我们也尝试使用 DCFG_CCSR_RSTRQWDTSR 寄存器值 0x3 来掩盖看门狗复位的原因,但问题仍然存在。 2) 我们使用 CodeWarrior TAP 通过 JTAG 读取了寄存器。事件发生后,我们立即发出“暂停”命令,并读取了以下寄存器值: 原因似乎是软件RESET(DCFG_CCSR_RSTRQSR1[SW_RR]=1)。 这与 RESET_REQ_B 的这种原因无法通过 DCFG_CCSR_RSTRQMR1 寄存器屏蔽这一事实相符;这就是问题反复出现的原因…… 我们正在调查此次 RESET 的原因。 3) 在我最初的问题中,因果关系颠倒了:CPU 是否可能进入低功耗状态,然后导致 RESET_REQ_B 断言? 如果您能帮忙,我最后还要补充一个相关问题,是关于今天我们进行的 CPU 寄存器读取试验中 CPU 到 JTAG TAP 的连接问题: 将 CodeWarrior TAP 连接到 CPU 后,向 CodeWarrior 发出 Suspend 命令,但只有 1 次我们能够读取 CPU 寄存器;其他每次尝试都会出现此错误(见图),并且与 CPU 失去连接。 这是 CodeWarrior 的配置问题吗?我们该如何解决这个问题? 再次感谢。 贾科莫。
查看全文
i.MXRT1176: 外部SRAMへのアクセスに関する質問 こんにちは、 外部のSRAMにアクセスするのに問題が発生しています。SRAMはCSX1(パッドL14 – GPIO_AD_26)を介して選択されますが、私のテストプログラムは常にメモリ管理フォルトを引き起こします。私のコードのどこが間違っていたのでしょうか?ご協力ありがとうございます。 /* * 著作権 2017 NXP * 無断転載を禁じます。 * * SPDX-License-Identifier: BSD-3-Claise */ #include "board.h" #include "fsl_debug_console.h" #include "fsl_device_registers.h" #include "pin_mux.h" #include "fsl_semc.h" #include "clock_config.h" /**** * 定義 **********************************************************************************/ #define EXAMPLE_SEMC SEMC #define EXAMPLE_SEMC_CLK_FREQ CLOCK_GetRootClockFreq(kCLOCK_Root_Semc) /**** * プロトタイプ **********************************************************************************/ extern status_t BOARD_InitSRAM ( void ) ; /**** * 変数 **********************************************************************************/ /**** * コード **********************************************************************************/ #define SRAM_BASE 0x60000000 //#define SRAM_BASE 0x81000000 status_t BOARD_InitAsyncSRAM_CS1 ( void ) { semc_config_t設定; semc_sram_config_t xsram_config ; uint32_t clockFrq = kCLOCK_Root_Semc ; SEMC_GetDefaultConfig ( & config ) ; config.dqsMode = kSEMC_Loopbackdqspad ;​​ SEMC_Init ( SEMC , & config ) ; memset ( & config , 0 , sizeof ( semc_config_t )) ; memset ( & xsram_config , 0 , sizeof ( semc_sram_config_t )) ; xsram_config.address = 0x60000000 ;​​ xsram_config . memsize_kbytes= 512 ; xsram_config . addrPortWidth= 16 ; xsram_config 。 portSize = kSEMC_PortSize16Bit ; xsram_config.addrMode = kSEMC_AddrDataNonMux ;​​ xsram_config.syncMode = kSEMC_AsyncMode ;​​ xsram_config . advActivePolarity= kSEMC_AdvActiveLow ; xsram_config . advLevelCtrl= kSEMC_AdvLow ; xsram_config.burstLen = kSEMC_Nor_BurstLen1 ;​​ xsram_config . tWeLow_Ns= 25 ; xsram_config . tWeHigh_Ns= 25 ; xsram_config . tReLow_Ns= 25 ; xsram_config . tReHigh_Ns= 25 ; xsram_config . tTurnAround_Ns= 10 ; xsram_config.cePinMux = kSEMC_MUXCSX1 ;​​ xsram_config.waitEnable = true ;​​ xsram_config.waitSample = true ;​​ xsram_config . tCeSetup_Ns= 25 ; xsram_config . tCeHold_Ns= 20 ; xsram_config . tAddrSetup_Ns= 25 ; xsram_config . tAddrHold_Ns= 25 ; xsram_config . tWriteSetup_Ns= 25 ; xsram_config . tWriteHold_Ns= 25 ; xsram_config.readCycle = 30 ;​​ xsram_config . readHoldTime_Ns= 25 ; xsram_config . tCeInterval_Ns= 25 ; xsram_config . tAddr2WriteHold_Ns= 25 ; xsram_config.latencyCount​​= 3 ; xsram_config.delayChain = 25 ;​​ xsram_config.addr27 = kSEMC_MORA27_NONE ;​​ SEMC -> IOCR |= 0x00908BB6 ; // SEMC->IOCR |= 0x08; return SEMC_ConfigureSRAMWithChipSelection ( SEMC , kSEMC_SRAM_CS1 , & xsram_config , clockFrq ) ; } /*! * @brief メイン機能 */ int main ( void ) { /* ハードウェア初期化。*/ BOARD_ConfigMPU () ; BOARD_InitPins () ; BOARD_BootClockRUN () ; BOARD_InitDebugConsole () ; BOARD_InitAsyncSRAM_CS1 () ; SEMC -> IOCR |= SEMC_IOCR_MUX_CSX1 ( 0x08 ) ; PRINTF ( "\r\n SEMC SRAM MSpec を WAIT 書き込みテストで開始します。\r\n" ) ; PRINTF ( "CCM_OBS_SEMC_CLK_ROOT: %d\r\n" , CLOCK_GetFreqFromObs ( CCM_OBS_SEMC_CLK_ROOT )) ; ////////////////////////////////////////////////////////////////////////////////////////////// volatile uint16_t * sram_ptr = ( volatile uint16_t * ) 0x60000000 ; uint16_t i = 0 ; * sram_ptr = 0 ; for ( i = 0 ; i <= 10 ; i ++ ) { * sram_ptr = i ; } for ( i = 0 ; i <= 10 ; i ++ ) { PRINTF ( "\r\n sram = %d \r\n" , sram_ptr ) ; } } Re: i.MXRT1176: Question about accessing an external SRAM こんにちは、 @RainerHL さん。 私たちの製品にご関心を寄せ、コミュニティをご利用いただき、本当にありがとうございます。 1: あなたのコードはCSX1/CS1上でSEMC SRAMを設定していますが、テストは0x60000000にアクセスしており、これはRT1170の有効なSEMC SRAMマッピング i.MX ありません。これがメモリ管理障害の主な原因です。 0x60000000の代わりに、設定済みのCSX1デバイスに対応するSEMC SRAMベースアドレスウィンドウを使用してください。 2: 手動IOCR書き込み。リファレンス・マニュアルにはIOCR構成は静的であるべきと書かれていますが、動的再マッピングはサポートされていません。 3:プロジェクト内のMPU構成を確認してください。 4:PRINTF("\r\n sram = %d \r\n", sram_ptr); これはポインタ値を表示するものであり、SRAMデータを表示するものではありません。例えば sram_ptr のようなポインタを逆参照する必要があるが、それが MemoryManage の障害の原因ではない。 お役に立てれば幸いです。 よろしくお願いいたします。 5月
查看全文
RT1176 LVGL + VGLITE:字体渲染错误 我正在尝试将 VGLITE 应用于我的代码中,该代码基于 RT1176 上的 LVGL。我正在运行演示基准测试。 当我设置时: #define LV_USE_DRAW_SW 1 #define LV_USE_DRAW_VGLITE 0 渲染效果很好。 当我启用 VGLITE 时 #define LV_USE_DRAW_SW 0 #define LV_USE_DRAW_VGLITE 1 字母被破坏了,它们看起来像是外星字体,即使在某些帧中它们被正确渲染。启用 VGLITE 后,演示程序会在场景 14 卡住。 我应该从哪里开始调查? Re: RT1176 LVGL + VGLITE: Bad font rendering 嘿@P3r3gr1nus ,我启用 vglite 时也遇到了同样的问题(文本渲染错误),请问您是否已经解决了这个问题? Re: RT1176 LVGL + VGLITE: Bad font rendering 你好@EdwinHz ,我发现问题与字符串中的字符数有关。我按顺序展示: 字符串 123 字符串 1234 字符串 12345 字符串 123456 字符串 1234567 字符串 12345678 字符串 123456789 字符串 1234567890 恰好从“String 12345”到“String 12345678”的字符串损坏了(字体异常),其他字符串都正常。该序列会重复出现,且行为是确定性的。当我将字体大小从lv_font_montserrat_14 更改为 lv_font_montserrat_12 时,也会出现同样的问题。 此时,了解 LVGL9 + VGLITE 是否已经过验证对我来说应该很有用。 Re: RT1176 LVGL + VGLITE: Bad font rendering 这里有一个关于这个问题的简短视频。似乎只影响文本。即使过了一会儿演示画面卡住了。 Re: RT1176 LVGL + VGLITE: Bad font rendering 你好@EdwinHz , 是的,如果我按照您的建议,在 conf.h 文件中禁用 VGLITE: LV_USE_DRAW_VGLITE 0 LV_USE_DRAW_SW 1 一切都很好。 然而,我的目标是启用 VGLITE GPU 加速。我使用了 demo_benckmark 作为参考,但最终目标将是我的应用程序。 此外,我没有使用 RGB888,而是使用了 LV_COLOR_DEPTH 16 缓冲区设置为 RGB565。 我忘了提一下,我的项目是基于 RT1176 的,我使用的是 FREERTOS。 你认为VGLITE有可能与LVGL一起使用吗? Re: RT1176 LVGL + VGLITE: Bad font rendering 嗨@P3r3gr1nus , 如“lvgl_examples_readme.md”中所述文件: “ GPU 和 PXP 不支持 8 位,请取消选中 `LV_USE_DRAW_VGLITE` 和 `LV_USE_PXP`。 在 Kconfig 中,或者像这样修改 mcux_config.h: ``` #define CONFIG_LV_USE_DRAW_VGLITE 0 #define CONFIG_LV_USE_PXP 0 #define CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE 1 #define CONFIG_LV_DRAW_SW_DRAW_UNIT_CNT 1 ” BR, 埃德温。 Re: RT1176 LVGL + VGLITE: Bad font rendering 你好@HasanIqbalKhan , 不,最后我禁用了 VGLITE。即使是成绩的提升也没有预期的那么好。
查看全文
MCUXpresso IDE v25.6:CMSISパックのインストール/パックのインポートオプションはどこにありますか? 私はMIMXRT1064-EVK上でMCUXpresso IDE v25.6を使っていて、IDEにCMSISパック(.packファイル)をインストールしようとしています。 Open-CMSIS-Packsのドキュメントには「ディスクからパックをインポートする」オプション付きのCMSISパックマネージャーが記載されていますが、私のインストールのどこにも見当たりません。おそらく、v25.xリリースでメニューが古い11.xのドキュメントと比べて変更されているのではないかと思います。 - ウィンドウ>「その他」で「cmsis」や「pack」を検索しても何も表示されません。 - ウィンドウ> Perspective > Open Perspective > Other(その他)にはCMSISパックマネージャが記載されていません。 - プロジェクト>右クリックのSDKマネジメントの下には、「SDK コンポーネントの管理」、「SDK コンポーネントの更新」、「SDKパーツサポートの追加」しか表示されず、Open-CMSISパックを追加するオプションはありません。 - .パックを引きずるインストール済みSDKビューに「Import SDK Git」ウィザードが開き、gitマニフェストフォルダを求めます。 MCUXpresso IDE v25.6のCMSISパックインストール/「ディスクからパックをインポート」オプションはどこにありますか?また、ローカルの.packをインストールする方法はどうやってですか?ファイルでそのコンポーネントを「Manage SDK Components」の下に表示させるのに? Re: MCUXpresso IDE v25.6: where is the CMSIS pack install / Import Packs option? こんにちは、 MCUXpresso IDE内でのOpen-CMSISパックのマネジメントサポートは、バージョン25.06で削除されました(MCUXpresso IDE 25.06リリースノート(RN00128)に記載されています。 一つの選択肢は、MIMXRT1064-EVK用のSDKを使うことです。CMSISドライバはすでに含まれており、プロジェクト作成時に追加できます。 よろしくお願いします、 パブロ
查看全文
IOLにおけるI2CラインのVOLは3mAです。 こんにちは、 こちらはアルムガムです。I2Cラインで考慮すべきVOLの最大電圧を教えていただけますか?0.7V @1mA または 3mA のどちらを考慮すべきでしょうか よろしくお願いします。 アルムガム Re: VOL for I2C lines at IOL 3mA こんにちは@Arumugam1982 I2CラインのVOL/VOHレベルは、パッド電源レールと、選択されたピン構成の対応する電気的仕様によって異なります。LPI2Cパッドはピンの多重接続やパッド割り当てに応じてVDD_HV_AまたはVDD_HV_Bから供給されるため、これはデバイスのIOMUX情報を用いて検証する必要があります。 データシートには、入力しきい値(VIH/VIL)がGPIOのDC電気特性表に直接定義されています。しかし、VOH/VOLは通常、IOHやIOLなどの出力駆動電流の状態を通じて間接的に定義されます。 実際には、特定の電流値(mA)を仮定するのではなく、選択したパッド構成に対応するIOH/IOLパラメータに関連付けられたVOH/VOL条件に依存することが推奨されるアプローチです。特定の電流値は、その電気特性に関するデータシートに明示的に定義されている場合にのみ使用すべきです。 BR、VaneB Re: VOL for I2C lines at IOL 3mA IOL(眼内レンズ)の場合、-1mA / 3mA / 8mA の電流値で同じ値を検討すべきでしょうか。WCAの計算にこの数値が必要です。 Re: VOL for I2C lines at IOL 3mA こんにちは、 表27のデータシートではどの記号を使用していますか(例:IOL_33_S)? よろしくお願いいたします。 ジョン
查看全文
MCUBOOTによって開始されたデバッグアプリケーション 皆様へ 私たちが使用しているボードはIMXRT1176です。 私は、mcubootで起動した自分のアプリケーションをデバッグしたいと思っています。デバッガに署名されたアプリケーションをフラッシュしてからデバッグさせたいです。私がやったことをお見せしましょう: 1. オリジナルビルドでapp.elfが生成されました 2. app.elfをapp.binに変換し、imgtoolで焼き付けてapp_signed.bin 3. arm-none-eabi-objcopyを使ってapp_signed.binをapp_signed.bin.elfにラップしました 4. このlanuch.json構成を使いました ``` ヤージュ "type": "mcuxpresso-debug", "名前": "デバッグブートローダーアプリ", 「リクエスト」: 「起動」 "cwd": " ${workspaceFolder} ", "実行可能ファイル": " /app.elf", 「isAttach」: false、 「プローブタイプ」: 「リンクサーバー」 "stopAtSymbol": "main", "skipBuildBeforeDebug": true、 「extraSymbolFiles」: [ " /app.elf", " /bootloader.elf", ], 「postLaunchCommands」: [ "load /app_signed.bin.elf 0x30100000" ], "gdbInitCommands": [ 「set remotetimeout 600」 「デバッグファイルディレクトリを設定」 「ノンストップでオフに設定」 ], "gdbServerConfigs": { "Linkserver": { 「device」:「MIMXRT1176xxxxx:MIMXRT1170-EVKB」、 「コア」:「CM7」 }, 「セッガー」: {}, 「ペミクロ」: {} }, }, ``` 動作しているようで、ブートローダーとアプリの両方をデバッグできるのですが、まるでハックのように感じます。 私が一番気に入らないのは、Flashが2回書かれていることです。実行用には署名なしバイナリを書き込み、ロード用には署名付きバイナリを書き込みます(コアコードは当然同じです)。 何か明らかな見落としがあったら教えていただけますか?それを実現するための、もっとクリーンな方法があると思いますか? 参考までに申し上げますが、既に書き込まれたイメージにアタッチする方法は知っています。上記の手順は、デバッグを1ステップで開始できるようにするための利便性に関するものであり、私の目的を説明するために述べました。 ご協力やご提案をいただければ幸いです。どうぞよろしくお願いいたします! よろしくお願いします、 ヤクブ Re: Debug application started by the MCUBOOT こんにちは、 @jslota13245 さん、 現在、署名済みイメージの書き込みとデバッグを単一のワークフローに統合する明確な手順は定義されていません。これらは通常、別々のプロセスとして処理されるためです。一般的には、まず署名済みのイメージをデバイスに書き込み、その後デバッガーを接続します。参考として、 ota_mcuboot_basic 例の「デモの実行」セクションを確認すると役立つかもしれません。ここでは署名画像をフラッシュする2つの異なる方法を示しており、あなたのセットアップに適応できます。さらに、「フラッシュメモリへのデータ転送」セクションでは、フラッシュ処理に使用できる利用可能なツールの概要が提供されています。 一方で、署名済み画像を.bin.elfファイルに変換する理由を教えていただけますか?また、このプロセスのガイドに従っていたかどうかも確認してもらえますか? BR ハビブ Re: Debug application started by the MCUBOOT こんにちは、ハビブ! ご返信ありがとうございます。 ご質問にお答えします。起動時に複数のバイナリを書き込むためのガイドに従いました。私たちはMCUXpresso for VS Codeの代わりにIDEsを使っていますが、前提は同じであるべきです: https://mcuoneclipse.com/2022/11/01/loading-multiple-binary-files-with-gdb/ ここでのアイデアは、elfファイルに署名済みバイナリをデバッグするための情報が含まれているというものです。署名済みバイナリはヘッダーとトレーラーが付随するバイナリに過ぎないからです。.elf ファイルがこのファイルはこのレイアウトを念頭に置いて生成されたものであり、意図どおりに動作するはずです。 今後の参考までに、私が元の投稿で提案した方法はあまりうまく機能しません。なぜなら、デバッガがCPUが稼働している間に存在しない0x00000ブレークポイントで止まってしまうからです。だから、実際のクラッシュは起きていないのではないかと疑っています。ここには明らかに設定や統合デバッガの問題がありますが、正確な原因を特定できません。あなたはもしかして、そのような行動に遭遇したことがありますか? ご提案いただいた方法についてですが、以下の箇所を見つけました。 「`」 外部ツール(ダイレクト方法)を用いて署名付きアプリケーションイメージをプライマリアプリケーションパーティションにプログラムする デバッガーでアプリケーションをジャンプスタートし、署名済みイメージでイメージ更新を行い、ボードをリセットしてブートローダーに更新を任せる(間接方法) 後者の方法は以下の段階的な説明で用いられています。 デモプロジェクトを開いてビルドしてください。既知の問題:MDKリンカーが未使用のboot_hdrセクションに関する警告を発します。これはサンプル機能には影響しません。 SDK例のリードミーに記載されているように、生のバイナリからアプリケーションの署名付きイメージ mcuboot_opensource 準備します。 MCUXpressoの場合、生バイナリは自動的に生成されないことがあります。Binaries/.axf を右クリックしてバイナリツールを使用してください。プロジェクトツリー内のファイルを選択して手動で生成します。 IDEでデバッガを起動してアプリケーションをジャンプスタートしてください。 MCUXpresso IDEの場合、ブートローダー内で実行が終わりのないループで停止します。デバッグを一時停止し、デバッガーコンソールを使用してコマンドjump ResetISRを実行します。 「`」 ただ、VS-codeの拡張機能で何をすればいいのか少し迷っています。残念ながらIDEバックエンドは持っていません。以下の質問に答えていただけると助かりますか? 署名済みのバイナリファイルと、シンボルを含むオリジナルのELFファイルを持っていると仮定しましょう。 1.デバッガーはどのようにして署名付きイメージをキックスタートできるのでしょうか? 2. デバッガはフラッシュせずにキックスタートさせるにはどうすればいいですか?1つ目の項目では、何らかのツールを使ってフラッシュするようにと明記されていますが、2つ目の項目は別のことをしているのでしょうか? 3. デバッガはbase elfファイルだけをフラッシュできません。mcubootヘッダーとトレーラーがないため、それはMCUbootによって破棄されます。 4. 2.3のポイントで「IDEでデバッガを起動してアプリケーションをジャンプスタートする」と書かれている場合、それはデバッガが何かをフラッシュしているという意味ですか?それとも、既に書き込まれたイメージに添付されるのでしょうか? ご協力と貴重なお時間をいただき、ありがとうございます。 🙂 よろしくお願いします、 ヤクブ Re: Debug application started by the MCUBOOT こんにちは、 @jslota13245 さん、 「残念ながらIDEバックエンドを持っていません」とおっしゃったのは、VS CodeのMCUXpresso拡張機能にあまり慣れていないことを指しているのかもしれませんが、私の理解で合っていますか?もしそうなら、公式ドキュメントの「拡張探索」章をよく確認することをお勧めします。そこには拡張機能の特徴がわかりやすく説明されています。 ご質問についてですが、デバッグセッションを開始すると、デフォルトではツールが生成されたイメージをフラッシュメモリに書き込み、その後デバッガを接続します。デバッガは自動的にメイン関数にジャンプします。この点については、「デバッグセッションの開始」セクションで説明されています。このページには、拡張機能のデバッグ機能に関する詳細情報が記載されています。また、「プロジェクトをデバッグする」という章を復習することをお勧めします。そこにはコードのデバッグ手順が示されています。 まずはMCUbootやイメージ署名なしでアプリケーションを検証・デバッグし、完全にテストが終わった後にMCUbootを導入することを強くおすすめします。このプロセスには、鍵生成やイメージ署名などのセキュリティ機能を管理する機能を備えたMCUxpresso Secure Provisioning Toolの使用を強くお勧めします。そのため、このようなアプリケーションを扱う標準ツールとなっています。MCUブートのサインイメージやフラッシュの方法については、7.6.2章で詳しく知ることができます「このようなプロセッサでMCUbootを手動で起動する手順」セキュアプロビジョニングツールユーザーガイド26.03の内容。 一方、MCUbootを統合する場合は、他のイメージによって上書きされない専用のフラッシュ領域に配置するようにしてください。mcuboot_opensource_cm7の例では、各イメージの配置方法の代替案が示されています。 | 地域 | 開始 | 終了 | サイズ | |----------------|------------|------------|--------| | MCUブートコード | 0x30000000 | 0x3003FFFF | 256kB | | プライマリスロット | 0x30040000 | 0x3023FFFF | 2048kB | | セカンダリ スロット | 0x30240000 | 0x3043FFFF | 2048kB | まずMCUブートイメージを専用のフラッシュ領域にプログラムし、署名付きアプリケーションイメージをプライマリまたはセカンダリスロットに入れてください。MCUXpressoセキュアプロビジョニングツールは、このプロセスを一つのワークフロー内で処理し、ブートローダーとイメージをプログラムすることで、先に共有したユーザーガイドの7.6.2節で説明されています。 BR ハビブ
查看全文
i.MXRT1176: Question about accessing an external SRAM Hello, I'm having trouble accessing an external SRAM. The SRAM is selected via CSX1 (Pad L14 – GPIO_AD_26), and my test program always triggers a MemoryManage Fault. What mistake did I make in my code? Thank you in advance for your help. /* * Copyright 2017 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include "board.h" #include "fsl_debug_console.h" #include "fsl_device_registers.h" #include "pin_mux.h" #include "fsl_semc.h" #include "clock_config.h" /******************************************************************************* * Definitions ******************************************************************************/ #define EXAMPLE_SEMC SEMC #define EXAMPLE_SEMC_CLK_FREQ CLOCK_GetRootClockFreq(kCLOCK_Root_Semc) /******************************************************************************* * Prototypes ******************************************************************************/ extern status_t BOARD_InitSRAM(void); /******************************************************************************* * Variables ******************************************************************************/ /******************************************************************************* * Code ******************************************************************************/ #define SRAM_BASE 0x60000000 //#define SRAM_BASE 0x81000000 status_t BOARD_InitAsyncSRAM_CS1(void) { semc_config_t config; semc_sram_config_t xsram_config; uint32_t clockFrq = kCLOCK_Root_Semc; SEMC_GetDefaultConfig(&config); config.dqsMode = kSEMC_Loopbackdqspad; SEMC_Init(SEMC, &config); memset(&config, 0, sizeof(semc_config_t)); memset(&xsram_config, 0, sizeof(semc_sram_config_t)); xsram_config.address = 0x60000000; xsram_config.memsize_kbytes = 512; xsram_config.addrPortWidth = 16; xsram_config.portSize = kSEMC_PortSize16Bit; xsram_config.addrMode = kSEMC_AddrDataNonMux; xsram_config.syncMode = kSEMC_AsyncMode; xsram_config.advActivePolarity = kSEMC_AdvActiveLow; xsram_config.advLevelCtrl = kSEMC_AdvLow; xsram_config.burstLen = kSEMC_Nor_BurstLen1; xsram_config.tWeLow_Ns = 25; xsram_config.tWeHigh_Ns = 25; xsram_config.tReLow_Ns = 25; xsram_config.tReHigh_Ns = 25; xsram_config.tTurnAround_Ns = 10; xsram_config.cePinMux = kSEMC_MUXCSX1; xsram_config.waitEnable = true; xsram_config.waitSample = true; xsram_config.tCeSetup_Ns = 25; xsram_config.tCeHold_Ns = 20; xsram_config.tAddrSetup_Ns = 25; xsram_config.tAddrHold_Ns = 25; xsram_config.tWriteSetup_Ns = 25; xsram_config.tWriteHold_Ns = 25; xsram_config.readCycle = 30; xsram_config.readHoldTime_Ns = 25; xsram_config.tCeInterval_Ns = 25; xsram_config.tAddr2WriteHold_Ns = 25; xsram_config.latencyCount = 3; xsram_config.delayChain = 25; xsram_config.addr27 = kSEMC_MORA27_NONE; SEMC->IOCR |= 0x00908BB6; // SEMC->IOCR |= 0x08; return SEMC_ConfigureSRAMWithChipSelection(SEMC, kSEMC_SRAM_CS1, &xsram_config, clockFrq); } /*! * @brief Main function */ int main(void) { /* Hardware initialize. */ BOARD_ConfigMPU(); BOARD_InitPins(); BOARD_BootClockRUN(); BOARD_InitDebugConsole(); BOARD_InitAsyncSRAM_CS1(); SEMC->IOCR |= SEMC_IOCR_MUX_CSX1(0x08); PRINTF("\r\n Start SEMC SRAM MSpec with WAIT write test.\r\n"); PRINTF("CCM_OBS_SEMC_CLK_ROOT: %d\r\n", CLOCK_GetFreqFromObs(CCM_OBS_SEMC_CLK_ROOT)); ////////////////////////////////////////////////////////////////////////////////////////////// volatile uint16_t *sram_ptr = (volatile uint16_t *)0x60000000; uint16_t i = 0; *sram_ptr = 0; for (i = 0; i <= 10; i++) { *sram_ptr = i; } for (i = 0; i <= 10; i++) { PRINTF("\r\n sram = %d \r\n", sram_ptr); } } Re: i.MXRT1176: Question about accessing an external SRAM Hi @RainerHL , Thank you so much for your interest in our products and for using our community. 1: Your code configures SEMC SRAM on CSX1/CS1 , but the test accesses 0x60000000 , which is not the valid SEMC SRAM mapping for i.MX RT1170. This is the primary reason for the MemoryManage Fault. Please use the SEMC SRAM base address window corresponding to the configured CSX1 device instead of 0x60000000. 2: your manual IOCR writes. The reference manual says IOCR configuration should be static; dynamic remapping is not supported .  3: Please check MPU configuration in your project. 4:PRINTF("\r\n sram = %d \r\n", sram_ptr);  This prints the pointer value, not the SRAM data. It should dereference the pointer, for example *sram_ptr , but that is not the cause of the MemoryManage fault. Wish it helps you Best Regards May
查看全文
LX2160A XSPI(シングルモード) - 未使用ピン こんにちは、 XSPIをシングルモードで動作するように構成する場合、DAT2~DAT7信号の構成がどうなるかは明らかではありません。 CANは繋がらせずに置いておけますか? ノアム Re: LX2160A XSPI in Single Mode - Unused pins こんにちは、 LX2160AのXSPIシングルモードでは、DAT2~DAT7は接続せずに放置できます。ただし、使用しないXSPIデータピンはGPIO出力として構成し、接続せずに放置することが推奨されています。 よろしくお願いします。 Re: LX2160A XSPI in Single Mode - Unused pins こんにちは、 問題は、ピンはグループで構成されるということです。特に: XSPI1_A_DATA30_PMUX: XSPI_A_DATA[3:0]をSPIまたはGPIOのいずれかに設定します シングルモードSPIを使用している場合、DAT[3:2]をフローティング状態にしておくのはまだ安全ですか?
查看全文
RT1176 LVGL + VGLITE: フォントのレンダリングが不良 私はRT1176上のLVGLをベースに、VGLITEを自分のコードに適用しようとしています。デモベンチマークを実行しています。 私が設定したとき: #define LV_USE_DRAW_SW 1 #define LV_USE_DRAW_VGLITE 0 レンダリングは問題ありません。 VGLITEを有効にすると #define LV_USE_DRAW_SW 0 #define LV_USE_DRAW_VGLITE 1 文字は破壊され、異質なフォントのように見える。ただし、一部のフレームでは正しくレンダリングされている場合もある。VGLITEが有効になっている場合、デモはシーン14で停止します。 どこから調査を始めればいいでしょうか? Re: RT1176 LVGL + VGLITE: Bad font rendering @P3r3gr1nus さん、こんにちは。vglite を有効にするとテキストのレンダリングがうまくいかないという同じ問題が発生しています。もしかして、この問題は解決しましたか? Re: RT1176 LVGL + VGLITE: Bad font rendering こんにちは、@EdwinHz さん。問題は文字列の文字数に関係していることがわかりました。順に示します。 文字列123 文字列 1234 文字列 12345 文字列 123456 文字列 1234567 文字列 12345678 文字列 123456789 文字列 1234567890 「String 12345」から「String 12345678」までの文字列が破損(異質なフォント)していることが判明しましたが、その他の文字列は正常です。このシーケンスは繰り返され、挙動はデターミニスティックです。フォントサイズをlv_font_montserrat_14からlv_font_montserrat_12に変更した場合も同様です。 この時点で、LVGL9 + VGLITEが既に検証済みかどうかを知ることは私にとって有益でしょう。 Re: RT1176 LVGL + VGLITE: Bad font rendering この問題に関する短い動画はこちらです。テキストのみに影響するようです。たとえしばらくするとデモがフリーズしても。 Re: RT1176 LVGL + VGLITE: Bad font rendering こんにちは、 @EdwinHz さん。 はい、ご提案どおりconf.hで設定してVGLITEを無効にすれば、 LV_USE_DRAW_VGLITE 0 LV_USE_DRAW_SW 1 すべて順調です。 しかし、私の目標はVGLITE GPUアクセラレーションを有効にすることです。demo_benckmarkを参考にしましたが、最終的な目標は自分のアプリケーションです。 さらに、私はRGB888を使っていません。 LV_COLOR_DEPTH 16 バッファはRGB565に設定されています。 言い忘れていましたが、私のプロジェクトはRT1176をベースにしており、FREERTOSを使用しています。 VGLITEをLVGLと併用できる可能性はあると思いますか? Re: RT1176 LVGL + VGLITE: Bad font rendering こんにちは、 @P3r3gr1nus さん。 「lvgl_examples_readme.md」に記載されているとおりファイル: " GPUとPXPは8ビットをサポートしていません。「LV_USE_DRAW_VGLITE」と「LV_USE_PXP」を選択し外してください。 Kconfigで、またはmcux_config.hのように修正したりします。 ``` #define CONFIG_LV_USE_DRAW_VGLITE 0 #define CONFIG_LV_USE_PXP 0 #define CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE 1 #define CONFIG_LV_DRAW_SW_DRAW_UNIT_CNT 1 」 BR、 エドウィン。 Re: RT1176 LVGL + VGLITE: Bad font rendering こんにちは、 @HasanIqbalKhan さん。 いいえ、最終的にはVGLITEを無効にしました。パフォーマンスの向上も期待ほど良くなかった。
查看全文
i.MXRT1176:关于访问外部SRAM的问题 你好, 我无法访问外部SRAM。通过 CSX1(Pad L14 – GPIO_AD_26)选择 SRAM,我的测试程序总是触发信号 MemoryManage Fault。我的代码哪里出错了?提前感谢您的帮助。 /* * 版权所有 2017 NXP * ALL RIGHTS RESERVED. * * SPDX 许可证标识符:BSD-3-Clause */ #include "board.h" #include "fsl_debug_console.h" #include "fsl_device_registers.h" #include "pin_mux.h" #include "fsl_semc.h" #include "clock_config.h" /******************************************************************************* * 定义 ******************************************************************************/ #define EXAMPLE_SEMC SEMC #define EXAMPLE_SEMC_CLK_FREQ CLOCK_GetRootClockFreq(kCLOCK_Root_Semc) /******************************************************************************* * 原型 ******************************************************************************/ extern status_t BOARD_InitSRAM ( void ) ; /******************************************************************************* * 变量 ******************************************************************************/ /******************************************************************************* * 代码 ******************************************************************************/ #define SRAM_BASE 0x60000000 //#define SRAM_BASE 0x81000000 status_t BOARD_InitAsyncSRAM_CS1 ( void ) { semc_config_t config ; semc_sram_config_t xsram_config ; uint32_t clockFrq = kCLOCK_Root_Semc ; SEMC_GetDefaultConfig ( & config ) ; config.dqsMode = kSEMC_Loopbackdqspad ;​​ SEMC_Init ( SEMC , &配置) ; memset ( & config , 0 , sizeof ( semc_config_t )) ; memset ( & xsram_config , 0 , sizeof ( semc_sram_config_t )) ; xsram_config.address = 0x60000000 ;​​ xsram_config.memsize_kbytes​​= 512 ; xsram_config.addrPortWidth​​= 16 ; xsram_config 。端口大小= kSEMC_PortSize16Bit ; xsram_config.addrMode = kSEMC_AddrDataNonMux ;​​ xsram_config.syncMode = kSEMC_AsyncMode ;​​ xsram_config.advActivePolarity​​= kSEMC_AdvActiveLow ; xsram_config.advLevelCtrl​​= kSEMC_AdvLow ; xsram_config.burstLen = kSEMC_Nor_BurstLen1 ;​​ xsram_config.tWeLow_Ns​​= 25 ; xsram_config.tWeHigh_Ns​​= 25 ; xsram_config.tReLow_Ns​​= 25 ; xsram_config.tReHigh_Ns​​= 25 ; xsram_config.tTurnAround_Ns​​= 10 ; xsram_config.cePinMux = kSEMC_MUXCSX1 ;​​ xsram_config.waitEnable = true ;​​ xsram_config.waitSample = true ;​​ xsram_config . tCeSetup_Ns= 25 ; xsram_config.tCeHold_Ns​​= 20 ; xsram_config.tAddrSetup_Ns​​= 25 ; xsram_config.tAddrHold_Ns​​= 25 ; xsram_config.tWriteSetup_Ns​​= 25 ; xsram_config.tWriteHold_Ns​​= 25 ; xsram_config.readCycle = 30 ;​​ xsram_config.readHoldTime_Ns​​= 25 ; xsram_config.tCeInterval_Ns​​= 25 ; xsram_config.tAddr2WriteHold_Ns​​= 25 ; xsram_config.latencyCount​​= 3 ; xsram_config.delayChain = 25 ;​​ xsram_config.addr27 = kSEMC_MORA27_NONE ;​​ SEMC -> IOCR |= 0x00908BB6 ; // SEMC->IOCR |= 0x08; return SEMC_ConfigureSRAMWithChipSelection ( SEMC , kSEMC_SRAM_CS1 , & xsram_config , clockFrq ) ; } /*! * @brief 主函数 */ int main ( void ) { /* 硬件初始化。*/ BOARD_ConfigMPU () ; BOARD_InitPins () ; BOARD_BootClockRUN () ; BOARD_InitDebugConsole () ; BOARD_InitAsyncSRAM_CS1 () ; SEMC -> IOCR |= SEMC_IOCR_MUX_CSX1 ( 0x08 ) ; PRINTF ( "\r\n启动 SEMC SRAM MSpec,执行 WAIT 写入测试。\r\n" ) ; PRINTF ( "CCM_OBS_SEMC_CLK_ROOT:%d\r\n" , CLOCK_GetFreqFromObs ( CCM_OBS_SEMC_CLK_ROOT )) ; ////////////////////////////////////////////////////////////////////////////////////////////// volatile uint16_t * sram_ptr = ( volatile uint16_t * ) 0x60000000 ; uint16_t i = 0 ; * sram_ptr = 0 ; for ( i = 0 ; i <= 10 ; i ++ ) { * sram_ptr = i ; } for ( i = 0 ; i <= 10 ; i ++ ) { PRINTF ( "\r\n sram = %d \r\n" , sram_ptr ) ; } } Re: i.MXRT1176: Question about accessing an external SRAM 嗨@RainerHL , 非常感谢您对我们产品的关注以及对我们社区的使用。 1:您的代码在 CSX1/CS1 上配置了 SEMC SRAM,但测试访问了 0x60000000,这不是 i.MX RT1170 的有效 SEMC SRAM 映射。这是导致内存管理故障的主要原因。 请使用与配置的 CSX1 设备对应的 SEMC SRAM 基地址窗口,而不是 0x60000000。 2:您的手动 IOCR 写入。参考手册指出,IOCR 配置应该是静态的;不支持动态重映射。 3:请检查项目中的 MPU 配置。 4:PRINTF("\r\n sram = %d \r\n", sram_ptr); 这将打印指针值,而不是 SRAM 数据。它应该对指针(例如 *sram_ptr)进行解引用,但这并不是 MemoryManage 故障的原因。 希望对你有帮助 顺祝商祺! 5月
查看全文
RT1176 LVGL + VGLITE: Bad font rendering I am trying to apply VGLITE to my code, based on LVGL on RT1176. I am running the demo benchmark.  When I set: #define LV_USE_DRAW_SW 1 #define LV_USE_DRAW_VGLITE 0 the rendering is fine.  When I enable VGLITE  #define LV_USE_DRAW_SW 0 #define LV_USE_DRAW_VGLITE 1 the letters are destroyed, they appears as alien fonts, even if in some of the frames these are  correctly rendered.  Modeover when VGLITE is enabled the demo hangs on scene 14.  From where can I start to investigate? Re: RT1176 LVGL + VGLITE: Bad font rendering Hey @P3r3gr1nus , I am facing the same issue (bad text rendering) when enabling vglite, did you by any chance resolve the issue? Re: RT1176 LVGL + VGLITE: Bad font rendering Hello @EdwinHz , I found that the issue is related to the number of characters in the string. I show in sequence: String 123 String 1234 String 12345 String 123456 String 1234567 String 12345678 String 123456789 String 1234567890 It happen that the strings from "String 12345" to "String 12345678" are damaged (alien font) the others are fine. The sequence is repeated and the behavior is deterministic. The same when I change font size from lv_font_montserrat_14 to lv_font_montserrat_12. At this point it should be useful for me to know if the LVGL9 + VGLITE has been already validated.  Re: RT1176 LVGL + VGLITE: Bad font rendering Here a small video about the issue. It seems to affect only text. Even if after a while the demo freezes.  Re: RT1176 LVGL + VGLITE: Bad font rendering Hello @EdwinHz ,      yes, if I disable the VGLITE as you suggest by setting in conf.h: LV_USE_DRAW_VGLITE 0  LV_USE_DRAW_SW  1 everything is fine.  However my goal is to enable the VGLITE GPU acceleration. I used demo_benckmark as a reference but the final target will be my application.  Moreover I am not using RGB888, having  LV_COLOR_DEPTH 16  the buffer is set ti RGB565.  I forgot to mention my project is based on RT1176 and I am using FREERTOS.  Do you think there is any chance to use VGLITE with LVGL? Re: RT1176 LVGL + VGLITE: Bad font rendering Hi @P3r3gr1nus, As mentioned on the "lvgl_examples_readme.md" file: " GPU and PXP don't support 8-bit, unselect `LV_USE_DRAW_VGLITE` and `LV_USE_PXP` in Kconfig, or modify mcux_config.h like: ``` #define CONFIG_LV_USE_DRAW_VGLITE 0 #define CONFIG_LV_USE_PXP 0 #define CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE 1 #define CONFIG_LV_DRAW_SW_DRAW_UNIT_CNT 1 " BR, Edwin. Re: RT1176 LVGL + VGLITE: Bad font rendering Hello @HasanIqbalKhan,       no, at the end I disabled VGLITE. Even the gain in performances was not so good as expected.
查看全文