artem_dmitriev Posted June 13, 2015 Report Share Posted June 13, 2015 Hello. I am trying to use ugfx with ecos os on custom board based on stm32f429 controller . I've tried to run examples from GDISP directory,and all works fine. But when i try to run examples from GWIN an exception happends. I use my own touch driver, but the problem is not in it. Did anybody try to use ecos with ugfx? Link to comment Share on other sites More sharing options...
inmarket Posted June 13, 2015 Report Share Posted June 13, 2015 Yes, I have run ugfx with ecos although it was a while ago. Can you please give us more detail on the error you are getting and we will help solving it. Link to comment Share on other sites More sharing options...
artem_dmitriev Posted June 15, 2015 Author Report Share Posted June 15, 2015 For example, i am trying to run GWIN/slider example. Here is the code from main.c #include "gfx.h"static GListener gl;static GHandle ghSlider1, ghSlider2, ghConsole;static void createWidgets(void) { GWidgetInit wi; // Apply some default values for GWIN gwinWidgetClearInit(&wi); wi.g.show = TRUE; // create Slider1 wi.g.y = 10; wi.g.x = 10; wi.g.width = gdispGetWidth()-20; wi.g.height = 20; wi.text = "S1"; ghSlider1 = gwinSliderCreate(0, &wi); // create Slider2 wi.g.y = 40; wi.g.x = 10; wi.g.width = 20; wi.g.height = gdispGetHeight() - 50; wi.text = "S2"; ghSlider2 = gwinSliderCreate(0, &wi); // Set slider 2 to return extended events gwinSliderSendExtendedEvents(ghSlider2, TRUE); // Some options to try //gwinSliderSetRange(ghSlider1, 0, 70000); //gwinSliderSetRange(ghSlider2, -4, 4); //gwinSliderSetRange(ghSlider1, 4, -4); // Console to display slider events wi.g.y = 40; wi.g.x = 40; wi.g.width = gdispGetWidth()-50; wi.g.height = gdispGetHeight()-50; ghConsole = gwinConsoleCreate(0, &wi.g);}void cyg_user_start(void){ GEventGWinSlider * pe; const char * sAction; // Initialize the display gfxInit(); // Set the widget defaults gwinSetDefaultFont(gdispOpenFont("UI2")); gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); gdispClear(White); // create the widget createWidgets(); gwinSetColor(ghConsole, Green); gwinSetBgColor(ghConsole, White); gwinClear(ghConsole); // We want to listen for widget events geventListenerInit(&gl); gwinAttachListener(&gl); while(1) { // Get an Event (assume it is a slider event) pe = (GEventGWinSlider *)geventEventWait(&gl, TIME_INFINITE); switch(pe->type) { case GEVENT_GWIN_SLIDER: switch(pe->action) { case GSLIDER_EVENT_SET: sAction = "SET"; break; case GSLIDER_EVENT_CANCEL: sAction = "CANCEL"; break; case GSLIDER_EVENT_MOVE: sAction = "MOVE"; break; case GSLIDER_EVENT_START: sAction = "START"; break; default: sAction = "????"; break; } gwinPrintf(ghConsole, "Slider %s = %d %s\n", gwinGetText(pe->gwin), pe->position, sAction); break; default: // Oops - not a slider event. break; } }}The program can't reach "switch(pe->type)" line. When i suspend debug session, i see, that an exception occured. For example, the program reach "cyg_posix_exception_handler" with exception number 3. I also noticed that exception occured on line 109 in file packages/kernel/current/src/sync/cnt_sem.cxx // Allow other threads to run Cyg_Scheduler::reschedule(); Maybe i should run ugfx from thread? Link to comment Share on other sites More sharing options...
inmarket Posted June 15, 2015 Report Share Posted June 15, 2015 I didn't have that problem when I was tinkering with it but that was a while ago now.It looks like the ecos scheduler has not been initialised or something similar. Perhaps you can provide more back trace information so we can see the call hierarchy at the point of the exception. Link to comment Share on other sites More sharing options...
artem_dmitriev Posted June 16, 2015 Author Report Share Posted June 16, 2015 Is it necessary to call cyg_scheduler_start before gfxInit ? I call gfxInit in cyg_user_start,but cyg_sheduler_start is called after that now. voidcyg_start( void ){ CYG_REPORT_FUNCTION(); CYG_REPORT_FUNCARGVOID(); cyg_prestart(); cyg_package_start(); cyg_user_start();#ifdef CYGPKG_KERNEL Cyg_Scheduler::start();#endif CYG_REPORT_RETURN();} // cyg_start()When i try to call cyg_scheduler_start before gfxInit, the program doesn't reach gfxInit(). Link to comment Share on other sites More sharing options...
inmarket Posted June 16, 2015 Report Share Posted June 16, 2015 I am hazy on the ecos details, it was a quite a while ago.The scheduler definitely needs to be started first before calling gfxinit. The details on how to do that I have forgotten.Essentially ugfx runs as a user thread once the scheduler is started as ugfx needs the multi-threading capabilities of ecos which are not available until the scheduler is started. Link to comment Share on other sites More sharing options...
artem_dmitriev Posted June 17, 2015 Author Report Share Posted June 17, 2015 I use arm-eabi-gcc for compile. Is it ok? Is there a difference between arm-eabi-gcc and arm-none-eabi-gcc? Link to comment Share on other sites More sharing options...
inmarket Posted June 17, 2015 Report Share Posted June 17, 2015 There is a difference between the two. From memory it is something to do with the runtime environment. A quick Google search should show you the difference. I do know however that the arm "none" compiler is the one you should be using for any embedded work. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now