|
|
  |
Создание lib-библиотеки uC/GUI под RealView |
|
|
|
Oct 8 2007, 08:31
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Выложил make-файлы для сборки lib-библиотеки uc/GUI с помощью компилятора RealView, возможно кому-то пригодится. http://depositfiles.com/files/1992490
|
|
|
|
|
Oct 9 2007, 08:38
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Создал проект в 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 ... Проблема в том, что мне совсем не понятно, с чем связаны эти ошибки и как с ними бороться.
|
|
|
|
|
Oct 9 2007, 10:49
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Цитата(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. При компиляции посыпались всё теже ошибки. Непонятно.
|
|
|
|
|
Oct 9 2007, 14:52
|
Гуру
     
Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493

|
Цитата(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 ? По мне так если сурцы ее не править - то нафик вообще нужна. Время компиляции не меняется.. Короче зачем ? Чтобы враг не догадался ?
|
|
|
|
|
Oct 10 2007, 04:38
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Цитата(DASM @ Oct 9 2007, 18:52)  а откуда непреодолимое желания загнать ucos в lib ? По мне так если сурцы ее не править - то нафик вообще нужна. Время компиляции не меняется.. Короче зачем ? Чтобы враг не догадался? Желание не столько чтобы загнать в lib, сколько прикрутить её к ОС. С добавлением исходников к проекту те же самые ошибки. У меня опыта подобной работы нет, поэтому не понятно что менять нужно, что за функции периписывать и как, а статей на эту тему не видел.
|
|
|
|
|
Oct 10 2007, 07:52
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Цитата(DASM @ Oct 10 2007, 09:59)  Да просто прикрути пустышки этих ф-ций куда нибудь - делов то Gui`шные ф-ции описал, но нужен ещё драйвер дисплея. Может кто-нибуть выложить драйвер LCDPage1bpp или аналогичный для KS0107?
|
|
|
|
|
Oct 11 2007, 06:46
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Цитата(sensor_ua @ Oct 11 2007, 08:57)  GLCD не подходит? Нужен под uc/GUI, нашёл у китайцев LCDPage1bpp.с для uc/GUI 3.32a, подключил к проекту, указал идентификатор контроллера LCD_CONTROLLER = 1502, но линкер по прежнему не находит описаний некоторых ф-ций дисплея, хотя они имеются в LCDPage1bpp.с
|
|
|
|
|
Oct 11 2007, 08:18
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Взглянул на код драйвера 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, наверняка имеется на здешнем фтп.
Сообщение отредактировал manifest - Oct 11 2007, 07:51
|
|
|
|
|
Oct 16 2007, 08:56
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 16-03-05
Пользователь №: 3 407

|
Цитата(manifest @ Oct 11 2007, 12:18)  ...Компилятор файл подхватил, ругнулся на отсутствие описания ф-ций: LCD_READ_A0_0 LCD_READ_A0_1 ... Посмотри какие макросы должны быть определены для доступа к железу здесь http://www.micrium.com/products/gui/lcdpage1bpp.html
|
|
|
|
|
Oct 19 2007, 04:31
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 14-08-07
Пользователь №: 29 778

|
Для того чтобы собрать и запустить 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];
Сообщение отредактировал manifest - Oct 19 2007, 04:32
|
|
|
|
|
Nov 4 2012, 21:52
|
Частый гость
 
Группа: Участник
Сообщений: 100
Регистрация: 19-09-12
Пользователь №: 73 602

|
Пытаюсь скомпилировать проект "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" ? Для чего вообще так написали?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|