Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: запустим GUI emWin вместе?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Dunduk
Всем привет!
Пытаюсь запустить графическую оболочку emWin на микроконтроллере LPC1788 и 7-ми дюймовом TFT. Библиотека emWin для нас, пользователей NXP уже более года как стала бесплатной. Так давайте же ей воспользуемся!
Итак, идея моя такова. Я создал проект с нуля, запустил SDRAM и TFT, пользуясь примерами производителя платы. Теперь хочу запустить emWin, но не знаю как. Я буду выкладывать сюда проекты вплоть до того момента, когда все заработает. Если кто-то из профессионалов подскажет как запустить GUI быстро и правильно, я буду очень благодарен. Так или иначе, в результате у участников форума будет готовый, хорошо комментированный проект. Можно брать и пользоваться.
Железо. Пользуюсь платой Starterkit под названием SK-MLPC1788 и дисплеем SK-ATM0700D4, 7 дюймов, 800*480 точек.
Компилятор Keil MDK-ARM 4.60. Русский язык, кстати, у меня уже поддерживается. Могу рассказать как это сделать.
Отладчик - клон J-link с firmware v.8.
На данный момент проект содержит: все необходимые настройки проекта, включая подключение внешней памяти, опции отладчика и т.д., инициализацию проца, инициализацию SDRAM, ее тестирование, инициализацию TFT контроллера и пробный вывод текстовой строки на дисплей. Все работает.
Далее, я подключил все (как мне кажется) по части emWin, но результата не видно. Видимо, что-то с конфигурированием библиотеки.
Буду рад любой помощи. Проект во вложении.
Cosmojam
Это надо бы на хостинг проектов типа Github, Bitbucket и пр. Тогда проще взаимодействовать с другими разработчиками. А перекачка архивов быстро надоест
Lotor
Надеюсь автор топика слышал про lpcware.com
Dunduk
Цитата(Lotor @ Nov 23 2012, 14:13) *
Надеюсь автор топика слышал про lpcware.com

Да, конечно. Я располагаю большим количеством примеров. Пишу в приглядку. Тем не менее, пока результата нет. Хотя кое-какие ошибки обнаружил.
В любом случае, результат (рабочая GUI) будет сюда выложена.
На данный момент затык очень простой - исключение HardFault_Handler. Причина не ясна. Исключение возникает при вызове GUI_Init(). Буду рад, если кто-нибудь подскажет, на что обратить внимание. Я с исключениями сталкивался только однажды. Была попытка работы с периферией, которая была отключена. Здесь - что-то другое.
AlexandrY
Цитата(Dunduk @ Nov 22 2012, 15:19) *
Всем привет!
Пытаюсь запустить графическую оболочку emWin на микроконтроллере LPC1788 и 7-ми дюймовом TFT. Библиотека emWin для нас, пользователей NXP уже более года как стала бесплатной. Так давайте же ей воспользуемся!


Это же просто библиотека без исходников! Мало смысла с ней иметь дело.
Эта GUI достаточно глючная и слабодокументрованная , чтобы не браться за нее без исходников.

Больше смысла будет взять доступную версию uC/GUI, и делать на ее базе расширения вроде подключения TTF шрифтов или новых виджетов.
_Pasha
Цитата
GUI Development Made Easy with NXP's Free MCU Graphics Library

Что означает "free" применительно к закрытой либе, которая продается и имеет licence agreement далекий от GPL?
Dunduk
Цитата(AlexandrY @ Nov 23 2012, 15:33) *
Это же просто библиотека без исходников! Мало смысла с ней иметь дело.

