[En-Nut-Discussion] Upgrading an old app to use Nut/OS 4.2.x instead of 3.4.x

Waschk,Kolja ethernut at telos.de
Wed Mar 21 12:38:33 CET 2007


Hi,

it has been more than two years since I developed an application based on
Nut/OS 3.4 (actually CVS HEAD as of 2004-02-19). In some environments, it
behaves not as stable as needed; further studies showed the problems are
related with things like lost packets and ARP requests not (re-)sent or
blocking due to missing ARP responses.

I quickly scanned the ChangeLog to see what changed since then, and found a
number of ARP- and other network related changes and bugfixes. Now I face
the decision whether I should try to extract these changes and put them in
our local branch of Nut/OS 3.4.x (only the nicrtl driver is modified in our
local branch), or better adapt the application code to run with a recent
Nut/OS version and simply replace all the OS code.

The latter (i.e. upgrading Nut/OS from 3.x to 4.x)  _may_ be problematic
because the application then _may_ have to undergo a lengthy qualification
process again because so much changed (the OS naturally is the largest part,
regarding code size).

And furthermore the latter _may_ take more time than extracting and merging
just the changes. But I fear that there are many changes with seem unrelated
on first sight, but have to be merged as well; e.g. new directory layout,
changes to Event and Timer system function semantics etc. pp...

The following is a quick scan of Nut/OS functions that are currently called
in the application code. I can compile and link the application with Nut/OS
4.2.1 without errors after just adding the nutarch library in the Makefile,
maybe my fears are baseless?

Is there any "How to upgrade your app from 3.x to 4.x document"? I'm
prepared to manually check every ChangeLog entry, but I'd appreciate every
little suggestion about how to proceed.

NutDeviceLookup
NutDhcpIfConfig
NutEnterCritical
NutEventBroadcast
NutEventBroadcastAsync
NutEventPost
NutEventPostAsync
NutEventWait
NutExitCritical
NutGetMillis
NutHeapAvailable
NutNetIfConfig
NutNetIfConfig2
NutNetLoadConfig
NutReceive
NutRegisterDevice
NutRegisterIrqHandler
NutSleep
NutTcpAccept
NutTcpCloseSocket
NutTcpCreateSocket
NutTcpError
NutTcpReceive
NutTcpSend
NutThreadCreate
NutThreadYield
NutTraceHeap
NutTraceOs
NutTracePPP
NutTraceTcp

Thanks in advance,
Kolja

-- 
Mr. K. Waschk, telos EDV Systementwicklung GmbH, Hamburg, Germany











More information about the En-Nut-Discussion mailing list