Jump to content

    

bolmoe

Свой
  • Content Count

    125
  • Joined

  • Last visited

Community Reputation

0 Обычный

About bolmoe

  • Rank
    Частый гость
  • Birthday 07/01/1975

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1615 profile views
  1. stm32f407+lwip+eth+pppos

    Спасибо за совет! Попробовал, netconn_bind() для pppos стало возвращать /** Address in use. */ ERR_USE = -8 Драйвер для модема ошибок не возвращает. netconn_bind() начинает возвращать ошибку, только после пинга по ETH
  2. stm32f407+lwip+eth+pppos

    Доброго времени суток! Проблема такая..... Организовал в lwip (STM32 CUBE) работу через eth - все работает. Одновременно необходимо скидывать данные через gsm - организовал pppos, тоже работает. Для pppos все CRC define в lwipopts.h установил в 1. Переключаюсь с (eth) на (pppos) через netif_set_default(...) Периодически требуется пинговать контроллер через eth. Контроллер не пингуется. Добрался до функции в ethernetif.c low_level_output(). В нее пакет-ответ пинга поступает с правильной контрольной суммой. Передается в ДМА и на компе вайршарком в пакете вижу CRC=0. Т.е. в буфере до HAL_ETH_TransmitFrame(&heth, framelength); пакет с правильным CRC, а в полученном пакете CRC=0. Но этого мало, после нескольких пингований устройства pppos перестает работать. Т.е. функция netconn_bind(conn, netif_ip4_addr(ppp_netif(ppp)), 4555); возвращает ошибку ERR_TIMEOUT. Подскажите где, что , куда посмотреть!?
  3. Спасибо! Буду разбираться! Согласен, что Куб развращает, но... скорость разработки возрастает, если время поджимает и приложение не требовательно по таймингу :) С stm только начинаю работать, до этого на nxp сидел (сижу)
  4. В своем STM32 CUBE MX не нашел. Надо качать отдельно lwip?
  5. Доброго времени суток! Возникла задача пинговать контроллером удаленный сервер. Готовой функции в lwip нет. В инете шашел пару реализаций ping, но в контроллере не заработало. Может кто встречался с решением этого вопроса. Подтолкните в нужную сторону!
  6. СПАСИБО за ответы, я сам отчудил. Извините .... адрес для HEAP указал 0х0100 0000 вместо 0x1000 0000 Все работает! "РАЗГРЕБ КУЧУ" :)
  7. __HAL_RCC_CCMDATARAMEN_IS_CLK_ENABLED(); результат тот же r0=0x 0100 0004
  8. malloc ничего не возвращает, в "режиме отладки" доходит до выделения памяти и в самом malloc() при выполнении 0x08000CBE E9C02400 STRD r2,r4,[r0,#0] следующим шагом в HardFault_Handler(void)
  9. в map вроде все нормально Image$$ARM_LIB_HEAP$$ZI$$Base 0x01000000 Number 0 anon$$obj.o(ARM_LIB_HEAP.bss) Image$$ARM_LIB_HEAP$$ZI$$Limit 0x01000800 Number 0 anon$$obj.o(ARM_LIB_HEAP.bss) ... Memory Map of the image Image Entry point : 0x08000189 Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00000d5c, Max: 0x00080000, ABSOLUTE) Execution Region ARM_LIB_HEAP (Base: 0x01000000, Size: 0x00000800, Max: 0x00000800, ABSOLUTE, UNINIT) Base Addr Size Type Attr Idx E Section Name Object 0x01000000 0x00000800 Zero RW 2 ARM_LIB_HEAP.bss anon$$obj.o а в main() я смотрел через debugger, который доходит до malloc() и сваливается в hardfault...
  10. Попытался разместить стек и кучу в ССМ памяти. Делал все через скаттер файл. В отладке вижу, что стек лег по нужному адресу. А вот с heap проблемы. Первый же вызов malloc() и программа сваливается в HardFault_Handler(). Попробовал heap вернуть по адресу внутренней RAM 0х20000000 - все ОК. Кто нибудь сталкивался с этим...? Скаттер файл: LR_IROM1 0x08000000 0x00080000 { ; load region size_region ER_IROM1 0x08000000 0x00080000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00020000 { ; RW data .ANY (+RW +ZI) } ARM_LIB_STACK 0x10003000 EMPTY -0x800{ } ARM_LIB_HEAP 0x1000000 EMPTY 0x0800 {; Heap region growing up } } Программа: int main(void) { uint8_t *ptr; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); [size=3]ptr=malloc(10);[/size] *(ptr++)=125; ..... while(1); }
  11. Разобрался! Поставил последнюю версию OpenAT и все "болячки" прошли
  12. Может кто работал с этим модемом...? Прошиваю свой скрипт, начинается работа, затем вылетает при tcpClientCreate(), попадает в обработчик сообщений CEV_ERROR=-994(Invalid option or parameter value.). По мануалу в этом модеме WMP100. Работал с GL6100, в котором так же WMP100, скрипт рабтал без вылетов. Этот же скрипт работал и в Q2686. В чем могут быть траблы?
  13. все таки лучше прикрутить подтверждение приема пакета на серваке, если нет, то повтор пакета Кстати, пропадает только последний пакет?
  14. Честно говоря не сталкивался, задача немного другая, используем FASTRACK GO( 2686) и GL6100(WMP 100). Питаются от сети 220В, постоянно в GPRS висит, получает от и отправляет данные на сервер(а)... :) Энергию не бережем :) кстати, а DTR сигнал учитываете, а то при AT+W32K=1 отруливание SLEEP режимом происходит сигналом DTR, может просто терминал не находится в sleep режиме? Чтобы без DTR -> AT+W32K=1,0
  15. По поводу ошибки - WIP_BERR_BAD_HDL При открытии есть параметр wip_bearer_t *br, его же надо и при закрытии использовать //глобальная переменная wip_bearer_t br; wip_bearerOpen( &br, "GPRS", Handler обработчик сообщений, NULL) wip_bearerStart ( br ); wip_bearerClose( br);