[En-Nut-Discussion] Why not change from Nut/OS to BeRTOS

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Mon Jun 10 19:31:04 CEST 2013


>>>>> "Harald" == Harald Kipp <harald.kipp at egnite.de> writes:

    Harald> Hi all, I have no idea how to proceed... I'm in a very bad
    Harald> mood... :-(

Sorry for that.

    Harald> I failed to get an old application working, which I know for
    Harald> sure had been working previously. Obviously the SPI chip selects
    Harald> for the VSCODEC are not properly initialized.

    Harald> Diving into the code, I found

    Harald> GpioPinConfigSet(VSCODEC0_XCS_PORT, VSCODEC0_XCS_BIT,
    Harald> GPIO_CFG_OUTPUT);

    Harald> which translates via the Configurator into

    Harald> GpioPinConfigSet(AVRPORTD, 6, GPIO_CFG_OUTPUT);

    Harald> In include/dev/gpio_avr.h we have

    Harald> #define PIOD_ID 4
    Harald> #define AVRPORTD PIOD_ID

This is again the old GPIO problem. While PIOD_ID is some number,
NUTGPIO_PORTD resolves in the AVR GPIO register range.

#define NUTGPIO_PORTD _SFR_IO_ADDR(PORTD)

As discussed before, this allows much faster GPIO access with smaller code
size.

I see that those definitions come from cfg/arch/avr.h. I never expected
some GPIO definitions in that location and none of the examples in the app
directory used GPIOx_ID, so I never stepped on that problem.

...
    Harald> P.S.: Well, after cooling down a bit, I'm considering, that I
    Harald> may have overlooked something. In that case, please send your
    Harald> flames to my private email address.

Could you please try appended include/arch/avr.h? This should base all AVR
GPIO acces to the new scheme.

Thanks
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
#ifndef _CFG_ARCH_AVR_H_
#define _CFG_ARCH_AVR_H_

/*
 * Copyright (C) 2004 by egnite Software GmbH. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the copyright holders nor the names of
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * For additional information see http://www.ethernut.de/
 *
 */

/*
 * $Log$
 * Revision 1.8  2008/10/23 08:53:01  haraldkipp
 * Adding new port identifiers.
 *
 * Revision 1.7  2008/01/31 09:32:16  haraldkipp
 * Added ports H to L.
 *
 * Revision 1.6  2007/04/12 09:10:29  haraldkipp
 * PORTH added.
 *
 * Revision 1.5  2005/08/02 17:46:48  haraldkipp
 * Major API documentation update.
 *
 * Revision 1.4  2005/02/02 20:03:46  haraldkipp
 * All definitions had been moved to avrpio.h in order to fix the broken
 * port I/O without being forced to change other existing modules.
 *
 * Revision 1.3  2005/01/22 19:27:19  haraldkipp
 * Changed AVR port configuration names from PORTx to AVRPORTx.
 *
 * Revision 1.2  2004/09/22 08:18:57  haraldkipp
 * More configurable ports
 *
 * Revision 1.1  2004/08/25 10:58:02  haraldkipp
 * New include directory cfg/arch added, which is used for target specific items,
 * mainly port usage or MCU specific register settings.
 *
 */

/*!
 * \addtogroup xgConfigAvr
 */
/*@{*/

/*!
 * \file include/cfg/arch/avr.h
 * \brief AVR hardware configuration.
 */

#define PIOA_ID     NUTGPIO_PORTA
#define PIOB_ID     NUTGPIO_PORTB
#define PIOC_ID     NUTGPIO_PORTC
#define PIOD_ID     NUTGPIO_PORTD
#define PIOE_ID     NUTGPIO_PORTE
#define PIOF_ID     NUTGPIO_PORTF
#define PIOG_ID     NUTGPIO_PORTG
#define PIOH_ID     NUTGPIO_PORTH
#define PIOI_ID     NUTGPIO_PORTI
#define PIOJ_ID     NUTGPIO_PORTJ
#define PIOK_ID     NUTGPIO_PORTK
#define PIOL_ID     NUTGPIO_PORTL

#define AVRPORTA    PIOA_ID
#define AVRPORTB    PIOB_ID
#define AVRPORTC    PIOC_ID
#define AVRPORTD    PIOD_ID
#define AVRPORTE    PIOE_ID
#define AVRPORTF    PIOF_ID
#define AVRPORTG    PIOG_ID
#define AVRPORTH    PIOH_ID
#define AVRPORTI    PIOI_ID
#define AVRPORTJ    PIOJ_ID
#define AVRPORTK    PIOK_ID
#define AVRPORTL    PIOL_ID

#include <cfg/arch/avrpio.h>

/*@}*/

#endif


More information about the En-Nut-Discussion mailing list