Я знаю, вы на GUI уже собаку съели. Скажите, что значит "без исходников" с точки зрения ее использования? Я смогу подключать свои шрифты? Видоизменять виджеты? Если нет, конечно, я лучше возьму micrium. Вроде была она где-то версии 3.98, кажется.
Впрочем, процесс инициализации там очень похож. А значит, все те же вопросы у меня возникнут и там.
Dunduk
не прошло и полгода как появились первые признаки жизни emWin. Выкладываю.
Причины, почему не работало: Мне не удалось правильно передать GUI адрес для видеобуфера. Пришлось сделать это также криво как в одном из фирменных (NXP+Segger) примерах, а именно (см LCDConf.c)
Код
#define VRAM_ADDR_PHYS  (U32)&_aVRAM[0]
__align(8) static U32 _aVRAM[XSIZE_PHYS * YSIZE_PHYS / (4 / PIXEL_WIDTH)] __attribute__ ((section ("VRAM"), zero_init));

и еще см. GUIConf.c:
Код
U32 static _aMemory[GUI_NUMBYTES / 4] __attribute__ ((section ("GUI_RAM"), zero_init));
//...
  GUI_ALLOC_AssignMemory(_aMemory, GUI_NUMBYTES);

Конечно, при этом необходимо чтобы линкер знал, что такое VRAM и GUI_RAM. Потому что эта собака прекрасный линкер не ругается в том случае, если эти значения не определены. Поэтому Scatter-файл необходимо изменить, т.е. определить то место куда кладется буфер.
Все пока. На очереди - запуск системного тика для GUI (TimeMS) и потом подключаем тачскрин.
До связи!
haker_fox
Dunduk, спасибо за труд! Новичкам Ваши труды могту очень даже пригодиться!!! Я отношу себя к новичкам.
Vetal-Soft
В Keil MDK-ARM 4.60 встроена emWin.
Цитата
emWin is delivered as an add-on product to MDK-ARM
haker_fox
QUOTE (Vetal-Soft @ Dec 25 2012, 23:52) *
В Keil MDK-ARM 4.60 встроена emWin.

Да, но его нужно конфигурировать)
Vetal-Soft
Цитата(haker_fox @ Dec 27 2012, 17:13) *
Да, но его нужно конфигурировать)

Да, думаю хелпа и примеров должно хватить. После праздников буду этим заниматся.

haker_fox
QUOTE (Vetal-Soft @ Dec 31 2012, 16:16) *
Да, думаю хелпа и примеров должно хватить.

Практика говорит об обратном rolleyes.gif
skyv
Цитата(Dunduk @ Nov 30 2012, 15:31) *
не прошло и полгода как появились первые признаки жизни emWin. Выкладываю.
...


Спасибо.
Хочу для себя оценить удобства и недостатки emWin.
Имею аналогичное железо (SK-MLPC1788 и TFT 7”).

Несколько вопросов по настройке LCD в проекте emWin_test_301112
(файл TFT_ATM07_drv.h )

1. Из каких соображений выбираются значения:
#define C_GLCD_H_PULSE 60

#define C_GLCD_V_PULSE 1

2. Где в проекте используются или для чего определяются:
#define C_GLCD_CLK_PER_LINE ….
#define C_GLCD_LINES_PER_FRAME ….
#define C_GLCD_PIX_CLK …..

3. Какой частотой мы тактируем данные пикселей?
4. Какая частота обновления экрана?
5. Почему LPC_IOCON->P2_1 = 0x20; ,а не =0x27 (файл TFT_ATM07_drv.c)?
Dunduk
Цитата(skyv @ Jan 3 2013, 16:15) *
Несколько вопросов по настройке LCD в проекте emWin_test_301112


Погодите, щас на рыбалку собираюсь, после праздников расскажу. Я сам мало чего там писал, мой метод - осознанный copy-paste. cranky.gif
skyv
Цитата(Dunduk @ Jan 3 2013, 15:21) *
Погодите, щас на рыбалку собираюсь, после праздников расскажу. Я сам мало чего там писал, мой метод - осознанный copy-paste. cranky.gif


Желаю хорошо отдохнуть.
scorp2011
Цитата(skyv @ Jan 3 2013, 16:15) *
Спасибо.
Хочу для себя оценить удобства и недостатки emWin.
Имею аналогичное железо (SK-MLPC1788 и TFT 7”).

Несколько вопросов по настройке LCD в проекте emWin_test_301112
(файл TFT_ATM07_drv.h )

