This is the mail archive of the ecos-discuss@sources.redhat.com 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]

ecos additions


Hi,

I've been working with ecos for about 2 years now and produced some stuff that may be useful to put into ecos.
I am using the ATMEL AT91FR4062 (256K RAM/2MB FLASH, no spi 2 serial ports) at the moment. As this is an in-house development I am happy to release the code.


These are:
conexant modem driver - basically the i386 serial driver reworked.
AT command driver - looks after the speaking to the modem for you. Uses cyg_io_read/write
bit bashed spi driver - done before and about the same time as the ecos driver and uses a similar format.
ring buffer - as opposed to a FIFO. Can search buffer with strstr like command without consuming contents.
M41ST91 RTC/super driver.
ARM's debug communications channel (JTAG DCC) driver for diag_printf -- could do without this one.


We have also done some work with a uart in vhdl and the driver to connect ecos to CPLD.
Have a SDI-12 sensor protocol driver (Never heard of it... not surprised).


While doing the serial modem stuff we found a few oddities.
1. The IRQ is held off until DSR fires (which could be 10mS later). I think this may cause problems at high serial speed as some post have suggested. This is in the ARM serial driver for EB40A. Not sure of the others. It would be better if the IRQ hands off the RX data to a ring buffer, then signal for a DSR. Further IRQ's also put data in the ring buffer. When the DSR fires it will signal the app that new data is present, etc. Rather than at present where the IRQ fires and ignores new rx data until DSR has finished. A ring buffer makes better use of memory resource than a fifo.


2. var_io.h in at91/var is wrong and shows:
#define AT91_US_CSR_TIMEOUT 0x80 // Timeout
which should be
#define AT91_US_CSR_TIMEOUT 0x100 // Timeout
and has several missing defines
#define AT91_US_CSR_PARE  0x80 // Parity error
//This one is useful - so that you know when to change RTS
#define AT91_US_CSR_TXEMPTY  0x200 // TX empty

and these start and stop a break (which I need to do)
#define AT91_US_CR_STTBK   (1<<9)
#define AT91_US_CR_STPBK   (1<<10)

Regards,
Keith
E-Lands Communications Ltd, NZ

P.S. My aim is to help those currently using small 8 bit CPU to move to 32 bit ARM. So I will always be dealing with small footprint stuff. My app and ecos currently have a footprint of 200K. (using ARM thumb). Mind you an early 8 bit ('c') version without os still took 128K.


-- 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]