This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tue, Apr 07, 2009 at 02:58:44PM +0200, Robert Brusa wrote: > On Mon, 06 Apr 2009 23:39:24 +0200, Sergei Gavrikov > <sergei.gavrikov@gmail.com> wrote: > > ..<cut> > >>Robert, of course, the right way is to define own macro (= CDL rule) in > >>the plf's stuff. But, that's not possible without a tweaking plf's code. > >>I thought about a froud hack: to add something like the below in CFLAGS > >> > >> -D"HAL_IDLE_THREAD_ACTION(x)={}" > >> > >>Well, it's ugly, but, if you do not want to mess up 3.0 sources, it > >>would > >>be a way. > >> > >>Perhaps, eCos veterans know about another way. > >> > > > >It's just for reference how it was done for lpc2xxx variants: > >packages/hal/arm/lpc2xxx/var/current/include/var_arch.h:63 > > > >So, I can use > > > >cdl_option CYGHWR_HAL_ARM_LPC2XXX_IDLE_PWRSAVE { > > user_value 0 > >}; > > > >for my target to disable that "odd" mode. Certainly it can be disabled > >with `configtool' too. > > > >Sergei > > Sergei, I did it with brutal force: I modified the lines inside var_arch.h > in directory ecos/packages/hal/arm/at91/var/current/include such that the > macro > HAL_IDLE_THREAD_ACTION(_counter_) is no longer generated. Then I created a > new ecos and linked my little project with this new ecos. The results are > mixed: > a) As before, when switching power on with no JTAG debugger (BDI2000) > connected, the program launches and works fine. > > b) With the JTAG debugger connected, I am no longer in a position to > launch it with the BDI go 0 command (via telnet). No output at all. > > c) I can set breakpoints in cyg_user_start and the output of the > diag_printf statement in this routine appear - but > the output of the diag_printf routines in the thread created and > resumed from this reoutine do not appear - although I can catch > breakpoints in this thread. > > Not a very clear situation. Do you have a good idea? Thanks and regards > Robert Hi As I did promise I tried to reproduce your issue. My stuff was: eCos 3.0, OpenOCD (I built it this morning from SVN), parallel JTAG wiggler from Olimex, CPU: ARM7TDMI-S (NXP LPC2294), board: Olimex LPC-H2294 header board. I built eCos as I do it as well for tests using ecosconfig, template was default. Only 2 imports were applied: cdl_component CYG_HAL_STARTUP {user_value ROM}; cdl_option CYGHWR_HAL_ARM_LPC2XXX_IDLE_PWRSAVE {user_value 0}; I reset the board, ran OpenOCD (see screenlog.0.txt) and did load a built `twothreads' example. There is a full GDB session in the log. I could stop a run at the outputs and before a start of a kernel and then. All ouput will appear in minicom as I could expect. BTW, by default, printf uses hal_if_diag_write_char(). See the log. I could output and alone character and whole lines using breakpoints. ^C works as I could expect too. Yet another thing, if you could see, `serial' example uses printf(). BUT, $ arm-eabi-nm examples/serial | grep -E '(printf|putc|_diag)' 00001cf8 t _GLOBAL__I.10100_diag_write_char 00001d24 t _ZL16_diag_write_charcPPv 8100027c d _ZL5_putc 00001ec8 t _ZL8_vprintfPFvcPPvES0_PKcS_ 00005120 T cyg_hal_plf_serial_putc 00002a00 T diag_printf 00004eb8 T fputc 0000167c T hal_if_diag_init 000016bc T hal_if_diag_read_char 00001880 T hal_if_diag_write_char 00001244 t haldiag_putc 00004eb8 W putc 810002b8 D tty_io_diag 81003050 b tty_private_info_diag There is no printf! Using CLI tools (arm-eabi-gdb) I at once noticed that I cannot set a breakpoint on printf. And your IDE as I could see in your pastes quite eats mice's breakpoints. AFAIR, I saw there info threads info sharedlibs IDE shocks these requests the GDB for embedded. You set breakpoint, but, program run. And I thought, that you can try `nm' on that your ELF to check is there printf in text segment. Well, it's just a guss only. Certainly, when I ran `serial' I used stops on hal_if_diag_write_char(). So, what's difference in our environments a) different JTAGs b) CLI against IDE c) Linux against Cygwin d) different targets and what's the same: eCos 3.0 release. I have no more ideas. Sergei
Attachment:
screenlog.0.txt
Description: Text document
-- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |