Re: RTEMS+LWIP for LPC1768 BSP

2014-11-07 Thread Chris Johns

On 8/11/2014 12:50 am, Marcos Díaz wrote:



On Thu, Nov 6, 2014 at 6:26 PM, Joel Sherrill mailto:joel.sherr...@oarcorp.com>> wrote:


On 11/4/2014 3:01 PM, Marcos Díaz wrote:

Hi!
 We are currently using a LWIP implementation on the Beagle Bone
Black bsp, recently uploaded by Ben Gras.
We developed this port based on ethernet and lwip drivers from
StarterWare drivers of Texas Instrument.
We took this port, that was intended for baremetal use and added a
posix implementation, as Federico did for the semaphores, messages
and threads to use inside LWIP and the driver, and updated LWIP
version to the current working branch.
We also modified the device driver in order to support threads in
charge of managing the input and output of the device.
The license for those drivers is BSD and copied from the LWIP's
BSD license.

Now we are using this port as an application, but we wanted to
have ideas of how we can put LWIP inside RTEMS.
I'm thinking of many things, as:
 initialization of the device

I assume it is just a subroutine call to LWIP and the application would
make it at the appropriate time.  This is like the current IPV4 stack.

The new IPV4/IPV6 stack has a slightly different startup mechanism
and can use BSD type commands like ifconfig and route to configure it.

configuration of lwip options and ip address options

The old and new stacks already do this differently. I suspect that
initializing the selected stack in a uniform way isn't as critical
as not having N versions of services like httpd, telnetd, etc.

In our case, as an example, we have two boards with a port to lwip: the
beagle bone black and the lpc1768.
The first one has enough resources to enable a big memory pool and all
the services of the stack, but on the second one, you cannot have all
that you want because of its limited resources. I'm thinking on per BSP
lwip options files or something like that.



use of socket api and integrating it to the libraries used in RTEMS.


Is the code posted somewhere? How much has been submitted
upstream to LWIP?


We haven't submitted this port to lwip yet, we want to make some more
testing.



It might pay to give the maintainers a peek so they know what is coming.



With the old IPV4 stack, new IPV4/IPV6 stack, and LWIP stack
all available in parallel, it may make sense to NOT merge
LWIP directly but consider networking as an add-on package.

Assuming we break the old stack out of the main source tree
into an independent package, then you would build RTEMS,
a networking kit, etc. The RSB's notion of packages for RTEMS
makes this pretty attractive.

where can I take a look of examples of RSB packages?


I will outline the process using the libjpeg library Joel recently added 
support for. The top user level is the libjpeg build set file for RTEMS 
4.11. The file is 'rtems/config/4.11/graphics/libjpeg.bset'. This file 
includes the version specific configuration file for building libjpeg 
called 'rtems/config/graphics/libjpeg-9a-1.cfg'. The configuration file 
defines the version number and the hash for the source plus anything 
else specific to the build for RTEMS and then it includes the generic 
build recipe 'source-builder/config/libjpeg-1.cfg'. This configuration 
is in the common build recipe directory and could be used by a bare 
configuration for an elf only target such as arm-elf. The recipe follows 
the standard for these files. I suggest you have a look at a few to see 
how these work. There is documentation as well in the doc directory.



So, the Idea is basically to submit the stack as an extern application,
am I correct?


Not a static library your application links too. The process may require 
a number of libraries to come together to work. I would have LWIP built 
to a library without any other other code.



How we will manage that there is common code (the lwip stack) and bsp
specific code (initialization and low level drivers).


I do not know how LWIP manages the BSP and driver specific code. If they 
cannot be not placed in their code base we will need to create something 
to handle this. We would need to build a library of the code against the 
LWIP library and the user would have 2 static libraries to link to, eg 
liblwip.a and liblwipbsp.a.


The examples-v2 has waf support that lets you do specific things for a 
BSP. You could detect the specific BSP or family of BSPs and then build 
the required drivers. The waf support uses the RTEMS waf support and 
this knows about archs and bsps.


The RBS build sets would glue all this together. In this case the build 
set would build the LWIP package and the LWIPbsp package. The 
4.11/rtems-arm etc build set files show how packages are combined to 
create a single package. If you take the 4.11/rtems-arm build set you 
will see devel/expat-2.1.0-1 package. It is a library that is built and 
the

Re: rtems-tools: Fix libpath failed for rtems-ld

2014-11-07 Thread Chris Johns


On 8/11/2014 1:39 pm, Peng Fan wrote:


we should not clear input parameter 'se' in rld::split, otherwise paths
passed using '--lib-path' to rtems-ld will be cleared if standlibs are used.



Thanks for this. I also have a patch for this in my repo. I will push it 
once git has been relocated and writes are enabled again.


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


rtems-tools: Fix libpath failed for rtems-ld

2014-11-07 Thread Peng Fan
Hi,

we should not clear input parameter 'se' in rld::split, otherwise paths
passed using '--lib-path' to rtems-ld will be cleared if standlibs are used.

Regards,
Peng.


0001-Not-clear-input-parameter-se-in-rld-split.patch
Description: Binary data
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: RTEMS+LWIP for LPC1768 BSP

2014-11-07 Thread Marcos Díaz
On Thu, Nov 6, 2014 at 6:26 PM, Joel Sherrill 
wrote:

