Please do not reply to this email. Use the web interface provided at: http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001024
--- Comment #24 from Chris Holgate <[email protected]> 2010-10-17 16:06:37 BST --- (In reply to comment #23) > Chris, thank you for the double buffering fix. I am now able to receive all > characters sent from minicom, but the application locks up after a few > characters have been received (not always the same number of chars). The same > problem occurs with the "usbserial_echo" test in the USB serial function > package. I definitely have variable length bulk transfers disabled and the > usbserial_echo test uses a 4096 byte buffer. I've not been able to replicate that here. Loopback to minicom using the method you've previously described seems to work fine for me (for a few hundred characters at least). I couldn't get my Linux machine to correctly recognize the eCos serial loopback until I ditched my FTDI based USB/serial adapter for the Redboot connection - but once I reverted to a 'proper' serial port for Redboot things have been fine. The test code I used is the absolute minimum I could get away with (see below)... #include <cyg/hal/hal_arch.h> // CYGNUM_HAL_STACK_SIZE_TYPICAL #include <cyg/infra/cyg_type.h> #include <cyg/infra/cyg_ass.h> #include <cyg/infra/diag.h> #include <cyg/kernel/kapi.h> #include <cyg/io/usb/usbs_serial.h> //----------------------------------------------------------------------------- // Thread primitives used for eCos application startup. static cyg_uint8 stack [CYGNUM_HAL_STACK_SIZE_TYPICAL] __attribute__((aligned(8))); static cyg_thread thread_data; static cyg_handle_t thread_handle; //----------------------------------------------------------------------------- // Main thread entry point. extern "C" void mainThreadStartup (void) { int rxBytes, txBytes, i; char rxBuf[256]; // Set up the USB serial interface. diag_printf("Setting up the USB serial interface.\n"); usbs_serial_start(); while(1) { rxBytes = usbs_serial_rx(&usbs_ser0, rxBuf, 256); for (i = 0; i < rxBytes; i++) diag_printf("%c", rxBuf[i]); txBytes = usbs_serial_tx(&usbs_ser0, rxBuf, rxBytes); } } //----------------------------------------------------------------------------- // Startup function called in the context of the eCos idle thread once all the // system startup is complete. extern "C" void cyg_user_start (void) { cyg_thread_create( 10, // Arbitrary priority (cyg_thread_entry_t*) mainThreadStartup, // Thread entry point 0, // (char*) "app_thread", // Thread name &stack[0], // Stack CYGNUM_HAL_STACK_SIZE_TYPICAL, // Stack size &thread_handle, // Thread handle &thread_data // Thread data structure ); cyg_thread_resume(thread_handle); cyg_scheduler_start(); } //----------------------------------------------------------------------------- -- Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
