Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание lib-библиотеки uC/GUI под RealView
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
manifest
Кто-нибуть пытался собрать lib-библиотеку uC/GUI под компилятор RealView? Поделитесь опытом, может уже кто-то переделал make-файлы для создания библиотеки?
manifest
Выложил make-файлы для сборки lib-библиотеки uc/GUI с помощью компилятора RealView, возможно кому-то пригодится.

http://depositfiles.com/files/1992490
manifest
Создал проект в Keil uVision3, подключил к нему созданную lib-библиотеку, все header-файлы uc/GUI и файлы конфигурации. При компиляции получил множесто ошибок L6212E вроде этих:

Код
Error: Undefined symbol GUI_X_Init (referred from GUICore.o)
Error: Undefined symbol GUI_X_GetTaskId (referred from GUITask.o)
...


Код
#include <RTL.h>
#include "gui.h"

extern "C" void startTask() __task;
extern "C" void guiInitTask() __task;

int main()
{
  os_sys_init(startTask);

  return 0;
}

void startTask() __task
{
  os_sys_init(guiInitTask);
  os_tsk_delete_self();
}

void guiInitTask() __task
{
  GUI_Init();
  while(true);
}


Решил было, что напортачил с make-файлами и неправильно собрал библиотеку, решил проверить, подключил к проекту вместо lib-библиотеки исходники uc/GUI, получил аналогичные ошибки:

Код
Error: Undefined symbol GUI_X_ErrorOut (referred from gui_errorout.o)
...


Решил перепроверить с другим компилятором, создал проект в IAR, подключил к нему lib-библиотеку (созданную с помощью make-файлов идущих в составе uc/GUI под компилятор IAR), все header-файлы uc/GUI и файлы конфигурации. При компиляции получил ошибки:

Код
Error[e46]: Undefined symbol "GUI_X_Init" referred in GUICore
Error[e46]: Undefined symbol "GUI_X_GetTaskId" referred in GUICore
...


