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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> jpeg на at91sam9g20, скорость сжатия
wmakc
сообщение Aug 22 2010, 09:01
Сообщение #16


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

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



CODE


void InitMMU(unsigned int *pTranslationTable)
{
int i;
// Program the TTB
_writeTTB((unsigned int) pTranslationTable);
// Program the domain access register
_writeDomain(0xC0000000);

// Reset table entries
for (i = 0; i < 4096; ++i)
pTranslationTable[i] = 0;
// Program level 1 page table entry

pTranslationTable[0x3] =
(0x3 << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
(1 << 4) |
(1 << 3) | // Cachable
0x2; // Set as 1 Mbyte section

/* SDRAM entire mapping */
for(i=0;i<64;i++)
pTranslationTable[0x200+i] =
((0x200+i) << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
(1 << 4) |
(1 << 3) | // Cachable
0x2; // Set as 1 Mbyte section

pTranslationTable[0xFFF] =
(0xFFF << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
(1 << 4) |
0x2; // Set as 1 Mbyte section

// Enable the MMU
CP15_EnableMMU();
}

int main(void)
{
CP15_Enable_I_Cache();
InitMMU((unsigned int *) 0x310000);



Попробовал запустить MMU. Все операции с памятью теперь не работают. В чем ошибка?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 22 2010, 09:15
Сообщение #17


Гуру
******

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



Цитата(wmakc @ Aug 22 2010, 13:01) *
В чем ошибка?

Ну, как минимум таблица расположена мимо памяти - адрес 0x310000 у 9G20 попадает в Reserved. Положите ее в SDRAM.
Go to the top of the page
 
+Quote Post
wmakc
сообщение Aug 22 2010, 10:34
Сообщение #18


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

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



Пробовал в sdram, результата не дало
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 22 2010, 10:52
Сообщение #19


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Ну вот протестировал. Результат здесь:
http://eewiki.ru/wiki/Example_DRAMSpeed_for_ARMGS10

Как видно для внешней RAM результат не так уж критично отличается.

Но в Keil-е, например, явно заданные массивы никогда не располагаются невыровненными, даже если в стеке объявлены.
Более того, рекомендуется выравнивание включать по границе 8-мь чтобы не было проблем с плавающей точкой.
Поэтому и в голову не приходило тестировать на невыровненных массивах. Да и DMA работать не должно на невыровненных массивах.
Go to the top of the page
 
+Quote Post
wmakc
сообщение Aug 22 2010, 11:26
Сообщение #20


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

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



Как использовать memcpy для копирования из массива char в int? а то когда копировал, получалось что char просто записывается в каждый байт int.
тоесть если в char {0xAB, 0xFA, 0xFF, 0x01}
то один int получится 0xABFAFF01, а
мне нужно чтобы было 0x000000AB, 0x000000FA и т.д. Пробовал объявлять char c __align. Результата не дало
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 22 2010, 11:48
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(wmakc @ Aug 22 2010, 14:26) *
Как использовать memcpy для копирования из массива char в int? а то когда копировал, получалось что char просто записывается в каждый байт int.
тоесть если в char {0xAB, 0xFA, 0xFF, 0x01}
то один int получится 0xABFAFF01, а
мне нужно чтобы было 0x000000AB, 0x000000FA и т.д. Пробовал объявлять char c __align. Результата не дало


От это вы зря спросили, щаз ваш пост снесут в раздел для самых начинающих новичков.
Даже знаете, боюсь что мой ответ пролетит мимо, поскольку покуда я пишу ответ вашего поста может тут уже не быть.

Скажу коротко: memcpy для такого переноса данных не подойдет.
Go to the top of the page
 
+Quote Post
wmakc
сообщение Aug 22 2010, 15:13
Сообщение #22


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

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



Да я вроде как новичек, так что если перенесут, то не страшно, главное что ответили на вопрос.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 22 2010, 16:21
Сообщение #23


Гуру
******

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



Цитата(wmakc @ Aug 22 2010, 14:34) *
Пробовал в sdram, результата не дало

Как пробовали и что именно получили?

Цитата(wmakc @ Aug 22 2010, 15:26) *
Как использовать memcpy для копирования из массива char в int? а то когда копировал, получалось что char просто записывается в каждый байт int.
тоесть если в char {0xAB, 0xFA, 0xFF, 0x01}
то один int получится 0xABFAFF01, а
мне нужно чтобы было 0x000000AB, 0x000000FA и т.д.

Так это уже не копирование совсем, а перепаковка данных. Ее придется сделать руками.
Go to the top of the page
 
+Quote Post
wmakc
сообщение Aug 22 2010, 16:57
Сообщение #24


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

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



указал в качестве адреса pTranslationTable указать 0x20040000. Также как и до этого программа дальше InitMMU не работала( хотя возможно и нет, нужно проверить под отладчиком).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 22 2010, 17:42
Сообщение #25


Гуру
******

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



Перед инициализацией MMU следует запретить и инвалидировать ICache.
Go to the top of the page
 
+Quote Post
etoja
сообщение Aug 23 2010, 07:39
Сообщение #26


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

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(wmakc @ Aug 21 2010, 18:20) *
Делаю jpeg кодер для сжатия raw картинки с матрицы mt9d131. Картинка сжимается примерно за 3 секунды. Для такого контроллера это нормально?


Нормально, учитывая, что картинка цветная и её размер 1600х1200.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 23 2010, 13:16
Сообщение #27


Гуру
******

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



Цитата(etoja @ Aug 23 2010, 11:39) *
Нормально, учитывая, что картинка цветная и её размер 1600х1200.


Цитата(wmakc @ Aug 21 2010, 18:20) *
Картинка около 600 килобайт.

Go to the top of the page
 
+Quote Post
wmakc
сообщение Aug 23 2010, 16:54
Сообщение #28


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

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



картинка 640 на 480, цветная. Хотелось бы чтобы за секунду смог сжать.

Попробовал проверить инициализацию MMU через отладчик, все вроде проходит нормально. Но дальше уже ничего толком не работает. Не могу объяснить пока что именно, так как с отладчиком не работает TWI, и матрица не запускается, поэтому думаю нужно сделать отдельный проект и уже там вести отладку
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 23 2010, 17:08
Сообщение #29


Гуру
******

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



Цитата(wmakc @ Aug 23 2010, 20:54) *
...думаю нужно сделать отдельный проект и уже там вести отладку

Вот это правильно. Задвиньте пока JPEG и разберитесь с процессором и его периферией.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Aug 24 2010, 04:40
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Да и 3 секунды для такой картинки это много. У меня оцифровка, ресайз и сжатие занимала без кэширования порядка секунды. С кэшированием насколько я помню около 0,3 секунды. Ну и простор для оптимизации ещё очень большой. Процессор AT91SAM9260.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 14:15
Рейтинг@Mail.ru


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