hiviah

JTrace reset STM32F427 in Ozone correctly

Feb 13th, 2021 (edited)
723
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. void TargetReset (void) {                                          
  2. unsigned int AIRCR;
  3. unsigned int SCB_AIRCR_VECTKEY;
  4. unsigned int SCB_AIRCR_VECTRESET;
  5.  
  6. AIRCR = 0xE000ED0C;
  7. SCB_AIRCR_VECTKEY = 0x5fa0000;
  8. SCB_AIRCR_VECTRESET = 0x1;
  9.  
  10. *AIRCR = SCB_AIRCR_VECTRESET | SCB_AIRCR_VECTRESET;
  11. //                                                                    
  12. //  unsigned int SP;                                                  
  13. //  unsigned int PC;                                                  
  14. //  unsigned int VectorTableAddr;                                    
  15. //                                                                    
  16. //  VectorTableAddr = Program.GetBaseAddr();                          
  17. //                                                                    
  18. //  if (VectorTableAddr != 0xFFFFFFFF) {                              
  19. //    SP = Target.ReadU32(VectorTableAddr);                          
  20. //    Target.SetReg("SP", SP);                                      
  21. //  } else {                                                          
  22. //    Util.Log("Project file error: failed to get program base");  
  23. //  }                                                                
  24. //                                                                    
  25. //  PC = Elf.GetEntryPointPC();                                      
  26. //                                                                    
  27. //  if (PC != 0xFFFFFFFF) {                                          
  28. //    Target.SetReg("PC", PC);                                      
  29. //  } else if (VectorTableAddr != 0xFFFFFFFF) {                      
  30. //    PC = Target.ReadU32(VectorTableAddr + 4);                      
  31. //    Target.SetReg("PC", PC);                                      
  32. }
  33.  
  34. void AfterTargetReset (void) {
  35.   unsigned int SP;                                                
  36.   unsigned int PC;                                                
  37.   unsigned int VectorTableAddr;                                  
  38.                                                                  
  39.   VectorTableAddr = 0x8000000; //boardloader vector offset
  40.                                                                  
  41.   if (VectorTableAddr != 0xFFFFFFFF) {                            
  42.     SP = Target.ReadU32(VectorTableAddr);                        
  43.     Target.SetReg("SP", SP);                                    
  44.   } else {                                                        
  45.     Util.Log("Project file error: failed to get program base");
  46.   }                                                              
  47.                                                                  
  48.     PC = Target.ReadU32(VectorTableAddr + 4);                    
  49.     Target.SetReg("PC", PC);                                    
  50. }
  51.  
  52.  
Add Comment
Please, Sign In to add comment