106 lines
2.5 KiB
C
106 lines
2.5 KiB
C
/*
|
|
*
|
|
* PRU Debug Program header file
|
|
* (c) Copyright 2011, 2013 by Arctica Technologies
|
|
* Written by Steven Anderson
|
|
*
|
|
*/
|
|
|
|
#ifndef PRUDBG_H
|
|
#define PRUDBG_H
|
|
|
|
// default processor to use if none is specified on the command line when prudebug is started
|
|
#define DEFAULT_PROCESSOR_INDEX AM335x
|
|
|
|
// list of processors to use in the define above (DEFAULT_PROCESSOR_INDEX)
|
|
// value for define must match the array index in the processor structure
|
|
// in the prudbg.c file.
|
|
#define AM1707 0
|
|
#define AM335x 1
|
|
|
|
|
|
// general settings
|
|
#define MAX_CMD_LEN 25
|
|
#define MAX_CMDARGS_LEN 200
|
|
#define MAX_COMMAND_LINE (MAX_CMD_LEN + MAX_CMDARGS_LEN + 1)
|
|
#define MAX_ARGS 10
|
|
#define MAX_PRU_MEM 0xFFFF
|
|
#define NUM_OF_PRU 2
|
|
#define MAX_NUM_OF_PRUS 16 // maximum number of PRUs to expect in any processor
|
|
#define MAX_BREAKPOINTS 5
|
|
#define MAX_WATCH 5
|
|
#define MAX_PROC_NAME 20
|
|
|
|
// register offsets
|
|
#define PRU_CTRL_REG 0x0000
|
|
#define PRU_STATUS_REG 0x0001
|
|
#define PRU_INTGPR_REG 0x0100
|
|
|
|
// PRU control register bit flags
|
|
#define PRU_REG_PCRESET_MASK 0x0000FFFF
|
|
#define PRU_REG_RUNSTATE 0x00008000
|
|
#define PRU_REG_SINGLE_STEP 0x00000100
|
|
#define PRU_REG_COUNT_EN 0x00000008
|
|
#define PRU_REG_SLEEPING 0x00000004
|
|
#define PRU_REG_PROC_EN 0x00000002
|
|
#define PRU_REG_SOFT_RESET 0x00000001
|
|
|
|
// defines for PRU memory mapping method requeste by user
|
|
#define ACCESS_GUESS 0
|
|
#define ACCESS_UIO 1
|
|
#define ACCESS_MEM 2
|
|
|
|
// defines for command repeats
|
|
#define LAST_CMD_NONE 0
|
|
#define LAST_CMD_D 1
|
|
#define LAST_CMD_DD 2
|
|
#define LAST_CMD_DI 3
|
|
#define LAST_CMD_DIS 4
|
|
#define LAST_CMD_SS 5
|
|
|
|
// defines for structures below
|
|
#define BP_UNUSED 0
|
|
#define BP_ACTIVE 1
|
|
|
|
#define WA_UNUSED 0
|
|
#define WA_PRINT_ON_ANY 1
|
|
#define WA_HALT_ON_VALUE 2
|
|
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
|
|
|
|
// global structures
|
|
struct breakpoints {
|
|
unsigned char state;
|
|
unsigned int address;
|
|
};
|
|
|
|
struct watchvariable {
|
|
unsigned char state;
|
|
unsigned int address;
|
|
unsigned int value;
|
|
unsigned int old_value;
|
|
};
|
|
|
|
|
|
// global variables
|
|
extern unsigned int *pru;
|
|
extern unsigned int pru_inst_base[], pru_ctrl_base[], pru_data_base[];
|
|
extern unsigned int pru_num;
|
|
extern struct breakpoints bp[MAX_NUM_OF_PRUS][MAX_BREAKPOINTS];
|
|
extern struct watchvariable wa[MAX_NUM_OF_PRUS][MAX_WATCH];
|
|
|
|
|
|
// function prototypes
|
|
int cmd_input(char *prompt, char *cmd, char *cmdargs, unsigned int *argptrs, unsigned int *numargs);
|
|
void printhelp();
|
|
int cmd_d (int offset, int addr, int len);
|
|
int cmd_loadprog(unsigned int addr, char *fn);
|
|
void cmd_run();
|
|
void cmd_soft_reset();
|
|
void disassemble(char *str, unsigned int inst);
|
|
|
|
#endif // PRUDBG_H
|
|
|