資源簡介
可以實現(xiàn)運行時讀寫Cortex-m系列cpu的存儲, 也可實現(xiàn)jlink rtt功能
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#ifndef?uint8_t
#define?uint8_t?unsigned?char
#endif
#ifndef?bool
#define?bool int
#endif
#define?_CALL
#pragma?pack(push)
#pragma?pack(1)
struct?TRAD_T
{
uint32_t?flag;
uint32_t?data;
};
struct?TRAD_CB
{
TRAD_T?tx;
TRAD_T?rx;
uint8_t?txbuf[128];
uint8_t?rxbuf[128];
};
#pragma?pack(pop)
#define?TRAD_OFFSET(m) (trad_addr+offsetof(TRAD_CBm))
bool(*JlinkARM_IsHalted)(void);
bool(*JlinkARM_Halt)(void);
void?(*JlinkARM_Open)(void);
void(*JlinkARM_Close)(void);
bool?(*JlinkARM_IsOpen)(void);
uint32_t?(*JlinkARM_GetSN)(void);
uint32_t?(*JlinkARM_GetId)(void);
uint32_t?(*JlinkARM_GetDLLVersion)(void);
uint32_t?(*JlinkARM_GetSpeed)(void);
uint32_t?(*JlinkARM_ReadDCC)(uint32_t?*buf?uint32_t?size?int32_t?timeout);
uint32_t?(*JlinkARM_WriteDCC)(const?uint32_t?*buf?uint32_t?size?int32_t?timeout);
uint32_t?(*JlinkARM_ReadDCCFast)(uint32_t?*buf?uint32_t?size?int32_t?timeout);
uint32_t?(*JlinkARM_WriteDCCFast)(const?uint32_t?*buf?uint32_t?size?int32_t?timeout);
uint32_t?(*JlinkARM_WaitDCCRead)(uint32_t?timeout);
void?(*JlinkARM_SetSpeed)(uint32_t?spd);
uint32_t(*JlinkARM_ExecCommand)(const?char*?cmduint32_t?auint32_t?b);
void(*JlinkARM_WriteU8)(uint32_t?addr?uint8_t?dat);
void(*JlinkARM_WriteU16)(uint32_t?addr?uint16_t?dat);
void(*JlinkARM_WriteU32)(uint32_t?addr?uint32_t?dat);
uint32_t(*JlinkARM_ReadMemU8)(uint32_t?addr?uint32_t?leng?uint8_t?*buf?uint8_t?*status);
uint32_t(*JlinkARM_ReadMemU16)(uint32_t?addr?uint32_t?leng?uint16_t?*buf?uint8_t?*status);
uint32_t?(*JlinkARM_ReadMemU32)(uint32_t?addr?uint32_t?leng?uint32_t?*buf?uint8_t?*status);
void(*JlinkARM_ReadMemHW)(uint32_t?addr?uint32_t?leng?uint8_t?*buf);
uint32_t?(_CALL?*Jlink_TIF_Select)(uint32_t?tif);
uint32_t(_CALL*Jlink_Connect)(void);
uint32_t(_CALL*Jlink_IsConnected)(void);
void(*JlinkARM_ReadMem)(uint32_t?addr?uint32_t?leng?uint8_t?*buf);
void(*Jlink_ReadMemU8)(uint32_t?addr?uint32_t?leng?uint8_t?*buf?uint8_t?*status);
uint32_t?(*Jlink_GetMemZones)(uint32_t?a?uint32_t?b);
void(*JlinkARM_Go)(void);
uint32_t?JlinkARM_WriteMenU8(uint32_t?addr?uint32_t?leng?uint8_t?*buf)
{
if?(leng?==?1)
{
JlinkARM_WriteU8(addr?buf[0]);
}
else?if?(leng?==?2)
{
uint16_t?dat?=?buf[0];
dat?<<=?8;
dat?|=?buf[1];
JlinkARM_WriteU16(addr?dat);
}
else?if?(leng?==?3)
{
JlinkARM_WriteU8(addr?buf[0]);
uint16_t?dat?=?buf[1];
dat?<<=?8;
dat?|=?buf[2];
JlinkARM_WriteU16(addr?dat);
}
else
{
for?(int?i?=?0;?i? {
int?l?=?leng?-?i;
if?(l?>=?4)?
{
uint32_t?dat?=?buf[i+0];
dat?<<=?8;
dat?|=?buf[i+1];
dat?<<=?8;
dat?|=?buf[i+2];
dat?<<=?8;
dat?|=?buf[i+3];
JlinkARM_WriteU32(addr?dat);
}
else
{
for?(int?j?=?i;?j? JlinkARM_WriteU8(addr?bu
- 上一篇:CvImgCtrl 演示程序
- 下一篇:SM2/SM3算法C語言實現(xiàn)
評論
共有 條評論