Проблема в том, что мне совсем не понятно, с чем связаны эти ошибки и как с ними бороться.
DASM
связано с тем, что эти ф-ции вызываются (ну например из GuiCore.c зовется GUI_X_init, но в комплект UCOS не входят, юзер должен их сам писать. А тут он просто их не находит
manifest
Цитата(DASM @ Oct 9 2007, 13:24) *
связано с тем, что эти ф-ции вызываются (ну например из GuiCore.c зовется GUI_X_init, но в комплект UCOS не входят, юзер должен их сам писать. А тут он просто их не находит

Ты хотел сказать не входят в комплект uc/GUI? Тогда почему в эмуляторе, поставляемом с исходниками всё компилируется без ошибок и юзеру вводить ни чего не нужно?

Возникла мысль, что из uc/GUI вызываются какие-нибуть ф-ции из uc/OS-II, решил проверить, взял демонстрационный проект uc/OS-II с офф. сайта для RealView, подключил к нему свою lib-библиотеку uc/GUI. При компиляции посыпались всё теже ошибки. Непонятно.
DASM
Цитата(manifest @ Oct 9 2007, 14:49) *
Ты хотел сказать не входят в комплект uc/GUI? Тогда почему в эмуляторе, поставляемом с исходниками всё компилируется без ошибок и юзеру вводить ни чего не нужно?

Возникла мысль, что из uc/GUI вызываются какие-нибуть ф-ции из uc/OS-II, решил проверить, взял демонстрационный проект uc/OS-II с офф. сайта для RealView, подключил к нему свою lib-библиотеку uc/GUI. При компиляции посыпались всё теже ошибки. Непонятно.

В симуляторе мы видим в additional dependencies такое
Simulation\GUISim.lib Simulation\Simulation.res winmm.lib odbc32.lib odbccp32.lib
Если мы глянем GUISim.lib например через IDA то увидим, что в ней эта Gui_X_Init и реализована. И так далее.
PS а откуда непреодолимое желания загнать ucos в lib ? По мне так если сурцы ее не править - то нафик вообще нужна. Время компиляции не меняется.. Короче зачем ? Чтобы враг не догадался ?
manifest
Цитата(DASM @ Oct 9 2007, 18:52) *
а откуда непреодолимое желания загнать ucos в lib ? По мне так если сурцы ее не править - то нафик вообще нужна. Время компиляции не меняется.. Короче зачем ? Чтобы враг не догадался?
Желание не столько чтобы загнать в lib, сколько прикрутить её к ОС. С добавлением исходников к проекту те же самые ошибки. У меня опыта подобной работы нет, поэтому не понятно что менять нужно, что за функции периписывать и как, а статей на эту тему не видел.
DASM
Да просто прикрути пустышки этих ф-ций куда нибудь - делов то
manifest
Цитата(DASM @ Oct 10 2007, 09:59) *
Да просто прикрути пустышки этих ф-ций куда нибудь - делов то

Gui`шные ф-ции описал, но нужен ещё драйвер дисплея. Может кто-нибуть выложить драйвер LCDPage1bpp или аналогичный для KS0107?
sensor_ua
GLCD не подходит?
manifest
Цитата(sensor_ua @ Oct 11 2007, 08:57) *
GLCD не подходит?

Нужен под uc/GUI,
нашёл у китайцев LCDPage1bpp.с для uc/GUI 3.32a, подключил к проекту, указал идентификатор контроллера LCD_CONTROLLER = 1502, но линкер по прежнему не находит описаний некоторых ф-ций дисплея, хотя они имеются в LCDPage1bpp.с sad.gif
manifest
Взглянул на код драйвера LCDPage1bpp, оказалось, что он весь заключён в условие:
Код
#if (LCD_CONTROLLER == 8811) || (LCD_CONTROLLER == 8535) && (!defined(WIN32) | defined(LCD_SIMCONTROLLER))

При таком условии, код даже не компилируется, т.к. в моём случае LCD_CONTROLLER = 1502 (для KS108B). Это что значит? На офф. сайте micrium сказано что для данного контролера дисплея нужно использовать драйвер LCDPage1bpp.

У китайцев отыскался ещё один драйвер LCD15XX.c, в комментариях описывается что он поддерживает контроллер дисплея KS108B.
Компилятор файл подхватил, ругнулся на отсутствие описания ф-ций:
LCD_READ_A0_0
LCD_READ_A0_1
...

Выходит драйвер не весь, а только часть его что-ли? Свои, выложите пожалуйста нормальный драйвер LCDPage1bpp для KS108B, наверняка имеется на здешнем фтп.
SDS28
Цитата(manifest @ Oct 11 2007, 12:18) *
...Компилятор файл подхватил, ругнулся на отсутствие описания ф-ций:
LCD_READ_A0_0
LCD_READ_A0_1
...

Посмотри какие макросы должны быть определены для доступа к железу здесь http://www.micrium.com/products/gui/lcdpage1bpp.html
manifest
Для того чтобы собрать и запустить uC/GUI, необходимо:
1. Описать все ф-ции объявленные в gui_x.h и некоторые ф-ци из gui.h (ф-ции взаимодействия GUI с операционной системой) [для некоторых ОС файлы с описанием ф-ций уже имеются в директории Sample\GUI_X];
2. Заменить исходный файл lcdconf.h на файл содержащий конфигурацию подключаемого LCD, либо определить макросы самостоятельно [файлы конфигураций для некоторых дисплеев поставляются вместе с GUI в директории sample\LCDConf\xxx];
3. Описать низкоуровневые ф-ции работы с LCD, объявленные в lcdconf.h (LCD_X_READ(), LCD_X_READ() и т.п.) [для некоторых дисплеев уже имеются в директории Sample\LCD_X];
Almaz1988
Пытаюсь скомпилировать проект "uCOSII2.91+UCGUI3.90A demo" для отладочной платы "Open1768". Получаю множество ошибок вроде этой:
Цитата
cannot open source input file "uCGUI\Config\GUIConf.h": No such file or directory


Открываю хидеры и вижу там строки вроде этой:
Код
#include "uCGUI\Config\GUIConf.h"


Что-то не суразное)

Gui-библиотеки для других отладочных плат компиллируются нормально, там такой ерунды нет.

Вручную переделывать:
Код
#include "uCGUI\Config\GUIConf.h"
на
Код
#include "GUIConf.h"
?

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