Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Асинхронный lwip
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
marco
Добрый день.
tftp-сервер. По запросу (для определённости, на чтение) МК запрашивает данные у другого МК по некому асинхронному протоколу, работающему поверх CAN.
Предполагал, что буду делать так:
Код
struct udp_pcb *tftp_pcb;

tftp_callback(struct udp_pcb pcb, ...)
{
    ...

    tftp_pcb = pcb;
}

main()
{
    while(1) {
        <CAN data transmission...>

        if(data_received) {
            tftp_send_data(tftp_pcb, ...);
        }
    }
}


... но данные не отправляются. ЧЯДНТ?

RAW API
scifi
Что-то я контекст вообще не понял.
Какой такой tftp сервер, откуда взялся? Я, к примеру, свой ваял.
Ну и, следовательно, суть вопроса вообще непонятна. Ясно только, что "нифига не работает".
marco
Пардон.
Шелезяка, у которой с одной стороны - ethernet (который слушает tftp из lwip), с другой - последовательный интерфейс, через который она общается с другим МК.
Во время нового tftp-запроса на чтения я должен инициализировать передачу данных от удалённого МК, отложив при этом tftp-ответ до тех пор, пока не получу от этого МК первую порцию данных.
scifi
А хоть в каком-то виде этот TFTP сервер работает?
Вообще прежде чем задавать такие вопросы не вредно было бы просто пройтись по программе в отладчике и посмотреть, что там реально происходит в том месте, где должна происходить отправка данных.
marco
Нашёл проблему. В udp_pcb не сохраняется адреса (IP, порт) отправления-назначения: возможно, специфика работы udp в lwip. Сохраняю это состояние в отдельной структуре и всё ок.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.