реклама на сайте
подробности

 
 
> Ошибка компилятора IAR 8.xx
virfis
сообщение Jul 16 2018, 09:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



Проблема обнаружилась когда проект с Lwip был перенесен на компилятор 8-й версии. Через некоторое время после установления соединения по TCP и обмена данными прекращался обмен. Тот же проект скомпилированный на 7-й версии работает нормально. Разбираясь и копаясь нашел что "восьмерка" создает неверный (на мой взгляд) код в функции tcp_receive при включенной оптимизации. Я сделал тестовые проекты под версии 7.80 и 8.30. Взгляните на результат вывода printf в обеих версиях. В папке два проекта. Проект test - это для 8.30, test7_80.eww - для 7.80 соответственно.
Прикрепленные файлы
Прикрепленный файл  test.zip ( 435.97 килобайт ) Кол-во скачиваний: 13
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
virfis
сообщение Jul 16 2018, 10:32
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



Нашел 8.22.2 версию. Действительно открылся проект как М3, ничего не менял, просто перебилдил.
Код
          if ((tcpwnd_size_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) {
        0x27e: 0x1852         ADDS      R2, R2, R1
        0x280: 0xb293         UXTH      R3, R2
        0x282: 0x4299         CMP       R1, R3
        0x284: 0xd208         BCS.N     0x298
            pcb->cwnd += pcb->mss;
        0x286: 0xe006         B.N       0x296
          tcpwnd_size_t new_cwnd = (pcb->cwnd + pcb->mss * pcb->mss / pcb->cwnd);
        0x288: 0x4352         MULS      R2, R2, R2
        0x28a: 0xfb92 0xf2f1  SDIV      R2, R2, R1
        0x28e: 0x1852         ADDS      R2, R2, R1
          if (new_cwnd > pcb->cwnd) {
        0x290: 0x428a         CMP       R2, R1
        0x292: 0xbf38         IT        CC
        0x294: 0x460a         MOVCC     R2, R1
        0x296: 0x8302         STRH      R2, [R0, #0x18]
    return pcb->cwnd;
        0x298: 0x8b00         LDRH      R0, [R0, #0x18]
        0x29a: 0x4770         BX        LR


А где бы раздобыть версию 8.20?

Сообщение отредактировал virfis - Jul 16 2018, 10:38
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 14:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016