<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 6, 2017 at 7:53 AM, Christian Mauderer <span dir="ltr"><<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Yie,<br>
<br>
64k seems very few RAM.<br>
<br>
Maybe you are aware that there are currently two versions of the network<br>
stack: One (very old) fork of the FreeBSD stack that is integrated into<br>
RTEMS and a mostly up to date fork in libbsd.<br>
<br>
I'm really not sure about the old network stack but then new one needs<br>
at least a few megabytes of RAM.<br></blockquote><div><br></div><div>The legacy stack originally ran on a target with 1MB RAM. It can be</div><div>pretty lean depending on the amount of buffers you want/need. </div><div><br></div><div>LWIP is another option. I don't know the memory footprint of it.</div><div><br></div><div>In all cases, there is the driver issues.</div><div><br></div><div>64k is definitely too small for the BSD based stacks. LWIP might</div><div>work if you have enough Flash for code. If you only have 64k code</div><div>and data space, it is going to be tough.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The allocation that went wrong tries to allocate about 130kByte of RAM.<br>
(cpukit/libnetworking/rtems/<wbr>rtems_glue.c line 199). And it's one that is<br>
called quite early in the initialization.<br>
<br>
Are you fixed to that emulated chip (due to some hardware) or did you<br>
just pick some random BSP? In the later case, I would suggest to pick<br>
some other (bigger) BSP.<br>
<br>
Kind regards<br>
<span class="HOEnZb"><font color="#888888"><br>
Christian<br>
</font></span><span class="im HOEnZb"><br>
<br>
Am 06.10.2017 um 14:33 schrieb Hui Yie Teh:<br>
> Hi Christian,<br>
><br>
> No, it's not an RTEMS based server. I have a simple server running on<br>
> python.<br>
><br>
> I am emulating the LM3S6965 ARM board on Qemu, and I think it has 64kB<br>
> of RAM?<br>
><br>
> On 6 October 2017 at 19:52, Christian Mauderer<br>
> <<a href="mailto:christian.mauderer@embedded-brains.de">christian.mauderer@embedded-<wbr>brains.de</a><br>
</span><span class="im HOEnZb">> <mailto:<a href="mailto:christian.mauderer@embedded-brains.de">christian.mauderer@<wbr>embedded-brains.de</a>>> wrote:<br>
><br>
><br>
>     Am 05.10.2017 um 22:44 schrieb Hui Yie Teh:<br>
>     > I'm trying to initialize bsdnetwork using<br>
>     > 'rtems_bsdnet_initialize_<wbr>network()' as in the mghttpd example but it<br>
>     > doesn't work. <br>
>     ><br>
>     > It is giving me an error "Can't get network cluster memory". <br>
>     ><br>
>     > Any help would be much appreciated. <br>
>     ><br>
>     > Thanks.<br>
>     ><br>
>     > On 6 October 2017 at 08:46, Hui Yie Teh <<a href="mailto:hteh703@aucklanduni.ac.nz">hteh703@aucklanduni.ac.nz</a> <mailto:<a href="mailto:hteh703@aucklanduni.ac.nz">hteh703@aucklanduni.<wbr>ac.nz</a>><br>
</span><span class="im HOEnZb">>     > <mailto:<a href="mailto:hteh703@aucklanduni.ac.nz">hteh703@aucklanduni.<wbr>ac.nz</a> <mailto:<a href="mailto:hteh703@aucklanduni.ac.nz">hteh703@aucklanduni.<wbr>ac.nz</a>>>> wrote:<br>
>     ><br>
>     >     Hi Christian,<br>
>     ><br>
>     >     Thank you for the reply! <br>
>     ><br>
>     >     My app will be doing some simple HTTP, with GET and POST requests<br>
>     >     that has a text response body, e.g. "Received". I think following<br>
>     >     the mghttpd test will suffice.<br>
>     ><br>
>     >     However, I'm currently looking at the code for the mghttpd test and<br>
>     >     I was wondering if there is a way I can run it or get a non-test<br>
>     >     version of it? I can't really tell what I need or what the code does<br>
>     >     without running it.<br>
>     ><br>
>     >     Cheers.<br>
>     ><br>
>     >     On 6 October 2017 at 07:47, Christian Mauderer <<a href="mailto:list@c-mauderer.de">list@c-mauderer.de</a> <mailto:<a href="mailto:list@c-mauderer.de">list@c-mauderer.de</a>><br>
</span><div class="HOEnZb"><div class="h5">>     >     <mailto:<a href="mailto:list@c-mauderer.de">list@c-mauderer.de</a> <mailto:<a href="mailto:list@c-mauderer.de">list@c-mauderer.de</a>>>> wrote:<br>
>     ><br>
>     >         Am 05.10.2017 um 17:52 schrieb Hui Yie Teh:<br>
>     >         > Hi,<br>
>     >         ><br>
>     >         > I am trying to build a HTTP client using RTEMS. Is there any<br>
>     >         tutorials<br>
>     >         > that I can follow? I already have a server running, and<br>
>     I just<br>
>     >         need to<br>
>     >         > send some GET and POST requests.<br>
>     >         ><br>
>     >         > I am new to RTEMS and embedded programming in general. Any<br>
>     >         help is much<br>
>     >         > appreciated.<br>
>     >         ><br>
>     >         > Cheers,<br>
>     >         > Yie<br>
>     >         ><br>
>     ><br>
>     >         Hello Yie,<br>
>     ><br>
>     >         it depends a little on your application.<br>
>     ><br>
>     >         If you just want to learn a little about the HTTP protocol and<br>
>     >         only want<br>
>     >         to try some requests, you can just use a raw socket. The HTTP<br>
>     >         basics are<br>
>     >         really quite simple if you don't want to use things like<br>
>     >         compression or<br>
>     >         different MIME types. Writing a simple request for some<br>
>     simple html<br>
>     >         document is quite easy. Something like that is done in the<br>
>     test<br>
>     >         for the<br>
>     >         mghttpd in RTEMS:<br>
>     ><br>
>     >            <br>
>     >       <br>
>      <a href="https://git.rtems.org/rtems/tree/testsuites/libtests/mghttpd01" rel="noreferrer" target="_blank">https://git.rtems.org/rtems/<wbr>tree/testsuites/libtests/<wbr>mghttpd01</a><br>
>     <<a href="https://git.rtems.org/rtems/tree/testsuites/libtests/mghttpd01" rel="noreferrer" target="_blank">https://git.rtems.org/rtems/<wbr>tree/testsuites/libtests/<wbr>mghttpd01</a>><br>
>     >       <br>
>      <<a href="https://git.rtems.org/rtems/tree/testsuites/libtests/mghttpd01" rel="noreferrer" target="_blank">https://git.rtems.org/rtems/<wbr>tree/testsuites/libtests/<wbr>mghttpd01</a><br>
>     <<a href="https://git.rtems.org/rtems/tree/testsuites/libtests/mghttpd01" rel="noreferrer" target="_blank">https://git.rtems.org/rtems/<wbr>tree/testsuites/libtests/<wbr>mghttpd01</a>>><br>
>     ><br>
>     >         Note that there are most likely a lot of error cases that are<br>
>     >         not caught<br>
>     >         in that test (like unexpected HTTP responses).<br>
>     ><br>
>     >         If you need your client for some more professional<br>
>     application or<br>
>     >         something that should be more robust, I would suggest to<br>
>     use some<br>
>     >         library that does most of the low level handling. I'm not<br>
>     aware<br>
>     >         of one<br>
>     >         integrated into RTEMS but it shouldn't be hard to find one<br>
>     that<br>
>     >         works.<br>
>     ><br>
>     >         I think that I have seen some client functions in civetweb<br>
>     (still<br>
>     >         MIT-licensed fork of mongoose httpd which has been forked off<br>
>     >         before the<br>
>     >         license change in mongoose). From my experience, civetweb<br>
>     needs only<br>
>     >         very few modifications to work with RTEMS.<br>
>     ><br>
>     >         Most likely you can also (with some more effort) compile some<br>
>     >         bigger C<br>
>     >         or C++ libraries like libcurl. But I haven't tried that<br>
>     yet. By<br>
>     >         the way:<br>
>     >         there is also a large list of http client libraries on the<br>
>     libcurl<br>
>     >         Homepage: <a href="https://curl.haxx.se/libcurl/competitors.html" rel="noreferrer" target="_blank">https://curl.haxx.se/libcurl/<wbr>competitors.html</a><br>
>     <<a href="https://curl.haxx.se/libcurl/competitors.html" rel="noreferrer" target="_blank">https://curl.haxx.se/libcurl/<wbr>competitors.html</a>><br>
>     >         <<a href="https://curl.haxx.se/libcurl/competitors.html" rel="noreferrer" target="_blank">https://curl.haxx.se/<wbr>libcurl/competitors.html</a><br>
>     <<a href="https://curl.haxx.se/libcurl/competitors.html" rel="noreferrer" target="_blank">https://curl.haxx.se/libcurl/<wbr>competitors.html</a>>><br>
>     ><br>
>     >         Regards<br>
>     ><br>
>     >         Christian<br>
>     ><br>
><br>
>     Hello Yie,<br>
><br>
>     you said in your initial mail that you already have a server running. Is<br>
>     that an RTEMS based server? In that case I would suggest to just use the<br>
>     initialization from that one.<br>
><br>
>     The "Can't get network cluster memory" is printed if a malloc for a<br>
>     cluster of mbufs fails in the initialization. A possible reason for that<br>
>     is that there isn't enough memory. On what platform are you working? How<br>
>     many RAM do you have?<br>
><br>
>     Regards<br>
><br>
>     Christian<br>
--<br>
------------------------------<wbr>--------------<br>
embedded brains GmbH<br>
Christian Mauderer<br>
Dornierstr. 4<br>
D-82178 Puchheim<br>
Germany<br>
email: <a href="mailto:christian.mauderer@embedded-brains.de">christian.mauderer@embedded-<wbr>brains.de</a><br>
Phone: <a href="tel:%2B49-89-18%2094%20741%20-%2018" value="+4989189474118">+49-89-18 94 741 - 18</a><br>
Fax:   <a href="tel:%2B49-89-18%2094%20741%20-%2008" value="+4989189474108">+49-89-18 94 741 - 08</a><br>
PGP: Public key available on request.<br>
<br>
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.<br>
</div></div><div class="HOEnZb"><div class="h5">______________________________<wbr>_________________<br>
users mailing list<br>
<a href="mailto:users@rtems.org">users@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/users</a></div></div></blockquote></div><br></div></div>