Василий
чтобы не пересобирать, иначе будет меняться в области инфа в зависимости отверсии IDF и оптимизации
Dr Zlo
в целом да, но хотелось бы отдельным бинарником
Я про это и говорю. То есть второй бинарник держит скажем в смещении 0 структуру которая ссылается на его функции. Первый бинарник просто ходит в адрес второго, и вычитывая адреса по смещению 0 дергает нужные функции.
Василий
Василий
нужен просто ELF и всё)
Dr Zlo
Василий
Василий
Dr Zlo
Нене, pic тут не нужен, у тебя же всегда одно и то же смещение
Василий
врукопашку просто наделать ссылок?
Dr Zlo
тебе просто нужна эрзац-GOT в виде структуры по оффсету
Dr Zlo
Василий
хммм
Василий
подумаем)
Denis
по одному адрессу сидят только функции обьявленные ка статик
Andy
Оно конечно для сертификации может и прокатит, но это напоминает ROM на esp32, там ведь то же basic зашит и много чего еще. Но че-то все больше от этих функций отказывается вендор :)
Dr Zlo
Dr Zlo
по одному адресу можно прибить только ручками через скрипт линковки
Dr Zlo
возможно еще через атрибуты, не помню, но тоже ручками
Василий
Denis
бейсик загружается в рам потом стартует из рам
Василий
чтобы например вынести изменнения в вебапп и делать их когдаугодно, ибо оно не влияет на основной функционал
Denis
но он заблокирован
Dr Zlo
я делал что-то подобное на stm32, но с загрузкой приложения в RAM по неизвестному адресу и полноценной динамической линковкой
Василий
Dr Zlo
Василий
опять врукопашку?
Василий
ну ты зверь)
Dr Zlo
PIC это боль с GOT и PLT
Dr Zlo
Dr Zlo
полноценной релокацией и линковкой
Dr Zlo
https://github.com/flipperdevices/flipperzero-firmware/tree/zlo/external-apps/applications/elf-loader вот тут можно поглядеть код
Василий
тобишь ты адрес старта давал из рамы и пускал прогу?
Dr Zlo
Василий
Dr Zlo
я грузил секции в адреса которые мне отдал malloc и правил смещения
Василий
крутяк)
Василий
как тесен телеграмм)
Василий
нашли разраба флиппера)
Василий
ну всеравно спасибо, я пока поизучаю азы чипа, потом поделюсь что получилось
Andy
я грузил секции в адреса которые мне отдал malloc и правил смещения
https://ru.wikipedia.org/wiki/Overlay_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)#:~:text=Overlay%20(%D0%BE%D0%B2%D0%B5%D1%80%D0%BB%D0%B5%D0%B9)%20%E2%80%94%20%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F,%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8%2C%20%D1%87%D0%B5%D0%BC%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BE%20%D0%B2%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5.&text=%D0%92%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D1%8B%20%D1%87%D0%B0%D1%81%D1%82%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8E%D1%82%20%D0%BE%D0%B2%D0%B5%D1%80%D0%BB%D0%B5%D0%B8,%D0%B8%20%D0%BD%D0%B5%20%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%20%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E%20%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C.
Василий
Василий
просто хочется гибкости устройства и сертификацию пройти)
Василий
и волки сыты, и овцы целы)
Василий
например захотел ты поменять вебапп - взял и поменял, на сертифицированный функционал это не влияет
Василий
Василий
я просто хочу засертить часть бинарника
Василий
типа в той области всегда лежит одинаковое, мона считать и сверить
Василий
и оно участвует в основном функционале
Dr Zlo
Dr Zlo
Василий
приятно что нашёл шарящих в теме, может и меня подтяните
Dr Zlo
Линковать так или иначе придется вручную, через GOT\PLT или через переписывание адресов
Василий
Василий
фполне выход из ситуации
Dr Zlo
Да, в вашем случае я не вижу минусов этого подхода
Василий
я так понимаю эта структурка описана в хидере к бинарнику либо заранее согласована по API?
Dr Zlo
Василий
Василий
ок
Dr Zlo
Все верно понимаете
Василий
под API подразумевал например заранее согласованную структурку ссылок в начале программы, неизменяемую
Василий
типа положите воттут ссылку на ..., вот тут положите основную функцию, я ее положу в таску итд)
Dr Zlo
да
Василий
@Dr_Zlo13 спасибо за наставничество, рад знакомству с разрабом флипера)
Vladislav
Ситуация: idf-esp, взял пример ethernet, подцепил lan8720, инициализируется нормально, пингуется, работает UDP протокол. Есть код UDP ответчика (обнаружение ESP в сети), после обнаружения подключаюсь по TCP к сокету, который слушает порт. Вариант с wifi работает, код сервера точно рабочий. С эзернетом же после того как принимаю подключение (accept) ethernet отваливается. Точнее, принимать он принимает, но никаких пакетов он больше не высылает. Смотрел wireshark, пакетов нет.
Vladislav
send ошибок не выдает, говорит что все отправлено
Vladislav
не понимаю куда копать
Serjio
ethernet? кабелем? напрямую/через шлюз?
смотрение wireshark, кстати, может только на ложный след навести. ну или в порядке эксперимента подключаться точно таким же образом к другому устройству и видеть трафик
Serjio
какой-нибудь размер кадра попробовать уменьшить?
Serjio
попробовать устанавливать соединение от esp? увидеть исходящий трафик в wireshark с него?