/**************************************************************** * * * MFBSP_LPORT_DMA * * * * Демонстрирует простой обмен данными по MFBSP в режиме * * линкового порта с использованием DMA (с ожиданием по опросу)* * Массив OutputArray заполняется числами, * * затем пересылается из MFBSP0 в MFBSP1. * * Элементы входного массива InputArray проверяются * * на совпадение их значений с порядковыми номерами, * * возвращаемое значение этой фунции копируется в переменную * * Flag_Corr. * * Чтобы программа работала на отладочной плате - * * необходимо физически соединить MFBSP0 и MFBSP1. * * Соединяются они "пин в пин". * * * ****************************************************************/ #include "mcom_runtime/risc_mfbsp.h" #include "mcom_runtime/mcom02.h" // Частота LPORT в Гц #define LPORT_FRQ 50000000 // длина массива в 32-разрядных словах #define ARRAY_LEN 1000 unsigned int Flag_Corr = 0; // флаг корректности полученных данных // Адреса массивов должны быть выравнены по границе 64-разрядного слова, // если они будут пересылаться по DMA unsigned int OutputArray[ARRAY_LEN] __attribute__ ((aligned (8))); unsigned int InputArray[ARRAY_LEN] __attribute__ ((aligned (8))); // функция заполнения массива числами от 0 до len void FillArray(unsigned int *array, unsigned int len) { unsigned int i; for (i=0;i> 1) ^ 0xedb88320ul : crc >> 1; crc_table[i] = crc; }; crc = 0xfffffffful; while (len--) crc = crc_table[(crc ^ *buf++) & 0xff] ^ (crc >> 8); return crc ^ 0xfffffffful; } // функция заполняет массив нулями void ZeroArray(unsigned int *array, unsigned int len) { unsigned int i; for (i=0;i