Questions for Sprite_tm
Posted: Sun May 15, 2016 12:04 pm
First - thanks for the RTOS implementation.
I'm new to the ESP8266 but not new to embedded.
I'm using the ESP as a wireless slave micro communicating with a master (ARM).
I never need a Web Server until now -- spent several days trying to make one myself but was unhappy with my implementation.
I searched for Web Server code examples but found everything was based on the no-os SDK and I wanted RTOS.
I then found yours -- thanks again.
By reading many of the posts in this forum -- your web server started out as a no-os implementation and then you converted it to RTOS.
My questions are all related to your RTOS implementation.
Q1: When you create the web server's task you ask for a fairly large stack. In looking over your code, you make some large local arrays which I suspect leads to the large stack. Was there a reason you stayed with local array vs acquiring heap memory?
Q2: Do you see a downside to not using local and acquiring all the large arrays from the heap?
I'm use to monitoring used stack space during development to properly set the stack size for release ... but it appears that can't be done too easy in the ESP.
Q3: Does the ESP network stack hold incoming messages waiting for an active socket receive to be issued or are they discarded if no active receive is in place?
Q4: If the answer to Q3 is they are discarded, then do you see a benefit to creating a separate task for each connection thereby allowing multiple receives to be active at one time?
Q4: Do you know if the ESP's FreeRtos implementation for multiple tasks of the same priority is self-yielding or are they time-sliced? If time-sliced - is it 10msec?
Thanks in advance for your reply.
I'm new to the ESP8266 but not new to embedded.
I'm using the ESP as a wireless slave micro communicating with a master (ARM).
I never need a Web Server until now -- spent several days trying to make one myself but was unhappy with my implementation.
I searched for Web Server code examples but found everything was based on the no-os SDK and I wanted RTOS.
I then found yours -- thanks again.
By reading many of the posts in this forum -- your web server started out as a no-os implementation and then you converted it to RTOS.
My questions are all related to your RTOS implementation.
Q1: When you create the web server's task you ask for a fairly large stack. In looking over your code, you make some large local arrays which I suspect leads to the large stack. Was there a reason you stayed with local array vs acquiring heap memory?
Q2: Do you see a downside to not using local and acquiring all the large arrays from the heap?
I'm use to monitoring used stack space during development to properly set the stack size for release ... but it appears that can't be done too easy in the ESP.
Q3: Does the ESP network stack hold incoming messages waiting for an active socket receive to be issued or are they discarded if no active receive is in place?
Q4: If the answer to Q3 is they are discarded, then do you see a benefit to creating a separate task for each connection thereby allowing multiple receives to be active at one time?
Q4: Do you know if the ESP's FreeRtos implementation for multiple tasks of the same priority is self-yielding or are they time-sliced? If time-sliced - is it 10msec?
Thanks in advance for your reply.