1. Из каких соображений выбираются значения:
#define C_GLCD_H_PULSE 60

#define C_GLCD_V_PULSE 1

2. Где в проекте используются или для чего определяются:
#define C_GLCD_CLK_PER_LINE ….
#define C_GLCD_LINES_PER_FRAME ….
#define C_GLCD_PIX_CLK …..

3. Какой частотой мы тактируем данные пикселей?
4. Какая частота обновления экрана?
5. Почему LPC_IOCON->P2_1 = 0x20; ,а не =0x27 (файл TFT_ATM07_drv.c)?

Честно говоря не в курсе какая конфигурация железа, но для RGB интерфейса...:
(1) это рекомендованные параметры вашего LCD, величина импульсов H в клоках, V в строках.
(2) эти параметры тоже зависят от вашего дисплея и используются как и (1) для програмирования LCD контроллера вашего ARMа. Тоесть их использовать должны вы.
(3) в идеале открываем даташит дисплея и смотрим рекомендованную частоту пиксела, например 6.5МГц. Исходя из этого программируем контроллер дисплея в АРМе.
(4) Она считается делением частоты пикселей на: (VFP+VBP+количество строк)*(HFP+HBP+количество пикселей в строке)
(5) это я не в курсе.
Если LCD подключен в режиме MPU интерфейса то всё вышеописанное не используется а (4) определяется внутренними настройками дисплея, время же прорисовки экрана будет зависеть от скорости интерфейса
Dunduk
Платой занимаюсь редко, а графикой - еще реже. Много другой работы. Тем не менее, emWin запущен окончательно, работает без нареканий. Свои шрифты добавлять очень легко. Кириллица-шмирилица и пр. Есть отличный GUI builder под Win, не полнофункциональный, но все же.... Тачскрин также запущен, все ок. Через несколько дней выложу сюда проект на всеобщее обозрение.

Сейчас у меня просьба к публике. Не получается запустить кейловский TCP стек. Все отлично работало на LPC1768, а на этом, LPC1788 - бьюсь уже дня 3. Из-за того что у меня там Phy KSZ8721, фирменный драйвер писан под LAN8700, а раньше у меня был вообще DP83848, испытываю сложности с портированием, видимо. Через отладчик вижу, что инициализация Emac проходит, а дальше все - прерываний уже не бывает. Пинга, конечно, нет.
Прошу поделиться проектиком с запущенным RL-TCPnet, у кого есть. Спасибо.
Rimm
Доброго времени суток)
Если речь идёт о плате sk-lps1788, то там возможен трабл при инициализации физики. Если напруга питания чуть завышена, инициализация не проходит (это относится к стеку, который прилагается к демке).

По поводу проекта emWin, привеликая благодарность, очень жду Вашей демки!!!

С Уважением.
Latch
Как добились работы кириллицы в GUI Builder?
skyv
Цитата(Dunduk @ Apr 2 2013, 15:44) *
... Тачскрин также запущен, все ок. Через несколько дней выложу сюда проект на всеобщее обозрение.


Добрый день.
Ваш драйвер emWin для тачскрин использует структуру - GUITDRV_ADS7846_CONFIG?
Если да, то подскажите где в поддержке NXP_emWin520_BSP для LPC1788 есть пример инициализации этой структуры.
Интересно посмотреть на Ваш проект.
demetriuse
Цитата(Dunduk @ Apr 2 2013, 16:44) *
Платой занимаюсь редко, а графикой - еще реже. Много другой работы. Тем не менее, emWin запущен окончательно, работает без нареканий. Свои шрифты добавлять очень легко. Кириллица-шмирилица и пр. Есть отличный GUI builder под Win, не полнофункциональный, но все же.... Тачскрин также запущен, все ок. Через несколько дней выложу сюда проект на всеобщее обозрение.

