Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: особенности оптимизации под LPC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
sergik_vrn
Исходные данные: IAR 5.30 + LPC2478, ЖКИ TFT, внешняя SDRAM в качестве буфера индикатора.
при работе наблюдаются периодические неприятные помехи на индикаторе. опытным путем было установлено, что помехи вызываются некоторыми операциями чтения/записи SDRAM (в том числе в участки памяти, не находящиеся внутри буфера ОЗУ). Написал тестовый цикл
Код
        for (;;)
        {
            int y1 = 0, y2 = 200;
            int x1 = 0, x2 = 200;
            for (; y1 <= y2; ++y1)
            {
                volatile u16 *from = screen_shadow + x1 + (y1 * C_GLCD_H_SIZE);
                volatile u16 *to   = screen_buffer + x1 + (y1 * C_GLCD_H_SIZE);
                for (int i = x1; i < x2; ++i) *to++ = *from++;
            }
        }

сперва грешил на размерность указателей (8/16/32 бита), потом выяснилось, что дело не в этом, а в уровне оптимизации. при level = medium все стоит как вкопаное, как только ставлю high - помехи. при этом при high level от компилятор от исходного кода ничего не оставляет, все ссылки идут куда-то в недра memcpy, с использованием жутких конструкций типа LDMIA, STMIA, LDMCSIA и проч.
Конечно, причина ясна, можно обойти, но собирать весь проект со средним уровнем оптимизации очень не хочется, выискивать по всему коду и обвешивать обращения к SDRAM прагмами тоже нет никакого желания. volatile не помогает ни коим образом. может, что-то еще посоветуете?
aaarrr
Цитата(sergik_vrn @ Feb 2 2009, 15:41) *
что-то еще посоветуете?

Проблему не там ищите. Разбирайтесь с FIFO LCD и арбитражем на AHB. Посмотрите топик.
sergik_vrn
Цитата(aaarrr @ Feb 2 2009, 15:47) *
Проблему не там ищите. Разбирайтесь с FIFO LCD и арбитражем на AHB. Посмотрите топик.

большое спасибо за подсказку! нашел, разобрался
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.