forked from Imagelibrary/rtems
274 lines
9.3 KiB
C
274 lines
9.3 KiB
C
/**
|
|
* @file
|
|
*
|
|
* @ingroup shared_monlib
|
|
*
|
|
* @brief Used by both the monitor and the application that
|
|
* may reside on top of the monitor
|
|
*/
|
|
|
|
/* Based upon code from MicroMonitor 1.17 from http://www.umonfw.com/
|
|
* which includes this notice:
|
|
*
|
|
**************************************************************************
|
|
* General notice:
|
|
* This code is part of a boot-monitor package developed as a generic base
|
|
* platform for embedded system designs. As such, it is likely to be
|
|
* distributed to various projects beyond the control of the original
|
|
* author. Please notify the author of any enhancements made or bugs found
|
|
* so that all may benefit from the changes. In addition, notification back
|
|
* to the author will allow the new user to pick up changes that may have
|
|
* been made by other users after this version of the code was distributed.
|
|
*
|
|
* Note1: the majority of this code was edited with 4-space tabs.
|
|
* Note2: as more and more contributions are accepted, the term "author"
|
|
* is becoming a mis-representation of credit.
|
|
*
|
|
* Original author: Ed Sutter
|
|
* Email: esutter@alcatel-lucent.com
|
|
* Phone: 908-582-2351
|
|
**************************************************************************
|
|
*
|
|
* Ed Sutter has been informed that this code is being used in RTEMS.
|
|
*
|
|
* This code was reformatted by Joel Sherrill from OAR Corporation and
|
|
* Fernando Nicodemos <fgnicodemos@terra.com.br> from NCB - Sistemas
|
|
* Embarcados Ltda. (Brazil) to be more compliant with RTEMS coding
|
|
* standards and to eliminate C++ style comments.
|
|
*/
|
|
|
|
#ifndef _MONLIB_H_
|
|
#define _MONLIB_H_
|
|
|
|
#include <umon/tfs.h>
|
|
#include <umon/cli.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @defgroup shared_umon MicroMonitor
|
|
*
|
|
* @ingroup RTEMSBSPsShared
|
|
*
|
|
* @brief shared_umon MicroMonitor (uMon) Bootloader Support
|
|
*/
|
|
|
|
/**
|
|
* @defgroup shared_monlib MONLIB Support
|
|
*
|
|
* @ingroup shared_umon
|
|
*
|
|
* @brief MONLIB Support Package
|
|
*/
|
|
|
|
extern int monConnect(int (*monptr)(int,void *,void *,void *),
|
|
void (*lock)(void),void (*unlock)(void));
|
|
extern void mon_getargv(int *argc,char ***argv);
|
|
extern void mon_intsrestore(unsigned long oldval);
|
|
extern void mon_appexit(int exit_value);
|
|
extern void mon_free(char *buffer);
|
|
extern void mon_profiler(void *pdata);
|
|
extern void mon_bbc(char *filename, int linenum);
|
|
extern void mon_warmstart(unsigned long mask);
|
|
extern void mon_delay(long msec);
|
|
extern void mon_printpkt(char *buf, int size, int incoming);
|
|
extern void mon_printmem(char *mem, int size, int ascii);
|
|
|
|
|
|
extern int mon_com(int cmd,void *arg1,void *arg2,void *arg3);
|
|
extern int mon_timer(int cmd, void * arg);
|
|
extern int mon_setenv(char *varname,char *value);
|
|
extern int mon_putchar(char c);
|
|
extern int mon_getchar(void);
|
|
extern int mon_gotachar(void);
|
|
extern int mon_getbytes(char *buf,int count,int block);
|
|
extern int mon_restart(int restart_value);
|
|
extern int mon_tfsinit(void);
|
|
extern int mon_tfsunlink(char *filename);
|
|
extern int mon_tfslink(char *source, char *target);
|
|
extern int mon_tfsrun(char **arglist,int verbosity);
|
|
extern int mon_tfsfstat(char *filename,struct tfshdr *tfp);
|
|
extern int mon_tfseof(int file_descriptor);
|
|
extern int mon_tfstruncate(int file_descriptor,long length);
|
|
extern int mon_tfsread(int file_descriptor,char *buffer,int size);
|
|
extern int mon_tfswrite(int file_descriptor,char *buffer,int size);
|
|
extern int mon_tfsopen(char *filename,long mode,char *buffer);
|
|
extern int mon_tfsclose(int file_descriptor,char *info);
|
|
extern int mon_tfsseek(int file_descriptor,int offset,int whence);
|
|
extern int mon_tfsgetline(int file_descriptor,char *buffer,int bufsize);
|
|
extern int mon_tfsipmod(char *name,char *buffer,int offset,int size);
|
|
extern int mon_addcommand(struct monCommand *command_list,char *);
|
|
extern int mon_docommand(char *cmdline,int verbosity);
|
|
extern int mon_getline(char *buffer,int max,int ledit);
|
|
extern int mon_decompress(char *src,int srcsize,char *dest);
|
|
extern int mon_heapextend(char *base,int size);
|
|
extern int mon_pcicfgwrite(int interface,int bus,int dev,int func,int reg,
|
|
unsigned long val);
|
|
extern int mon_tfsadd(char *filename, char *info, char *flags,
|
|
unsigned char *src, int size);
|
|
extern int mon_i2cwrite(int interface, int bigaddr, unsigned char *data,
|
|
int len);
|
|
extern int mon_i2cread(int interface, int bigaddr, unsigned char *data,
|
|
int len);
|
|
extern int mon_sendenetpkt(char *pkt, int len);
|
|
extern int mon_recvenetpkt(char *pkt, int len);
|
|
extern int mon_flashoverride(void *flashinfo, int get, int bank);
|
|
extern int mon_flasherase(int snum);
|
|
extern int mon_flashwrite(char *dest,char *src, int bytecnt);
|
|
extern int mon_flashinfo(int snum,int *size, char **base);
|
|
extern int mon_watchdog(void);
|
|
extern int mon_timeofday(int cmd, void *arg);
|
|
|
|
extern char *mon_getsym(char *symname, char *buf, int bufsize);
|
|
extern char *mon_getenv(char *varname);
|
|
extern char *mon_getenvp(void);
|
|
extern char *mon_version(void);
|
|
#ifdef MALLOC_DEBUG
|
|
extern char *mon_malloc(int size,char *file, int line);
|
|
extern char *mon_realloc(char *buf,int size,char *file, int line);
|
|
#else
|
|
extern char *mon_malloc(int size);
|
|
extern char *mon_realloc(char *buf,int size);
|
|
#endif
|
|
|
|
extern long mon_tfsctrl(int command,long arg1,long arg2);
|
|
extern long mon_tfstell(int file_descriptor);
|
|
extern long mon_portcmd(int cmd, void *arg);
|
|
|
|
extern unsigned short mon_xcrc16(char *buffer,long length);
|
|
|
|
extern unsigned long mon_intsoff(void);
|
|
|
|
extern unsigned long mon_pcicfgread(int interface,int bus,int dev,
|
|
int func,int reg);
|
|
|
|
extern unsigned long mon_pcictrl(int interface, int cmd,
|
|
unsigned long arg1, unsigned long arg2);
|
|
|
|
extern unsigned long mon_i2cctrl(int interface, int cmd,
|
|
unsigned long arg1, unsigned long arg2);
|
|
|
|
extern unsigned long mon_assignhandler(long hnum,
|
|
unsigned long arg1,unsigned long arg2);
|
|
|
|
extern struct tfshdr *mon_tfsnext(struct tfshdr *tfp);
|
|
extern struct tfshdr *mon_tfsstat(char *filename);
|
|
|
|
/*
|
|
* The external caller should see these as variable argument methods but
|
|
* they are not implemented that way, so let monlib.c prototype them internally
|
|
* when building that file.
|
|
*/
|
|
#ifndef _INSIDE_MONLIB
|
|
extern void mon_memtrace(char *fmt, ...);
|
|
extern int mon_printf(char *fmt, ...);
|
|
extern int mon_cprintf(char *fmt, ...);
|
|
extern int mon_sprintf(char *,char *fmt, ...);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
/* defines used by monConnect():
|
|
*/
|
|
#define GETMONFUNC_PUTCHAR 1
|
|
#define GETMONFUNC_GETCHAR 2
|
|
#define GETMONFUNC_GOTACHAR 3
|
|
#define GETMONFUNC_GETBYTES 4
|
|
#define GETMONFUNC_PRINTF 5
|
|
#define GETMONFUNC_CPRINTF 6
|
|
#define GETMONFUNC_SPRINTF 7
|
|
#define GETMONFUNC_RESTART 8
|
|
#define GETMONFUNC_GETENV 9
|
|
#define GETMONFUNC_SETENV 10
|
|
#define GETMONFUNC_TFSINIT 11
|
|
#define GETMONFUNC_TFSADD 12
|
|
#define GETMONFUNC_TFSUNLINK 13
|
|
#define GETMONFUNC_TFSRUN 14
|
|
#define GETMONFUNC_TFSNEXT 15
|
|
#define GETMONFUNC_TFSSTAT 16
|
|
#define GETMONFUNC_TFSREAD 17
|
|
#define GETMONFUNC_TFSWRITE 18
|
|
#define GETMONFUNC_TFSOPEN 19
|
|
#define GETMONFUNC_TFSCLOSE 20
|
|
#define GETMONFUNC_TFSSEEK 21
|
|
#define GETMONFUNC_TFSGETLINE 22
|
|
#define GETMONFUNC_TFSIPMOD 23
|
|
#define GETMONFUNC_TFSCTRL 24
|
|
#define GETMONFUNC_ADDCOMMAND 25
|
|
#define GETMONFUNC_DOCOMMAND 26
|
|
#define GETMONFUNC_GETARGV 27
|
|
#define GETMONFUNC_CRC16 28
|
|
#define GETMONFUNC_CRC32 29
|
|
#define GETMONFUNC_PIOGET 30 /* NA (removed as of 1.0) */
|
|
#define GETMONFUNC_PIOSET 31 /* NA (removed as of 1.0) */
|
|
#define GETMONFUNC_PIOCLR 32 /* NA (removed as of 1.0) */
|
|
#define GETMONFUNC_INTSOFF 33
|
|
#define GETMONFUNC_INTSRESTORE 34
|
|
#define GETMONFUNC_APPEXIT 35
|
|
#define GETMONFUNC_MALLOC 36
|
|
#define GETMONFUNC_FREE 37
|
|
#define GETMONFUNC_GETLINE 38
|
|
#define GETMONFUNC_TFSFSTAT 39
|
|
#define GETMONFUNC_TFSEOF 40
|
|
#define GETMONFUNC_DECOMPRESS 41
|
|
#define GETMONFUNC_TFSTRUNCATE 42
|
|
#define GETMONFUNC_HEAPXTEND 43
|
|
#define GETMONFUNC_PROFILER 44
|
|
#define GETMONFUNC_TFSLINK 45
|
|
#define GETMONFUNC_BBC 46
|
|
#define GETMONFUNC_MEMTRACE 47
|
|
#define GETMONFUNC_TFSTELL 48
|
|
#define GETMONFUNC_VERSION 49
|
|
#define GETMONFUNC_WARMSTART 50
|
|
#define GETMONFUNC_PCICFGREAD 51
|
|
#define GETMONFUNC_PCICFGWRITE 52
|
|
#define GETMONFUNC_PCICONTROL 53
|
|
#define GETMONFUNC_I2CREAD 54
|
|
#define GETMONFUNC_I2CWRITE 55
|
|
#define GETMONFUNC_I2CCONTROL 56
|
|
#define GETMONFUNC_MONDELAY 57
|
|
#define GETMONFUNC_GETENVP 58
|
|
#define GETMONFUNC_REALLOC 59
|
|
#define GETMONFUNC_SENDENETPKT 60
|
|
#define GETMONFUNC_RECVENETPKT 61
|
|
#define GETMONFUNC_GETSYM 62
|
|
#define GETMONFUNC_PRINTPKT 63
|
|
#define GETMONFUNC_FLASHWRITE 64
|
|
#define GETMONFUNC_FLASHERASE 65
|
|
#define GETMONFUNC_FLASHINFO 66
|
|
#define GETMONFUNC_ASSIGNHDLR 67
|
|
#define GETMONFUNC_WATCHDOG 68
|
|
#define GETMONFUNC_PRINTMEM 69
|
|
#define GETMONFUNC_PORTCMD 70
|
|
#define GETMONFUNC_TIMEOFDAY 71
|
|
#define GETMONFUNC_TIMER 72
|
|
#define GETMONFUNC_FLASHOVRRD 73
|
|
|
|
#define CACHEFTYPE_DFLUSH 200
|
|
#define CACHEFTYPE_IINVALIDATE 201
|
|
|
|
#define CHARFUNC_PUTCHAR 300
|
|
#define CHARFUNC_GETCHAR 301
|
|
#define CHARFUNC_GOTACHAR 302
|
|
#define CHARFUNC_RAWMODEON 303
|
|
#define CHARFUNC_RAWMODEOFF 304
|
|
|
|
#define ASSIGNFUNC_GETUSERLEVEL 400
|
|
|
|
|
|
/* Defines used by mon_warmstart():
|
|
*/
|
|
#define WARMSTART_IOINIT 0x00000001
|
|
#define WARMSTART_BSSINIT 0x00000002
|
|
#define WARMSTART_RUNMONRC 0x00000004
|
|
#define WARMSTART_MONHEADER 0x00000008
|
|
#define WARMSTART_TFSAUTOBOOT 0x00000010
|
|
#define WARMSTART_BOARDINFO 0x00000020
|
|
#define WARMSTART_ALL 0xffffffff
|
|
#endif
|