Сейчас у меня просьба к публике. Не получается запустить кейловский TCP стек. Все отлично работало на LPC1768, а на этом, LPC1788 - бьюсь уже дня 3. Из-за того что у меня там Phy KSZ8721, фирменный драйвер писан под LAN8700, а раньше у меня был вообще DP83848, испытываю сложности с портированием, видимо. Через отладчик вижу, что инициализация Emac проходит, а дальше все - прерываний уже не бывает. Пинга, конечно, нет.
Прошу поделиться проектиком с запущенным RL-TCPnet, у кого есть. Спасибо.

Добрый день. Пытаюсь использовать сию библиотеку (emWin) вопрос: где взять для нее кириллические шрифты или не демонстрационный конвертор?
Dunduk
Цитата(demetriuse @ Jul 19 2013, 09:55) *
Добрый день. Пытаюсь использовать сию библиотеку (emWin) вопрос: где взять для нее кириллические шрифты или не демонстрационный конвертор?


Добрый день!
Выкладываю готовый маленький проект, в котором уже полноценно функционирует emWin, подключен тач скрин, нарисовано диалоговое окно, в котором прописаны реакции на нажатия кнопок.
С кириллическими шрифтами, как вы можете убедиться, нет ни каких проблем. Шрифты в emWin добавляются очень легко и просто. Это буквально 5 минут времени на все-про все.
Кирилических шрифтов в GUI Builder нет. Лично я легко обхожусь. Главное, что они есть в самой GUI. Этот билдер вообще жутко урезанная вещь. Даже банального copy paste нет.

Вообще, у меня сложилось очень хорошее впечатение о emWin. Программа, которую я пишу разрослась, стала просто огромной, очень сложная иерархическая структура из диалоговых окон, всплывающие клавиатуры с изменяемыми языковыми раскладками, буферизация картинки на TFT и т.д. Работает четко.
Вопрос, который я когда-то задавал об Ethernet на данной демо плате, давно решился. Вообще, у меня хорошее впечатление от LPC1788 и о данной плате. Можно сделать очень много чего интересного.

Далее я не буду ничего выкладывать по теме emWin и демо платы, и так достаточно, по-моему. Но на вопросы по существу - отвечу.
Всем желаю удачи!
demetriuse
Цитата(Dunduk @ Jul 19 2013, 12:24) *
Добрый день!
Выкладываю готовый маленький проект, в котором уже полноценно функционирует emWin, подключен тач скрин, нарисовано диалоговое окно, в котором прописаны реакции на нажатия кнопок.
С кириллическими шрифтами, как вы можете убедиться, нет ни каких проблем. Шрифты в emWin добавляются очень легко и просто. Это буквально 5 минут времени на все-про все.
Кирилических шрифтов в GUI Builder нет. Лично я легко обхожусь. Главное, что они есть в самой GUI. Этот билдер вообще жутко урезанная вещь. Даже банального copy paste нет.

Вообще, у меня сложилось очень хорошее впечатение о emWin. Программа, которую я пишу разрослась, стала просто огромной, очень сложная иерархическая структура из диалоговых окон, всплывающие клавиатуры с изменяемыми языковыми раскладками, буферизация картинки на TFT и т.д. Работает четко.
Вопрос, который я когда-то задавал об Ethernet на данной демо плате, давно решился. Вообще, у меня хорошее впечатление от LPC1788 и о данной плате. Можно сделать очень много чего интересного.

Далее я не буду ничего выкладывать по теме emWin и демо платы, и так достаточно, по-моему. Но на вопросы по существу - отвечу.
Всем желаю удачи!

Да собственно у меня нет проблем с использованием шрифтов, у меня проблема в том что с офф сайта конвертор шрифтов доступен только в демо режиме. а он нормально шрифты в С файлы не сохраняет (он их коверкает).
В вашем проекте я вижу шрифты сделаны как раз конвертором, либо вы их ручками прописывали? Если конвертором: то не могли бы вы выложить сам конвертор?
Dunduk
Цитата(demetriuse @ Jul 19 2013, 13:30) *
не могли бы вы выложить сам конвертор?

Вроде этот, попробуйте
demetriuse
Цитата(Dunduk @ Jul 19 2013, 15:00) *
Вроде этот, попробуйте

