Jump to content

    

lmaks

Участник
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. STM32 & LwIP патчи

    Есть плата STM32F207 FreeRtos и LwIP 1.4.1. Все работает в локальной сетке. Однако если комп подключен по wifi плата не видна. Даже ping не проходит. Включил Debug. Увидел в чем разница (iphdr->dest 0xff1e140a - ошибочно записывается адрес - причем каждый раз по разному, если не через wifi то он такой же как и netif->ip_addr 0x321e140a) (листинг в конце) Соответстенно ответ уходит не туда. Тут может сам и разбирусь однако возник вопрос. Может кто знает эту проблему? Второй вопрос - подумал про существующие Patсh для LwIP на сайте - нашел 309 шт. Грустно стало. Два дня убил - ни в чем не разобрался. Даже не смог применить. Скачал програмку Patch - как ни пытался - не смог даже одного файла пропатчить. Следовательно вопрос: Какие патчи применять для LwIP 1.4.1? Как их собственно применять? Спасибо. ------------------------------------------------------------------------------------- ethernet_input: dest:ff:ff:ff:ff:ff:ff, src:00:21:00:6c:d3:23, type:800 ip_input: iphdr->dest 0xff1e140a netif->ip_addr 0x321e140a (0x1e140a, 0x1e140a, 0xff000000) ip_input: packet accepted on interface st ip_input: IP header: +-------------------------------+ | 4 | 5 | 0x00 | 68 | (v, hl, tos, len) +-------------------------------+ | 13852 |000| 0 | (id, flags, offset) +-------------------------------+ | 128 | 17 | 0xb300 | (ttl, proto, chksum) +-------------------------------+ | 10 | 20 | 30 | 102 | (src) +-------------------------------+ | 10 | 20 | 30 | 255 | (dest) +-------------------------------+ ip_input: p->len 68 p->tot_len 68 ------------------------------------------------------------------------------
  2. Цитата(seniorandre @ Mar 2 2015, 00:52) Ну типа, если нельзя, но очень хочется, то можно? Чем продиктовано? Зачем же кто-то придумывал критические секции и мьютексы всякие. Зачем себе грабли подкладывать. Нашел варитант. В ExtI прерываниях есть возможность активизации их программно. EXTI_GenerateSWInterrupt(EXTI_Line22); В теле прерывания необходимо проверить флаг программного прерывания if(EXTI->SWIER & EXTI_Line22) К примеру линия 22 подключена на RTC - то же не проблема. RTC проверяет свои флаги if(RTC_GetITStatus(RTC_IT_WUT) != RESET) Аккуратно надо только сбрасывать Pending бит. EXTI_ClearITPendingBit(EXTI_Line22); (т.е. сначала надо проверять программное прерывание, а потом RTC.) иначе сброс бита в RTC - сбросит и бит программного прерывания.
  3. Использую высокоприоритетные прерывания (выше configMAX_SYSCALL_INTERRUPT_PRIORITY) для аппаратуры. Однако после завершения приема данных (несколько прерываний) требуется активировать задачу обработки. Из высокоприоритетных прерываний нельзя пользоваться системными API (fromISR). Есть какие-нибудь мысли как это сделать красиво. Думал побаловаться с программным прерыванием SV CALL - но оно уже используется системой. Остались только кривые мысли типа активировать какой-нибудь таймер на минимуме - чтобы тот выдал прерывание уже с приоритетом ниже configMAX_SYSCALL_INTERRUPT_PRIORITY и далее уже активировать семафор задачи. Думал даже задействовать ножку под EXT interrupt - но они все уже заняты.
  4. Ошибка отображения SP STM32

    Насчет украсть - да это помоголо. Поставил версию 6.40.5 - проблема ушла. Относительно купить - и задавать вопросы. Вероятно Вы никогда ничего не покупали. Я покупал - результат аналогичный. Через пару месяцев переписки - ответ "Да проблема есть решим в следующих версиях. Ждите."
  5. Под отладчиком отображение локальных переменных - какой-то бред. Выяснил - причина всему не корректное отображение отладчиком регистра SP. Реально содержимое регистра SP корректное глючит только IAR с отображением(вставлял asm ("mov R0, SP")) - R0 после этого содержит правильную информацию, а SP нет. т.е. после данной команды отладчик показывает разные значения в R0 и SP. Причем если в регистр SP принудительно записываешь правильную информацию - все локальные переменные отображаются корректно потом. Оптимизация выключена насовсем, Смотрел оба банка регистров (Current и второй). Игрался с ST-LINKV2 апгрейдил, переключал JTAG на SWO. менял частоты. Использую FreeRtos. Плата заводская - STM32-20Geval Может IAR глючит или не до конца вылеченный. Буду признателен за идеи.