mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
Obsolete support for the 8051 family. Trying to maintain compatibility with this family is too much effort and there has never really been a successful NuttX impplementation on these parts
This commit is contained in:
@@ -1,7 +0,0 @@
|
|||||||
#
|
|
||||||
# For a description of the syntax of this configuration file,
|
|
||||||
# see misc/tools/kconfig-language.txt.
|
|
||||||
#
|
|
||||||
|
|
||||||
if ARCH_BOARD_PJRC_87C52
|
|
||||||
endif
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
# configs/pjrc-8051/Make.defs
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007, 2008, 2012 Gregory Nutt. All rights reserved.
|
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
|
||||||
#
|
|
||||||
# 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 NuttX nor the names of its 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
include ${TOPDIR}/.config
|
|
||||||
include ${TOPDIR}/tools/Config.mk
|
|
||||||
|
|
||||||
# These are the directories where the SDCC toolchain is installed. NOTE
|
|
||||||
# that short 8.3 path names are used in order to avoid spaces. On my machine
|
|
||||||
# I have:
|
|
||||||
#
|
|
||||||
# C:\PROGRA~1\ = C:\Profram Files\
|
|
||||||
# C:\PROGRA~2\ = C:\Program Files (x86)\
|
|
||||||
#
|
|
||||||
# Your PC may be configured differently.
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
|
||||||
SDCC_INSTALLDIR = C:\PROGRA~2\SDCC
|
|
||||||
SDCC_BINDIR = $(SDCC_INSTALLDIR)\bin
|
|
||||||
SDCC_LIBDIR = $(SDCC_INSTALLDIR)\lib\large-stack-auto
|
|
||||||
else
|
|
||||||
SDCC_INSTALLDIR = /usr/local
|
|
||||||
SDCC_BINDIR = $(SDCC_INSTALLDIR)/bin
|
|
||||||
SDCC_LIBDIR = $(SDCC_INSTALLDIR)/share/sdcc/lib/large-stack-auto
|
|
||||||
endif
|
|
||||||
|
|
||||||
CROSSDEV =
|
|
||||||
CC = sdcc
|
|
||||||
CPP = sdcpp
|
|
||||||
LD = sdld
|
|
||||||
AS = sdas8051
|
|
||||||
AR = sdar -r
|
|
||||||
|
|
||||||
IRAM_SIZE = 0x100
|
|
||||||
DEF_STACK_BASE = 0x24
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
|
|
||||||
ARCHOPTIMIZATION = --debug
|
|
||||||
else
|
|
||||||
ARCHOPTIMIZATION =
|
|
||||||
endif
|
|
||||||
|
|
||||||
ARCHCPUFLAGS = -mmcs51 --stack-auto --model-large --int-long-reent --float-reent
|
|
||||||
ARCHPICFLAGS =
|
|
||||||
ARCHWARNINGS =
|
|
||||||
ARCHDEFINES =
|
|
||||||
ARCHINCLUDES = -I. -I$(TOPDIR)/include
|
|
||||||
|
|
||||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
|
|
||||||
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
|
|
||||||
AFLAGS = -x -j -g -l -s -p
|
|
||||||
|
|
||||||
SDCCLIB = libsdcc.lib
|
|
||||||
|
|
||||||
ASMEXT = .asm
|
|
||||||
OBJEXT = .rel
|
|
||||||
LIBEXT = .lib
|
|
||||||
EXEEXT = .hex
|
|
||||||
|
|
||||||
# Custom ASSEMBLE definition. The most common toolchain, GCC, uses the
|
|
||||||
# compiler to assemble files because this has the advantage of running the C
|
|
||||||
# Pre-Processor against. This is not possible with other SDCC; we need to
|
|
||||||
# define AS and over-ride the common definition in order to use the assembler
|
|
||||||
# directly.
|
|
||||||
|
|
||||||
define ASSEMBLE
|
|
||||||
@echo "AS: $1"
|
|
||||||
@$(AS) $(AFLAGS) $1
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Custom CLEAN definition
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
|
||||||
define CLEAN
|
|
||||||
$(Q) if exist *.o (del /f /q *.o)
|
|
||||||
$(Q) if exist *.asm (del /f /q *.asm)
|
|
||||||
$(Q) if exist *.rel (del /f /q *.rel)
|
|
||||||
$(Q) if exist *.lst (del /f /q *.lst)
|
|
||||||
$(Q) if exist *.rst (del /f /q *.rst)
|
|
||||||
$(Q) if exist *.sym (del /f /q *.sym)
|
|
||||||
$(Q) if exist *.adb (del /f /q *.adb)
|
|
||||||
$(Q) if exist *.lnk (del /f /q *.lnk)
|
|
||||||
$(Q) if exist *.map (del /f /q *.map)
|
|
||||||
$(Q) if exist *.mem (del /f /q *.mem)
|
|
||||||
$(Q) if exist *.hex (del /f /q *.hex)
|
|
||||||
$(Q) if exist *.cmd (del /f /q *.cmd)
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define CLEAN
|
|
||||||
$(Q) rm -f *.o *.asm *.rel *.lst *.rst *.sym *.adb *.lnk *.map *.mem *.hex *.cmd
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Windows native host tool definitions
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
|
||||||
HOSTCC = mingw32-gcc.exe
|
|
||||||
HOSTINCLUDES = -I.
|
|
||||||
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe
|
|
||||||
HOSTLDFLAGS =
|
|
||||||
HOSTEXEEXT = .exe
|
|
||||||
|
|
||||||
# Windows-native host tools
|
|
||||||
|
|
||||||
MKDEP = $(TOPDIR)\tools\mkdeps.exe --winnative
|
|
||||||
|
|
||||||
# Use NTFS links or directory copies
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_WINDOWS_MKLINK),y)
|
|
||||||
DIRLINK = $(TOPDIR)$(DELIM)tools$(DELIM)link.bat
|
|
||||||
else
|
|
||||||
DIRLINK = $(TOPDIR)$(DELIM)tools$(DELIM)copydir.bat
|
|
||||||
endif
|
|
||||||
DIRUNLINK = $(TOPDIR)$(DELIM)tools$(DELIM)unlink.bat
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
# Linux/Cygwin host tool definitions
|
|
||||||
|
|
||||||
HOSTCC = gcc
|
|
||||||
HOSTINCLUDES = -I.
|
|
||||||
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe
|
|
||||||
HOSTLDFLAGS =
|
|
||||||
|
|
||||||
# This is the tool to use for dependencies (i.e., none)
|
|
||||||
|
|
||||||
MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mknulldeps.sh
|
|
||||||
|
|
||||||
# SDCC for Linux, OSX, or Cygwin understands symbolic links. Windows SDCC
|
|
||||||
# running under Cygwin does not
|
|
||||||
|
|
||||||
ifeq ($(WINTOOL),y)
|
|
||||||
DIRLINK = $(TOPDIR)$(DELIM)tools$(DELIM)copydir.sh
|
|
||||||
else
|
|
||||||
DIRLINK = $(TOPDIR)$(DELIM)tools$(DELIM)link.sh
|
|
||||||
endif
|
|
||||||
DIRUNLINK = $(TOPDIR)$(DELIM)tools$(DELIM)unlink.sh
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
pjrc-8051 README
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
This port uses the PJRC 87C52 development system and the SDCC toolchain.
|
|
||||||
|
|
||||||
The PJRC 87C52 development system can be obtained from http://www.pjrc.com/.
|
|
||||||
|
|
||||||
The SDCC toolchain is available from http://sdcc.sourceforge.net/. All
|
|
||||||
testing has been performed using verison 2.6.0 of the SDDC toolchain.
|
|
||||||
|
|
||||||
Building the SDCC toolchain
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The SDCC toolchain is built with the standard configure/make/make install
|
|
||||||
sequence. However, some special actions are required to generate libraries
|
|
||||||
compatible with this build. First start with the usual steps
|
|
||||||
|
|
||||||
download
|
|
||||||
unpack
|
|
||||||
cd sdcc
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
|
|
||||||
But before installing, we need to apply a patch to the SDCC 2.6.0 source.
|
|
||||||
WARNING: This patch is specific to the particular combination of CFLAGS
|
|
||||||
that are used in the compilation. If you change Make.defs, then you will
|
|
||||||
likely have to change the patch as well.
|
|
||||||
|
|
||||||
Apply sdcc-2.6.0.patch
|
|
||||||
cd sdcc/device/lib
|
|
||||||
make model-mcs51-stack-auto
|
|
||||||
|
|
||||||
Then
|
|
||||||
|
|
||||||
cd sdcc
|
|
||||||
make install
|
|
||||||
|
|
||||||
Status
|
|
||||||
^^^^^^
|
|
||||||
|
|
||||||
On December 9, 2012, I made updates so that the 8051 port could use the
|
|
||||||
newest SDCC toolchain (a pre-3.2.1 at that time). However, when I attempted
|
|
||||||
to build the PJRC-8051 configuration, I got type incompatibility errors
|
|
||||||
from sched/os_bringup.c. From what I gather by googling, this is a compiler
|
|
||||||
bug related to the --stack-auto option.
|
|
||||||
|
|
||||||
I have not been successful working around those bugs and I believe that
|
|
||||||
these are 8051-related bugs in the SDCC toolchain. This needs to be
|
|
||||||
revisited with a later version of SDCC.
|
|
||||||
|
|
||||||
This configuration was last successfully built and tested with a ca.
|
|
||||||
2.6.0 SDCC release. Support for that older toolchain was removed in
|
|
||||||
NuttX revision -r5423. If you wanted to used those older toolchains,
|
|
||||||
you would need to revert to a pre-r5423 revision.
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,51 +0,0 @@
|
|||||||
/************************************************************
|
|
||||||
* board/board.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
|
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
|
||||||
*
|
|
||||||
* 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 NuttX nor the names of its 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.
|
|
||||||
*
|
|
||||||
************************************************************/
|
|
||||||
|
|
||||||
#ifndef __ARCH_BOARD_BOARD_H
|
|
||||||
#define __ARCH_BOARD_BOARD_H
|
|
||||||
|
|
||||||
/************************************************************
|
|
||||||
* Included Files
|
|
||||||
************************************************************/
|
|
||||||
|
|
||||||
/************************************************************
|
|
||||||
* Definitions
|
|
||||||
************************************************************/
|
|
||||||
|
|
||||||
/************************************************************
|
|
||||||
* Inline Functions
|
|
||||||
************************************************************/
|
|
||||||
|
|
||||||
#endif /* __ARCH_BOARD_BOARD_H */
|
|
||||||
@@ -1,215 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
* pjrc.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
|
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
|
||||||
*
|
|
||||||
* 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 Gregory Nutt nor the names of its 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.
|
|
||||||
*
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __PJRC_H
|
|
||||||
#define __PJRC_H
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Included Files
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Public Definitions
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Public Types
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Public Variables
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
/* Memory Map
|
|
||||||
*
|
|
||||||
* BEGIN END DESCRIPTION
|
|
||||||
* 0x0000 0x1fff CODE: ROM containg PAULMON2
|
|
||||||
* DATA: RAM for program variables
|
|
||||||
* 0x2000 0x7fff COMMON: RAM for program code or
|
|
||||||
* variables
|
|
||||||
* 0x8000 0xf7ff COMMON: FLASH for program code
|
|
||||||
* 0xf800 0xfeff COMMON: Peripherals
|
|
||||||
* 0xff00 0xffff COMMON: unused
|
|
||||||
*
|
|
||||||
* Program code may be loaded at the RAM location 0x2000-0x7fff
|
|
||||||
* for testing. If loaded into the FLASH location at
|
|
||||||
* 0x8000-0xf7ff, PAULMON2 will automatically write the program
|
|
||||||
* into flash. The program is configured in the RAM-based test
|
|
||||||
* configuration:
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define RAM_BLOCK_START IRAM_SIZE
|
|
||||||
#define RAM_BLOCK_END 0x1fff
|
|
||||||
|
|
||||||
#define PROGRAM_BASE 0x2000
|
|
||||||
#define PROGRAM_END 0x7fff
|
|
||||||
|
|
||||||
#define FLASH_BASE 0x8000
|
|
||||||
#define FLASH_END 0xf7ff
|
|
||||||
|
|
||||||
/* Well-known entry points to access PAULMON2's built-in functions */
|
|
||||||
|
|
||||||
#define PM2_ENTRY_PHEX1 0x002e
|
|
||||||
#define PM2_ENTRY_COUT 0x0030
|
|
||||||
#define PM2_ENTRY_CIN 0x0032
|
|
||||||
#define PM2_ENTRY_PHEX 0x0034
|
|
||||||
#define PM2_ENTRY_PHEX16 0x0036
|
|
||||||
#define PM2_ENTRY_PSTR 0x0038
|
|
||||||
#define PM2_ENTRY_ESC 0x003e
|
|
||||||
#define PM2_ENTRY_UPPER 0x0040
|
|
||||||
#define PM2_ENTRY_PINT8U 0x004D
|
|
||||||
#define PM2_ENTRY_PINT8 0x0050
|
|
||||||
#define PM2_ENTRY_PINT16U 0x0053
|
|
||||||
#define PM2_ENTRY_NEWLINE 0x0048
|
|
||||||
#define PM2_ENTRY_PRGM 0x0059
|
|
||||||
#define PM2_ENTRY_ERBLOCK 0x0067
|
|
||||||
|
|
||||||
/* PAULMON2 captures all interrupt vectors in ROM but relays them
|
|
||||||
* through the following RAM addresses:
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define PM2_VECTOR_BASE PROGRAM_BASE
|
|
||||||
#define PM2_VECTOR_EXTINT0 (PM2_VECTOR_BASE + 3)
|
|
||||||
#define PM2_VECTOR_TIMER0 (PM2_VECTOR_BASE + 11)
|
|
||||||
#define PM2_VECTOR_EXTINT1 (PM2_VECTOR_BASE + 19)
|
|
||||||
#define PM2_VECTOR_TIMER1 (PM2_VECTOR_BASE + 27)
|
|
||||||
#define PM2_VECTOR_UART (PM2_VECTOR_BASE + 35)
|
|
||||||
#define PM2_VECTOR_TIMER2 (PM2_VECTOR_BASE + 43)
|
|
||||||
|
|
||||||
/* Peripheral Mapping
|
|
||||||
*
|
|
||||||
* Begin End Peripheral Addr Acc Function
|
|
||||||
* F800 F8FF 82C55 (A, B, C) F800 R/W Port A
|
|
||||||
* F801 R/W Port B
|
|
||||||
* F802 R/W Port C
|
|
||||||
* F803 W Config A,B,C
|
|
||||||
* F900 F9FF 82C55 (D, E, F) F900 R/W Port D
|
|
||||||
* F901 R/W Port E (LEDs)
|
|
||||||
* F902 R/W Port F
|
|
||||||
* F903 W Config D,E,F
|
|
||||||
* FA00 FAFF User Expansion
|
|
||||||
* FB00 FBFF User Expansion
|
|
||||||
* FC00 FCFF User Expansion
|
|
||||||
* FD00 FDFF User Expansion
|
|
||||||
* FE00 FEFF LCD Port FE00 W Command Register
|
|
||||||
* FE01 R Status Register
|
|
||||||
* FE02 W Display or CGRAM Buffer
|
|
||||||
* FE03 R " " "" " " " "
|
|
||||||
*
|
|
||||||
* These are the memory-mapped locations used to access the two 82C55
|
|
||||||
* chips
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
xdata at 0xF800 uint8_t p82c55_port_a;
|
|
||||||
xdata at 0xF801 uint8_t p82c55_port_b;
|
|
||||||
xdata at 0xF802 uint8_t p82c55_port_c;
|
|
||||||
xdata at 0xF803 uint8_t p82c55_abc_config;
|
|
||||||
xdata at 0xF900 uint8_t p82c55_port_d;
|
|
||||||
xdata at 0xF901 uint8_t p82c55_port_e;
|
|
||||||
xdata at 0xF902 uint8_t p82c55_port_f;
|
|
||||||
xdata at 0xF903 uint8_t p82c55_def_config;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* LED (Port E) bit definitions */
|
|
||||||
|
|
||||||
#define LED_STARTED 0
|
|
||||||
#define LED_HEAPALLOCATE 1
|
|
||||||
#define LED_IRQSENABLED 2
|
|
||||||
#define LED_IDLE 3
|
|
||||||
#define LED_UNUSED2 4
|
|
||||||
#define LED_INIRQ 5
|
|
||||||
#define LED_ASSERTION 6
|
|
||||||
#define LED_PANIC 7
|
|
||||||
|
|
||||||
/* Registers. 8052 regiser definitions are provided in the SDCC header
|
|
||||||
* file 8052.h. However, a few SFR registers are missing from that
|
|
||||||
* file (they can be found in mcs51reg.h, but that file is too much
|
|
||||||
* when the following simple addtions do the job).
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
sfr at 0xc9 T2MOD ;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Timing information.
|
|
||||||
*
|
|
||||||
* The PJRC board is based on a standard 87C52 CPU clocked at 22.1184 MHz.
|
|
||||||
* The CPU clock is divided by 12 to yield a clock frequency of 1.8432 MHz.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CPU_CLOCK_HZ 22118400L
|
|
||||||
#define TIMER_CLOCK_HZ 1843200L
|
|
||||||
|
|
||||||
/* The 87C52 has three timers, timer 0, timer 1, and timer 2. On the PJRC
|
|
||||||
* board, timer 1 and 2 have dedicated functions. They provide baud support
|
|
||||||
* support for the boards two serial ports. Unfortunately, only timer 2
|
|
||||||
* can generate the accurate 100Hz timer desired by the OS.
|
|
||||||
*
|
|
||||||
* Timer 0 provides only a 8-bit auto-reload mode.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef CONFIG_8052_TIMER2
|
|
||||||
|
|
||||||
/* To use timer 2 as the 100Hz system timer, we need to calculate a 16-bit
|
|
||||||
* reload value that results in 100Hz overflow interrupts. That value
|
|
||||||
* is given by:
|
|
||||||
*
|
|
||||||
* Timer ticks = TIMER_CLOCK_HZ / (desired ticks-per-second)
|
|
||||||
* = 18432
|
|
||||||
* Capture value = 0xffff - (Timer ticks)
|
|
||||||
* = 47103 = 0x67ff
|
|
||||||
*/
|
|
||||||
|
|
||||||
# define TIMER2_CAPTURE_LOW 0xff
|
|
||||||
# define TIMER2_CAPTURE_HIGH 0x67
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* Timer 0, mode 0 can be used as a system timer. In that mode, the
|
|
||||||
* 1.8432 is further divided by 32. A single 8-bit value is incremented
|
|
||||||
* at 57600 Hz, which results in 225 Timer 0 overflow interrupts per
|
|
||||||
* second.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Public Function Prototypes
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#endif /* __PJRC_H */
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
diff -u sdcc/device/lib/Makefile.orig sdcc/device/lib/Makefile
|
|
||||||
--- sdcc/device/lib/Makefile.orig 2007-03-06 09:55:01.000000000 -0600
|
|
||||||
+++ sdcc/device/lib/Makefile 2007-03-06 09:58:32.000000000 -0600
|
|
||||||
@@ -242,7 +242,7 @@
|
|
||||||
model-mcs51-stack-auto:
|
|
||||||
if [ "`grep mcs51 $(top_builddir)ports.build`" = mcs51 ]; then \
|
|
||||||
for model in $(MODELS); do \
|
|
||||||
- $(MAKE) MODELFLAGS="--model-$$model --stack-auto" PORT=$$model PORTDIR=$(BUILDDIR)/$$model-stack-auto PORTINCDIR=$(INCDIR)/mcs51 objects; \
|
|
||||||
+ $(MAKE) MODELFLAGS="--model-$$model --stack-auto --int-long-reent --float-reent" PORT=$$model PORTDIR=$(BUILDDIR)/$$model-stack-auto PORTINCDIR=$(INCDIR)/mcs51 objects; \
|
|
||||||
done \
|
|
||||||
fi
|
|
||||||
|
|
||||||
diff -u sdcc/device/include/stdarg.h.orig sdcc/device/include/stdarg.h
|
|
||||||
--- sdcc/device/include/stdarg.h.orig 2007-03-11 13:21:15.000000000 -0600
|
|
||||||
+++ sdcc/device/include/stdarg.h 2007-03-11 13:26:59.000000000 -0600
|
|
||||||
@@ -25,9 +25,9 @@
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
-typedef unsigned char __data * va_list ;
|
|
||||||
-#define va_arg(marker,type) *((type __data * )(marker -= sizeof(type)))
|
|
||||||
-#define va_start(marker,first) { marker = (va_list) ((char __data * )&first); }
|
|
||||||
+typedef unsigned char * va_list ;
|
|
||||||
+#define va_arg(marker,type) *((type * )(marker -= sizeof(type)))
|
|
||||||
+#define va_start(marker,first) { marker = (va_list) ((char * )&first); }
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# configs/pjrc-8051/setenv.sh
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2008, 2012 Gregory Nutt. All rights reserved.
|
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
|
||||||
#
|
|
||||||
# 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 NuttX nor the names of its 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.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [ "$_" = "$0" ] ; then
|
|
||||||
echo "You must source this script, not run it!" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
WD=`pwd`
|
|
||||||
if [ ! -x "setenv.sh" ]; then
|
|
||||||
echo "This script must be executed from the top-level NuttX build directory"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${PATH_ORIG}" ]; then
|
|
||||||
export PATH_ORIG="${PATH}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is the normal installation directory for SDCC under Linux, OSX
|
|
||||||
# or Linux:
|
|
||||||
#
|
|
||||||
export TOOLCHAIN_BIN=/usr/local/bin
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is the normal installation directory for SDCC under Windows
|
|
||||||
#
|
|
||||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/SDCC/bin"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Add the path to the toolchain to the PATH varialble
|
|
||||||
#
|
|
||||||
export PATH="${TOOLCHAIN_BIN}":/sbin:/usr/sbin:${PATH_ORIG}
|
|
||||||
echo "PATH : ${PATH}"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
/Make.dep
|
|
||||||
/.depend
|
|
||||||
/up_mem.h
|
|
||||||
/*.sym
|
|
||||||
/*.asm
|
|
||||||
/*.rel
|
|
||||||
/*.lst
|
|
||||||
/*.adb
|
|
||||||
/*.rst
|
|
||||||
/*.lib
|
|
||||||
/*.lnk
|
|
||||||
/*.map
|
|
||||||
/*.mem
|
|
||||||
/*.ihx
|
|
||||||
/*.hex
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
# configs/pjrc-8051/src/Makefile
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007, 2008, 2012 Gregory Nutt. All rights reserved.
|
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
|
||||||
#
|
|
||||||
# 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 NuttX nor the names of its 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
-include $(TOPDIR)/Make.defs
|
|
||||||
|
|
||||||
CFLAGS += -I$(TOPDIR)/sched
|
|
||||||
|
|
||||||
ASRCS =
|
|
||||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
|
||||||
CSRCS = up_leds.c
|
|
||||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
|
||||||
|
|
||||||
SRCS = $(ASRCS) $(CSRCS)
|
|
||||||
OBJS = $(AOBJS) $(COBJS)
|
|
||||||
|
|
||||||
CFLAGS += -I $(TOPDIR)/arch/$(CONFIG_ARCH)/src
|
|
||||||
|
|
||||||
all: libboard$(LIBEXT)
|
|
||||||
|
|
||||||
$(AOBJS): %$(OBJEXT): %.S
|
|
||||||
$(call ASSEMBLE, $<, $@)
|
|
||||||
|
|
||||||
$(COBJS) $(LINKOBJS): %$(OBJEXT): %.c
|
|
||||||
$(call COMPILE, $<, $@)
|
|
||||||
|
|
||||||
libboard$(LIBEXT): $(OBJS)
|
|
||||||
$(call ARCHIVE, $@, $(OBJS))
|
|
||||||
|
|
||||||
.depend: Makefile $(SRCS)
|
|
||||||
$(Q) $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
|
|
||||||
$(Q) touch $@
|
|
||||||
|
|
||||||
depend: .depend
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(call DELFILE, libboard$(LIBEXT))
|
|
||||||
$(call CLEAN)
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
$(call DELFILE, Make.dep)
|
|
||||||
$(call DELFILE, .depend)
|
|
||||||
|
|
||||||
-include Make.dep
|
|
||||||
@@ -1,207 +0,0 @@
|
|||||||
/************************************************************************
|
|
||||||
* up_leds.c
|
|
||||||
*
|
|
||||||
* Copyright (C) 2007, 2009, 2013 Gregory Nutt. All rights reserved.
|
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
|
||||||
*
|
|
||||||
* 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 Gregory Nutt nor the names of its 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.
|
|
||||||
*
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Included Files
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
#include <nuttx/config.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include "up_internal.h"
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Definitions
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
#define RESET_KLUDGE_NEEDED 1
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Private Data
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
static uint8_t g_ledstate;
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Private Functions
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_LEDS) && defined(CONFIG_ARCH_LEDS)
|
|
||||||
static void _up_puthex(uint8_t hex) __naked
|
|
||||||
{
|
|
||||||
hex; /* To avoid unreferenced argument warning */
|
|
||||||
_asm
|
|
||||||
mov a, dpl
|
|
||||||
ljmp PM2_ENTRY_PHEX
|
|
||||||
_endasm;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _up_putch(uint8_t ch) __naked
|
|
||||||
{
|
|
||||||
_asm
|
|
||||||
mov a, dpl
|
|
||||||
ljmp PM2_ENTRY_COUT
|
|
||||||
_endasm;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _up_putnl(void) __naked
|
|
||||||
{
|
|
||||||
_asm
|
|
||||||
ljmp PM2_ENTRY_NEWLINE
|
|
||||||
_endasm;
|
|
||||||
}
|
|
||||||
|
|
||||||
# define _up_showledinit() \
|
|
||||||
_up_putch('I'); \
|
|
||||||
_up_puthex(g_ledstate); _up_putch(':'); \
|
|
||||||
_up_puthex(p82c55_port_e); _up_putnl();
|
|
||||||
|
|
||||||
# define _up_showledreset() \
|
|
||||||
_up_putch('R'); \
|
|
||||||
_up_puthex(led); _up_putch(':'); \
|
|
||||||
_up_puthex(g_ledstate); _up_putch(':'); \
|
|
||||||
_up_puthex(p82c55_port_e); _up_putnl();
|
|
||||||
|
|
||||||
# define _up_showledon() \
|
|
||||||
_up_putch('+'); \
|
|
||||||
_up_puthex(led); _up_putch(':'); \
|
|
||||||
_up_puthex(g_ledstate); _up_putch(':'); \
|
|
||||||
_up_puthex(p82c55_port_e); _up_putnl();
|
|
||||||
|
|
||||||
# define _up_showledoff() \
|
|
||||||
_up_putch('-'); \
|
|
||||||
_up_puthex(led); _up_putch(':'); \
|
|
||||||
_up_puthex(g_ledstate); _up_putch(':'); \
|
|
||||||
_up_puthex(p82c55_port_e); _up_putnl();
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
# define _up_showledinit()
|
|
||||||
# define _up_showledreset()
|
|
||||||
# define _up_showledon()
|
|
||||||
# define _up_showledoff()
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Public Funtions
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Name: board_led_initialize
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_LEDS
|
|
||||||
void board_led_initialize(void)
|
|
||||||
{
|
|
||||||
/* Set all ports as outputs */
|
|
||||||
|
|
||||||
p82c55_def_config = 128;
|
|
||||||
|
|
||||||
/* Turn LED 1-7 off; turn LED 0 on */
|
|
||||||
|
|
||||||
g_ledstate = 0xfe;
|
|
||||||
p82c55_port_e = g_ledstate;
|
|
||||||
|
|
||||||
_up_showledinit();
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Name: board_led_on
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
void board_led_on(uint8_t led)
|
|
||||||
{
|
|
||||||
/* This may be called from an interrupt handler */
|
|
||||||
|
|
||||||
irqstate_t flags = irqsave();
|
|
||||||
|
|
||||||
#ifdef RESET_KLUDGE_NEEDED
|
|
||||||
/* I don't understand why this happens yet, but sometimes
|
|
||||||
* it is necessary to reconfigure port E.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (g_ledstate != p82c55_port_e)
|
|
||||||
{
|
|
||||||
_up_showledreset();
|
|
||||||
p82c55_def_config = 128;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Clear the bit in port E corresponding to LED to turn it on */
|
|
||||||
|
|
||||||
if (led < 8)
|
|
||||||
{
|
|
||||||
g_ledstate &= ~(g_ntobit[led]);
|
|
||||||
p82c55_port_e = g_ledstate;
|
|
||||||
}
|
|
||||||
|
|
||||||
_up_showledon();
|
|
||||||
irqrestore(flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Name: board_led_off
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
void board_led_off(uint8_t led)
|
|
||||||
{
|
|
||||||
/* This may be called from an interrupt handler */
|
|
||||||
|
|
||||||
irqstate_t flags = irqsave();
|
|
||||||
|
|
||||||
#ifdef RESET_KLUDGE_NEEDED
|
|
||||||
/* I don't understand why this happens yet, but sometimes
|
|
||||||
* it is necessary to reconfigure port E.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (g_ledstate != p82c55_port_e)
|
|
||||||
{
|
|
||||||
_up_showledreset();
|
|
||||||
p82c55_def_config = 128;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Set the bit in port E corresponding to LED to turn it off */
|
|
||||||
|
|
||||||
if (led < 8)
|
|
||||||
{
|
|
||||||
g_ledstate |= g_ntobit[led];
|
|
||||||
p82c55_port_e = g_ledstate;
|
|
||||||
}
|
|
||||||
|
|
||||||
_up_showledoff();
|
|
||||||
irqrestore(flags);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_ARCH_LEDS */
|
|
||||||
Reference in New Issue
Block a user