smk 0 23 июля, 2019 Опубликовано 23 июля, 2019 · Жалоба Никак не получается запустить сеть из под Keil5. Железо рабочее. Проектик из под Keil4 работает хорошо. Все делаю по инструкции и не работает. Помогите понять что я упускаю (или не знаю). Интересует сеть без ОС. Как я понял там все равно из под netInitialize (); запускается поток, но может я неправильно все понимаю. Собственно main: #include "stm32f10x.h" #include "rl_net.h" int32_t tcp_sock; // TCP socket handle uint32_t tcp_cb_server (int32_t socket, netTCP_Event event, const NET_ADDR *addr, const uint8_t *buf, uint32_t len); unsigned int l; int main (void) { SystemCoreClockUpdate(); for(l=0;l<1000000;l++) __nop(); netInitialize (); tcp_sock = netTCP_GetSocket (tcp_cb_server); if (tcp_sock > 0) {netTCP_Listen (tcp_sock, 4001);} while(1) { l++; } } На всякий случай тестовый проект прикрепляю. K5_F107.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 24 июля, 2019 Опубликовано 24 июля, 2019 · Жалоба 10 часов назад, smk сказал: Никак не получается запустить сеть из под Keil5. Железо рабочее. Проектик из под Keil4 работает хорошо. Все делаю по инструкции и не работает. Помогите понять что я упускаю (или не знаю). Интересует сеть без ОС. Как я понял там все равно из под netInitialize (); запускается поток, но может я неправильно все понимаю. Собственно main: Для TCP-стека нужно периодическое обслуживание. Как минимум - для обслуживания машины состояний TCP. Обычно это какая-то функция вызываемая периодически. В Вашем коде этого не видно (в main()), а раз "без ОС" - то похоже и нет другой задачи в которой это обслуживание выполнялось бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 83 24 июля, 2019 Опубликовано 24 июля, 2019 · Жалоба У STM была AN3966 LwIP TCPIP stack demonstration for STM32F4x7 microcontrollers, там рассмотрены различные API для LwIP и когда они используются,а также есть готовый код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 24 июля, 2019 Опубликовано 24 июля, 2019 · Жалоба Вот такой пример нашел в описании "миграции": Previous Versions int main (void) { net_initialize(); while(1) { net_main (); } } Network Component v7 int main (void) { netInitialize(); while(1) { // do anything } } Это что, не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 24 июля, 2019 Опубликовано 24 июля, 2019 · Жалоба Вот они пишут: Цитата Ядро Network v7 работает в управляемом событиями режиме в отдельном потоке (netCore_Thread, thread-safe), который создается функцией netInitialize. Базовая обработка запускается с использованием отметки времени каждые 100 мс или при получении пакета. В противном случае netCore_Thread не используется. Функция net_main удалена. А не работает. У кого-то это работало? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 83 24 июля, 2019 Опубликовано 24 июля, 2019 · Жалоба 3 часа назад, smk сказал: Вот такой пример нашел в описании "миграции": Это что, не работает? Что за "миграция", что должно работать и что такое Network v7 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 25 июля, 2019 Опубликовано 25 июля, 2019 · Жалоба 11 часов назад, smk сказал: Вот они пишут: А не работает. У кого-то это работало? Вы изначально писали: В 23.07.2019 в 21:31, smk сказал: Интересует сеть без ОС. а приведённый вами пример требует работы в отдельном потоке ОС (в котором и выполняется периодическое обслуживание стека). Вас как бы ничего не смущает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 25 июля, 2019 Опубликовано 25 июля, 2019 · Жалоба On 7/24/2019 at 12:06 PM, HardEgor said: LwIP TCPIP stack Мой внутренний телепат подсказывает, что вопрос про стек из комплекта кейла. http://www.keil.com/pack/doc/mw/Network/html/index.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 31 июля, 2019 Опубликовано 31 июля, 2019 · Жалоба Да. Его и читаю. Толькуо не пойму чем тот поток отличается от бесконечного цикла в main. Они там еще упоминают, что "как правило" выполняется в отдельном потоке. При этом испольсована событийная модель, но при отсутствии событий обрабатывается каждые 100 мС. Вот и пытаюсь это сделать без ОС. Вопрос как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 31 июля, 2019 Опубликовано 31 июля, 2019 · Жалоба 2 часа назад, smk сказал: Да. Его и читаю. Толькуо не пойму чем тот поток отличается от бесконечного цикла в main. Они там еще упоминают, что "как правило" выполняется в отдельном потоке. При этом испольсована событийная модель, но при отсутствии событий обрабатывается каждые 100 мС. Вот и пытаюсь это сделать без ОС. Вопрос как? Очевидно что в цикле должно что-то выполняться из вашего стека. У Вас же цикл в main() - пустой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба On 7/24/2019 at 12:31 AM, smk said: #include "stm32f10x.h" #include "rl_net.h" А где файл rl_net.h в проекте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 3 августа, 2019 Опубликовано 3 августа, 2019 · Жалоба Крутил-вертел, но ничего без потока не выйдет. Чтобы отработала netInitialize (); нужно инициальзировать операционку. А если ее инициализировать и не создать ни одного пользовательского потока, то она улетает в osRtxIdleThread, а там for (;;) . С операционкой работает, но чтоб без даже не знаю как. И как понять в описании netInitialize: Цитата Функция netInitialize инициализирует системные ресурсы, протоколы, потоки и приложения сетевого ядра. Поскольку функция также создает объекты RTOS, RTOS должна быть предварительно инициализирована. Где поток? или я что-то не додумал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 3 августа, 2019 Опубликовано 3 августа, 2019 · Жалоба 37 minutes ago, smk said: С операционкой работает, но чтоб без даже не знаю как. Никак. Эта штука сделана на потоках: https://www.keil.com/pack/doc/mw/Network/html/nw_resource_requirements.html The Network component uses threads. The Network Core thread is always started. Each Network interface starts its own thread when the interface is enabled. Thread execution starts with netInitialize. Зато lwip умеет без потоков. Но вам lwip лучше не трогать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться