How to run the same bootloader from multiple start addresses on i.MX RT1050?

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

How to run the same bootloader from multiple start addresses on i.MX RT1050?

316件の閲覧回数
sachin13t
Contributor I

Hi NXP Community,

I am working on an i.MX RT1050 project with a single bootloader currently located at 0x60000000 in flash. I want the ability to choose at runtime which start address the bootloader runs from, essentially executing the same bootloader from two different locations (e.g., factory and working boot modes).

Constraints and setup:

  • Only one bootloader image exists in flash.

  • I want to run it from RAM at runtime to select different start addresses.

  • The bootloader is not currently position-independent (PIC).

  • I have enough RAM allocated (0x80000000, size 2 MB) to hold the bootloader.

I am aware of the approach where:

  1. Copy the bootloader from flash to RAM.

  2. Set SCB->VTOR to the new RAM location.

  3. Set MSP to the new bootloader’s stack pointer.

  4. Jump to the reset handler in RAM.

My questions are:

  1. Can the i.MX RT1050 safely execute a bootloader from RAM if it is not compiled as PIC?

  2. What modifications are needed to make the bootloader position-independent?

  3. Are there best practices to implement a runtime-selectable bootloader start address for firmware slots?

Any guidance, examples, or references would be very helpful.

ラベル(3)
0 件の賞賛
返信
1 返信

179件の閲覧回数
IsaulO
NXP Employee
NXP Employee

Hello @sachin13t ,

Please take a look at the following links that might be useful for you: Implement Second Bootloader on i.MX RT10xx Series +
sbl/component/secure/semifunc/hab_rvt.c at master · nxp-mcuxpresso/sbl · GitHub

For further information on the Position independent Code, you can refer to the following link:
Position-Independent Code with GCC for ARM Cortex-M | MCU on Eclipse.