Спасибо! Вроде оно. Во всяком случае не демка и шрифты нормально экспортирует в С файл, попробую в прошивку шрифт подгрузить
kan35
Коллеги, как вы знаете, ST тоже вступила на скользкий путь встраивания TFT контроллеров в МК, соотестственно библиотека emWin для поклонников ST портирована для свободного использования на камнях ST.
http://www.st.com/web/catalog/tools/FM147/...type=partnumber
demetriuse
Добрый день, коллеги.

Хотел поинтересоваться кто нибудь пытался запустить Keil RL-TCPnet библиотеку, что то у меня на STM32F4Discovery ни как не получается.
demetriuse
Привет. Столкнулся с такой проблемой в emWin. При вызове функции EDIT_SetFloatMode программа зависает. Ты случаем не пользовался ею?


Цитата(demetriuse @ Aug 15 2013, 10:53) *
Привет. Столкнулся с такой проблемой в emWin. При вызове функции EDIT_SetFloatMode программа зависает. Ты случаем не пользовался ею?

В общем полностью разобраться с этим не смог. Обнаружил следующий нюанс: если редактируемое поле создается в редакторе, то дальнейший вызов функций EDIT_SetFloatMode, EDIT_SetDecMode ... приводит к зависанию. Если редактируемое поле создать вручную в коде....то функции отрабатываются корректно. Х.з. почему так.

Вот код для создания виджета вручную:
EDIT_CreateAsChild(180, 70, 100, 20, pMsg->hWin, ID_EDIT_4, WM_CF_SHOW, 15);

Да и еще не понятно что за значение 0x64 в конфигурации виджета прописывает редактор:
EDIT_CreateIndirect, "Edit", ID_EDIT_0, 0, 0, 310, 40, 0, 0x64, 0 }
kt368
Добрый день!
Пытаюсь согласно инструкции по портированию emWin на другое железо (AN11218) портировать проект под свой LPC1758 и LCD на SSD1289, не понимаю вопрос о создании своего драйвера дисплея. Для используемого в аппноте дисплея подходит драйвер FlexColor, на странице его описания на сайте сеггера описываются функции GUIDRV_FlexColor_SetFunc() и GUIDRV_FlexColor_Config(), на которые ссылается аппнот, и также 4 низкоуровневые функции (pfWrite16_A0, pfWrite16_A1, pfWriteM16_A1, pfReadM16_A1), про которые в аппноте тоже говорится. Теперь смотрю на страницу описания необходимого для моего контроллера дисплея драйвера (GUIDRV_compactcolor_16, и не могу понять, какие функции мне нужно реализовать? В разделе "Hardware access" есть, как я понял, и макросы и функции (LCD_WRITE_A0, LCD_WRITE_A1, LCD_READM_A1, LCD_WRITEM_A1, LCD_WRITEM_A0), но не понятно что должны эти функции принимать. Вот, например, для функции "LCD_WRITE_A0". Она, судя по описанию, должна записывать один байт в контроллер. А в качестве входных данных она должна принимать 8-и битную переменную или ссылку на эту переменную? Вообще, правильно ли я мыслю насчёт функций, или на странице описания этого драйвера ничего про функции, которые мне нужно реализовать нет?

Заранее спасибо!
kt368
Теперь вот нашёл тут на странице 1052, что для создания своего драйвера дисплея достаточно подправить функции _SetPixelIndex() и _GetPixelIndex(). Так как же всё-таки создать драйвер дисплея, которого нету в бесплатно распространяемой версии emWin?
wolfthegrey
Цитата(demetriuse @ Aug 15 2013, 11:25) *
Привет. Столкнулся с такой проблемой в emWin. При вызове функции EDIT_SetFloatMode программа зависает. Ты случаем не пользовался ею?



В общем полностью разобраться с этим не смог. Обнаружил следующий нюанс: если редактируемое поле создается в редакторе, то дальнейший вызов функций EDIT_SetFloatMode, EDIT_SetDecMode ... приводит к зависанию. Если редактируемое поле создать вручную в коде....то функции отрабатываются корректно. Х.з. почему так.

Вот код для создания виджета вручную:
EDIT_CreateAsChild(180, 70, 100, 20, pMsg->hWin, ID_EDIT_4, WM_CF_SHOW, 15);

Да и еще не понятно что за значение 0x64 в конфигурации виджета прописывает редактор:
EDIT_CreateIndirect, "Edit", ID_EDIT_0, 0, 0, 310, 40, 0, 0x64, 0 }

