Jump to content

dewees

Members
  • Posts

    6
  • Joined

  • Last visited

  1. Update and workaround: The thread in cleanUpDeadThreads() was not stack allocated; the pointer was being modified on the stack. I have removed the static declaration from the thread and threadQ type variables (in gos_x_threads.c) and this has made the problem go away. I'm not certain what causes this bug in Xilinx's cross compiler. @Joel Bodenmann and @inmarket thanks for helping me narrow it down. I appreciate your quick responses
  2. I stepped through and noticed that one of the times that cleanUpDeadThreads() is called (here), it is trying to free a thread that is stack allocated. I added a check in my free function to check if the pointer is within the heap or not; this hasn't actually fixed the problem I'm experiencing yet though. I will keep stepping through to figure out why.
  3. You're right about this. @Joel Bodenmann I added 2 more threads to that demo and it is still working no problem. I looked at my gfxconf.h and the lines under GTIMER were commented out: //#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY //#define GTIMER_THREAD_WORKAREA_SIZE 2048 I have added those to my config, cleaned and built, and unfortunately that did not fix the problem. It appears my scheduler is working fine; the problem really seems to be within gtimerStart().
  4. Okay, the gtimer demo (yes, @Joel Bodenmann you're right, I used my config instead of the demo one) didn't work, as suspected. In that case, I will do the three things previously suggested. I will create more threads in the first demo, I will use the configs provided in each of the demos, and I will look into a close, compatible CPU-specific scheduler. I should also mention that the infinite loop that is occurring on gtimerStart() is only after I have implemented my touchscreen driver. If I remove my driver, it goes back to working with the gtimerStart() function still implemented.
  5. Joel, Thank you very much for your response. I appreciate the quick reply. I ran the demo in demos/modules/gos/threads and if I comment out the gtimerStart() call inside _gmouseInitDriver(), the demo works. However, when I put that function call back in, it doesn't because it doesn't get past gfxInit() in the main. I am also going to try the demo in demos/modules/gtimer as well to see if that helps. In the meantime, any thoughts?
  6. I am currently trying to add uGfx to a standalone (bare metal) Zedboard project. Zedboard uses the Xilinx Zynq-7000 processor, and I have a framebuffer display plugged into it with a touchscreen controller. I am trying to add the touchscreen support, but my application seems to be failing once I get to the gtimerStart() function inside _gmouseInitDriver(), found in source here Basically this timer seems to infinitely loop and never appropriately exits. I'm hoping to get help and clarification on how to hookup a touchscreen driver without an OS, as I haven't encountered too many examples or documentation that helps. I will be happy to provide more details if needed. Thanks in advance for any help.
×
×
  • Create New...