Mercurial > ecos
view packages/services/curses/pdcurses/current/examples/README @ 2873:da0eeb594067
* ecos.db, services/curses/pdcurses/current/*: Initial check-in of
PDCurses port.
| author | jld |
|---|---|
| date | Sun, 10 May 2009 08:29:53 +0000 |
| parents | |
| children |
line wrap: on
line source
* PDCurses + eCos Application --------------------------- It is possible to run a curses program in a separate eCos thread. Look at the pdcecos_app.h, pdcecos_app.c, pdcecos_init.c, pdcecos_thread.c sources for details. As you can see you should put own curses code inside a pdcecos_main() function instead of traditional main() entry. In such a build you have to link your executable with a pdcecos_app.o object file, and a curses program must look as #include <curses.h> ... int pdcecos_main(int argc, char *argv[]) { initscr(); ... } The pdcecos_app.c has cyg_user_start() entry where a startup_thread() creates and resumes itself there. The startup_tread() creates and invokes a set of threads are defined in a __PDC_APP_TAB__. By default only alone thread is registered in the table, it is pdcecos_thread(), but you can expand the table. When the pdcecos_thread() is started, it invokes the pdcecos_main() function -- your curses program. The "PDCECOS" thread uses a separate stack as well, you can change its size by default is ( CYGNUM_HAL_STACK_SIZE_TYPICAL * 2 ). To build a PDCurses+eCos demo application, first generate a Make.params file using the build_Make.params script which is placed under the eCos `examples' directory and then just type 'make'. There is an example of running the pdcecos_app demo in GDB the below. As you can see the "PDCECOS" thread starts and invokes pdcecos_main() then. (gdb) break pdcecos_main Breakpoint 1 at 0x100111b: pdcecos_thread.c, line 93. (gdb) continue Starting program: pdcecos_app SYSTEM INITIALIZATION in progress data index = 4 Creating system threads Creating PDCECOS thread Starting threads Starting PDCECOS SYSTEM THREADS STARTED! Breakpoint 1, pdcecos_main (argc=0, argv=0x0) at pdcecos_thread.c:93 88 initscr(); Current language: auto; currently c (gdb) continue Then you should see a message Hello PDCurses+eCos World! in a terminal program (minicom, hyperterm, etc.). ------------------------------------------------------------------------