BR,
IsaulO.

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2175782%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei.MX%20RT1050%20%E3%81%AE%E8%A4%87%E6%95%B0%E3%81%AE%E9%96%8B%E5%A7%8B%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%8B%E3%82%89%E5%90%8C%E3%81%98%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2175782%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ENXP%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AE%E7%9A%86%E6%A7%98%E3%80%81%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%82%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E7%8F%BE%E5%9C%A8%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AE%200x60000000%20%E3%81%AB%E9%85%8D%E7%BD%AE%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%8D%98%E4%B8%80%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%82%92%E5%82%99%E3%81%88%E3%81%9F%3CSTRONG%3Ei.MX%20RT1050%3C%2FSTRONG%3E%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E5%8F%96%E3%82%8A%E7%B5%84%E3%82%93%E3%81%A7%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AB%E5%90%8C%E3%81%98%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%82%92%3CSTRONG%3E2%20%E3%81%A4%E3%81%AE%E7%95%B0%E3%81%AA%E3%82%8B%E5%A0%B4%E6%89%80%3C%2FSTRONG%3E(%E5%B7%A5%E5%A0%B4%E5%87%BA%E8%8D%B7%E6%99%82%E3%81%8A%E3%82%88%E3%81%B3%E5%8B%95%E4%BD%9C%E4%B8%AD%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%20%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AA%E3%81%A9)%20%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C%E3%81%97%E3%80%81%3CSTRONG%3E%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E9%96%8B%E5%A7%8B%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AB%E9%81%B8%E6%8A%9E%3C%2FSTRONG%3E%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E5%88%B6%E7%B4%84%E3%81%A8%E8%A8%AD%E5%AE%9A%3A%3C%2FP%3E%3CUL%3E%3CLI%3E%3CP%3E%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AB%E3%81%AF%3CSTRONG%3E%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%20%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%8C%201%20%E3%81%A4%3C%2FSTRONG%3E%E3%81%A0%E3%81%91%E5%AD%98%E5%9C%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSTRONG%3E%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AB%20RAM%3C%2FSTRONG%3E%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%80%81%E7%95%B0%E3%81%AA%E3%82%8B%E9%96%8B%E5%A7%8B%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%81%AF%3CSTRONG%3E%E7%8F%BE%E5%9C%A8%E3%80%81%E3%83%9D%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E7%8B%AC%E7%AB%8B%20(PIC)%20%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%3C%2FSTRONG%3E%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E5%8D%81%E5%88%86%E3%81%AA%20RAM%20(0x80000000%E3%80%81%E3%82%B5%E3%82%A4%E3%82%BA%202%20MB)%20%E3%81%8C%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E7%A7%81%E3%81%AF%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC%E3%83%81%E3%82%92%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3A%3C%2FP%3E%3COL%3E%3CLI%3E%3CP%3E%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%8B%E3%82%89%20RAM%20%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ESCB-%26gt%3BVTOR%20%E3%82%92%E6%96%B0%E3%81%97%E3%81%84%20RAM%20%E3%81%AE%E5%A0%B4%E6%89%80%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3EMSP%20%E3%82%92%E6%96%B0%E3%81%97%E3%81%84%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%81%AE%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%20%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ERAM%20%E5%86%85%E3%81%AE%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%20%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E3%81%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3C%2FOL%3E%3CP%3E%E7%A7%81%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%3A%3C%2FP%3E%3COL%3E%3CLI%3E%3CP%3Ei.MX%20RT1050%20%E3%81%AF%3CSTRONG%3E%E3%80%81PIC%20%E3%81%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%3C%2FSTRONG%3E%E5%A0%B4%E5%90%88%E3%81%A7%E3%82%82%E3%80%81RAM%20%E3%81%8B%E3%82%89%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%82%92%E5%AE%89%E5%85%A8%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%82%92%3CSTRONG%3E%E4%BD%8D%E7%BD%AE%E9%9D%9E%E4%BE%9D%E5%AD%98%E3%81%AB%3C%2FSTRONG%3E%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E5%A4%89%E6%9B%B4%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%20%E3%82%B9%E3%83%AD%E3%83%83%E3%83%88%E3%81%AB%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E9%81%B8%E6%8A%9E%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC%E9%96%8B%E5%A7%8B%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%3CSTRONG%3E%E3%83%99%E3%82%B9%E3%83%88%20%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9%3C%2FSTRONG%3E%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3C%2FLI%3E%3C%2FOL%3E%3CP%3E%E3%81%82%E3%82%89%E3%82%86%E3%82%8B%E3%82%AC%E3%82%A4%E3%83%80%E3%83%B3%E3%82%B9%E3%80%81%E4%BE%8B%E3%80%81%E5%8F%82%E8%80%83%E8%B3%87%E6%96%99%E3%81%8C%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2175782%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E3%83%96%E3%83%BC%E3%83%88ROM%7C%E3%83%96%E3%83%BC%E3%83%88%7C%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E3%82%B3%E3%82%A2%E3%81%A8%E3%83%A1%E3%83%A2%E3%83%AA%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EMCX%20C%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2189345%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20run%20the%20same%20bootloader%20from%20multiple%20start%20addresses%20on%20i.MX%20RT1050%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2189345%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F255235%22%20target%3D%22_blank%22%3E%40sachin13t%E3%81%95%E3%82%93%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CP%3E%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A4%E3%81%8B%E3%82%82%E3%81%97%E3%82%8C%E3%81%AA%E3%81%84%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E3%81%94%E8%A6%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%3A%20%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Fapplication-note%2FAN12604.pdf%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ei.MX%20RT10xx%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%81%AB%E3%82%BB%E3%82%AB%E3%83%B3%E3%83%89%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%3C%2FA%3E%2B%3CBR%20%2F%3E%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-mcuxpresso%2Fsbl%2Fblob%2Fmaster%2Fcomponent%2Fsecure%2Fsemifunc%2Fhab_rvt.c%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Esbl%2Fcomponent%2Fsecure%2Fsemifunc%2Fhab_rvt.c%20at%20master%20%C2%B7%20nxp-mcuxpresso%2Fsbl%20%C2%B7%20GitHub%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%83%9D%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%B3%E7%8B%AC%E7%AB%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%A9%B3%E7%B4%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E3%80%81%E6%AC%A1%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3CBR%20%2F%3E%20%3CA%20href%3D%22https%3A%2F%2Fmcuoneclipse.com%2F2021%2F06%2F05%2Fposition-independent-code-with-gcc-for-arm-cortex-m%2F%23more-28612%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3EArm%20Cortex-M%20%E7%94%A8%E3%81%AE%20GCC%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E4%BD%8D%E7%BD%AE%E7%8B%AC%E7%AB%8B%E3%82%B3%E3%83%BC%E3%83%89%20%7C%20Eclipse%20%E4%B8%8A%E3%81%AE%20MCU%E3%80%82%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%3CBR%20%2F%3EBR%E3%80%81%3CBR%20%2F%3E%E3%82%A4%E3%82%B5%E3%82%A6%E3%83%ABO%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E