NXP_iMX8M_Connect_CortexM4.JLinkScript 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*********************************************************************
  2. * (c) SEGGER Microcontroller GmbH & Co. KG *
  3. * The Embedded Experts *
  4. * www.segger.com *
  5. **********************************************************************
  6. -------------------------- END-OF-HEADER -----------------------------
  7. */
  8. /*********************************************************************
  9. *
  10. * ResetTarget
  11. */
  12. void ResetTarget(void) {
  13. //
  14. // This device requires a special reset as default reset does not work for this device.
  15. // TBD
  16. //
  17. }
  18. /*********************************************************************
  19. *
  20. * InitTarget
  21. */
  22. void InitTarget(void) {
  23. int v;
  24. int Ctrl;
  25. int CSGPR_ADDR;
  26. int DP_REG_CTRL_STAT;
  27. int DP_REG_SELECT;
  28. int AHBAP_REG_CTRL;
  29. int AHBAP_REG_ADDR;
  30. int AHBAP_REG_DATA;
  31. DP_REG_CTRL_STAT = 1;
  32. DP_REG_SELECT = 2;
  33. AHBAP_REG_CTRL = 0;
  34. AHBAP_REG_ADDR = 1;
  35. AHBAP_REG_DATA = 3;
  36. Report("***************************************************");
  37. Report("J-Link script: iMX8M Mini Cortex-M4 J-Link script");
  38. Report("***************************************************");
  39. JLINK_CORESIGHT_Configure("IRPre=0;DRPre=0;IRPost=0;DRPost=0;IRLenDevice=4");
  40. CPU = CORTEX_M4; // Pre-select that we have a Cortex-M4 connected
  41. JTAG_AllowTAPReset = 0; // J-Link is allowed to use a TAP reset for JTAG-chain auto-detection
  42. //
  43. // Power-up complete DAP
  44. //
  45. Ctrl = 0
  46. | (1 << 30) // System power-up
  47. | (1 << 28) // Debug popwer-up
  48. | (1 << 5) // Clear STICKYERR
  49. ;
  50. JLINK_CORESIGHT_WriteDP(DP_REG_CTRL_STAT, Ctrl);
  51. //
  52. // Select AHB-AP and configure it
  53. //
  54. JLINK_CORESIGHT_WriteDP(DP_REG_SELECT, (0 << 4) | (0 << 24));
  55. Ctrl = 0
  56. | (2 << 0) // AP-access size. Fixed to 2: 32-bit
  57. | (1 << 4) // Auto increment TAR after read/write access. Increment is NOT performed on access to banked data registers 0-3.
  58. | (1 << 31) // Enable software access to the Debug APB bus.
  59. ;
  60. JLINK_CORESIGHT_WriteAP(AHBAP_REG_CTRL, Ctrl);
  61. JLINK_CORESIGHT_WriteAP(AHBAP_REG_ADDR, 0x007E0000);
  62. JLINK_CORESIGHT_WriteAP(AHBAP_REG_DATA, 0x20008000);
  63. JLINK_CORESIGHT_WriteAP(AHBAP_REG_ADDR, 0x007E0004);
  64. JLINK_CORESIGHT_WriteAP(AHBAP_REG_DATA, 0x1FFE0009);
  65. JLINK_CORESIGHT_WriteAP(AHBAP_REG_ADDR, 0x007E0008);
  66. JLINK_CORESIGHT_WriteAP(AHBAP_REG_DATA, 0xE7FEE7FE);
  67. //
  68. // Manually configure which APs are present on the CoreSight device
  69. //
  70. JTAG_SetDeviceId(0, 0x5BA00477); // 4-bits IRLen
  71. CORESIGHT_AddAP(0, CORESIGHT_AHB_AP); // AXI-AP
  72. CORESIGHT_AddAP(1, CORESIGHT_APB_AP); // APB-AP for CA53
  73. CORESIGHT_AddAP(2, CORESIGHT_CUSTOM_AP);
  74. CORESIGHT_AddAP(3, CORESIGHT_CUSTOM_AP);
  75. CORESIGHT_AddAP(4, CORESIGHT_AHB_AP); // AHB-AP
  76. CORESIGHT_IndexAHBAPToUse = 4;
  77. }
  78. /*********************************************************************
  79. *
  80. * SetupTarget
  81. */
  82. void SetupTarget(void)
  83. {
  84. JLINK_MEM_WriteU32(0x3039000C, 0x000000A8);
  85. JLINK_MEM_WriteU32(0x3039000C, 0x000000AA);
  86. }