|
Переход на THUMB, Имеет ли смысл рассуждение? |
|
|
|
Jan 27 2010, 16:25
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
От at91sam9261 требуется перейти на LPC2478.
Чтобы не заморачиваться особо (с переносом функций в RAM и прочим), дай думаю, запускать все в THUMB, расчитывая на то, что из флэша тубму будет немного способнее извлекаться и соответственно, чуть быстрее исполняться (типа, раз в среднем код короче, то акселератору флэш будет проще).
Но насколько сам THUMB хуже - не могу оценить. Переделка текущего проекта в THUMB (для 9261) никаких видимых (глазу) замедлений не дала.
Но разница между 9261 и 2478 по скорости очень велика, и видимо, это как-то скажется. (Но сейчас 2478 нет в наличии, чтобы проверить).
Вот и нужен совет - делать все как люди делают (часть кода в РАМ, перемежать тумб режим и арм и прочая) или сойдет и так? Т.е. насколько много дают прирост производительности все эти меры? ---- Программа особо ничего не делает, просто выводит текст на экран 480х272 (24 бита). Остальные задачи еще мельче. Ну, еще все это работает под переключателем задач раз в миллисекунду (на базе freeRTOS - в смысле, переключение контекста оттуда).
Сообщение отредактировал DpInRock - Jan 27 2010, 16:33
--------------------
On the road again (Canned Heat)
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 25)
|
Jan 27 2010, 18:16
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DpInRock @ Jan 27 2010, 20:13)  Наверное, оставить тумб.... Зачем оставлять этот костыль, за редчайшими исключениями, а уж тем более на LPC имеющим 128bit Flash, проигрывающий по скорости, так и не понял.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 27 2010, 21:06
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(DpInRock @ Jan 27 2010, 20:25)  От at91sam9261 требуется перейти на LPC2478. Программа особо ничего не делает, просто выводит текст на экран 480х272 (24 бита). С LPC2478 поработал. Идеален для статической картинки  Если быстродействие действительно важно, сделайте все, чтобы перейти на 16 бит. Не так то много переделывать, потеря качества не видна, а эффект существенный, особенно на 16-разрядной памяти.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 27 2010, 21:09
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DpInRock @ Jan 28 2010, 00:02)  Ну, тумб реально экономит память. Или нет  . Цитата А мне бы хотелось запихать все картинки... А это хрень банально пакуется Цитата Во вторых - тумб поддерживают ии развивают. О чем этот звон? Цитата В третьих - IAP - в тумбе. Ну и фиг с ним, какое дело до него? Цитата В четвертых - практические пробы.... Вы совета спрашивали? Так я его Вам дал  . Цитата А размер бинарника упал с 26к до 16. Подозреваю, что крайне частный случай, или сам исходник крайне дурно написан в "восьмибитовом" стиле и не оптимален по производительности. Реальные выигрыши не на тестовых примерах а на рабочих программах в сотни килобайт кода никак не более 10, ну 15%. Даже достаточно сильно заточенный под Thumb и компактность и работающий практически только с 8bit данными bootloader у меня дает выигрыш в 31% в Thumb, а не Ваши 63% Цитата В пятых - я поэтому и интересуюсь у людей практических. Ответ дал.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 27 2010, 21:30
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(DpInRock @ Jan 28 2010, 00:02)  Ну, тумб реально экономит память. А мне бы хотелось запихать все картинки и шрифты во внутреннюю флэш и выкинуть последовательную Лучше тщательно упаковать шрифты/картинки. Цитата(DpInRock @ Jan 28 2010, 00:02)  Во вторых - тумб поддерживают ии развивают. ARM поддерживают и развивают еще круче  Цитата(DpInRock @ Jan 28 2010, 00:02)  В пятых - я поэтому и интересуюсь у людей практических. Ибо платы пока живой нет. Посмотреть не на чем. Практический человек выше дал очень правильный совет урезать глубину цвета. Вот это действительно существенно облегчит жизнь.
|
|
|
|
|
Jan 27 2010, 21:32
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
1. 26K против 16. Реально экономит. 2. А чем пакуется JPG? Типа, интересно очень. 3. Если был THUMB, а появился THUMB 2 - то явно не потому, что это костыль. 4. Дурно написанный исходник делает ровно то, что от него просят. Этим может похвастаться не всякий исходник. 5. Тестовая программа - это ровно 10 потоков, которые рисуют на экране 7 разрядные десятичные числа с размером символа 30 на 50 пикселей, 24 бита, со сглаживанием и альфа каналом. Частота переключений - 1 мс при тактовой 200 Мгц. Ширина SDRAM - 16.
=== К счастью на LPC урезание цвета происходит без скальпеля, чисто программно. Цвет я урежу, а хозяину просто не скажу. (Хотя разница на самом деле существует заметная на глаз. Разумеется, можно таких случаев избегать).
Сообщение отредактировал DpInRock - Jan 27 2010, 21:34
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jan 27 2010, 21:42
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DpInRock @ Jan 28 2010, 00:32)  1. 26K против 16. Реально экономит. Ну-ну... Цитата 2. А чем пакуется JPG? Типа, интересно очень. Это ничем. Цитата 3. Если был THUMB, а появился THUMB 2 - то явно не потому, что это костыль. THUMB2, это явно по тому, что THUMB есть фигня  . У LPC2478 просто THUMB. Цитата 4. Дурно написанный исходник делает ровно то, что от него просят. Этим может похвастаться не всякий исходник. Только делает это с лишними затратами ресурсов.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 27 2010, 21:53
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(DpInRock @ Jan 28 2010, 00:32)  2. А чем пакуется JPG? Типа, интересно очень. А JPEG действительно необходим? Если графика "обычная", то LZ* куда эффективнее. Для шрифтов уж точно. Цитата(DpInRock @ Jan 28 2010, 00:32)  3. Если был THUMB, а появился THUMB 2 - то явно не потому, что это костыль. Набор Thumb появился в архитектуре ARMv4T (ARM7TDMI), Thumb-2 - в ARMv6T2 (ARM1156). Как ни крути, это своеобразный "довесок".
|
|
|
|
|
Jan 28 2010, 07:06
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(DpInRock @ Jan 28 2010, 06:05)  А один экран в пикселах 24 бит занимает примерно 400к. Мы сделали "типа GUI", сохраняя все графические примитивы, отображаемые на экране, отдельно, в файлах на SD карте. Для каждого состояния прибора есть описание использования нужных примитивов. За счет повторяемости примитивов (в основном тачскриновские кнопки, конечно) удалось значительно сократить объем графических данных. Все картинки генерируются на PC. Я писал на эту тему на форуме.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 28 2010, 19:40
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(DpInRock @ Jan 28 2010, 21:18)  Отключение кэша снижает скорость вывода (с декодированием) раза в 2. (На глаз. А Вы "на глаз" не меряйте - сделайте простенький профайлер - uint32 счетчик тикающий по прерыванию с какой-нибудь подходящей частотой - например от 1кГц, при вызове процедуры - счетчик запомнили, вышли из процедуры - вычли из нового значения счетчика (он же в прерывании протикал, верно?) запомненное - вот и получите время исполнения процедуры в "тиках". Тем более, у Вас различия в скорости разных вариантов не на порядки - "на глаз" никак нормально не оцените. Цитата(DpInRock @ Jan 28 2010, 21:18)  Действительно, как-то не подумал. Можно ведь снизить частоту ядра очень легко и просто посмотреть. Тут надо аккуратно - ядро 926EJ это не совсем то же самое что ARM7TMDI-S, но разброса в порядки опять-таки не будет. Насчет собственно перехода на THUMB - можно переходить вполне без особой боязни, по моему опыту - производительность составит 0.8..0.9 от АРМ-овского режима. По моим впечатления (после переписывания нескольких ассемблерных и перекомпиляции C-шных библиотек с ARM на THUMB) от переноса особо "страдают" алгоритмы с частым и неупорядоченным обращением к памяти, типа индексированной выборки из двух-трех массивов - не хватает режимов адресации в THUMB, не знаю как тут JPEG, может он и не в тему будет. Иногда не хватает регистров, но, к моему удивлению - редко, по-крайней мере, на моих задачах (криптография, длинная математика, статобработка). Еще вылез прикол - быстродействие циклов в THUMB на LPC намного заметнее зависит от выравнивания/местоположения кода чем в режиме ARM - думаю, это MAM разыгрался. Но, в целом, впечатления от THUMB остались приятные, проигрывая 10-20% скорости, дает выигрыш по объему кода до полутора раз. BTW, на SAM7 относительные цифры ARM/THUMB были такие же.
|
|
|
|
|
Jan 29 2010, 08:04
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(DpInRock @ Jan 28 2010, 22:18)  Про сжатие. Я взял JPEG как более понятный. Логично. Но копипастить много, я взял pcx - он более гуманный в этом плане  Если серьезно, то разбор jpg тоже отнимает время. pcx - достойный компромисс на квадратиках.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 5 2010, 02:29
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Общем, кому интересно.
Атмел 9261 бьет LPC2478 на фсех фронтах. Даже по абсолютному потреблению (почти - не настолько уж ниже как ожидалось).
Картинка JPEG 480x273 из набортного флэша декодируется и выводится аж за 2.5 секунды. И тубм или арм режимы какой-либо особой роли не играют. (меня интересовала картинка, которая появляется на экране мгновенно по включению питания, в частности). А тут даже если упереться и написать все в 2.5 раза лучше, то будет секунда. Тоже не мало. Тем более, что сам main довольно долго стартует после сброса ( с этим еще не разбирался).
Копирование экрана указанного размера (буфер с картинкой на экран методом *s++=*b++) проиcходит за время, за которое атмел успевает еще и декодировать JPEG.
Соотношение частот 198\72=2.75. Но быстродействие как-то в общем, по ощущениям - меньше на порядок.
Текст декодировщика JPEG никак не менялся.
В плюсы отмечаю, что работать с видеопамятью у филипса значительно удобнее. И рисуемая графика выводится очень даже нормально. Лишь немного медленнее, чем на атмеле. На глаз практически незаметно.
Мануал филипса по сравнению с атмелом - ругательства nfrjuj в русском еще не придумано. Особенно описание ISP. Особенно таблица назначения пинов. Да и сама разводка выводов корпуса QFP делает ошибку рисования схемы практически неизбежной (либо сам компонент в пикаде надо сутки рисовать).
ISP намного медленнее Атмеловского (И реализуется на порядок сложнее - замутили они чисто конкретно).
Переключатель задач на таймере 3.9 мс переключает вполне пристойно. 10 задач по рисованию всяких рамочек в случайных местах отрабатывает как прям на старом IBM PC XT.
--- Вывод. Хорошей периферии не хватает быстрого ядра. Цены бы не было.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
May 5 2010, 06:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DpInRock @ May 5 2010, 05:29)  10 задач по рисованию всяких рамочек в случайных местах отрабатывает как прям на старом IBM PC XT. Ну тут уж явно или удалось сейчас написать безумно тормозной код, либо забыли, как на восьмибитовой 4,7MHz ХТ оно было. Я помню хорошо - писал оконную библиотеку на скорость. Цитата(DpInRock @ May 5 2010, 05:29)  Мануал филипса по сравнению с атмелом - ругательства nfrjuj в русском еще не придумано. Имея дело с мануалами NXP, TI, Luminary, Atmel, ST, Silabs могу точно сказать, что Atmel весьма поганый мануалописатель  , хотя и не самый.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|