- Непонятная хня с Artery AT32F407. Пришли микрухи с новой партии
(год выпуска 2025, ранее 2024 были). Отдельной софтиной шьются
нормально, всё работает. А вот при записи из Keil во время
верификации появляются ошибки при записи в разных блоках. Чего
только не пробовал, нифига не помогает. Беру точно такую же старую
плату - всё норм, с новой проблемы. Уменьшение частоты
программатора не помогает. Паки все свежие, ревизии процов судя по
маркировке одинаковые - B. FDA(29 знак., 25.08.2026 20:56, ARM, полностью)
- Опять F405. Как изящно управлять размещением переменных в сегментах
памяти (CCM, SRAM1, SRAM2)? компилятор Кейл или ИАР, пока не решил. - IBAH(21.08.2026 19:20, ARM, полностью)
- Объявляешь свои переменные в именованной секции - через __attribute__((section(".ram_dma"))). Далее - в линкерном
скрипте указываешь, где располагать эту секцию. il-2(218 знак., 22.08.2026 06:18)
- Кейл ваще не знает, что такая память существует. Хотя туда бы
положить и стек IBAH(567 знак., 24.08.2026 16:26)
- странно, если в МК есть несколько видов SRAM, то Кейл об этом
знает. Если ему связно сказать - что за МК. К примеру, у меня
STM32L476, там SRAM1 и SRAM2 - Лaгyнoв(144 знак., 24.08.2026 19:54, картинка)
- RW_IRAM2 - не оно? - Nikolay_Po(24.08.2026 17:19)
- Не оно. CCM data RAM (64 KB data SRAM) 0x1000 0000 - 0x1000 FFFF IBAH(124 знак., 24.08.2026 18:26, картинка)
- О. Тут по картинке отлично видно, на какую память какую шину с DMA
периферии посадить. В принципе, если при исполнении кода, не
использовать SDRAM1 и SDRAM2, а использовать только код и данные из
FLASH и данные из CCM, то исполнение кода и работа DMA друг другу
мешать не будут. - Nikolay_Po(25.08.2026 10:11)
- Ну, жонглёж битами - это, всё-таки не память. И когда с ним
работал, я просто делал вычисляемые на этапе компиляции указатели
для всего нужного. Выделять его в отдельную секцию памяти смысла
нет - как память он не работает, а переменные компилятор всё равно
не сможет разместить автоматически - привязку к адресам бит всё
равно делаешь вручную. Nikolay_Po(44 знак., 25.08.2026 08:06)
- Ну так пропишите недостающую секцию сами. - Nikolay_Po(24.08.2026 17:16)
- Если очень хочется, чтобы определëнная переменная была в нужном Вам
сегменте - нужно это явно указать. Не знаю про Иар, а в Кейле это
возможно. - Пaлыч(21.08.2026 23:00)
- Как? Доверится компилятору ))) - POV(21.08.2026 20:09)
- Как написал бы Евгений, "сводный топик по китайским контроллерам".
Логистика выкатила список замен для STM32L431/476 RC/RE T6. Если
знаете компромат, укажите плз. VLLV(371 знак., 17.08.2026 10:47, ARM)
- Хочу поюзать GD32F405. Я так понимаю полный аналог STM32F405? + выполнение кода из ОЗУ (кеш на всю программу) - IBAH(05.08.2026 11:38, ARM, полностью)
- Господа товарищи, не хотите поговорить об отладке stm32, через
Ethernet? Balda(131 знак., 30.07.2026 08:06, ARM, полностью)
- компилируем blackmagic debug probe в виде приложения (BMDA). для
хоста (может быть PC или одноплатный компик типа малинки) к
которому подключен отлаживаемый девайс. он открывает порт к
тоторому удаленно по IP можно подцепить GDB задача решена
бесплатно. я так делаю когда с высоковольтными вежами балусь - чтоб
не убило нах. - klen(1 знак., 30.07.2026 13:29, ссылка)
- "все уже украдено до нас". Ищите по ключевым словам ESP32
BlackMagic probe. - 3m(1 знак., 30.07.2026 10:27, ссылка)
- Я не увидел терминов "гамак" и "лыжи". - Kpoк(30.07.2026 09:40)
- Вроде вот жеж JetLink Flasher Pro -> - Argon(1 знак., 30.07.2026 09:19, ссылка)
- Так ведь openocd поднимает сетевое соединение, с любого компа в той
же подсетке можно подключиться… Eddy_Em(408 знак., 30.07.2026 08:49)
- 13 т.р. это "брови опадают"? VVB(16 знак., 30.07.2026 08:25)
- а что там (в Эзернете) принципиально лучше обычного СТ-ЛИНК?
Скорость выше? Из интересного - вот купил в Озоне за 260 руб копию
ст-линка. Вместо фирменного один к одному - Лaгyнoв(1 знак., 30.07.2026 08:24, ссылка)
- Ёё-хо-хо.. и бутылка рома! не зря просидел 48 часов в трусах
впилившись в монитор. прикрутил FreeRTOS TCP к ch32v307!! Nikolay_Po, думаю из Новороссийска немедленно в мою сторону
выдвенется ясщеГ с вкусным южным вином! libwchnet - в помойку!
немедленно нужно бахнуть... вопрос чего? рому или арарата...вот в
чем вопрос klen(964 знак., 20.07.2026 23:57 - 22.07.2026 16:23, ARM, ссылка, ссылка, полностью, +2)
- Усе готово, усе былоеее...! Связанные списки дескрипторов туда и
сюда, зеро копи тула и сюда - рабоает. Ну что тут еще можнл
захотеть? Наверносамое время втащить накопленный опыт в 1G mac
который в ch32h417. - klen(27.07.2026 22:17)
- нужно отметить что FreeRTOS TCP текущего разлива из транка, а это
4.4.1+ .... ну сильно много они доделали по сравнению с тем что
было 2 года назад. - klen(22.07.2026 15:30)
- наладил схему - создается одна серверная задача аля' Cron, в ней
открываются, биндятся и листинятся все слушающие сокеты, они
добавляются в SET и задача блокируется вызовом FreeRTOS_select -
далее если по какомуто слушающему порту прилетит клиент -
FreeRTOS_select отпускает и на "зазвеневшем" сокете вызывается
FreeRTOS_accept -> далее передача комуникационного сокета в
пул статически созданных задач отработки соединения. все экономично
по потокам и памяти. летает klen(18 знак., 22.07.2026 15:27)
- На всякий случай инфа - использую CH32F207 с стеком циклонтцп. В
общем, работают несколько приборов несколько месяцев, полет
нормальный. Cтaк(160 знак., 21.07.2026 18:57,
)
- Навскидку, не оценивали, сколько занимает Ethernet+TCP в прошивке?
Сколько выделили ОЗУ для пакетов? - Nikolay_Po(21.07.2026 19:41)
- Т.к. озу не хватает, то пришлось сломать привычки и перейти на
динамическое выделение памяти. Т.е. пришел на порт сервера запрос -
выдать жирную json. Я пытаюсь выделить средствами freertos
динамическую память под буфер, если свободного озу нет, то
отправляю отлуп. Если есть - то выделяю буфер, формирую json,
отправляю, освобождаю память. так крутится дофига сервисов и ничего
насмерть не падает. - Cтyк(22.07.2026 05:37,
)
- Несколько пожирнее будет чем lwip. Но циклон на каждый чих создает
задачу freertos что сильно жрет озу, но зато честная неблокирующая
многозадачность. Cтyк(2330 знак., 22.07.2026 05:28,
)
- Ну ты крут! Не смотрел ещё, для моего CH32V317го придётся фай
переписать. Но то, что буфера и прерывания налажены - это большое
дело! - Nikolay_Po(21.07.2026 18:50)
- Сохранилась ли у кого uc GUI старая? ASDFS(243 знак., 21.07.2026 20:32, ARM, полностью)
- для меня таки настала новая эра - мульти ядерных микроконтроллеров.
с алика приехала muse lab nanoCH32H417. посчупал за вымя.. две
сиськи, а не одна как обычно, на осчупь приятно....карашооо klen(14259 знак., 08.06.2026 02:35 - 15:53, ARM, ссылка, картинка, полностью, +16)
- RISC-V, прерывания, стек прерываний и mscratch применительно к ОСРВ
Задал вопрос в телеграм-канале RISC-V MCU. Задам и тут: Nikolay_Po(1626 знак., 10.06.2026 22:55, ARM, полностью)
- Доделал я порт FreeRTOS для QingKeV4 с включённой вложенностью
прерываний. Как тов. Клен тут пояснял в своих примерах, ограничился
только прерываниями с HPE, то есть, уровень вложенности до 3х
включительно. Nikolay_Po(1359 знак., 10.07.2026 14:25, +2)
- CAUTON: Не используйте HPE с FreeRTOS. Путём долгих страданий,
выяснил, что HPE не совместим с существующим шаблонным механизмом
сохранения, а, главное, восстановления контекста. Причём выяснил
это не сразу. Не давала покоя жажда оптимизаций и выжимки скорости. Nikolay_Po(585 знак., 15.06.2026 17:32)
- Вот моя шпаргалка на тему вымучивания HPE+FreeRTOS которую себе
написал храню в FreeRTOSConfig.h klen(3778 знак., 15.06.2026 19:50)
- В качестве ликбеза, почему SysTick должен вытеснять SWI? Пусть себе
переключится до конца. А то выйдет так, что SysTick обнаружил, что
нужно передать управление другой задаче и поменяет текущий TCB, в
то время, как процесс переключения контекста ещё не завершён... Я
наоборот думал, и, возможно, читал в комментариях на
forums.freertos.org, что вложение этих двух прерываний, таймера и
переключателя контекста, должно быть исключено... - Nikolay_Po(16.06.2026 16:50)
- OK. Приму объяснение, что SysTick нужен для выполнения регулярных,
требовательных к низкому джиттеру, действий, а так же для
минимального джиттера значения системного времени, используемого из
более приоритетных прерываний, как пользующихся API, так и нет.
Предположу, что SysTick-у безопасно отдать приоритет, так как
работа вызываемого внутри xTaskIncrementTick() влияет только на
определение потребности в переключении контекста, без влияния на
процесс переключение. Если Nikolay_Po(20 знак., 17.06.2026 16:42)
- Ну вроде это очевидно, что если ртосина не может контролировать
контекст, то и работать не будет. - =AlexD=(15.06.2026 17:55)
- Мне до обнаружения этой очевидности пара недель потребовалась.
Чувствую себя как тот кадр, у которого не получается
программировать МК... - Nikolay_Po(15.06.2026 17:59)
- Давайте разбирастя, ув. кроты! контекст прерывания ( читай по сути
исключения процессора ) и "что то где сохраняется контекст
FreeRTOS" - веши перпендикулярные. 0) в FreeRTOS прерываний не
существует 1) контекст исключений и контекст задач - ваще не одно и
тоже 2) FreeRTOS + исключения(прерывания у меня работают с HPE 3)
Где я балбес? - klen(15.06.2026 19:04)
- Есть вопросы. 1. Как при выходе из прерывания, при включённом HPE,
если это прерывание само меняет контекст и само восстанавливает по
своему разумению те же регистры, что восстанавливает и HPE,
оставить контекст RTOS для задачи, а не восстановленое HPE
состояние регистров на момент входа в прерывание? Я знаю только
один способ - установить GIHWSTKNEN и выйти, предварительно сбросив
MIE, чтобы защититься от вложенности. Nikolay_Po(579 знак., 16.06.2026 17:13)
- У меня такая переключалка выходит, в части блокировки прерываний
приоритетом до RTOS API включительно: Nikolay_Po(1443 знак., 16.06.2026 16:46)
- Контекст сохраняется не где-то каг-то, а в прерывании ;-). А из
прерывания переключения контекста он уходит не строго обратно, а
уже в другую задачу. А таг всё верно ;-). - =AlexD=(16.06.2026 10:24)
- Дык, стек РТОС, это доступ через какой-нить индексный регистр,
программно, а стек вызовов-прерываний проца, это чисто механическая
штука. Прерывания, вообще, для кода, прозрачны, он их не осчучает:
откуда-то, из параллельной вселенной, ему падают флаги и данные. - mse homjak(15.06.2026 19:15)
- я разумею почти так же ( сохранение регистров проца при эксепшене
не совсем аппаратная штука - традиционно компилятор генерит пролог
и эпилог ). вопрос в том где связзь HPE и кода сохранения и подъема
контекста задачи ОС? я утверждаю что её нет. но это не точно :)
думаю что суть в правильном назначении приоритетов прерываниям - у
меня в этом было откровения после которых все заработало с HPE - klen(15.06.2026 19:43)
- Меня что беспокоит: если я выхожу из прерывания, при входе в
которое было включено HPE, то при выходе, регистры, сохраняемые
аппаратно, восстановятся на значения в момент входа. Как быть, в
таком случае, с прерыванием, которое переключало контекст задачи и
при выходе должно оставить новые значения регистров, не те, чтобы
были на момент входа? Разве HPE не будет препятствовать сохранению
новых значений регистров, если они - контекст задачи RTOS, на
которую только что Nikolay_Po(14 знак., 16.06.2026 17:16)
- Дык, этта... Контекст задачи должэн переключать планировщик. - mse homjak(16.06.2026 18:46)
- Ну так все порты FreeRTOS на RISC-V (да и на прочие схожие по
возможностям контроллера прерываний чипы/архитектуры), используют
для переключения контекста прерывание. Контекст прерывания (содержимое набора регистров, значение указателя стека) перед
возвратом из прерывания, заменяется на контекст задачи ОС (то же самое, плюс некоторые регистры, которые могут не
сохранятся при обычном прерывании). И HPE этому препятствует,
восстанавливая контекст прерывания Nikolay_Po(996 знак., 16.06.2026 21:10)
- Ну, ХЗ. Я предполагал, что стек задачи, это не стек машины. Или там
нет возможности для такого финта ушами? Ну, типа, mashine/user
mode. Там указателя стека, как такового, нет, мож как-то можно
разделять стек машины и стек задачи? По крайней мере, команда mret
на что-то намекает. Да и, в принцыпе, наработана масса трюков, типа
замены вершины стека и возврат из прерывания в процэдуру
сохранения/смены контента для переключения задач. - mse homjak(16.06.2026 22:36)
- Если задача должна быть вытеснена (а FreeRTOS - вытесняющая ОС),
это можно сделать, лишь прервав задачу прерыванием. Внутри
прерывания, вместо восстановления контекста прерывания "как было до
прерывания", восстанавливается контекст более приоритетной задачи.
И вот это нетиповое использование прерывания, с возвратом не в
прежний контекст прерывания, а в новый, и, по моему мнению, не
совместимо с аппаратным восстановлением контекста. Nikolay_Po(387 знак., 16.06.2026 22:37)
- Сохранение, да. Но эксепшын, аппаратен и сразу, в машине моде. Т.е
код будет исполнен всегда, плус, у него свои регистры и всё такое. mse homjak(366 знак., 15.06.2026 19:58)
- А нет желания спросить у синего кита? Он тоже китайский, про свои
родные контроллеры ответят: ### Резюме по вашим вопросам: 1.
**Верно.** Каждое прерывание (и вложенное в том числе), которое
может вызвать переключение контекста, должно работать на выделенном
стеке прерываний, чтобы не затереть стек задачи. 2. **Верно.**
Использовать `naked` обязательно. Компилятор не знает про
`mscratch` и вашу логику переключения стеков. Только ручное
управление контекстом спасет Yft(925 знак., 11.06.2026 17:11)
- ниче не понял, но вопросы правильные. я когда портил - сильно лоб
морщил. у меня сделано 1) не все прерывания выключаются, только те
что могуть влиять на планировщик, для этого есть регистр
PFIC_ITHRESDR порога пиоритета 2) таски работают в user режиме чтоб
не достали до SCR-регистров. 3)чтото еще перепиливал klen(23200 знак., 11.06.2026 01:00, ссылка)
- Посмотрел я. И не понравилось в твоих примерах, что прерывания
глобально блокируются дольше, чем мне хотелось, см. GIHWSTKNEN. С
момента его установки, глобально прерывания блокированы. Nikolay_Po(179 знак., 24.06.2026 23:26)
- Кстати, в шаблоне для RISC-V, в свежем порте FreeRTOS, заложили
условное сохранение контекста FPU: Nikolay_Po(129 знак., 15.06.2026 13:42, ссылка)
- Правильно ли я понял, что для ОСРВ, прерывания полностью
блокируются сбросом бита MIE? И нет возможности
разрешать не запрещать более приоритетные прерывания, не влияющие на задачи
и переключения контекста ОС? Nikolay_Po(975 знак., 12.06.2026 22:03)
- А где эти? Особенно интересуют макросы для обработчиков прерываний
при входе POP_ISR_SP и выходе PUSH_ISR_SP. Nikolay_Po(451 знак., 11.06.2026 15:30)
- Обратная задача. Переехал с GD32F103 на STM32F103. Перестал
работать таймер TIM1!!!! Все включено. В отладчике вижу:
тактирование на шине включено, таймер включен, а CNT не тикает! Я
начинаю верить в чудеса... - IBAH(17.07.2026 21:50, ARM, полностью)
- WCH обновили Mounriver Studio. Теперь пакет для Linux -
MounRiverStudio_Linux_X64_V2.5.0.deb. Саму среду не ставил, но
проверил OpenOCD. Nikolay_Po(685 знак., 30.06.2026 14:36, ARM, картинка, полностью)
- Положу ещё и сюда, на память. WCH CH32V317. Ещё один нюанс с
UARTом. Не исключаю, что такое будет и у STM32F1xx: Если вручную
положить в DATAR символ на передачу, и быстро (по крайней мере у
меня получается до завершения передачи первого бита) включить DMA
для продолжения передачи в автоматическом режиме, то не всегда,
чуть более, чем в половине случаев (но не всегда!) DMA перебивает
ранее записанный в DATAR символ. Nikolay_Po(1925 знак., 05.07.2026 01:47, ARM, полностью)
- Так это напрямую следует из асинхронности внутренней архитектуры.
Ядро процессора - отдельно, флеш - отдельно, периферия - отдельно.
Хотели конвейеры, умножение тактовой с PLL, мегафлопсы и пр.? Ну
так значит макросы-библиотеки, RTOS и HAL. А то ишь чего, регистры
они захотели. ))) - vpv.vpv(08.07.2026 06:50)
- Спасибо. Полезный негативный опыт.. не разу руками не писал в
регистр данных. При наличии dma, невозможно заставть меня чтото
делать кодом, а не аппаратурой. А это на всех типах сh32vxxx
воспроизводится? - klen(05.07.2026 09:32)
- Представь себе, что ты используешь 9-й бит как бит адреса для
автоматического пробуждения МК на шине, чтобы они не отвлекались на
чужие обмены с чужими данными. И ты не хочешь готовить пакеты из
16-битных символов для DMA, а хочешь 8-битные. Но как-то надо
отправить первый символ с адресом в девятом ([8]) бите. - Nikolay_Po(05.07.2026 09:34)
- Я опыты, описанные здесь не проверял, но если там действительно
привязка к внутреннему счетчику, можно сделать несколько
предположений. У UART есть свой делитель, причем разделенный на
целую и дробную части. Возможно, проверка наличия данных в регистре
синхронна либо со счетчиком в целом, либо с его целой частью. @COKPOWEHEU(445 знак., 05.07.2026 12:47)
- Вот как выглядит. На видео - делитель UART = 306 при тактовой шины
144МГц. Видно, что включение передатчика (DE) трансивера линии,
стоит как вкопанное с прошлого периода (синхронизация задержана на
1мс). А вот начало передачи, стартовый бит, дрожит. Но размах
джиттера строго не выходит за битовый интервал. Nikolay_Po(1 знак., 06.07.2026 10:22, ссылка)
- +1, скорее всего так и есть, и это не баг, а фича. Хочешь, чтобы
передача 1-го байта не прерывалась - дождись пока он не окажется в
сдвиговом регистре. То, что это произойдет сразу - никто не
обещает. TXE - это самый хороший признак для проверки. - il-2(05.07.2026 13:15, +1)
- понял - ты извращенец не сам по себе, а по принуждению :) - klen(05.07.2026 10:39)
- Товарищи, LwIP можно ли одновременно клиентские и серверные
соединения? Тупой вопрос, но все же. Запустил я на GD32F107 LwIP
под FreeRTOS. Сначала сделал два серверных tcp + одно серверное
udp. Все работает. Не вэб в смысле, а просто данные. Потом добавил
одно клиентское соединение. Тоже работает. Я уже обрадовался, решил
проверить как работает мое основное серверное соединение. Послал из
терминала данные и все - перестал пинг идти, плата колом стала.
Если не инициализировать vesago(298 знак., 05.07.2026 19:11, ARM, полностью)
- Нашелся корень проблемы: vesago(1013 знак., 07.07.2026 12:13)
- Клод немного поправил проект. Зависать перестало. Но клиент пока не
работает. Может по другим причинам. Бывает пинг отваливается, но
потом восстанавливается. В общем, наверное, плохая идея RawAPI с
ртос использовать. Готовить надо уметь тонко. vesago(74 знак., 06.07.2026 12:48, картинка)
- По-моему, в примерах обычно корявые порт ethernetif.c, не
рассчитанный на многопоточку. Чем больше у вас потоков, которые с
lwip работают, и чем больше они нагружены, тем больше вероятность
ошибки. Oman(144 знак., 06.07.2026 10:31)
- Для начало надо проверить, сколько выделено всяких разных конечных
ресурсов. SciFi(404 знак., 05.07.2026 19:25)
- riscv и регистр глобального указателя $gp: не будем пренебрегать
ручной оптимизацией. klen(12656 знак., 28.06.2026 16:56, ARM, картинка, картинка, полностью, +2)
- Тут мне не понятно зачем понадобилось создавать свой сегмент данных
для своих переменных, почему не положить их принудительно в уже
имеющиеся через __attribute__((section(".sdata"))) или .sbss Тогда
не потребуется править скрипт линкера, подойдет стандартный. - AlexBi(30.06.2026 09:57)
- Что-то я не понял, а почему этим линкер занимается, а не
компилятор? Самая тема использовать его, как на старых интелях, как
регистр сегмента данных (и тасовать в хвост и гриву, переставляя то
туда, то сюда). Нет? - Cкpипaч(29.06.2026 15:52)
- У меня в проекте, когда-то созданном на базе шаблона из MRS2,
релаксация с глобальным указателем включена. Поигрался - оказалось,
для текущего состояния проекта, лучшее значение -
-msmall-data-limit=256. Nikolay_Po(1 знак., 29.06.2026 15:16, картинка)
- А есть какая-то опция (или pragma) ассемблера чтобы команда LA
генерировала абсолютные адреса ? - Zikon(29.06.2026 09:30)
- MRS2 - стандартные шаблоны уже поддерживают данный момент
использования $gp (-Wl,--relax по умолчанию). И .sbss=.bss доступна
по $gp. Ключ -msmall-data-limit влияет только на .sdata. В
настройках проекта есть этот ключ в MRS2 и по умолчанию =0. Иногда
в готовых проектах -msmall-data-limit=8 ( только до 64 бит
переменные помещать в .sdata ) в памяти размещение сегментов .data
.sdata .sbss .bss и $gp инициализируется как sdata_start + 0x0800 - Zikon(29.06.2026 07:23)
- В самых благоприятных сценариах эта оптимизация может уплотнить код
на 1..5%. В типичных сценариях речь скорее идёт о десятых долях
процента. - SciFi(1 знак., 28.06.2026 23:56, ссылка)
- Снимаю шляпу перед компетенциями! И всегда тебя почитываю, чтобы в
тыковке что-то отложилось. Но, будучи полным профаном, скормил
ветку болвану, у него есть сомнения. Болван блажит или не всё так
просто? - POV(1 знак., 28.06.2026 22:56, ссылка)
- Тащ Клен! Ты вовремя. Как раз хотел спросить насчёт GP, есть ли
нюансы. Нет ли директивы для GCC, чтобы при входе в блок кода,
указать ему: А тут gp у нас другой! Исполняй! Nikolay_Po(500 знак., 28.06.2026 19:07)
- Товарищи, может присоветуете, что можно глянуть? Пытаюсь LwIP
запустить на плате STM32F107. Исходники LwIP я взял 1.4.1,
прикрутил к проекту. Хочу пинга добиться. По шагам прошелся, вроде
инициализируется. Линк подымается - на компьютере сеть появляется.
Но если слать пинг, то в вирешарке не вижу ICMP запросов от
компьютера. Не знаю чтобы это значило. Если в плату залить прошивку
рабочую, на основе uIP - все работает. Значит железо, кабель,
настройки IP на компьютере не vesago(278 знак., 21.06.2026 18:02, ARM, полностью)
- В общем пробовал я крутить с DMA - не прокатило. В итоге
использовал гигодивайсовский пример с библиотекой 2.2.1. За полчаса
поправил - с полтыка завелся. - vesago(25.06.2026 22:05)
- А чего такой старый стек? Сейчас актуальный 2.2.1 - FDA(25.06.2026 09:45)
- Под отладчиком глянул. Прилетают пакеты, разбираются, определяются
как ARP и далее вызывается low_level_output. Там оно в DMA
отправляется. Почему не приходит назад в компьютер - не понятно.
Видно криво DMA работает. Проект у меня под STM32F107 в IAR
скомпилирован. А гружу в GD32F107. Может тут косяк - в мифической
совместимости st и gd. Я уже один раз об USB споткнулся. Пришлось
переписать на гигадивайсовских либах. Придется китайский пример
заюзать. В проекте для ST vesago(69 знак., 25.06.2026 08:10)
- Иишечка накидывает версии: SciFi(2 знак., 25.06.2026 10:31, ссылка)
- Спасибо, большое. Я уже курсором прокатывал и с дипсиком обсуждаю.
Но у вас более глубоко. Попробую скорректировать соответственно.
Тут видите - неприятно, что проект на uIP работает без проблем.
Потом на этой же плате проект на lwip 1.3 с использованием dhcp
тоже работает. Коллега утверждает, что в кубе собрал мелкий пример
- тоже работает. А я решил с нуля собрать из известного примера STM
и обломился. Хотя с виду просто как валенки. И мне любопытно, в чем
суть проблемы. vesago(211 знак., 25.06.2026 11:01)
- Я в своё время (18 лет назад, да, тогда ещё stm32f107 не было)
просто выкачивал lwip из первоисточника. Драйвер для MAC делал сам,
там 300 строк всего, в отличие от монстра в примере STM. И делал
голый проект, добавлял к нему необходимое по кусочкам. Наверное,
есть плюсы и минусы у такого подхода, но в результате хотя бы точно
понятно, что, куда и зачем, и вообще как это всё работает. - SciFi(25.06.2026 11:19)
- Вот что у меня записано: alag57(58 знак., 21.06.2026 18:44)
- Перед ICMP должен быть ARP. Компьютер не получил ответ на запрос
ARP, до ICMP дело не дошло. - SciFi(21.06.2026 18:05)