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

 
 
> Bопрос по АРМ9, Обработчики прерываний
axa09
сообщение Feb 22 2009, 00:03
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105



контроллер at91rm9200. частота ядра 180мгц, шина 60мгц. на шине статическая память с 16-битной шиной, с NWS=0(без дополнительных тактов). кеши оба включены-память закеширована write-back, в ней исполняется программа.
обработчики прерываний в этой памяти.

вопрос-
если обработчики разместить во внутренней sram контроллера,будет ли выигрыш в производительности?
или с кешами это не принципиально?
как обработчик прерывания в keil скопировать из одной памяти в другую с учётом коррекции счётчика адреса(РС?)

И ещё-пробовал стек делать во внутренней памяти - на глаз быстродействие не изменилось sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
axa09
сообщение Feb 23 2009, 07:45
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105



В общем удалось ради эксперимента таблицу запихать во внутреннюю срам.
прироста в скорости не дало sad.gif
по ходу больше никак не выжать.

вот собственно задача:
есть буфер MxN байт- индексов другого массива(палитра).
требуется находить средние интенсивности компонент цвета из 4-х смежных точек(2х2 пиксела). короче,некое подобие фильтра при уменьшении картинки в два раза.
как можно сделать быстрее?
буфера во внешней памяти
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 23 2009, 13:02
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(axa09 @ Feb 23 2009, 10:45) *
В общем удалось ради эксперимента таблицу запихать во внутреннюю срам.
прироста в скорости не дало sad.gif
по ходу больше никак не выжать.

вот собственно задача:
есть буфер MxN байт- индексов другого массива(палитра).
требуется находить средние интенсивности компонент цвета из 4-х смежных точек(2х2 пиксела). короче,некое подобие фильтра при уменьшении картинки в два раза.
как можно сделать быстрее?
буфера во внешней памяти


Даже любопытно, как удалось 16 KB'ую таблицу запихнуть в 16 KB'ую SRAM и сохранить в ней таблицу векторов прерываний?
Go to the top of the page
 
+Quote Post
axa09
сообщение Feb 23 2009, 13:32
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105



Цитата(sergeeff @ Feb 23 2009, 04:02) *
Даже любопытно, как удалось 16 KB'ую таблицу запихнуть в 16 KB'ую SRAM и сохранить в ней таблицу векторов прерываний?



все просто. прикиньте сами:
0x00000000 - внутренняя SRAM после ReMap - отхавает RESET(вектор 0)
0x00100000 - внутренний ROM - отхавает Undef (вектор 1)
0x00200000 - внутренняя SRAM всегда - отхавает SWInt (вектор 2)

далее не затираем. Поэтому IRQ и FIQ целые. Остальные не пользуем wink.gif

0x00200400 - первый мегабайт SRAM (NCS0)
0x00200404 - второй мегабайт SRAM
итд...
0x00200С00 - периферия(дисплей) не кешируется и не буферизуется
...
стек в конце


О задаче по -подробнее:


//Буфер 256x240 исходного изобржения. Элемент -байт - индекс массива палитры
extern uint8 *Buf;

//Палитра. Каждый элемент 00rrr00ggg00bb- нули для того чтобы при сложении 4-х цветов небыло переполнения.
u16 PALETTE[256];

/*
256

1212121212..
3434343434..
1212121212.. 240
3434343434..
............
*/

/*
Далее ниже находим "средний пиксел"(среднее арифметическое каждой интенсивности R,G,cool.gif
Для этого складываем все компоненты смежных пикселов "1"+"2"+"3"+"4"
Потом сдвигами и битовыми "И" приводим к виду RRrGGgBB = R:G:B=>3:3:2
И отправляем байт в дисплей (шина EBI,8бит, автоинкремент адреса, 128x120 авто-скругление по кадру)
*/

#define Pixel \
c =PALETTE[*(u8*) Buf ]; \
c+=PALETTE[*(u8*)(Buf+ 1)]; \
c+=PALETTE[*(u8*)(Buf+256)]; \
c+=PALETTE[*(u8*)(Buf+257)]; \
Display_Data_Register=((c>>2)&0x03)|((c>>4)&0x1C)|((c>>6)&0xE0); \
Buf+=2;

void BlitScreen(u8 *Buf) //Отрисовка экрана
{
register u32 y,BufE,c;
for(y=0;y<120;y++)
{
BufE=(u32)Buf+256;
for(;(u32)Buf<BufE;)
{
Pixel
Pixel
Pixel
Pixel
}
Buf+=256;
}
}

//Таким образом изображение 256x240 ужимаем в 128x120 с применением палитры(конвертируем цвета)
// и "фильтра"(среднее значение компонент смежных пикселей 2x2)

Как можно оптимизировать быстрее??? На ассемблере?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 23 2009, 14:28
Сообщение #5


Гуру
******

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



Цитата(axa09 @ Feb 23 2009, 16:32) *
Как можно оптимизировать быстрее??? На ассемблере?

