QSPI in STM32 || Boot from EXT Memory || XIP || N25Q

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ธ.ค. 2024

ความคิดเห็น • 48

  • @deutrion
    @deutrion 3 ปีที่แล้ว +4

    Excellent collection of videos, thanks for the collaboration

  • @junhwangbo4766
    @junhwangbo4766 2 ปีที่แล้ว +1

    The video looked good.
    There are questions.
    Why is the timer interrupt not executed when it is set to address 0x90000000?
    If I don't set the timer interrupt, it works fine.

  • @MCU_STM
    @MCU_STM 2 ปีที่แล้ว +1

    For the Project2 that you made it for the JumpFuntion, There is an exception for H7 series and its the clock of QSPI unit that must be set to PER_CK. Other things are great in the video and thank to you for the shared information.

    • @blcouz
      @blcouz ปีที่แล้ว

      Do you have sample code you can share?

    • @AhmedElsayed-y7q
      @AhmedElsayed-y7q 7 หลายเดือนก่อน

      @@blcouz select the per_CK clock from the ioc file when choosing the clock of quad spi of the program in the internal flash that will jump to external flash .

    • @blcouz
      @blcouz 7 หลายเดือนก่อน

      @@AhmedElsayed-y7q Thank you, but I have already resolved these issues in the past 8 months.

  • @JP-fb3ym
    @JP-fb3ym 2 ปีที่แล้ว

    Thanks!

  • @kakusuk3659
    @kakusuk3659 ปีที่แล้ว

    What i don't understand, what is the function/purpose of the external loader when you debug the code you showed us? Does it read or write something? What does it do?

    • @ControllersTech
      @ControllersTech  ปีที่แล้ว +2

      It helps you debug the external memories on cubeIDE.
      Also it is used to push code/data into the external memory.

  • @TheIvanDM
    @TheIvanDM 2 ปีที่แล้ว +2

    The most difficult part here is creating your own STLDR file. How do you think - is it possible instead of this to build the target project as a bin file and write it to memory as is (transfer it via some interface or SD card from a PC and write it to external memory by second project), and then configure XIP execution in a third project ?

    • @haydenridd
      @haydenridd 11 หลายเดือนก่อน +1

      If you use a JLink, believe it or not they natively support flashing images into QSPI attached memory, no STLDR file required!

  • @woldecosgrove
    @woldecosgrove 6 หลายเดือนก่อน

    in respond to your reply in the video, could you do a seperate video on H750 Discovery QSPI XIP external memory ?

  • @rohitkhandait6190
    @rohitkhandait6190 ปีที่แล้ว

    Hello @ControllersTech,
    I follow the same steps and wrote code for stm32l476 disc board code is running fine, but I am not able debug code, target is not halting in the main() of application code even if I am using breakpoints. I am getting "Error: illegal address for breakpoint type". Can you please tell me how to solve this issue?? MPU configuration are not available in stm32l476 disc board.

    • @ControllersTech
      @ControllersTech  ปีที่แล้ว

      Make sure you select the correct external loader in the debug configuration.

    • @rohitkhandait6190
      @rohitkhandait6190 ปีที่แล้ว

      Yes I have selected correct external loader still same issue. And when I tried to debug using OpenOCD I got "Error: Cortex-M Flash Patch Breakpoint rev 1 cannot handle HW breakpoint above address 0x1FFFFFFE; Error. can't add breakpoint: Unknown reason"

    • @rohitkhandait6190
      @rohitkhandait6190 ปีที่แล้ว

      ​@@ControllersTech Sir, please suggest some solution...

    • @ControllersTech
      @ControllersTech  ปีที่แล้ว

      Launch the debugger, once it has loaded completely and the error shows, reset the debugger.

  • @manojsuryawanshi1334
    @manojsuryawanshi1334 2 ปีที่แล้ว

    i am not able to read more than 256 bytes in externnal spi
    I am reading 4 bytes of structure after 256 bytes data is rollover

  • @kakusuk3659
    @kakusuk3659 ปีที่แล้ว

    Is it also possible to debug a custom external loader? My custom external loader isn't working, that's why.

    • @ControllersTech
      @ControllersTech  ปีที่แล้ว +1

      If you have the project from where you created the loader, you can debug that project itself.
      Look into the loader_src file. There should be different functions like init, write, verify etc. You can place your custom code inside those functions (like LEd blink or UART output). When you run the loader next time (in some other project), you should get the output whenever the loader execute either of those functions (init, write, verify, etc.)

  • @andreauguccioni354
    @andreauguccioni354 2 ปีที่แล้ว

    For l552 Micro for mx25lm51245g flash memory how i do?

  • @mohamad921
    @mohamad921 2 ปีที่แล้ว

    thanks for this really useful video. My question is that is it possible to use both internal and external flash for application program at the same time?

    • @ControllersTech
      @ControllersTech  2 ปีที่แล้ว +1

      Yes i guess it's possible. But you have to make a lot of changes in the flash descriptor file.

    • @mohamad921
      @mohamad921 2 ปีที่แล้ว

      @@ControllersTech Hi, I tried to execute a peace of code on a stm32h750 MCU and managed to program code on QSPI successfully and it verified. but when I press the reset in debug window the debugger does not goes to QSPI address in 0x90000000. should I do anything different from this video while editing system file? regards.

  • @emmadibalakrishna9534
    @emmadibalakrishna9534 2 ปีที่แล้ว

    Hi, I tried to execute a peace of code on a stm32h747i MCU and managed to program code on QSPI successfully and it verified. but when I press the reset in debug window the debugger does not goes to QSPI address in 0x90000000. should I do anything different from this video while editing system file? regards

    • @ControllersTech
      @ControllersTech  2 ปีที่แล้ว

      You need to select the external loader in the debug configuration. Watch the video properly after i pressed the debug button. If i didn't select it in this video, i must have done it in the previous one..

  • @29vetri
    @29vetri ปีที่แล้ว

    Is it possible to write data to ext flash in memory mapped mode? - by dereferencing the address 0x90000000 and write some data to that address ?

    • @EdwinFairchild
      @EdwinFairchild 7 หลายเดือนก่อน

      No, thats not how flash works. gotta erase a large section then write.

  • @sravanakumar9326
    @sravanakumar9326 2 ปีที่แล้ว

    Hi, how do we know the address to be used(like you have used 0×90000000 here) to access the external flash memory?

    • @ControllersTech
      @ControllersTech  2 ปีที่แล้ว +1

      Check the datasheet of your controller

    • @sravanakumar9326
      @sravanakumar9326 2 ปีที่แล้ว

      @@ControllersTech Thank you so much, i will check it out.

  • @alirostami9447
    @alirostami9447 2 ปีที่แล้ว

    Hi, Thanks for the video. Why did you config 2 region in MPU? One is 1MB, executable and the other is 16 MB, unexecutable, is the latter defined just for the const?

    • @ControllersTech
      @ControllersTech  2 ปีที่แล้ว

      Check out the MPU playlist in the cortex M7. Everything related to MPU is explained there.

  • @leandrowilliam6180
    @leandrowilliam6180 2 ปีที่แล้ว

    Excellent video, congratulations! I'm trying to do as you teach with a board with STM32H750VBT6 and MT25QL512 memory.
    I can do the first part without problems, but I can't run the program like the second part. It does the normal compilation and loading but the user program still doesn't run.

    • @ControllersTech
      @ControllersTech  2 ปีที่แล้ว

      Make sure you are selecting external memory in the debugger configuration..

    • @blcouz
      @blcouz ปีที่แล้ว

      did you succeed?

  • @gabrielfienco2531
    @gabrielfienco2531 3 ปีที่แล้ว

    Great video, will try it on a w25qxx even if it is not on debugging list... any suggestions? thanks

    • @ControllersTech
      @ControllersTech  3 ปีที่แล้ว +1

      Check out other comments. Someone did it for w25q

  • @norobadalyan6618
    @norobadalyan6618 2 ปีที่แล้ว

    Hello friend and you can also use W25Q flash?

    • @ControllersTech
      @ControllersTech  2 ปีที่แล้ว

      Read the comments, someone did it and posted the link also

  • @abhisheknaik2487
    @abhisheknaik2487 2 ปีที่แล้ว

    How to run code from DRAM

    • @thechallenger3020
      @thechallenger3020 2 ปีที่แล้ว

      Where do you initially store code? Internal Flash or External Flash?

  • @AhmedElsayed-y7q
    @AhmedElsayed-y7q 7 หลายเดือนก่อน

    for those who can't debug like the program in the external flash there is a trick that works for me try to debug another project like the one that is located in the internal flash which is used to jump to the external flash program then terminate it and then debug the program in the external flash again and do as video and it should work and don't forget the program in the internal flash that jumps to the external flash program have to be uploaded first and jump successfully to the start of the program in the external flash so you can debug the way descried in the video otherwise it won't work and the debugger will shut down when you try to halt it .

  • @RixtronixLAB
    @RixtronixLAB 3 ปีที่แล้ว +1

    Nice video, thanks :)

  • @dmitr8194
    @dmitr8194 3 ปีที่แล้ว

    wiil try on my new board

  • @vladimirlaukh3409
    @vladimirlaukh3409 2 ปีที่แล้ว

    Any practical example where it's implemented? IMO, it's complicated to the point where you'd be better off just choosing a Linux board and complete your tasks on it.
    Video is really nice though!

  • @WalkAlone84
    @WalkAlone84 2 ปีที่แล้ว

    Excellent.👌

  • @KSITREVS
    @KSITREVS 3 ปีที่แล้ว

    Very useful