We are attempting to make custom boards for one of our display application, only with required interfaces from IMXRT1050-EVKB using hyper-flash and MCU. But we would like to have a JTAG port at both the development version and production version. Planned to remove the OpenSDA adaptor function in this custom board, in this case, I have the following queries:
1. I assume bootloader code part of hyper-flash, how do I flash bootloader into it? Is it via JTAG? For any procedure document please share to flash bootloader into Hyperflash.
2. Share the bootloader image link to download.
3. How to flash application binary/hex (built via MCU expresso IDE or others IDE) into target MCU using the JTAG interface?
4. Is it a mandate to have MCUexpresso IDE to flash the application binary/hex file? Suggest the flash loader through which I should flash binary/hex file without IDE using JTAG.
5. Is it possible to flash application binary and bootloader to together?
6. Which is the best practise (Flash bootloader separate and application file separate or flash them together), please advice?
Before making a custom board we need to decide above software development lifecycle tools & procedures. Please clarify.
Development system of our display with EVAL board is attached for reference
1. (see 3)
2. ISP loader is built into the chip. See page 1 of https://www.utasker.com/docs/iMX/uTaskerV1.4_iMX.pdf
3. ISP is a simple method for production programming that doesn't even need an SWD/JTAG interface (usually via USB using NXP MCU Boot Utility). Otherwise SWD/JTAG can do it from MCUXpresso or using the tools supplied by your JTAG provider.
4. (see 3)
5. Yes, you can combine boot loader and applications - see the following showing programming a combined loader/application with MCU Boot Utility https://youtu.be/o7hQbOqhJoc
6. For production programming a single download makes sense since it saves time.
See the following list of documents, guides and videos showing how you can add an off-the-shelf boot loader for your i.MX RT 1050 with HyperFlash to give you a complete clone-protected, secured loader concept with OTA and in-field uploading capabilities - including all tools to create a single production binary with automated eFUSE security steps with no extra work: https://www.utasker.com/iMX/developers.html
i.MX RR 1050
[uTasker project developer for Kinetis and i.MX RT]
Contact me by personal message or on the uTasker web site to discuss professional training, solutions to problems or product development requirements
Understood that uTasker provides secure encrypted bootloader/application building options for flashing, which will definitely be useful for us in post-prototype development.
Thanks for the detailed post. A lot to read and experiment on uTasker with IMXRT1050 board, will do and get back.
Attached few more queries on these boot options, please clarify. Sorry, I am fresh to this IMXRT MCU and uTasker, my intention is to avoid any assumptions. Please be patient with me.
1. There are primary serial loaders built into the chip so it is correct that serial (UART or USB) loading is possible for production programming. See also the user's manual:
2. The i.MX RT 1050 EVK has two flash devices - one is a hyper flash chip and the other a QSPI chip. However only one is connected - usually the hyperflash part is connected via jumpers (soldered links) and the QSPI can only be used (instead) if these jumpers are changed.
The serial loader supports both parts - the part used is configured in the PC program.
3. When you program examples where they run depends on the the way that the project is configured. When you import examples you can choose whether they run from Flash or from RAM. If you choose flash it will be loaded to the HyperFlash (or QSPI flash) and run in XiP mode. If you choose RAM it is probably loaded to SDRAM and runs from there (or internal RAM if there is no SRAM).
4. OpenSDA is the debugger on the board. It is a separate chip which you will not be using for your production boards.
5. DAPLink is the protocol used to communicate between the OpenSDA and the PC host. It is not relevant for your production boards.
6. The uTasker loader is a secondary loader - it neither overwrites the internal ROM loader nor does it stop it from being used. A secondary loader is much more flexible that the internal ROM loader; offering more features and management of things like the board's security. Therefore the primary (ROM) loader is suitable for production programming but after that (for in-field updating or OTA updating) the secondary loader is used (essentially) exclusively.
A) It is best to have a method to select the ISP mode (the ROM serial loader) for emergency purposes.
B) Generally a JTAG (SWD) debugger is not needed once a board goes into production: you can keep reference boards with such debug capability for use to help debug specific cases.
Having a boot loader (and uploading capability) means that you can update boards easily after changes need to be made.
Having the ISP mode is useful in case of the need to recover boards that fail for some reason in a manner that doesn't allow the loader to be able to operate (if the secondary loader has a forcing method the ISP would normally never be needed though).
C) UART loading is not that fast - USB is "much" faster. However this form of loading can certainly be used for development loading too.