Hi, Yes sir. Trying to solve this. So this warning for *userled_lower_initialize* function, do we have to include? or is it not included by rtos?
Regards, Rushikesh Ghatkar On Wed, Aug 18, 2021 at 5:14 PM Tim <t...@jti.uk.com.invalid> wrote: > An earlier screen shot showed a compiler warning for the function being > implicitly declared - so no lower driver function is actually > present/included? Surprised it's just a warning though. > > >-----Original Message----- > >From: Alan Carvalho de Assis <acas...@gmail.com> > >Sent: 18 August 2021 12:38 > >To: dev@nuttx.apache.org > >Subject: Re: Creating our own driver in NUCLEO-H743ZI2 with Nuttx rtos > > > >Hi Rushikesh, > > > >Since it is there the /dev/userleds0 should be registered. > > > >Please open your drivers/leds/userled_lower.c and modify it to print some > info: > > > >int userled_lower_initialize(FAR const char *devname) { > > int ret; > > > > ledinfo("Initializing LEDs\n"); > > > > g_lednum = board_userled_initialize(); > > ret = userled_register(devname, &g_userled_lower); > > if (ret < 0) > > { > > lederr("Failed to register userled: %d\n", ret); > > } > >} > > > >Then run it with LED debug enabled. > > > >BR, > > > >Alan > > > >On 8/18/21, rushi ghatkar <rushighatka...@gmail.com> wrote: > >> Hi @Alan sir, > >> > >> Found *System.map* and checked for *userled_lower_initialise* and it's > >> there. Means my firmware has it. Please find the attached image. > >> > >> Then what is the problem? and how to solve it? > >> > >> > >> > >> Regards, > >> Rushikesh > >> > >> On Wed, Aug 18, 2021 at 4:39 PM Alan Carvalho de Assis > >> <acas...@gmail.com> > >> wrote: > >> > >>> "Open your System.map and search for userled_lower_initialize" > >>> > >>> On 8/18/21, rushi ghatkar <rushighatka...@gmail.com> wrote: > >>> > Hi, > >>> > > >>> > @Alan sir, I have enabled the debug option and checked, it still > >>> > gives > >>> the > >>> > same error message in nsh> prompt whenever I run the built-in > >>> > driver or > >>> my > >>> > own driver. > >>> > Please find the attached image. > >>> > > >>> > it's not reaching to* /dev/userleds* path. > >>> > > >>> > > >>> > Regards, > >>> > Rushikesh Ghatkar > >>> > > >>> > On Tue, Aug 17, 2021 at 6:59 PM Alan Carvalho de Assis < > >>> acas...@gmail.com> > >>> > wrote: > >>> > > >>> >> The /dev/userleds is created this way: > >>> >> > >>> >> ret = userled_lower_initialize("/dev/userleds"); > >>> >> > >>> >> Open your System.map and search for userled_lower_initialize, if > >>> >> you find it, this mean your firmware has it and the issue is > >>> >> probably some error during the initialization. > >>> >> > >>> >> *Please* enable the DEBUG LEDS: > >>> >> > >>> >> Build Setup ---> > >>> >> Debug Options ---> > >>> >> [*] Enable Debug Features > >>> >> [*] Enable Error Output > >>> >> [*] Enable Warnings Output > >>> >> [*] Low-level LED Debug Features > >>> >> [*] LED Driver Error Output > >>> >> [*] LED Driver Warnings Output > >>> >> [*] LED Driver Informational Output > >>> >> > >>> >> BR, > >>> >> > >>> >> Alan > >>> >> > >>> >> On 8/17/21, rushi ghatkar <rushighatka...@gmail.com> wrote: > >>> >> > Hi, > >>> >> > > >>> >> > How to create * /dev/userleds* ? > >>> >> > > >>> >> > I have searched for it but can't find it. > >>> >> > Need Help. > >>> >> > > >>> >> > > >>> >> > Regards, > >>> >> > Rushikesh Ghatkar > >>> >> > > >>> >> > On Mon, Aug 16, 2021 at 6:32 PM Alan Carvalho de Assis < > >>> >> acas...@gmail.com> > >>> >> > wrote: > >>> >> > > >>> >> >> Did you look at /dev? I think the /dev/userleds is not created. > >>> >> >> > >>> >> >> Try to enable the DEBUG LED to see that is going on. > >>> >> >> > >>> >> >> BR, > >>> >> >> > >>> >> >> Alan > >>> >> >> > >>> >> >> On 8/16/21, rushi ghatkar <rushighatka...@gmail.com> wrote: > >>> >> >> > Hi, > >>> >> >> > > >>> >> >> > I have changed the declaration but it still gives some warning. > >>> >> >> > Please > >>> >> >> find > >>> >> >> > the attached image. > >>> >> >> > > >>> >> >> > and when I flash code and use picocom it still gives an error. > >>> >> >> > Please > >>> >> >> find > >>> >> >> > the attachment. > >>> >> >> > > >>> >> >> > > >>> >> >> > Regards, > >>> >> >> > Rushikesh Ghatkar > >>> >> >> > > >>> >> >> > On Mon, Aug 16, 2021 at 5:25 PM Alan Carvalho de Assis < > >>> >> >> acas...@gmail.com> > >>> >> >> > wrote: > >>> >> >> > > >>> >> >> >> You need to declare all LEDs, including GPIO_LED_BLUE > >>> >> >> >> > >>> >> >> >> This is the pin on your board used for each LED. > >>> >> >> >> > >>> >> >> >> Please look at stm32h747i-disco/src/stm32h747i-disco.h for > >>> >> >> >> reference. > >>> >> >> >> > >>> >> >> >> BR, > >>> >> >> >> > >>> >> >> >> Alan > >>> >> >> >> > >>> >> >> >> On 8/16/21, rushi ghatkar <rushighatka...@gmail.com> wrote: > >>> >> >> >> > Hi Alan sir, > >>> >> >> >> > > >>> >> >> >> > I have disabled the status/diagnostic LEDs compete for the > >>> >> >> >> > use > >>> of > >>> >> >> LEDs. > >>> >> >> >> > So disabled it: > >>> >> >> >> > Board Selection ---> > >>> >> >> >> > [ ] Board LED Status support > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > Yes my board does support * userleds support*: > >>> >> >> >> > boards/arm/stm32h7/nucleo-h743zi2/src/stm32_userleds.c > >>> >> >> >> > > >>> >> >> >> > But still it gives error, please see the error image > attached. > >>> >> >> >> > > >>> >> >> >> > AR (create): libbinfmt.a binfmt_globals.o > >>> >> >> >> > binfmt_initialize.o > >>> >> >> >> > binfmt_register.o binfmt_unregister.o binfmt_loadmodule.o > >>> >> >> >> > binfmt_unloadmodule.o binfmt_execmodule.o binfmt_exec.o > >>> >> >> >> > binfmt_copyargv.o binfmt_dumpmodule.o builtin.o > >>> >> >> >> > make[1]: Leaving directory > >>> >> '/home/rushikesh/nuttxspace/nuttx/binfmt' > >>> >> >> >> > IN: binfmt/libbinfmt.a -> staging/libbinfmt.a > >>> >> >> >> > make[1]: Entering directory > >>> >> >> >> '/home/rushikesh/nuttxspace/nuttx/arch/arm/src' > >>> >> >> >> > make[2]: Entering directory > >>> >> >> >> > > >>> >> >> > >>> > '/home/rushikesh/nuttxspace/nuttx/boards/arm/stm32h7/nucleo-h743zi2/src' > >>> >> >> >> > CC: stm32_boot.c > >>> >> >> >> > CC: stm32_bringup.c > >>> >> >> >> > stm32_bringup.c: In function 'stm32_bringup': > >>> >> >> >> > stm32_bringup.c:88:9: warning: implicit declaration of > >>> >> >> >> > function 'userled_lower_initialize' > >>> >> >> >> > [-Wimplicit-function-declaration] > >>> >> >> >> > 88 | ret = userled_lower_initialize("/dev/userleds"); > >>> >> >> >> > | ^~~~~~~~~~~~~~~~~~~~~~~~ > >>> >> >> >> > CC: stm32_userleds.c > >>> >> >> >> > stm32_userleds.c:55:3: error: 'GPIO_LED_BLUE' undeclared > >>> >> >> >> > here (not in > >>> >> >> a > >>> >> >> >> > function); did you mean 'GPIO_LED_RED'? > >>> >> >> >> > 55 | GPIO_LED_BLUE, > >>> >> >> >> > | ^~~~~~~~~~~~~ > >>> >> >> >> > | GPIO_LED_RED > >>> >> >> >> > make[2]: *** > >>> >> >> >> > [/home/rushikesh/nuttxspace/nuttx/boards/Board.mk:103: > >>> >> >> >> > stm32_userleds.o] Error 1 > >>> >> >> >> > make[2]: Leaving directory > >>> >> >> >> > > >>> >> >> > >>> > '/home/rushikesh/nuttxspace/nuttx/boards/arm/stm32h7/nucleo-h743zi2/src' > >>> >> >> >> > make[1]: *** [Makefile:152: board/libboard.a] Error 2 > >>> >> >> >> > make[1]: Leaving directory > >>> >> >> >> '/home/rushikesh/nuttxspace/nuttx/arch/arm/src' > >>> >> >> >> > make: *** [tools/Makefile.unix:422: nuttx] Error 2 > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > Regards, > >>> >> >> >> > Rushikesh Ghatkar > >>> >> >> >> > > >>> >> >> >> > On Mon, Aug 16, 2021 at 4:41 PM Alan Carvalho de Assis < > >>> >> >> >> acas...@gmail.com> > >>> >> >> >> > wrote: > >>> >> >> >> > > >>> >> >> >> >> HI Rushikesh, > >>> >> >> >> >> > >>> >> >> >> >> It seams your board already has the userleds support: > >>> >> >> >> >> > >>> >> >> >> >> boards/arm/stm32h7/nucleo-h743zi2/src/stm32_userleds.c > >>> >> >> >> >> > >>> >> >> >> >> Did you disable the CONFIG_ARCH_LEDS? The > >>> >> >> >> >> status/diagnostic > >>> LEDs > >>> >> >> >> >> compete for the use of LEDs. > >>> >> >> >> >> > >>> >> >> >> >> So disable it: > >>> >> >> >> >> > >>> >> >> >> >> Board Selection ---> > >>> >> >> >> >> [ ] Board LED Status support > >>> >> >> >> >> > >>> >> >> >> >> BR, > >>> >> >> >> >> > >>> >> >> >> >> Alan > >>> >> >> >> >> > >>> >> >> >> >> On 8/16/21, rushi ghatkar <rushighatka...@gmail.com> > wrote: > >>> >> >> >> >> > Hi, > >>> >> >> >> >> > > >>> >> >> >> >> > I have tried the built-in LED driver in menuconfig, > >>> >> >> >> >> > Application Configuration -> Examples -> LED driver > >>> >> >> >> >> > example. > >>> >> >> >> >> > But when I run that driver using picocom,it shows > >>> >> >> >> >> > error, > >>> >> >> >> >> > > >>> >> >> >> >> > Builtin Apps: > >>> >> >> >> >> > leds sh hello nsh > >>> >> >> >> >> > nsh> leds > >>> >> >> >> >> > leds_main: Starting the led_daemon > >>> >> >> >> >> > leds_main: led_daemon started > >>> >> >> >> >> > > >>> >> >> >> >> > led_daemon (pid# 3): Running > >>> >> >> >> >> > led_daemon: Opening /dev/userleds > >>> >> >> >> >> > led_daemon: ERROR: Failed to open /dev/userleds: 2 > >>> >> >> >> >> > led_daemon: Terminating > >>> >> >> >> >> > nsh> > >>> >> >> >> >> > > >>> >> >> >> >> > Please find the error image attachment. > >>> >> >> >> >> > > >>> >> >> >> >> > In menuconfig I have selected, Board Configuration -> > >>> >> >> >> >> > Board LED status report. > >>> >> >> >> >> > Device Driver -> LED support -> LED driver -> Generic > >>> >> >> >> >> > Lower Half > >>> >> >> LED > >>> >> >> >> >> Driver > >>> >> >> >> >> > > >>> >> >> >> >> > > >>> >> >> >> >> > For this I need to have a board userleds file that will > >>> >> >> >> >> > map the > >>> >> >> LEDs > >>> >> >> >> >> > and > >>> >> >> >> >> > will create the /dev/userleds. > >>> >> >> >> >> > But I have searched it in the list by using this > >>> >> >> >> >> > command *./tools/configure.sh -L | less* There is no > >>> >> >> >> >> > *nucleo-h743zi2:userleds* file available. > >>> >> >> >> >> > > >>> >> >> >> >> > Is there any way to make it *board userled file*, so we > >>> >> >> >> >> > can use it? > >>> >> >> >> >> > > >>> >> >> >> >> > > >>> >> >> >> >> > > >>> >> >> >> >> > Regards, > >>> >> >> >> >> > Rushikesh > >>> >> >> >> >> > > >>> >> >> >> >> > On Mon, Aug 16, 2021 at 4:19 PM Alan Carvalho de Assis > >>> >> >> >> >> > < > >>> >> >> >> >> acas...@gmail.com> > >>> >> >> >> >> > wrote: > >>> >> >> >> >> > > >>> >> >> >> >> >> Please ask this question in the mailing list, it could > >>> >> >> >> >> >> help other people in the future. > >>> >> >> >> >> >> > >>> >> >> >> >> >> You need to have a board userleds file that will map > >>> >> >> >> >> >> the LEDs and will create the /dev/userleds. > >>> >> >> >> >> >> > >>> >> >> >> >> >> BR, > >>> >> >> >> >> >> > >>> >> >> >> >> >> Alan > >>> >> >> >> >> >> > >>> >> >> >> >> >> On 8/16/21, rushi ghatkar <rushighatka...@gmail.com> > >>> >> >> >> >> >> wrote: > >>> >> >> >> >> >> > On Mon, Aug 16, 2021 at 2:42 PM rushi ghatkar > >>> >> >> >> >> >> > <rushighatka...@gmail.com> > >>> >> >> >> >> >> > wrote: > >>> >> >> >> >> >> > > >>> >> >> >> >> >> >> Hi, > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> I have tried the built-in LED driver in menuconfig, > >>> >> >> Application > >>> >> >> >> >> >> >> Configuration -> Examples -> LED driver example. > >>> >> >> >> >> >> >> But when I run that driver using picocom,it shows > >>> >> >> >> >> >> >> error, > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> Builtin Apps: > >>> >> >> >> >> >> >> leds sh hello nsh > >>> >> >> >> >> >> >> nsh> leds > >>> >> >> >> >> >> >> leds_main: Starting the led_daemon > >>> >> >> >> >> >> >> leds_main: led_daemon started > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> led_daemon (pid# 3): Running > >>> >> >> >> >> >> >> led_daemon: Opening /dev/userleds > >>> >> >> >> >> >> >> led_daemon: ERROR: Failed to open /dev/userleds: 2 > >>> >> >> >> >> >> >> led_daemon: Terminating > >>> >> >> >> >> >> >> nsh> > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> Please find the error image attachment. > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> In menuconfig I have selected, Board Configuration > >>> >> >> >> >> >> >> -> Board LED status report. > >>> >> >> >> >> >> >> Device Driver -> LED support -> LED driver -> > >>> >> >> >> >> >> >> Generic Lower > >>> >> >> Half > >>> >> >> >> >> >> >> LED > >>> >> >> >> >> >> >> Driver > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> Why is it still showing the error? > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> Regards, > >>> >> >> >> >> >> >> Rushikesh > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> On Fri, Aug 13, 2021 at 5:57 PM rushi ghatkar > >>> >> >> >> >> >> >> <rushighatka...@gmail.com > >>> >> >> >> >> >> > > >>> >> >> >> >> >> >> wrote: > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >>> Hi Alan sir, > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>> Thank you for the clarification. > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>> Regards, > >>> >> >> >> >> >> >>> Rushikesh > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>> On Fri, Aug 13, 2021 at 5:34 PM Alan Carvalho de > >>> >> >> >> >> >> >>> Assis <acas...@gmail.com> > >>> >> >> >> >> >> >>> wrote: > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> >>>> What do you mean by "try to make driver into app" ? > >>> >> >> >> >> >> >>>> > >>> >> >> >> >> >> >>>> Drivers need to be created on nuttx/drivers, not > >>> >> >> >> >> >> >>>> at apps/. > >>> >> >> >> >> >> >>>> Also > >>> >> >> >> >> >> >>>> you > >>> >> >> >> >> >> >>>> cannot call a driver function directly from > >>> >> >> >> >> >> >>>> apps/, it > >>> is > >>> >> >> >> >> >> >>>> a > >>> >> >> >> >> violation > >>> >> >> >> >> >> >>>> of the OS abstraction. > >>> >> >> >> >> >> >>>> > >>> >> >> >> >> >> >>>> Your application needs to open the > >>> >> >> >> >> >> >>>> /dev/yourdriver to read/write from/to your > >>> >> >> >> >> >> >>>> driver. > >>> >> >> >> >> >> >>>> > >>> >> >> >> >> >> >>>> BR, > >>> >> >> >> >> >> >>>> > >>> >> >> >> >> >> >>>> Alan > >>> >> >> >> >> >> >>>> > >>> >> >> >> >> >> >>>> On 8/13/21, rushi ghatkar > >>> >> >> >> >> >> >>>> <rushighatka...@gmail.com> > >>> >> wrote: > >>> >> >> >> >> >> >>>> > Hi @Alan & @Frank sir, > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > I was also thinking the same, first check for > >>> >> >> >> >> >> >>>> > the > >>> >> drivers > >>> >> >> >> >> >> >>>> > I > >>> >> >> >> >> >> >>>> > need > >>> >> >> >> >> >> >>>> > and > >>> >> >> >> >> >> >>>> then > >>> >> >> >> >> >> >>>> > copy it and the change as per my needs. > >>> >> >> >> >> >> >>>> > Then change Makefiles, Make.defs, and Kconfigs > >>> files > >>> >> to > >>> >> >> >> >> >> >>>> > make > >>> >> >> >> >> the > >>> >> >> >> >> >> >>>> driver > >>> >> >> >> >> >> >>>> > include. > >>> >> >> >> >> >> >>>> > Then make them an app to run on picocom. > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > Will try to change driver as per need and try > >>> >> >> >> >> >> >>>> > to make > >>> >> >> driver > >>> >> >> >> >> >> >>>> > into > >>> >> >> >> >> >> app > >>> >> >> >> >> >> >>>> to > >>> >> >> >> >> >> >>>> > get it run on picocom. > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > Thanks for the information. > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > Thanks & Regards, Rushikesh Ghatkar > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > On Fri, Aug 13, 2021 at 5:11 PM Frank-Christian > >>> >> >> >> >> >> >>>> > Kruegel > >>> >> < > >>> >> >> >> >> >> >>>> nu...@istda.com> > >>> >> >> >> >> >> >>>> > wrote: > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> >> Am 13.08.2021 um 10:43 schrieb rushi ghatkar: > >>> >> >> >> >> >> >>>> >> > Hi, > >>> >> >> >> >> >> >>>> >> > > >>> >> >> >> >> >> >>>> >> > I have configured and installed Nuttx rtos > >>> >> >> >> >> >> >>>> >> > on the > >>> >> >> >> >> >> >>>> >> > Nucleo-H743zi2 > >>> >> >> >> >> >> >>>> board. > >>> >> >> >> >> >> >>>> >> > > >>> >> >> >> >> >> >>>> >> > Now I want to create my own driver. How to > >>> >> >> >> >> >> >>>> >> > create our > >>> >> >> own > >>> >> >> >> >> >> >>>> >> > driver? > >>> >> >> >> >> >> >>>> >> > > >>> >> >> >> >> >> >>>> >> > Has anyone created their own driver using > >>> >> >> >> >> >> >>>> >> > Nuttx rtos on the > >>> >> >> >> >> >> >>>> >> > STM32 > >>> >> >> >> >> >> >>>> >> > board? > >>> >> >> >> >> >> >>>> >> > > >>> >> >> >> >> >> >>>> >> > Could anybody please tell me how to start? > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> >> Been there, done that. > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> >> The best starting point is to look for a > >>> >> >> >> >> >> >>>> >> similar > >>> >> driver. > >>> >> >> >> >> >> >>>> >> I > >>> >> >> >> >> needed > >>> >> >> >> >> >> >>>> >> drivers for ADC and DAC chips with I2C > >>> >> >> >> >> >> >>>> >> interface, so I looked > >>> >> >> >> >> for > >>> >> >> >> >> >> >>>> those > >>> >> >> >> >> >> >>>> >> drivers, copied one and changed it according > >>> >> >> >> >> >> >>>> >> to my needs. > >>> >> >> >> Then > >>> >> >> >> >> >> >>>> >> I > >>> >> >> >> >> >> >>>> looked > >>> >> >> >> >> >> >>>> >> into Makefiles, Make.defs, and Kconfigs, how > >>> >> >> >> >> >> >>>> >> these drivers were > >>> >> >> >> >> >> >>>> included > >>> >> >> >> >> >> >>>> >> an included mine in the same manner. > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> >> The build system with make menuconfig, > >>> >> >> >> >> >> >>>> >> Makefiles and Kconfigs is > >>> >> >> >> >> >> the > >>> >> >> >> >> >> >>>> >> same as for the Linux kernel. Since your > >>> >> >> >> >> >> >>>> >> development platform is Linux anyways (this is > >>> >> >> >> >> >> >>>> >> the strongly recommended default > >>> >> >> platform) > >>> >> >> >> >> >> >>>> >> you > >>> >> >> >> >> >> >>>> >> should > >>> >> >> >> >> >> >>>> >> already have plenty of Linux experience and > >>> >> >> >> >> >> >>>> >> know how to > >>> >> >> >> >> customize > >>> >> >> >> >> >> an > >>> >> >> >> >> >> >>>> >> Linux kernel, how to use Makefiles and gcc and > >>> >> >> >> >> >> >>>> >> gdb and binutils. > >>> >> >> >> >> >> >>>> >> If > >>> >> >> >> >> >> >>>> you > >>> >> >> >> >> >> >>>> >> know Linux well the step to NuttX is not so > >>> >> >> >> >> >> >>>> >> big any more. > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> >> I started a year ago, and it took me two > >>> >> >> >> >> >> >>>> >> months to get > >>> >> >> >> started > >>> >> >> >> >> >> >>>> >> with > >>> >> >> >> >> >> >>>> own > >>> >> >> >> >> >> >>>> >> hardware and own drivers (ok, with Linux > >>> >> >> >> >> >> >>>> >> experience since > >>> >> >> >> 1993 > >>> >> >> >> >> >> >>>> >> and > >>> >> >> >> >> >> >>>> UNIX > >>> >> >> >> >> >> >>>> >> experience since 1989). > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> >> Frank-Christian > >>> >> >> >> >> >> >>>> >> > >>> >> >> >> >> >> >>>> > > >>> >> >> >> >> >> >>>> > >>> >> >> >> >> >> >>> > >>> >> >> >> >> >> > > >>> >> >> >> >> >> > >>> >> >> >> >> > > >>> >> >> >> >> > >>> >> >> >> > > >>> >> >> >> > >>> >> >> > > >>> >> >> > >>> >> > > >>> >> > >>> > > >>> > >> > >