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

AVI-crak

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

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

  • Посещение

Весь контент AVI-crak


  1. Адресация в sdram не кратна внешним данным, младший адрес равен всей ширине данных на интерфейсе чипа. А там может быть 2-4-8-16-32 бита. Чтение всегда выполняется в полном физическом варианте, и уже на мк обрезается лишнее. Для записи есть внешние сигналы nbl1-nbl4, которые "выключают" неиспользуемые данные - чтобы не изменить чего лишнего. С большой вероятностью они у вас не используются. Пакетное чтение включено по умолчанию, для выключения нужна магия из доков на чип памяти. Некоторые производители чипов инопланетяне, у них не так как у всех. Вся настройка производится через линию адреса, которая должна быть распаяна полностью, не смотря на якобы "лишние" линии. Потом их можно освободить если очень хочется. И да, первое обращение к произвольному адресу - самое длительное. Но потом оно ограничено только тактовой частотой чипа (в пределах одной страницы).
  2. Ну тогда и мыслить нужно иначе. Для аналоговых схем сдвиг фазы очень легко фиксировать. Он там может быть в долях градуса, и аналог может его усилить. Но у вас цифра и измерить это время просто так не получится - это буквально 1-5 единиц таймера + дребезг. А вот управлять аналоговым коммутатором через таймер - значит выкинуть много корпусов жёсткой логики из аналоговой схемы. Без усилителя один фиг не получится. Есть вариант измерять затухание в катушке, ну или её нагрузку. Без сдвига фаз, без колебательных контуров - жёсткий меандр с контролем тока по тому-же таймеру. Если сдвинуть входной диапазон ацп на рабочую область захвата напряжений - то 12 бит должно хватить с лихвой. Там естественно всё будет в попугаях, но важно не напряжение - а скорость его изменения. И да, без акселя и гироскопа это будет очередная 100500 версия металлодетектора с али.
  3. Кхм, вч закалка что-ли? Сдвиг фазы можно контролировать миллионом прямых и косвенных вариантов. Вот только зачем? Проще сразу толкать колебательный контур в нужном направлении, а не насиловать его внешней частотой. И это делается аппаратно на двух транзисторах.
  4. Разница появляется на сборке usb. Точнее на перестановке местами функций во флеш памяти, и как следствие - изменение расстояния до переменных и констант. В некоторых случаях адрес получается коротким. Смена даты создания (не изменения!!!) файла влияет на порядок обработки компилятором в случае раздельной компиляции. Сначала самое старое, оно возможно не требует обработки и может быть кэшировано. Эта функция пришла из мира больших машин, и порядком поднасрала во многих местах.
  5. В дма есть своё FIFO, использовать порог 1/2 и 4 удара на чтение из памяти для 16 бит данных, или 8 ударов на 8бит данных. Память при этом будет читаться два раза по 32бита. Арбитр шины допускает работу дма в режиме последовательного чтения без пропусков 2 или 4 полных такта. Два полных такта предпочтительнее, fifo в любом случае заполняется под крышку, порог - это когда количество данных уменьшилось. В этом случае есть ещё два запасных такта на борьбу с арбитром памяти. Можно поиграться с порогом 3/4, но это очень специфично. И да, дма не может читать данные из памяти быстрее 1/2 частоты шины, чисто физически. Но может стабильно писать на той-же частоте в периферию.
  6. st32f767 QSPI

    Ну да, именно так. Хотя возможно они как-то иначе называются, не суть - главное что удобно. Двухсторонняя пайка только на стадии проектирования выглядит заманчивой, потом начинаются проблемы. Мало того что после установки модуля теряется доступ к нижней стороне платы, так оно ещё будет жить собственной жизнью - без возможности отладки. Физику можно и нужно ставить на модуль, если она конечно вообще нужна. Просто для использования проводного подключения - ваш девайс должен иметь увесистые габариты, или иметь крепление к более массивному девайсу/железу. Иначе хвост начнёт вилять собакой. Выводить линии физики до трансформатора через краевой разъём можно, там вообще длинна ничем не ограничена. Вот только до трансформатора должно идти 4 линии - две сигнальных, и две питания - с подключением на фильтрующую керамику возле физики. Без объединения линий питания на трансе - то-есть он должен иметь раздельные обмотки. Это дело нужно отдельно искать, у них там беда с контактами. И ещё насчёт физики - имеет смысл поиграться на готовой отладке. Там алгоритм обработки протокола достаточно ощутимо жрёт процессорное время. В случае хорошей нагрузки - почти только этим и занимается. Если нет жёстких требований к внешним интерфейсам связи, то лучше использовать esp8266/esp32 - пусть отдельно потеет. Насчёт бга - эти чипы дешевле, и занимают меньшую площадь. У вас не получится сделать красиво в домашних условиях двухслойную плату для lqfp чипа - там ноги разбросаны в режиме пьяного индуса. То-есть переходные отверстия будут, и их будет много. К тому-же для двухслойки все быстрые линии должны иметь барьер из линии земли или питания. Земля при этом приобретает вид сетки - горизонт на одной стороне и вертикаль на обратной, с огромным количеством контактов пересечения. Площадь ПП при этом растёт в квадратичной последовательности. Сделать можно - но это адский труд, ну его нафиг. 4 слоя разводятся в режиме обезьяны, и всегда в рабочем состоянии. И ещё насчёт s25fl128/256s - эти чипы реально быстрее винборда, да и всего остального тоже. Дело в том что тактовая частота - это только внешняя реклама серии. Собака зарыта в таймингах доступа. Они там ощутимо меньше всего что я раньше видел. В режиме работы Memory-mapped - arm чип может напрямую обращаться к внешней памяти, без программных прослоек. По любым доступным адресам - с максимальной скоростью в последовательном чтении данных. А вот когда адрес новый - arm ядро ждёт ответа в режиме стоп. Буквально останавливается. То-есть в случае с дешевой внешней qsp флешкой - от мегагерцев процессора мало чего остаётся.
  7. st32f767 QSPI

    После sdram памяти, qspi, кварцев, и полного выхлопа на экран - остаётся очень мало ног. Причём занятые ноги почти всегда имеют один вариант. Если sdram 32 бита - то остаток вообще мал. Для TFT есть альтернатива где нет дополнительных альт функций. Всё что осталось прекрасно помещается на краевые полигоны для пайки. Так можно сэкономить на площади 4-х слойки. А если сразу брать чип и память в бга корпусе - то в принципе можно будет торговать ПП, с неплохим выхлопом. Линии на периферию не требовательны к скорости, и им достаточно двухслойной платы. А если это будет макетка - то ещё дешевле.
  8. st32f767 QSPI

    S25FL256S qspi ddr 54мгц, наверное самый быстрый чип получается. Это чтобы графику хранить и использовать без предварительного копирования в память. А чтобы просто иметь размер - достаточно микро сд карту на пузико припаять, она выдержит - проверял.
  9. Секундочку, там-же вроде как программный юсб под миди протокол на выхлопе, только непонятно откуда данные появляются. То-есть переписывать вообще всё, имена файлов можно старые оставить, ради прикола.
  10. Всё верно, ARM ядру пофиг откуда читать код и данные, и под каким соусом. А вот системе защиты - нет. Не важно где располагаются ссылки и данные, важно чтобы код был только во флешь. Ну или как минимум - не выполнялся из рам, когда его не просят об этом.
  11. А вот это правильный вопрос. В линкере физическая память может иметь атрибуты: "x" - выполнение кода, "r" - чтение, "w" - запись. Разная память - разные сочетания атрибутов.
  12. Ну дык это основная фишка защиты ARM процессоров, они таким образом программный код от данных отличают.
  13. Обращение по адресу кратному двойке - это всегда чтение данных. Выполнение кода всегда в фоновом режиме прибавляет 1 к адресу. По этому нельзя запрещать чтение всей флешь памяти. Её нужно явно поделить на секции: только для кода, и только для данных. Ну и ещё один прикол, код немного разбухает - потому как данные теперь находятся чуть дальше обычного.
  14. Везде есть ошибки, даже там где их не видно. В любом случае CMSIS развивается, чего-то там добавляют,чего-то урезают. Кубик завис в версии CMSIS, компания даже не пыталась его изменить под свои мк. https://github.com/ARM-software/CMSIS_5 Насчёт двух флешек - частоту придётся понизить. А для quad-spi прескаллер будет плясать между 2 и 3, там нет промежутка. Гораздо выгоднее использовать быстрый чип в DDR режиме, например S25FL256SAGMFI000.
  15. STM32F722 и Cache Coherency

    // ?????? HF Dream Receiver (?? ??????? ?????) Там наверное что-то важное было... До автоматической смены кодировки.
  16. Кубик обновился, появилась серия STM32MPxxx, с возможностью подключения DDR3 памяти. Вроде как можно победить, наверное.
  17. Ну, возможно он не знает про младший бит адреса для данных и команд.
  18. С запуском меньше всего проблем, тем более для таких массовых экранов. В сети можно найти готовые сценарии запуска, функции естественно будут чужими - но вам нужны последовательность команд регистр-данные. Тут желательно на другое обратить внимание - то как он должен обновляться в рабочем режиме, точнее что вы собираетесь на него выводить. От этого зависит предпочтительная ориентация пикселов. Для того чтобы потом не выполнять дополнительный код по размещению точек графики, точнее сократить его до минимума.
  19. Есть ещё вариант с таймером и дма, но в любом случае случайные пикселы заливаются очень туго - смысла нет. Всегда выделяется область видимости экрана, после чего цвет сливается в режиме нон стоп.
  20. 30кадров в сек, на 107 чипе в режиме ногодрыга. Вы завязывайте там со своим халом и адруиной, тут нужны сишные функции на несколько с строчек - с прямым обращениям к регистрам. К тому-же глупо каждый раз отдавать полный адрес пиксела, ili9486/ili9488 и ещё куча подобных - умеют принимать данные в потоке, с автоматическим увеличением адреса пиксела.
  21. Кхм, все ide имеют несколько вариантов сборки проекта, в виде готовых кнопок. Собрать готовое, собрать изменённое, пере_собрать проект полностью, и остановить зависший процесс сборки. Разница в скорости сборки просто громадная. Если части проекта уже были собраны и не изменены - то повторная сборка будет моментальной. Это свойство ide - полностью аннигилирует потребность в ручных библиотеках, вообще полностью. Как можно пропустить эти кнопки? они-же на самом виду.
  22. Allwinner V3s Кхм, прикольный камень. Годится для ускорителя графики за копейки. Периферии в нём ну очень мало, и наверное главный затык - дма за пределами видимости кеша ядра, + отсутствие двойной точности. 300 рублей за чип - это намного дешевле stm32hxxx + sdram (1300+800).
  23. MPU->RNR = 0; MPU->RBAR = 0x20000000; MPU->RASR = 0x03090025; /// C=0, B=1, TEX=1, S=0, SRD=0, XN=0, AP=3, size=0x12 (512k) MPU->RNR = 1; MPU->RBAR = 0x08000001; MPU->RASR = 0x03020027; /// C=1, B=0, TEX=0, S=0, SRD=0, XN=0, AP=3, size=0x13 (1M) MPU->RNR = 2; MPU->RBAR = 0x600fff02; MPU->RASR = 0x03040029; /// C=0, B=0, TEX=0, S=1, SRD=0, XN=0, AP=3, size=0x13 (1M) MPU->RNR = 3; MPU->RBAR = 0x90000003; MPU->RASR = 0x0306002d; /// C=1, B=0, TEX=0, S=1, SRD=0, XN=0, AP=3, size=0x16 (8M) MPU->RNR = 4; MPU->RBAR = 0xc0000004; MPU->RASR = 0x03070033; /// C=1, B=1, TEX=0, S=1, SRD=0, XN=0, AP=3, size=0x19 (64M) MPU->RNR = 5; MPU->RBAR = 0x40000005; MPU->RASR = 0x13040039; /// C=0, B=0, TEX=0, S=1, SRD=0, XN=1, AP=3, size=0x16 (0.5G) MPU->RNR = 6; MPU->RBAR = 0xe0000006; MPU->RASR = 0x1300002d; /// C=0, B=0, TEX=0, S=0, SRD=0, XN=1, AP=3, size=0x16 (0.5G) MPU->RNR = 7; MPU->RBAR = 0; MPU->RASR = 0; MPU->CTRL = 7; stm32f7xx
  24. Просто несколько эффективных топменеджеров st - купили себе изогнутые доски для серфинга в интернете. На них старая версия кубика выгладила слишком ущербно.
  25. Странный HARDFAULT

    Уровни прерываний, их всего 15 штук - читайте внимательней документацию. SysTick должен иметь максимальный уровень 15, и на этом уровне больше не должно быть прерываний. То-есть его должно вытеснять любое из существующих прерываний. Ну и само прерывание SysTick работает весьма странно для arm. Регистры r0, r1, r2, r3, r12, LR, PC, xPSR сохраняются автоматически при входе в прерывание. Нет смысла сохранять r3, lr. Как оно объявлено-то?
×
×
  • Создать...