Можно сначала попробовать соптимизировать чтение - читать данные 32-бит словами, сразу для двух блоков 2x2.
Ну, и листинг не грех посмотреть.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- axa09   Bопрос по АРМ9   Feb 22 2009, 00:03
- - aaarrr   Цитата(axa09 @ Feb 22 2009, 03:03) вопрос...   Feb 22 2009, 14:14
- - sergeeff   Цитата(axa09 @ Feb 22 2009, 03:03) контро...   Feb 22 2009, 15:46
- - axa09   За ответы спасибо! с праздником! можно по...   Feb 22 2009, 22:48
|- - aaarrr   Цитата(axa09 @ Feb 23 2009, 01:48) можно ...   Feb 22 2009, 23:09
|- - sergeeff   Цитата(axa09 @ Feb 23 2009, 01:48) За отв...   Feb 23 2009, 00:15
|- - AndrewN   Цитата(axa09 @ Feb 23 2009, 02:48) таблиц...   Feb 23 2009, 06:16
|- - sergeeff   Цитата(AndrewN @ Feb 23 2009, 09:16) Подс...   Feb 23 2009, 10:58
- - axa09   Надо хотябы на 25% повысить. почему напрасно? как ...   Feb 22 2009, 23:26
|- - aaarrr   Цитата(axa09 @ Feb 23 2009, 02:26) Надо х...   Feb 22 2009, 23:32
- - axa09   Нужно ускорить переброс видеобуфера в дисплейную п...   Feb 23 2009, 00:19
|- - aaarrr   Цитата(axa09 @ Feb 23 2009, 03:19) Нужно ...   Feb 23 2009, 00:34
- - axa09   Пришла в голову мысль расположить таблицу во внутр...   Feb 23 2009, 01:28
|- - aaarrr   Цитата(axa09 @ Feb 23 2009, 10:45) прирос...   Feb 23 2009, 12:22
- - axa09   У меня память 16 бит шина данных. всёравно по 32 б...   Feb 23 2009, 14:47
|- - aaarrr   Цитата(axa09 @ Feb 23 2009, 17:47) У меня...   Feb 23 2009, 15:03
- - sergeeff   Цитата0x00200400 - первый мегабайт SRAM (NCS0) Зн...   Feb 23 2009, 14:56
- - axa09   Вариант идёт с 45 преобразований/с. но это не чист...   Feb 23 2009, 15:14
|- - aaarrr   Цитата(axa09 @ Feb 23 2009, 18:14) Вариан...   Feb 23 2009, 15:41
|- - axa09   Цитата(aaarrr @ Feb 23 2009, 07:41) Т.е. ...   Feb 24 2009, 10:45
- - sergeeff   Совет. Длительность CS для вывода на дисплей соотв...   Feb 23 2009, 16:14
- - axa09   Спасибо! как проверю-напишу результаты и приве...   Feb 23 2009, 21:30
- - aaarrr   RE: Bопрос по АРМ9   Feb 24 2009, 14:32
- - axa09   тоесть в моём случае уже ничего не придумать?   Feb 24 2009, 15:33
- - aaarrr   Ну, можно Write Buffer включить - сразу прибавится...   Feb 24 2009, 15:50
- - axa09   Он включен(бит buferable-1) или в другом месте еще...   Feb 24 2009, 19:50
- - aaarrr   Вы же писали: Цитата0x00200С00 - периферия(дисплей...   Feb 24 2009, 20:01
- - axa09   А разве можно буферизовать дисплей(его регистры)? ...   Feb 24 2009, 21:23
|- - aaarrr   Цитата(axa09 @ Feb 25 2009, 00:23) ведь к...   Feb 24 2009, 21:25
- - axa09   Разобрался! Мусор возникал из-за неверной врем...   Feb 25 2009, 03:41
|- - aaarrr   Цитата(axa09 @ Feb 25 2009, 06:41) для ди...   Feb 25 2009, 11:30
- - axa09   тоесть оставить только buferable для регистров вне...   Feb 25 2009, 12:48
|- - aaarrr   Цитата(axa09 @ Feb 25 2009, 15:48) тоесть...   Feb 25 2009, 12:51
- - axa09   Спасибо за ответы! в целом меня устраивает пр...   Feb 25 2009, 13:20
|- - aaarrr   Цитата(axa09 @ Feb 25 2009, 16:20) просну...   Feb 25 2009, 14:01
- - Rst7   Цитатапроснулся чисто спортивно-исследовательский ...   Feb 25 2009, 14:08
- - axa09   если нетрудно,напишите пожалуйста фрагмент кода на...   Feb 25 2009, 23:48
|- - aaarrr   Цитата(axa09 @ Feb 26 2009, 02:48) читаем...   Feb 26 2009, 00:09
- - axa09   Спасибо за ответы! В той же программе оптими...   Feb 26 2009, 01:35
- - axa09   если текущий режим spi не подходит, можно сменить ...   Feb 26 2009, 02:48
|- - aaarrr   Цитата(axa09 @ Feb 26 2009, 05:48) Получи...   Feb 26 2009, 03:23
- - axa09   удалось запустить ДМА. Фокус с ремэпом прокатл-к т...   Feb 26 2009, 10:48
|- - aaarrr   Цитата(axa09 @ Feb 26 2009, 13:48) кстати...   Feb 26 2009, 12:04
- - axa09   как и когда очищать буферизованый буфер для ДМА? ...   Feb 26 2009, 12:40
|- - aaarrr   Цитата(axa09 @ Feb 26 2009, 15:40) как и ...   Feb 26 2009, 12:50
- - axa09   Не совсем понял. команду очистки давать до старта ...   Feb 26 2009, 15:10
|- - aaarrr   Цитата(axa09 @ Feb 26 2009, 18:10) Не сов...   Feb 26 2009, 15:15
- - axa09   Подскажите пожалуйста где здесь функция очистки бу...   Feb 26 2009, 23:09
|- - aaarrr   Цитата(axa09 @ Feb 27 2009, 02:09) Подска...   Feb 26 2009, 23:19
- - axa09   тоесть Rd должен быть равен нулю: mov r0, 0 mcr p...   Feb 27 2009, 00:07
- - axa09   в чём хорош режим сквозной записи кэша по сравнени...   Feb 27 2009, 04:58


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:58
Рейтинг@Mail.ru


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