Eliot

Материал из WIKI ELVEES

Вопросы по программному обеспечению

Какие режимы загрузки микросхемы предусмотрены?

Микросхема загружается либо из накристальной флэш-памяти, либо из накристальной OTP-памяти, либо из внешней флэш-памяти.

Предусмотрена ли возможность формирования программных DMA-запросов, т.е. запросов по инициативе программиста, а не по инициативе связанного с периферийного блока?

Выбор типа запроса (программный/аппаратный) выполняется битами HS_SEL_SRC, HS_SEL_DST регистра CFGx канала DMA.Сами запросы формируются с помощью регистров, описанных в разделе 23.7.5 "Регистры Интерфейса Запросов".

Какие аппаратные средства предусмотрены для синхронизации работы двух ядер? Например, как обеспечить монопольный доступ одного ядра к определенной ячейке памяти или периферийному устройству? В некоторых зарубежных МК для этого предназначены аппаратные семафоры.

Для синхронизации в архитектуре ARM v8-M предусмотрены эксклюзивные обращения (Chapter B7 Synchronization and Semaphores, ARM v8-M Architecture Reference Manual). Подробнее здесь - https://www.st.com/resource/en/programming_manual/pm0264-stm32-cortexm33-mcus-programming-manual-stmicroelectronics.pdf, 2.3.8Synchronization primitives. В ELIoT01 эксклюзивные обращения поддерживаются для всех банков SRAM0,1,2,3.

Как отдавать команды SD карте в процессе её инициализации и для записи/чтения данных, в каком формате записывать данные в FIFO для пересылки между CPU и контроллером, по какому адресу расположено FIFO?

Для работы с портом SDMMC есть соответствующий драйвер, который также будет входить в состав SDK для отладочного модуля. Данный драйвер включает в себя решение для всех указанных вопросов.

Есть ли встроенный загрузчик для UART?

Возможность загрузки по UART есть: данные можно принимать во встроенную flash по нужному адресу. Загрузкой можно управлять пином GPIO (например, 1 - загрузка во flash, 0 - исполнение программы). Встроенного загрузчика нет.

Возникла проблема с вашей библиотекой для работы с flash памятью контроллера. Функция Flash_WriteWord не записывает данные в память.

Выяснили, что выполнение FLASH_WriteWord из области FLASH-памяти невозможно ввиду архитектуры микросхемы. Следует переместить код FLASH_WriteWord в SRAM-память. Например, с использованием атрибута .section. У себя ошибку BusFault при попытке обращения к регистрам FCTR в этом случае не наблюдаем. __attribute__((__section__(".ramfunc")))

Нужна информацию о процедуре калибровки процесса измерения температуры.

Для тестов ПО можно использовать такие коэффициенты:

wcal = 11'd1311; tcal = 11'd129; wtconf = 8'b00111101;

wtcalconf = 4'b0000;

Вопросы по отладочному модулю

На отладочной плате реализован программатор на микроконтроллере STM32F103CBT6. Там прошивка стандартная от STM или какая-то своя? Поделитесь прошивкой, пожалуйста.

На модуле ELioT1_MO стандартная зашивка DAPLink, адаптированная под встроенный программатор ELIoT1_MO (адаптер ST-LINK, реализованный на микроконтроллере STM32F103CBT6 (DD5)). В прошивке переконфигурировано назначение выводов под конкретный модуль. Если вы воспроизведёте схему программатора ELIoT1_MO, то его можно прошить нашим BIN файлом с программатора ST-LINK v 2. Назначение пинов необходимо сохранить. Файл доступен по ссылке https://box.elvees.com/index.php/s/AyHj8aJLiqTZRry.

Второй вариант - воспроизвести стандартный DAPLink программатор и запрограммировать его стандартной зашивкой.

Как правильно должны быть установлены перемычки на модуле Eliot_MO?

В соответствии с выбранным типом напряжения питания согласно схеме электрической принципиальной на отладочный модуль ELIoT_MO. Схема питания приведена в разделе 8. ПИТАНИЕ ОТЛАДОЧНОГО МОДУЛЯ руководства пользователя на ELIot_MO.

Как определить наличие прошивки в микросхеме DD5 Eliot_MO?

Должен гореть при подключении к ПК диод VD7? - Это позволит определить, есть ли прошивка в микросхеме адаптера DD5, первые версии модуля поставлялись без прошивки.

Действительно ли прерывания предусмотрены лишь для половины каналов DMA ? А как быть с остальными каналами?

У каждого DMA есть 8 каналов и 16 аппаратных запросов от периферии. Прерывания есть для всех восьми каналов каждого DMA. Это номера 67-74 для DMA0 и 75-82 для DMA1. При этом, каждый канал может использоваться с одним из 16-ти аппаратных запросов от периферии.

Прерывания для VTU предусмотрены лишь на целый блок без разделения на отдельные таймеры в нем?

Да, одно комбинированное прерывание на весь блок. Внутри VTU по регистру статуса можно определить, для какого из четырех таймеров было прерывание.

Вопросы по проектированию аппаратуры