Ok
> 在 2015年8月11日,17:02,Joel Sherrill <joel.sherr...@oarcorp.com> 写道: > > Can you rebase these and send again? > > Previous patches have changed at least bsp.h, Makefile.am > and preinstall.am. > > --joel > >> On 8/10/2015 7:47 AM, YANG QIAO wrote: >> From: YANG Qiao <yangqiao0...@me.com> >> >> --- >> c/src/lib/libbsp/arm/raspberrypi/Makefile.am | 4 ++ >> c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h | 32 +++++++++++++ >> .../libbsp/arm/raspberrypi/include/raspberrypi.h | 49 +++++++++++++++++++ >> c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c | 56 >> ++++++++++++++++++++++ >> c/src/lib/libbsp/arm/raspberrypi/preinstall.am | 4 ++ >> 5 files changed, 145 insertions(+) >> create mode 100644 c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h >> create mode 100644 c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c >> >> diff --git a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am >> b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am >> index c6133df..70bc01d 100644 >> --- a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am >> +++ b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am >> @@ -43,6 +43,7 @@ include_bsp_HEADERS += ../shared/include/arm-release-id.h >> include_bsp_HEADERS += include/irq.h >> include_bsp_HEADERS += include/mmu.h >> include_bsp_HEADERS += include/usart.h >> +include_bsp_HEADERS += include/mailbox.h >> include_bsp_HEADERS += include/raspberrypi.h >> >> include_libcpu_HEADERS = ../../../libcpu/arm/shared/include/cache_.h \ >> @@ -123,6 +124,9 @@ libbsp_a_SOURCES += misc/timer.c >> >> # I2C >> >> +# Mailbox >> +libbsp_a_SOURCES += misc/mailbox.c >> + >> # Cache >> libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c >> libbsp_a_SOURCES += ../../../libcpu/arm/shared/include/cache_.h >> diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h >> b/c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h >> new file mode 100644 >> index 0000000..e6cb0f8 >> --- /dev/null >> +++ b/c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h >> @@ -0,0 +1,32 @@ >> +/** >> + * @file >> + * >> + * @ingroup raspberrypi >> + * >> + * @brief mailbox support. >> + */ >> +/* >> + * Copyright (c) 2015 Yang Qiao >> + * >> + * The license and distribution terms for this file may be >> + * found in the file LICENSE in this distribution or at >> + * >> + * http://www.rtems.org/license/LICENSE >> + * >> + */ >> + >> +#ifndef LIBBSP_ARM_RASPBERRYPI_MAILBOX_H >> +#define LIBBSP_ARM_RASPBERRYPI_MAILBOX_H >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif /* __cplusplus */ >> + >> +extern unsigned int raspberrypi_mailbox_read(unsigned int channel); >> +extern void raspberrypi_mailbox_write(unsigned int channel, unsigned int >> data); >> + >> +#ifdef __cplusplus >> +} >> +#endif /* __cplusplus */ >> + >> +#endif /* LIBBSP_ARM_RASPBERRYPI_MAILBOX_H */ >> diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h >> b/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h >> index c33e22a..dc1be07 100644 >> --- a/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h >> +++ b/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h >> @@ -8,6 +8,8 @@ >> */ >> >> /* >> + * Copyright (c) 2015 Yang Qiao >> + * based on work by: >> * Copyright (c) 2013 Alan Cudmore. >> * >> * The license and distribution terms for this file may be >> @@ -208,6 +210,53 @@ >> >> /** @} */ >> >> + /** >> + * @name Mailbox Registers >> + * >> + * @{ >> + */ >> + >> +#define BCM2835_MBOX_BASE (RPI_PERIPHERAL_BASE+0xB880) >> + >> +#define BCM2835_MBOX_PEEK (BCM2835_MBOX_BASE+0x10) >> +#define BCM2835_MBOX_READ (BCM2835_MBOX_BASE+0x00) >> +#define BCM2835_MBOX_WRITE (BCM2835_MBOX_BASE+0x20) >> +#define BCM2835_MBOX_STATUS (BCM2835_MBOX_BASE+0x18) >> +#define BCM2835_MBOX_SENDER (BCM2835_MBOX_BASE+0x14) >> +#define BCM2835_MBOX_CONFIG (BCM2835_MBOX_BASE+0x1C) >> + >> +#define BCM2835_MBOX_FULL (BCM2835_MBOX_BASE+0x80000000) >> +#define BCM2835_MBOX_EMPTY (BCM2835_MBOX_BASE+0x40000000) >> + >> +/** >> +* @name Mailbox Channels >> +* >> +* @{ >> +*/ >> + >> +/* Power Manager channel */ >> +#define BCM2835_MBOX_CHANNEL_PM 0 >> +/* Framebuffer channel */ >> +#define BCM2835_MBOX_CHANNEL_FB 1 >> + /* Virtual UART channel */ >> +#define BCM2835_MBOX_CHANNEL_VUART 2 >> + /* VCHIQ channel */ >> +#define BCM2835_MBOX_CHANNEL_VCHIQ 3 >> + /* LEDs channel */ >> +#define BCM2835_MBOX_CHANNEL_LED 4 >> + /* Button channel */ >> +#define BCM2835_MBOX_CHANNEL_BUTTON 5 >> + /* Touch screen channel */ >> +#define BCM2835_MBOX_CHANNEL_TOUCHS 6 >> +/* Property tags (ARM <-> VC) channel */ >> +#define BCM2835_MBOX_CHANNEL_PROP_AVC 8 >> + /* Property tags (VC <-> ARM) channel */ >> +#define BCM2835_MBOX_CHANNEL_PROP_VCA 9 >> + >> +/** @} */ >> + >> +/** @} */ >> + >> >> /** @} */ >> >> diff --git a/c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c >> b/c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c >> new file mode 100644 >> index 0000000..8ec730a >> --- /dev/null >> +++ b/c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c >> @@ -0,0 +1,56 @@ >> +/** >> + * @file >> + * >> + * @ingroup raspberrypi >> + * >> + * @brief mailbox support. >> + */ >> +/* >> + * Copyright (c) 2015 Yang Qiao >> + * >> + * The license and distribution terms for this file may be >> + * found in the file LICENSE in this distribution or at >> + * >> + * http://www.rtems.org/license/LICENSE >> + * >> + */ >> + >> +#include <stdint.h> >> +#include <stdbool.h> >> +#include <bsp/raspberrypi.h> >> +#include <bsp/mailbox.h> >> + >> +#define BCM2835_MBOX_DATA_MASK(data) (data & 0xFFFFFFF0U) >> +#define BCM2835_MBOX_CHANNEL_MASK(data) (data & 0xFU) >> + >> +static inline bool bcm2835_mailbox_is_empty() >> +{ >> + return (BCM2835_REG(BCM2835_MBOX_STATUS) & BCM2835_MBOX_EMPTY); >> +} >> + >> +static inline bool bcm2835_mailbox_is_full() >> +{ >> + return (BCM2835_REG(BCM2835_MBOX_STATUS) & BCM2835_MBOX_FULL); >> +} >> + >> +unsigned int raspberrypi_mailbox_read(unsigned int channel) >> +{ >> + unsigned int raw; >> + unsigned int read_channel; >> + >> + while (1){ >> + while (bcm2835_mailbox_is_empty()); >> + raw = BCM2835_REG (BCM2835_MBOX_READ ); >> + read_channel = BCM2835_MBOX_CHANNEL_MASK(raw) ; >> + if (read_channel == channel) >> + return BCM2835_MBOX_DATA_MASK(raw); >> + } >> +} >> + >> +void raspberrypi_mailbox_write(unsigned int channel, unsigned int data) >> +{ >> + while (bcm2835_mailbox_is_full()); >> + BCM2835_REG(BCM2835_MBOX_WRITE) = >> + BCM2835_MBOX_DATA_MASK(data) | >> + BCM2835_MBOX_CHANNEL_MASK(channel); >> +} >> diff --git a/c/src/lib/libbsp/arm/raspberrypi/preinstall.am >> b/c/src/lib/libbsp/arm/raspberrypi/preinstall.am >> index 70259e2..4cb7ed6 100644 >> --- a/c/src/lib/libbsp/arm/raspberrypi/preinstall.am >> +++ b/c/src/lib/libbsp/arm/raspberrypi/preinstall.am >> @@ -126,6 +126,10 @@ $(PROJECT_INCLUDE)/bsp/usart.h: include/usart.h >> $(PROJECT_INCLUDE)/bsp/$(dirstam >> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/usart.h >> PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/usart.h >> >> +$(PROJECT_INCLUDE)/bsp/mailbox.h: include/mailbox.h >> $(PROJECT_INCLUDE)/bsp/$(dirstamp) >> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/mailbox.h >> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/mailbox.h >> + >> $(PROJECT_INCLUDE)/bsp/raspberrypi.h: include/raspberrypi.h >> $(PROJECT_INCLUDE)/bsp/$(dirstamp) >> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/raspberrypi.h >> PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/raspberrypi.h > > -- > Joel Sherrill, Ph.D. Director of Research & Development > joel.sherr...@oarcorp.com On-Line Applications Research > Ask me about RTEMS: a free RTOS Huntsville AL 35805 > Support Available (256) 722-9985 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel