Перейти к содержанию
    

GenaSPB

Участник
  • Постов

    3 012
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент GenaSPB


  1. 1) Среди режимов загрузки есть отличающиеся по уровням. 0) у fram есть один из таймаутов который надо выдержать после подачи питания
  2. А почему бы самому по spi не попытаться скормить файл ПЛИСке? Она его верифицирует сама. В конце будете иметь состояние выхода об удачной загрузке.
  3. ... у меня бинарник не запрограммировать... но хоть опозначать начал. Хотя я сейчас и в этом не уверен.
  4. ЦИфры ниже - это сейчас совпадает... могут отличаться значения. В современном варианте приглушенным цветом. Когда яркое - могут отличаться. Заглавные в месяце - как и вся индикация - понемногу стало по эстетическим и для слабовидящих. Два ведущих нуля в токе - обозначить занимемое место - когда менябтися показщания и меняется при этом количество знаков - раздражает. Да двоеточие мгает - медленно, с периодом две секунды. span не нашел пока своего места. И само слово SPAN кандидат на удаление - я вообще противник статических надписей, в данном дизайне.
  5. Обновились dfu-util. Теперь работает с автоматически установившимся по WCID WinUSB драйвером в Windows 10 http://dfu-util.sourceforge.net/releases/dfu-util-0.10-binaries.tar.xz зы: речь про проблему отсюда:
  6. Включите в виндах... короче, если не надо мелкий шрифт разглядывать а нарисовано крупными линиями то меньше режет глаз. Кстати, из авиаторов кто что скажет про визуалку гарминовских пилотажных комплексов? Антиалиасинг при отрисовке используется? Считаю слишком попсовым вид панели управления из первого сообщения. Как то у самолётов функциональнее. Не медиацентр.
  7. Да ничего такого что бы не полуяилось бы сделать самому. Некоторым может приглянуться многоплатформенность - возможность разработки на малинке и переноса кода.
  8. Нет, голое железо с "суперциклом". Занято около 30 мегабайт из 256, два ядра A7 - но там ещё радио. Копирование заранее подготовленных прямоугольников или заполнения цветом MDMA (такой же как в H7) (DMA2D в этом процессоре нет), все рисование софтовое. Фидеобуферы - RGB565, но с 32 бит цветом быстрее софт работает если будут сглаживания и полупрозрачности. LTDC тут такой же как в H7
  9. Тут гдавное - иметь два видеобуфера переключаемых по кадровой синзронизации и не увлекаться попугайными расцветками.
  10. Антиалиасинг из коробки есть в OpenVG. Пока без него - вот такое получается. Исходники тут Но лучше на камень помощнее закладываться - на фото STM32MP153DAB (куб можно использовать для инита). storch demo - YouTube
  11. Именно по TC от DMA. Чипселект разумеется не по этому событию снимать.
  12. Боюсь в таком случае количество потоков будет ограничено количеством ядер... Я делал. Руками. На stm32mp1 и на xylinx zynq. После сброса все ядра начинают работать по одному и тому же коду. Ядро может узнать свой номер и в зависимости от э ого или продолжать выполнение пользовательского кода или ждёт... ждёт обычно на команде wfe. Дождавшись, откуда-то (у разных производителей по разном) читает адрес куда идти и переходит к пользователтскому коду. Контроллер прерываний GIC для каждого источника прерывания хранит маску какому ядру можно передавать запрос.
  13. Писать как можно большими кусками.
  14. Обратите внимане на библтиотеку OpenVG . Есть опыт отвызывания OpenVG от OpenGL (что в дефолтовой имплементации импользуется для демонстрации) - для работы с одним или более видеобуферами (без операционной системы). Все нужные Вам фичи в этой библиотеке есть, чисто софтовое. Антиалиасинг "Из коробки". Исходники всего (и "подпиленой" к современному с++ библиотеки) у меня на гитхабе. ua1arn/hftrx at develop (github.com) hftrx/lib/OpenVG at develop · ua1arn/hftrx (github.com) Из дсотоинств - можно когоо-то на линукс машине типа малины или под виндой засадить разрабатывать UI и потом перенести код в целевое устройство. (6) OpenVG Demo - YouTube
  15. Я код привел... Алгоритм - говорим карте, что сейчас будем писать воот-такой кусок - если нет в наличии - начинай стирать и готовить к записи
  16. Когда я писал звук, ускорило запись раза в полтора.
  17. Если начало/конец записываемого блока кратны сектору, то буферизация в FATFS не используется - все идет "мимо" нее. Да, хорошо бы чтобы в драйвевере карты использовалась команда резервирования блоков (ACMD23). Кусочек моего кода (живет в открытом гитхабовском репо): // write multiblock //PRINTF(PSTR("write multiblock, count=%d\n"), count); // Pre-erased Setting prior to a Multiple Block Write Operation // Setting a number of write blocks to be pre-erased (ACMD23) if (sdhost_short_acmd_resp_R1(SD_CMD_SD_APP_SET_NWB_PREERASED, count & 0x7FFFFF, & resp, DEFAULT_TRANSFER_MODE) != 0) // ACMD23 { PRINTF(PSTR("SD_CMD_SD_APP_SET_NWB_PREERASED error\n")); return RES_ERROR; } //PRINTF(PSTR("SD_CMD_SD_APP_SET_NWB_PREERASED okay\n")); if (sdhost_use_cmd23 != 0) { // set block count sdhost_short_resp(encode_cmd(SD_CMD_SET_BLOCK_COUNT, DEFAULT_TRANSFER_MODE), count, 0); // CMD23 if (sdhost_get_R1(SD_CMD_SET_BLOCK_COUNT, & resp) != 0) // get R1 { PRINTF(PSTR("SD_CMD_SET_BLOCK_COUNT error (count=%u)\n"), (unsigned) count); return RES_ERROR; } } // write multiblock // Сперва настраивается DMA, затем выдается команда SD_CMD_WRITE_MULT_BLOCK // Работает и на STM32Fxxx DMA_SDIO_setparams((uintptr_t) buff, 512, count, txmode); #if CPUSTYLE_STM32H7XX || CPUSTYLE_STM32MP1 // H7 need here: sdhost_dpsm_prepare((uintptr_t) buff, txmode, 512 * count, 9); // подготовка к обмену data path state machine - при записи после выдачи команды #endif /* CPUSTYLE_STM32H7XX */ // write blocks sdhost_short_resp(encode_cmd(SD_CMD_WRITE_MULT_BLOCK, getTransferMode(txmode, count)), sector * sdhost_getaddresmultiplier(), 0); // CMD25 if (sdhost_get_R1(SD_CMD_WRITE_MULT_BLOCK, & resp) != 0) { DMA_sdio_cancel(); PRINTF(PSTR("SD_CMD_WRITE_MULT_BLOCK error\n")); return RES_ERROR; } #if ! (CPUSTYLE_STM32H7XX || CPUSTYLE_STM32MP1) // other then H7 need here sdhost_dpsm_prepare((uintptr_t) buff, txmode, 512 * count, 9); // подготовка к обмену data path state machine - при записи после выдачи команды #endif /* ! CPUSTYLE_STM32H7XX */ if (sdhost_dpsm_wait((uintptr_t) buff, txmode, 512 * count) != 0) { PRINTF(PSTR("SD_disk_write: sdhost_dpsm_wait error\n")); DMA_sdio_cancel(); if (sdhost_stop_transmission() != 0) PRINTF(PSTR("SD_disk_write 2: sdhost_stop_transmission error\n")); return RES_ERROR; } else if (DMA_sdio_waitdone(txmode) != 0) { DMA_sdio_cancel(); PRINTF(PSTR("SD_disk_write 2: DMA_sdio_waitdone error\n")); return RES_ERROR; } else { sdhost_dpsm_wait_fifo_empty(); DMA_sdio_cancel(); #if ! CPUSTYLE_R7S721 && ! CPUSTYLE_XC7Z // В процессоре CPUSTYLE_R7S721 и CPUSTYLE_XC7Z команда CMD12 формируется аппаратурой if (sdhost_use_cmd23 == 0) { if (sdhost_stop_transmission() != 0) PRINTF(PSTR("SD_disk_write 3: sdhost_stop_transmission error\n")); } #endif /* ! CPUSTYLE_R7S721 */ } //PRINTF(PSTR("write multiblock, count=%d okay\n"), count); return RES_OK;
  18. Чтобы, если случайно кеш потребуется для другого участка памяти, старое не попыталось записаться во флешку
  19. 4 - я бы озаботился инвалидацией кеша перед стиранием
  20. А как вам такое решение партии и правительства?: Не присваивать может потому, что значение совпало с тем, на какое инициализировали при входе в функцию. А кото там потом сравнивает результат не с enum значениями, а с константой - iar не виноват...
  21. Я бы просто начальное значение передавал... Избавив себя от головной боли про хранимое состояние. И про thread-safe. Оно или начальное или результат расчета про предидущему сегменту.
  22. Графика для Linux.

    Может кому пригодится... https://en.m.wikipedia.org/wiki/OpenVG
×
×
  • Создать...