Перейти к содержанию
    

Оптимизирование DMA в AP7

Доброго времени суток!

В наличии имеется NGW100, JTAGICE mkII, ЦАП переходник с TLL на VGA (ADV7125 как на STK1000)

Передо мной стоит задача, сконфигурировать LCD-контероллер AP7 на разрешение 1024x768x70Гц, глубину цветности 8 бит и добиться стабильной работы.

Первое что сделал, перевёл AP7 на частоту 150МГц переделав и залив U-boot. Т.к. необходимо добиться 75Мгц PixelClock.

Buildroot 2.3.0 отконфигурировал под evklcd101, поменяв необходимые значения согласно AVR32114 и VESA стандарту. При загрузке выдаётся примерно следующее:

msgmni has been set to 47
io scheduler noop registered
io scheduler cfq registered (default)
atmel_lcdfb atmel_lcdfb.0: 6300KiB frame buffer at 10400000 (mapped at b0400000)
atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0xff000000 (mapped at ff000000), irq 1
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_usart.0: ttyS0 at MMIO 0xffe01000 (irq = 7) is a ATMEL_SERIAL
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10

Но Linux загружается и даже работает, но синхронизация пропадает вследствии чего монитор теряет сигнал и гаснет.

В Apnote AVR32416 сказано что для надёжной работы LCD-контроллера необходимо его сделать главным, добавив строки

	hmatrix_writel(SCFG4, HMATRIX_BIT(ARBT)
	| HMATRIX_BF(FIXED_DEFMSTR, 0x5)
	| HMATRIX_BF(SLOT_CYCLE, 0x10)
	| HMATRIX_BF(DEFMSTR_TYPE, HMATRIX_DEFMSTR_TYPE_FIXED_DEFAULT));
	hmatrix_writel(PRAS4, HMATRIX_BF(M5PR, 0xF));

в файл at32ap700x.c в функцию настроек LCD-контроллера.

При добавлении в начало функции at32_add_device_lcdc, как сказано на www.avrfreaks.net, при компиляции выдаёт следующе

 CC      arch/avr32/mach-at32ap/at32ap700x.o
arch/avr32/mach-at32ap/at32ap700x.c: In function 'at32_add_device_lcdc':
arch/avr32/mach-at32ap/at32ap700x.c:1487: error: implicit declaration of function 'hmatrix_writel'
arch/avr32/mach-at32ap/at32ap700x.c:1487: error: 'SCFG4' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1487: error: (Each undeclared identifier is reported only once
arch/avr32/mach-at32ap/at32ap700x.c:1487: error: for each function it appears in.)
arch/avr32/mach-at32ap/at32ap700x.c:1487: error: implicit declaration of function 'HMATRIX_BIT'
arch/avr32/mach-at32ap/at32ap700x.c:1487: error: 'ARBT' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1488: error: implicit declaration of function 'HMATRIX_BF'
arch/avr32/mach-at32ap/at32ap700x.c:1488: error: 'FIXED_DEFMSTR' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1489: error: 'SLOT_CYCLE' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1490: error: 'DEFMSTR_TYPE' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1490: error: 'HMATRIX_DEFMSTR_TYPE_FIXED_DEFAULT' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1491: error: 'PRAS4' undeclared (first use in this function)
arch/avr32/mach-at32ap/at32ap700x.c:1491: error: 'M5PR' undeclared (first use in this function)
make[2]: *** [arch/avr32/mach-at32ap/at32ap700x.o] Ошибка 1
make[1]: *** [arch/avr32/mach-at32ap] Ошибка 2
make[1]: Выход из каталога `/home/avr32/buildroot-avr32-v2.3.0/project_build_avr32/evklcd101/linux-2.6.27.6'
make: *** [/home/avr32/buildroot-avr32-v2.3.0/project_build_avr32/evklcd101/linux-2.6.27.6/arch/avr32/boot/images/uImage] Ошибка 2

Я понимаю что чего то не хватает, но чего именно...

Кто-нибудь сталкивался с подобной проблемой и как её решили.

Если есть такие счастливщики, помогите.

А если нет дайте дельный совет! :laughing:

Зарание спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не может найти функцию hmatrix_writel и все остальное.

Думаю, эта функция из фрэймворка. Надо ее там найти и подключить соответствующую библиотеку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я уже всю голову сломал... :smile3046: Но даже малейшего представления не имею где такая функция может быть или как изменить приоритеты устройств AP7.

Этой функции не нашёл не во фреймвоке ни в ядре ни в билруте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Супостаты проклятые...

Оказывается надо вписать этот код:

	hmatrix_write(SCFG[4], HMATRIX_BIT(ARBT)
	| HMATRIX_BF(FIXED_DEFMSTR, 0x8)
	| HMATRIX_BF(SLOT_CYCLE, 0x70)
	| HMATRIX_BF(DEFMSTR_TYPE, HMATRIX_DEFMSTR_TYPE_FIXED_DEFAULT));
hmatrix_write(PRS[4].A, HMATRIX_BF(M5PR, 0xF));

И будет счастье!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да!... Совсем забыл.

Чтобы точно счастье было ещё надо:

 

1) из папки u-boot-1.3.4/include/asm файлик hmatrix-common.h копировать в папку linux-2.6.27.6/arch/avr32/match-at32ap/include/mach

2) в файле hmatrix.h добавить в заголовке include "hmatrix-common.h"

 

Вот теперь вроде всё... :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...