/*************************************************************************************************************
  Copyright (C) 2016-2022 JSC "ICC Milandr" 

*************************************************************************************************************/

/*
 *
 *  Файл:      readme.txt
 *  Описание:  Описание примера DMA_TCB_Chain
 *
 *  История:
 *             27.09.22  - cоздан
 *
 */


/* Описание примера ----------------------------------------------------------------------------------------*/

В данном примере приведено, как реализовать цепочку DMA.

Для работы настраивается 0 канал DMA, который имеет два регистра TCB: для передатчика и для приемника.
Для передачи первого блока данных инициализируются конфигурации tcbTx1 и tcbRx1: передача данных во внутренней 
памяти, размер данных - слово.
Для передачи второго блока данных инициализируются конфигурации tcbTx2 и tcbRx2: передача данных во внутренней 
памяти, размер данных - квадрослово.

В конфигурации tcbTx1, tcbTx2, tcbRx1 и tcbRx2 добавляется параметры для создания цепочек DMA:
- для приёмника: tcbRx1 -> tcbRx2;
- для передатчика: tcbTx1 -> tcbTx2.

Далее регистры TCB приёмника и передатчика канала 0 DMA инициализируются первыми элементами цепочки - 
в TCB приёмника записывается tcbRx1, а в TCB передатчика записывается tcbTx1. После этого канал 0 DMA начинает 
выполнять пересылку данных.

После завершения передачи данных по каналу 0 с конфигурацией tcbTx1/tcbRx1 начнётся передача данных по 
каналу 0 с конфигурацией tcbTx2/tcbRx2.

Ожидается окончание работы канала 0 DMA, после чего выполняется верификация принятых данных.
Если данные были переданы успешно, то в отладочную консоль будет выведено сообщение "Result: Success". 
Если в ходе работы примера была зафиксирована ошибка, то в отладочную консоль будет выведено сообщение
"Result: Error - <Описание проблемы>".

Обратите внимание, что переменные для хранения конфигурации tcb должны быть выровнены на границу квадраслова!
Так как 2 блок данных передаётся квадрословами, то соответствующие буферы данных для приёмника и передатчика 
также должны быть выровнены на границу квадраслова, при этом количество передаваемых данных должно быть 
кратно 4!


/* Содержание каталога -------------------------------------------------------------------------------------*/

    - main.c               Основная программа
    - project.ldf          Файл сценария для компоновщика
    - session.lldbinit     Файл инициализации периферии до запуска отладки
    - .cproject, .project  Файлы конфигурации проекта


/* Аппаратная и программная среда --------------------------------------------------------------------------*/

    - Интегрированная среда разработки CM-LYNX.
    - Отладочная плата для процессора 1967ВН028 или программный симулятор процессора 1967ВН028.


/* Использование -------------------------------------------------------------------------------------------*/

Для запуска примера необходимо выполнить следующие действия:
    - Создать новое или открыть существующее рабочее пространство (Workspace).
    - Выполнить импорт проекта "DMA_TCB_Chain" в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", 
      п. "Импорт существующего проекта".
    - Выполнить сборку проекта.
    - Создать конфигурацию отладки в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", п. "Настройка 
      конфигурации и запуск отладки".
    - Запустить пример в режиме отладки.
    
Подробное описание библиотеки HAL с примерами использования функций приведено в каталоге по пути:
"CM-LYNX.x.yy.zz\toolchain\1967VN028\HAL\doc".
