In my application using 4.11 I’ve started encountering a CYG_ASSERT() 
“Unexpected rx packet” assertion.  I’m not sure what I’ve changed to cause it, 
or if it is an issue introduced by 4.11.  I’ve seen it four times now, three 
times before any software change and once after the change described below, and 
what it does is to make the system totally unusable through the serial port 
console or network.

The CYG_ASSERT() macro in that driver boils down to "while (1) 
printf(“assertion_message”);”, and that then requires manual intervention to 
push the hardware reset button to get the application started again.  The 
watchdog is being triggered by the high-priority control loop that continues to 
run, maybe a defect in my code.

I changed this CYG_ASSERT() to instead print the warning once and continue on 
to free the resource that it’s complaining about.  The fourth time I saw this 
issue is after this change, and the application printed the message once, and 
everything then continued to work without any apparent issue.  It’s still up 
and running a day later though the issue hasn’t happened again.  It could be 
that my hack is leaking some kind of resource that will hurt in the long run.

A couple of questions / observations:

- That CYG_ASSERT must be changed to do something more reasonable, in most 
situations a network driver issue shouldn’t just hang up the system.  
Recommendations?

- Has anyone seen this?  I’m not sure how many platforms are using SMC91111 
other than Phytec MPC5554 and a Gaisler variant.  If anyone is familiar with 
that chip I’d really appreciate speculation as to what situation triggers this.

Peter
-----------------
Peter Dufault
HD Associates, Inc.      Software and System Engineering

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to