Files
Balsam_167/Source/Internal/Include/bios_dsp.h

143 lines
5.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @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 */