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

_pv

Свой
  • Постов

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

  • Посещение

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

    16

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


  1. в плюсах есть перегрузка функций с name mangling, и там void main() и int main() в результате имеют разные имена. соответственно из стартап кода на ассемблере нельзя просто сказать call main, наплевав на его тип. если правильно помню, принципиально это было только для С89, если не раньше..
  2. да вроде имеет право 5.1.2.2.3 Program termination If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument; reaching the } that terminates the main function returns a value of 0. If the return type is not compatible with int, the termination status returned to the host environment is unspecified.
  3. да, стартап, если на ассемблере написанный, просто делает call main, и что там за тип у main (в случае с С без возможности перегрузки функций как у С++ и name mangling), и вернёт она обратно что-нибудь стартапу или не вернёт ему вообще без разницы. слинкуется в любом случае, ну а то что main ничего обратно в нужный регистр (ну или куда там надо, в зависимости от соглашении о вызовах) не положил на выходе, и там будет какой-то мусор - ни на что всё равно не повлияет. а если стартап код на С, то ему при линковке неправильный тип main может и не понравиться
  4. там только про измерения на частоте до 30кГц сказано, из этого совсем не следует что ТСу не нужно каждое отдельное измерение и их можно просто усреднять как угодно или вообще стробоскоп устроить.
  5. в каком-то tcp стэке то ли от TI то ли микрочиповском вполне обходились макросами для доставания/запихивания невыровненных данных по определённым смещениям, им видимо проще было так, чем объяснять различными компиляторозависимыми прагмами как данные упаковывать/выравнивать. компиляторы нынче достаточно умные чтобы правильно понять что от них хотят когда просят memcpy сделать с размером в несколько байт.
  6. А что делать Си-шникам? точно так же заворачивать memcpy в макросы 🙂 не пытаться запихивать сетевые протоколы в упакованые структуры
  7. это не значит что они с одной и той же длительностью повторяются, и что можно один и тот же импульс десятки раз подряд пробовать с разными задержками. стробоскоп это здорово конечно, но применим далеко не везде. если от импульса к импульсу измеряемая длительность скачет - не особо поможет.
  8. но ведь так только повторяющиеся события измерить можно, меняя задержку как в стробоскопах, а не длительность отдельного импульса. или?
  9. так ft602 или ft600/601? там в примерах гоняют видео с 148.5МГц пиксельклоком. 16ти битным YCrCb, ваши 60МГц с двух камер, пусть даже и полноцветные 24 бита, всё равно меньше. смешивать картинки от двух камер через линию, через 32байта или через 4кб в плане разбора от через пиксельного не особо отличается, не хотите разбирать на стороне компа - ищите память под кадровый буфер. а у ft602 для этого 4 канала есть, сам разберёт. ему только номер канала надо подмешивать в младший байт в начале записи в фифо.
  10. буфер 16k, его вроде можно не по 4кб на 4 канала, а все 16к на один канал сделать данные с камеры 30МПикселей/c, 60 если с двух, что меньше чем скорость запихивания в фифо 400МБайт/c. и меньше чем скорость USB3 с которой данные из фифо забирают, и есть подозрение что у ft60x буфер сделан достаточного размера, чтобы в его размер скорость передачи данных особо не упиралась. с двух камер данные можно параллельно запихивать через пиксель, а не через строку.
  11. Clear Timer on Compare Match (CTC) + toggle on compare позволяет задавать длительность и положительного и отрицательного импульсов отдельно. менять их только надо каждый раз в прерывании.
  12. там есть FIFO внутри ft602, а так же режим 245 с дерганием WR хоть на каждый отдельный байт. зачем городить то же самое снаружи да ещё и какими-то блоками по 32 байта?
  13. ждите когда с++23 завезут рефлексию 🙂 мало ведь пока ещё там всякого RTTI говна в эмбед с десктопа притащено... а пока массив нужен для соответствия названий и указателей на переменные, #define X(var) {#var,&var} ну а чтобы не перебирать всё подряд через strcmp считайте хэш.
  14. глобально менять стили форум имхо не позволит, надо чтобы они в каждом тэге были
  15. c godbolt код копируется с подсветкой, int main(){ printf("%s, %s", __FILE__, FILENAME); } но там css не в начале, а в каждом тэге через style, т.е. имхо надо все <f4> заменить на <style="color:blue;"> открытый в новой вкладке (движок двоеточия пожрал из ссылки) data:text/html,<div style="color:blue;">blue text</div> и скопипасченный сюда: blue text
  16. ютуб подсунул, видимо в историю браузера подглядывает, для более лучшей контекстной рекламы :) на не столь огороженных андроидофонах возможно будет проще подобраться. возможно это более реалистичный метод как "недеструктивно" добраться до внутренностей не привлекая внимания санитаров и покрасть содержимое видеопамяти, правда медленно и печально.
  17. могу лишь предложить то же самое. просто это выглядит как требование надевать штаны через голову, причём "ну просто потому что я так хочу", а "То, что задача кажется вам сложной или лежит за пределами ваших умений не значит, что кому-то она не может быть важной" отсюда и соответсвующие обсуждения.
  18. просто ограничения вида "семь красных линий. Все они должны быть строго перпендикулярны, и кроме того, некоторые нужно нарисовать зеленым цветом, а еще некоторые — прозрачным" без каких-либо объяснений откуда они берутся вызывают некоторые сомнения в общей адекватности
  19. правда где-то попадалась новость что эпл и тут вроде отличился, как-то дополнительно огородив hdmi выход программно, а то не дай бог кто-нибудь drm защищённый контент через него скопирует видео граббером. но с андроидом может получиться, и с вводом пожалуй тоже можно попробовать подсунуть usb/ble hid device который будет на экран "нажимать", без дополнительного софта. з.ы. оказывается есть ещё некий MHL - hdmi по одной витой паре, который даже в некоторых телефонах с micro-usb есть.
  20. подозреваю что в самом начале (пакет #12) этот BRD только для того, чтобы посмотреть на write count, сколько там вообще устройств на шине, а что именно он там "прочитает" никому не интересно. все остальные brd из дампа читают статус. https://infosys.beckhoff.com/english.php?content=../content/1033/tcsystemmanager/1089009035.html
  21. а там точно других команд кроме brd не было? вот пример что обычно читают через BRD
  22. пожалуй аналог запараллеленных сигналов типа IRQ с открытым коллектором от нескольких слэйвов для диагностики, например, узнать что "шеф, всё пропало" и неважно у кого именно, использовав один единственный бит, а потом уже можно по отдельности выяснять у каждого что именно случилось.
  23. схемы айфонов до 10-11 в сети есть, ТС'а вроде и 8й устраивает. но там, как уже было указано, есть другие проблемы, в виде слишком умных периферйных устроств вроде того же дисплея/тач сенсора с встроенными еепромами с ключиками и определением айфоном "неоригинальных запчастей" как-то наверное обходится, опять же родной дисплей можно оставить и попробовать распараллелить mipi для захвата (то ещё развлечение). да и тачскрину тоже можно попробовать на какой-нибудь его i2c сесть и попробовать отреверсить, как он там координаты шлёт. но должна быть какая-то очень уж веская причина (которую ТС скрывает как и вообще цель данного действа), чтобы это именно так делать, а не через фотографирование экрана и "физическую" эмуляцию тыкания в экран.
  24. из стэка там volatile переменная TWSR читается и туда же пишется, просто чтобы он это целиком не заоптимизировал. https://godbolt.org/z/Wr1s7ob7E и тем не менее без const и static, а массивы в памяти никто не создаёт.
  25. что не так-то? массивы не константные, не статические, даже две штуки, а вместо обещанной инициализации при каждом вызове одна копия лежит спокойно во флэше, потому что нигде кроме как в этом месте не используется и соответственно выделять их в памяти и инициализировать нет надобности вообще, не то что при каждом вызове.
×
×
  • Создать...