>
> On 11/4/2014 3:01 PM, Marcos Díaz wrote:
>
> Hi!
>  We are currently using a LWIP implementation on the Beagle Bone Black
> bsp, recently uploaded by Ben Gras.
> We developed this port based on ethernet and lwip drivers from StarterWare
> drivers of Texas Instrument.
> We took this port, that was intended for baremetal use and added a posix
> implementation, as Federico did for the semaphores, messages and threads to
> use inside LWIP and the driver, and updated LWIP version to the current
> working branch.
> We also modified the device driver in order to support threads in charge
> of managing the input and output of the device.
> The license for those drivers is BSD and copied from the LWIP's BSD
> license.
>
>  Now we are using this port as an application, but we wanted to have
> ideas of how we can put LWIP inside RTEMS.
> I'm thinking of many things, as:
>  initialization of the device
>
> I assume it is just a subroutine call to LWIP and the application would
> make it at the appropriate time.  This is like the current IPV4 stack.
>
> The new IPV4/IPV6 stack has a slightly different startup mechanism
> and can use BSD type commands like ifconfig and route to configure it.
>
>  configuration of lwip options and ip address options
>
> The old and new stacks already do this differently. I suspect that
> initializing the selected stack in a uniform way isn't as critical
> as not having N versions of services like httpd, telnetd, etc.
>
In our case, as an example, we have two boards with a port to lwip: the
beagle bone black and the lpc1768.
The first one has enough resources to enable a big memory pool and all the
services of the stack, but on the second one, you cannot have all that you
want because of its limited resources. I'm thinking on per BSP lwip options
files or something like that.

>
>


>
>  use of socket api and integrating it to the libraries used in RTEMS.
>
>   Is the code posted somewhere? How much has been submitted
> upstream to LWIP?
>

We haven't submitted this port to lwip yet, we want to make some more
testing.


>
> With the old IPV4 stack, new IPV4/IPV6 stack, and LWIP stack
> all available in parallel, it may make sense to NOT merge
> LWIP directly but consider networking as an add-on package.
>
> Assuming we break the old stack out of the main source tree
> into an independent package, then you would build RTEMS,
> a networking kit, etc. The RSB's notion of packages for RTEMS
> makes this pretty attractive.
>
where can I take a look of examples of RSB packages?

So, the Idea is basically to submit the stack as an extern application, am
I correct?
How we will manage that there is common code (the lwip stack) and bsp
specific code (initialization and low level drivers).

>
>  So, we want to get some ideas as when and where we can set this
> configurations and functions inside RTEMS.
> Thanks, and feel free to ask any questions about the work we did.
>
> On Thu, Aug 28, 2014 at 2:27 PM, Federico Casares <
> federico.casa...@tallertechnologies.com> wrote:
>
>> Hi,
>>
>>  On Tue, Aug 26, 2014 at 3:46 PM, Joel Sherrill <
>> joel.sherr...@oarcorp.com> wrote:
>>
>>>  First. Thanks for the work and taking the time and effort to
>>> submit it.
>>>
>>> Specifics below, but the general answer is to submit all RTEMS
>>> changes as reviewable patches to devel@rtems.org. We can
>>> then review them and get them merged. This will leave us
>>> with just the LWIP changes.
>>>
>>> Then we can review those and begin to work with that community
>>> to get them merged.
>>>
>>>
>>>
>>> On 8/26/2014 6:22 AM, Federico Casares wrote:
>>>
>>> Hi,
>>>
>>> In the past weeks we were working on porting the last LWIP version to
>>> RTEMS for
>>> the LPC1768 microcontroller. Our main goal was to accomplish this with
>>> the
>>> minimum number of changes for both projects. Fortunately, the result was
>>> positive.
>>>
>>> Now, we are capable of providing to the community with this new version
>>> of the
>>> RTEMS+LWIP port. In details:
>>>
>>> - RTEMS: last git revision = baa3c91ecb8a3b48ef387b938fcdb6
>>> e60b5bdc8a
>>> - LWIP: last git revision = 63038e03055183e3bc043711ada1de3bb907e989
>>> - LPC1768: based on MBED driver =
>>> https://github.com/mbedmicro/mbed/tree/master/libraries/net/eth/lwip-eth/arch/TARGET_NXP
>>>
>>>
>>> The list of changes follows:
>>>
>>> - RTEMS OS: No changes were needed here. Despite this we will be posting
>>> a
>>> possible improvement in the newlib maillist soon. It consist in adding
>>> the gcc
>>> function attribute "warn_unused_result" to the pthread_*_init functions.
>>> As a
>>> result, developers will be warned about checking the return value. NOTE:
>>> a
>>> common error here could be not checking the return value, assuming a
>>> successful
>>> result, and trying to, for example, lock a mutex which init function has
>>> returned ENOMEM. (We found this exact mistake in the current LWIP OS
>>> layer
>>> implementati

Re: Is there plan for stable 4.10.3 release branching?

2014-11-07 Thread Joel Sherrill


On November 7, 2014 12:50:03 AM CST, Chris Johns  wrote:
>On 7/11/2014 4:05 am, Joel Sherrill wrote:
>>
>> Also Chris has RSB support for 4.10 tools so he should also comment
>to make sure he thinks it is ready.
>>
>
>The 4.10 released binaries still exist and I have fixed all reported 
>4.10 issues.

I would like to use RSB built binaries and build all BSPs.


>> This will also be a good exercise for the new hosting.
>
>Yes this is a great idea.

The file Makefile.maint in the top rtems directory has the scripting for 
generating releases, tagging, generating version file, etc for CVS. We need the 
equivalent, a script in rtems tools, or a manual procedure to cut a release now 
with git. Obviously I prefer a repo independent script.



>Chris

--joel
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel