1 /* 2 * hal.h 3 * 4 * Copyright (C) 2007 - 2011 Texas Instruments Incorporated - http://www.ti.com/ 5 * 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 14 * Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the 17 * distribution. 18 * 19 * Neither the name of Texas Instruments Incorporated nor the names of 20 * its contributors may be used to endorse or promote products derived 21 * from this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 36 /** 37 @page hal Hardware Abstraction Layer (HAL) 38 This page introduces the user to the topic. 39 */ 40 41 /** 42 @file hal.h 43 @brief Hardware Abstraction Layer (HAL) 44 45 This file defines and exports all the objects and symbols required to use 46 the Hardware Abstraction Layer (HAL). 47 */ 48 49 #ifndef _HAL_H_ 50 #define _HAL_H_ 51 52 #define T_ARCH_MSP430 0 53 #define T_ARCH_MSP432 1 54 55 // Event types send async to DLL First word in message 56 enum EVENT_TYPE_FLAGS 57 { 58 // set if breakpoint is hit 59 BP_HIT_FLAG = 0x1, 60 // State Sotrage Event 61 STATE_STORAGE_FLAG = 0x2, 62 //JSTATE Capute 63 JSTATE_CAPTURE_FLAG = 0x4, 64 //Power profiling data capture 65 ENERGYTRACE_INFO = 0x8, 66 // Variable watch event 67 VARIABLE_WATCH_FLAG = 0x10 68 }; 69 70 #define NO_FLAG 0x00 71 #define LOCK_INFO_A_FLAG 0x01 72 73 #define HAL_FUNCTION(x) short x (unsigned short flags) 74 typedef short (*HalFuncInOut)(unsigned short); 75 76 struct _DeviceSettings_ 77 { 78 unsigned long clockControlType; 79 unsigned short stopFLL; 80 unsigned short assertBslValidBit; 81 }; 82 typedef struct _DeviceSettings_ DeviceSettings; 83 84 struct _DevicePowerSettings_ 85 { 86 unsigned long powerTestRegMask; 87 unsigned long powerTestRegDefault; 88 unsigned long enableLpmx5TestReg; 89 unsigned long disableLpmx5TestReg; 90 91 unsigned short powerTestReg3VMask; 92 unsigned short powerTestReg3VDefault; 93 unsigned short enableLpmx5TestReg3V; 94 unsigned short disableLpmx5TestReg3V; 95 }; 96 typedef struct _DevicePowerSettings_ DevicePowerSettings; 97 98 typedef struct _ARMConfigSettings 99 { 100 unsigned long scsBase; // System Control Space base address 101 unsigned long fpbBase; // FLASH Patch Block base address 102 unsigned long interruptOptions; // Options to enable/disable interrupts when single stepping or letting the device run 103 unsigned long ulpDebug; // Options to enable/disable entry to LPM. poll for PB hit in low poer mode 104 } ARMConfigSettings; 105 106 #ifndef HAL_REC 107 #define HAL_REC 108 struct _HalRec_ 109 { 110 unsigned short id; 111 void *function; 112 }; 113 typedef struct _HalRec_ HalRec; 114 #endif 115 116 extern void _init_Hal(void); 117 118 #define MACRO_LIST \ 119 MACRO(Init) \ 120 MACRO(SetVcc) \ 121 MACRO(GetVcc) \ 122 MACRO(StartJtag) \ 123 MACRO(StartJtagActivationCode) \ 124 MACRO(StopJtag) \ 125 MACRO(Configure) \ 126 MACRO(GetFuses) \ 127 MACRO(BlowFuse) \ 128 MACRO(WaitForEem) \ 129 MACRO(BitSequence) \ 130 MACRO(GetJtagId) \ 131 MACRO(SetDeviceChainInfo) \ 132 MACRO(SetChainConfiguration) \ 133 MACRO(GetNumOfDevices) \ 134 MACRO(GetInterfaceMode) \ 135 MACRO(GetDeviceIdPtr) \ 136 MACRO(SyncJtag_AssertPor_SaveContext) \ 137 MACRO(SyncJtag_Conditional_SaveContext) \ 138 MACRO(RestoreContext_ReleaseJtag) \ 139 MACRO(ReadMemBytes) \ 140 MACRO(ReadMemWords) \ 141 MACRO(ReadMemQuick) \ 142 MACRO(WriteMemBytes) \ 143 MACRO(WriteMemWords) \ 144 MACRO(EemDataExchange) \ 145 MACRO(EemDataExchangeAFE2xx) \ 146 MACRO(SingleStep) \ 147 MACRO(ReadAllCpuRegs) \ 148 MACRO(WriteAllCpuRegs) \ 149 MACRO(Psa) \ 150 MACRO(ExecuteFunclet) \ 151 MACRO(ExecuteFuncletJtag) \ 152 MACRO(GetDcoFrequency) \ 153 MACRO(GetDcoFrequencyJtag) \ 154 MACRO(GetFllFrequency) \ 155 MACRO(GetFllFrequencyJtag) \ 156 MACRO(WaitForStorage) \ 157 MACRO(SyncJtag_AssertPor_SaveContextX) \ 158 MACRO(SyncJtag_Conditional_SaveContextX) \ 159 MACRO(RestoreContext_ReleaseJtagX) \ 160 MACRO(ReadMemBytesX) \ 161 MACRO(ReadMemWordsX) \ 162 MACRO(ReadMemQuickX) \ 163 MACRO(WriteMemBytesX) \ 164 MACRO(WriteMemWordsX) \ 165 MACRO(EemDataExchangeX) \ 166 MACRO(SingleStepX) \ 167 MACRO(ReadAllCpuRegsX) \ 168 MACRO(WriteAllCpuRegsX) \ 169 MACRO(PsaX) \ 170 MACRO(ExecuteFuncletX) \ 171 MACRO(GetDcoFrequencyX) \ 172 MACRO(GetFllFrequencyX) \ 173 MACRO(WaitForStorageX) \ 174 MACRO(BlowFuseXv2) \ 175 MACRO(BlowFuseFram) \ 176 MACRO(SyncJtag_AssertPor_SaveContextXv2) \ 177 MACRO(SyncJtag_Conditional_SaveContextXv2)\ 178 MACRO(RestoreContext_ReleaseJtagXv2) \ 179 MACRO(ReadMemWordsXv2) \ 180 MACRO(ReadMemQuickXv2) \ 181 MACRO(WriteMemWordsXv2) \ 182 MACRO(EemDataExchangeXv2) \ 183 MACRO(SingleStepXv2) \ 184 MACRO(ReadAllCpuRegsXv2) \ 185 MACRO(WriteAllCpuRegsXv2) \ 186 MACRO(PsaXv2) \ 187 MACRO(ExecuteFuncletXv2) \ 188 MACRO(UnlockDeviceXv2) \ 189 MACRO(MagicPattern) \ 190 MACRO(UnlockC092) \ 191 MACRO(HilCommand) \ 192 MACRO(PollJStateReg) \ 193 MACRO(PollJStateRegFR57xx) \ 194 MACRO(IsJtagFuseBlown) \ 195 MACRO(ResetXv2) \ 196 MACRO(WriteFramQuickXv2) \ 197 MACRO(SendJtagMailboxXv2) \ 198 MACRO(SingleStepJStateXv2) \ 199 MACRO(PollJStateRegEt8) \ 200 MACRO(ResetStaticGlobalVars) \ 201 MACRO(Reset430I) \ 202 MACRO(PollJStateReg430I) \ 203 MACRO(PollJStateReg20) \ 204 MACRO(SwitchMosfet) \ 205 MACRO(ResetL092) \ 206 MACRO(DummyMacro) \ 207 MACRO(Reset5438Xv2) \ 208 MACRO(LeaSyncConditional) \ 209 MACRO(GetJtagIdCodeArm) \ 210 MACRO(ScanApArm) \ 211 MACRO(MemApTransactionArm) \ 212 MACRO(ReadAllCpuRegsArm) \ 213 MACRO(WriteAllCpuRegsArm) \ 214 MACRO(EnableDebugArm) \ 215 MACRO(DisableDebugArm) \ 216 MACRO(RunArm) \ 217 MACRO(HaltArm) \ 218 MACRO(ResetArm) \ 219 MACRO(SingleStepArm) \ 220 MACRO(WaitForDebugHaltArm) \ 221 MACRO(MemApTransactionArmSwd) \ 222 MACRO(GetInterfaceModeArm) \ 223 MACRO(PollDStatePCRegEt) \ 224 MACRO(GetCpuIdArm) \ 225 MACRO(CheckDapLockArm) \ 226 MACRO(UnlockDap) \ 227 MACRO(UssSyncConditional) 228 229 #define MACRO(x) ID_##x, 230 enum hal_id 231 { 232 MACRO(Zero) 233 MACRO_LIST 234 NUM_MACROS 235 }; 236 #undef MACRO 237 238 239 #define HAL_FUNCTIONS_DEFAULT_SIZE NUM_MACROS 240 #define HAL_FUNCTIONS_SIZE (NUM_MACROS+2) 241 242 extern HalRec hal_functions_[HAL_FUNCTIONS_SIZE]; 243 244 #endif 245 246