This is the mail archive of the ecos-maintainers@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]

Re: posting requests for help


David Somerton wrote:
Hello,

  where i work eCos is used.
  there is now nobody left from the original people who chose this OS.
  we may not subscribe to mailing lists.
  i read the faq on sending to the list without subscribing, but could
not understand it at all.

It's quite simple - just send to the list, but warn people to include you in their replies (although you can also view the online web archives in case someone didn't).


  i only want to ask a question, why do you make it so difficult.
  not everybody is a ecos or linux genius.

I think thousands of subscribers and larger numbers of eCos users can testify to the fact you don't need to be a genius.


the question, in case you feel like posting it for me is

ASSERT FAIL: <19>serial.c[1128]serial_data_xmt_req() Attempting new
block transfer while another is running
ASSERT FAIL: <19>serial.c            [1128] serial_data_xmt_req()
Attempting new block transfer while another is running

this happens when enabling rts/cts handshaking.

  I have tried looking at the source for serial.c, but i cannot
comprehend it.
  It seems extremly complex for a serial driver.

It's a generic driver supporting a variety of hardware features, in a variety of ways. Bear in mind that if no-one is reporting the same problem as you, the chances are that your problem is not in generic code. It is probably in your underlying hardware driver.


It is worth noting that in your case, whoever wrote the underlying hardware driver chose to use block transfer mode, not the more normal character-by-character mode. That already makes it more complex than a standard serial driver. I think I could easily infer from the message that serial_data_xmt_req() has been called when another xmt block transfer is running. The underlying driver should be following every serial_data_xmt_req() call with serial_data_xmt_done(), but this time it is clearly doing serial_data_xmt_req() twice instead which is wrong, hence the assert.

Try setting breakpoints on serial_data_xmt_req, serial_data_xmt_done and cyg_assert_fail (to catch the state when the assert triggers) and analyse what you see, bearing in mind that it is the underlying driver that you really need to be debugging, not the generic serial.c stuff.

Jifl
--
--["No sense being pessimistic, it wouldn't work anyway"]-- Opinions==mine


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]