143 lines
5.8 KiB
C
143 lines
5.8 KiB
C
/**
|
||
* @file bios_dsp.h
|
||
* @brief Команды сервисного BIOS и API удалённой работы с памятью.
|
||
*
|
||
* Объявляет номера команд загрузчика и обработчики, работающие с RS_DATA.
|
||
* Интерфейс предоставляет прямые операции с адресным пространством DSP и
|
||
* предназначен только для доверенных, уже проверенных протокольных запросов.
|
||
*/
|
||
/****************************************************************/
|
||
/* TMS320C32 */
|
||
/* ====== BIOS, КЛАИН, КЛВСП ====== */
|
||
/* ЦНИИ СЭТ (с) 1998-2000 г. */
|
||
/****************************************************************/
|
||
/* Bios_dsp.h */
|
||
/****************************************************************/
|
||
/* Основные комманды BIOS */
|
||
/****************************************************************/
|
||
#ifndef _BIOS_DSP
|
||
#define _BIOS_DSP
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#define BM_PACKED 1
|
||
#define BM_CHAR32 0
|
||
|
||
#define CHIEF 1
|
||
#define SLAVE 0
|
||
|
||
#define ADR_FOR_SPECIAL 0x100
|
||
#define CMD_MODBUS_3 3
|
||
#define ANS_MODBUS_4 4
|
||
#define CMD_MODBUS_15 5
|
||
#define CMD_MODBUS_6 6
|
||
#define ANS_MODBUS_6 7
|
||
#define CMD_MODBUS_16 16
|
||
/*
|
||
|
||
CMD_MODBUS_3 = 3,
|
||
ANS_MODBUS_3 = 4,
|
||
CMD_MODBUS_15 = 5,
|
||
CMD_MODBUS_6 = 6,
|
||
ANS_MODBUS_6 = 7,
|
||
CMD_MODBUS_16 = 16,
|
||
*/
|
||
enum {
|
||
CMD_LOAD=51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,
|
||
CMD_PEEK, CMD_POKE, CMD_INITLOAD, CMD_INIT,CMD_EXTEND,
|
||
|
||
CMD_VECTOR=61,
|
||
CMD_IMPULSE,
|
||
/* стандартные команды */
|
||
CMD_STD=65, CMD_STD_ANS
|
||
};
|
||
|
||
enum {false=0, true};
|
||
|
||
|
||
/** Возвращает номер комманды, если есть или -1 если транзакций не было */
|
||
/** Проверяет кадр и выполняет содержащуюся в нём сервисную команду. */
|
||
int get_command(RS_DATA *rs_arr);
|
||
|
||
/** Стандартный ответ, без параметров */
|
||
/** Формирует и отправляет ответ длиной n слов через заданный порт. */
|
||
void Answer(RS_DATA *rs_arr,int n);
|
||
|
||
/* начальные установки (не работает)*/
|
||
/** Сбрасывает состояние текущей сессии загрузчика. */
|
||
void init(RS_DATA *rs_arr);
|
||
|
||
/**@name Комманды
|
||
* Комманды, вызываемые через последовательный канал*/
|
||
//@{
|
||
|
||
/** Инициировать загрузку блока.
|
||
Настраивает прием блока данных */
|
||
/** Подготавливает диапазон памяти к приёму нового образа. */
|
||
void initload(RS_DATA *rs_arr);
|
||
|
||
/** Загрузка блока.
|
||
Вызываетса после загрузки блока через RS */
|
||
/** Записывает очередной проверенный блок образа в память. */
|
||
void load(RS_DATA *rs_arr);
|
||
|
||
/** Выполнить программу в формате Serial Boot.
|
||
@precondition Должна быть произведена загрузка блока
|
||
Адрес программы беретса из заголовка и
|
||
сравниваетса с переменной RecvPtr, заполнаемой в ф-ции load
|
||
@see load */
|
||
/** Передаёт управление по адресу, заданному сервисной командой. */
|
||
void run (RS_DATA *rs_arr);
|
||
|
||
/** Прочитать ачейку памати */
|
||
/** Читает запрошенный диапазон памяти и возвращает его ведущему узлу. */
|
||
void peek(RS_DATA *rs_arr);
|
||
|
||
/** Записать в ачейку памати */
|
||
/** Записывает одно или несколько слов по адресу из команды. */
|
||
void poke(RS_DATA *rs_arr);
|
||
|
||
/** Передать блок памати */
|
||
/** Передаёт ведущему узлу очередной блок содержимого памяти. */
|
||
void upload(RS_DATA *rs_arr);
|
||
|
||
/** Прошить XILINX.
|
||
@precondition Должна быть произведена загрузка блока
|
||
Адрес и длина прошивки беретса из заголовка и
|
||
сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load,
|
||
так же смотрит магическое слово в начале прошивки
|
||
@see load */
|
||
/** Обрабатывает команду доступа к внешней Flash-памяти. */
|
||
void xflash(RS_DATA *rs_arr);
|
||
|
||
/** Прошить TMS.
|
||
@precondition Должна быть произведена загрузка блока
|
||
Адрес и длина прошивки беретса из заголовка и
|
||
сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load
|
||
@see load */
|
||
/** Обрабатывает команду доступа к целевой Flash-памяти. */
|
||
void tflash(RS_DATA *rs_arr);
|
||
|
||
|
||
/* расширенные команды дла биоса */
|
||
/** Обрабатывает расширенную сервисную команду BIOS. */
|
||
void extendbios(RS_DATA *rs_arr);
|
||
|
||
|
||
/** Записывает слово по физическому адресу; адрес обязан быть допустимым. */
|
||
void write_memory(unsigned long addr, unsigned int data);
|
||
/** Читает слово по физическому адресу; адрес обязан быть допустимым. */
|
||
unsigned int read_memory(unsigned long addr);
|
||
|
||
|
||
//@}
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif/* _BIOS_DSP */
|