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

 
 
 
Reply to this topicStart new topic
> особенности оптимизации под LPC
sergik_vrn
сообщение Feb 2 2009, 12:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Исходные данные: 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 не помогает ни коим образом. может, что-то еще посоветуете?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 2 2009, 12:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergik_vrn @ Feb 2 2009, 15:41) *
что-то еще посоветуете?

Проблему не там ищите. Разбирайтесь с FIFO LCD и арбитражем на AHB. Посмотрите топик.
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Feb 3 2009, 10:43
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



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

большое спасибо за подсказку! нашел, разобрался
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:57
Рейтинг@Mail.ru


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