0x64 - количесво символов в окне EDIT.
Программа зависает при переполнении стека. Если используется ОС, желательно вызывать все GUI функции из одной задачи. Ошибкой будет, например, вызвать функцию, рисующую окно, из задачи обработки кнопки, которой назначен минимальный размер стека.
vddv
Здравствуйте!

Сталкнулся с такой же проблемой портирования Keil RL-TCPnet на плату SK_MLPC1788 StarterKita. Подскажите пожалуйста что нужно изменить в EMAC_178x_8x.c, EMAC_178x_8x.h для правильной работы с KS8721b?
lehacheb
Здравствуйте! Думаю запустить emWin на процессоре STM32F103. В примере для демо-плат используется модуль FSMC для подключения к индикатору.
Но у меня процессор STM32F103RET6 (64 вывода), там модуля FSMC нет. Я подумал, что интерфейс внутри процессора сделаю программный, присоединив
выводы индикатора на произвольные вывода процессора (у меня интерфейс 8, бит режим 8080, драйвер индикатора SSD1963), а теперь не знаю, как
мое аппаратное подключение передать в emWin. Вот тут http://www.lpcware.com/content/forum/indir...rallel-question обсуждается похожая проблема,
только для LPC, но ответа нет. Если кто работал с emWin, подскажите, обязательно нужно использовать аппаратный интерфейс, ничего у меня не получится?
Обязательно нужно переходить на процессор с FSMC? На процессор 100 выводов или лучше на 144 вывода (в 100-выводном модуль FSMC урезанный)?
Обязательно нужно подключать к FSMC внешнюю последовательную FLASH и(или) SDRAM? Подскажите, если кто в курсе, пожалуйста.
diglook
Здравствуйте! я давно не программировал - и практически новичок
пробовал компилировать проекты из этой ветки (у меня такое же железо, поэтому для меня очень актуально) но компилятор Keil µVision 5.23
выскакивают вот такие предупреждения
.\Obj\emWin_test.axf: Warning: L6170W: Mapping symbol #20 '$t' in .bss(GUI_Core.o:16) identifies code, but is in a section not marked as executable.
и такие ошибки
.\Obj\emWin_test.axf: Error: L6405E: No .ANY selector matches GUI_SetAlpha.o(.bss).
как бы это побороть?
предполагаю что у меня библиотеки более свежие, например библы из папки Keil\ARM\Segger\emWin\Lib\ созданы 25 октября 2016г.
но что с этим делать?
Надеюсь на подсказки и заранее благодарю.
diglook
Цитата(diglook @ Feb 27 2017, 06:31) *
Здравствуйте! я давно не программировал - и практически новичок
пробовал компилировать проекты из этой ветки (у меня такое же железо, поэтому для меня очень актуально) но компилятор Keil µVision 5.23
выскакивают вот такие предупреждения
.\Obj\emWin_test.axf: Warning: L6170W: Mapping symbol #20 '$t' in .bss(GUI_Core.o:16) identifies code, but is in a section not marked as executable.
и такие ошибки
.\Obj\emWin_test.axf: Error: L6405E: No .ANY selector matches GUI_SetAlpha.o(.bss).
как бы это побороть?
предполагаю что у меня библиотеки более свежие, например библы из папки Keil\ARM\Segger\emWin\Lib\ созданы 25 октября 2016г.
но что с этим делать?
Надеюсь на подсказки и заранее благодарю.


Решилось переустановкой, при этом не ставил новые EmWin библы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.