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