mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 23:23:13 +00:00
2005-07-07 Philippe Simons <loki_666@fastmail.fm>
* Makefile.am: Remove lcd.rel, added console/uart.c, removed conio stuffs. * console/conio.c, console/console.c, console/defaultfont.c, include/conio.h : files removed. * console/uart.c: New file. * include/bsp.h: lcd.c prototypes removed. * startup/bspstart.c: bsp_reset() cause gp32 to reset to bios, added a bsp_idle_task which put s3c2400 in a "wait for IRQ" state.
This commit is contained in:
@@ -1,3 +1,14 @@
|
||||
2005-07-07 Philippe Simons <loki_666@fastmail.fm>
|
||||
|
||||
* Makefile.am: Remove lcd.rel, added console/uart.c,
|
||||
removed conio stuffs.
|
||||
* console/conio.c, console/console.c, console/defaultfont.c,
|
||||
include/conio.h : files removed.
|
||||
* console/uart.c: New file.
|
||||
* include/bsp.h: lcd.c prototypes removed.
|
||||
* startup/bspstart.c: bsp_reset() cause gp32 to reset to bios,
|
||||
added a bsp_idle_task which put s3c2400 in a "wait for IRQ" state.
|
||||
|
||||
2005-06-06 Philippe Simons <loki_666@fastmail.fm>
|
||||
|
||||
* Makefile.am: Include lcd.rel.
|
||||
|
||||
@@ -10,7 +10,6 @@ include $(top_srcdir)/../../bsp.am
|
||||
dist_project_lib_DATA = bsp_specs
|
||||
|
||||
include_HEADERS = include/bsp.h
|
||||
include_HEADERS += include/conio.h
|
||||
include_HEADERS += include/tm27.h
|
||||
|
||||
nodist_include_HEADERS = include/bspopts.h
|
||||
@@ -36,7 +35,7 @@ startup_rel_CPPFLAGS = $(AM_CPPFLAGS)
|
||||
startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||
|
||||
noinst_PROGRAMS += console.rel
|
||||
console_rel_SOURCES = console/conio.c console/defaultfont.c console/console.c
|
||||
console_rel_SOURCES = console/uart.c ../../shared/console.c
|
||||
console_rel_CPPFLAGS = $(AM_CPPFLAGS)
|
||||
console_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||
|
||||
@@ -46,8 +45,7 @@ libbsp_a_LIBADD = startup.rel console.rel
|
||||
libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/shared/arm920.rel \
|
||||
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/clock.rel \
|
||||
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/timer.rel \
|
||||
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/irq.rel \
|
||||
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/lcd.rel
|
||||
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/irq.rel
|
||||
|
||||
all-local: $(PREINSTALL_FILES) $(TMPINSTALL_FILES)
|
||||
|
||||
@@ -73,10 +71,6 @@ $(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
|
||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
|
||||
|
||||
$(PROJECT_INCLUDE)/conio.h: include/conio.h $(PROJECT_INCLUDE)/$(dirstamp)
|
||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/conio.h
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/conio.h
|
||||
|
||||
$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
|
||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
|
||||
|
||||
@@ -1,360 +0,0 @@
|
||||
/*
|
||||
* conio.c : ARM GBA BSP
|
||||
*
|
||||
* This file contains the GBA conio I/O package.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||
*
|
||||
* This source file is based on work by Rafael Vuijk (aka Dark Fader)
|
||||
* MyLib by Rafael Vuijk (aka Dark Fader)
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Includes *
|
||||
*---------------------------------------------------------------------------*/
|
||||
#include <rtems/score/types.h>
|
||||
#include <s3c2400.h>
|
||||
#include <bsp.h>
|
||||
#include <conio.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#define gp_initButtons() {rPBCON=0x0;}
|
||||
#define gp_getButtons() ((((~rPEDAT >> 6) & 0x3) << 8) | \
|
||||
((~rPBDAT >> 8) & 0xFF))
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Defines *
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define DEFAULT_FONT_WIDTH 4
|
||||
#define DEFAULT_FONT_HEIGHT 6
|
||||
#define W (LCD_WIDTH/DEFAULT_FONT_WIDTH)
|
||||
#define H (LCD_HEIGHT/DEFAULT_FONT_HEIGHT)
|
||||
|
||||
typedef unsigned char Bitmap[LCD_HEIGHT][LCD_WIDTH];
|
||||
#define GP32_CONIO_VRAM 0x0c7ed000
|
||||
#define bg_bitmap (*(Bitmap *)GP32_CONIO_VRAM)
|
||||
|
||||
/* color conversion */
|
||||
#define RGB(r,g,b) ( (r)<<11 | (g)<<6 | (b)<<1 )
|
||||
|
||||
int _wherex;
|
||||
int _wherey;
|
||||
int _textattr;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Defaultfont *
|
||||
*---------------------------------------------------------------------------*/
|
||||
#include "defaultfont.c"
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_gotoxy *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_gotoxy(int _x, int _y)
|
||||
{
|
||||
_wherex = _x;
|
||||
_wherey = _y;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* PutChar *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void PutChar(char c, int textattr, int x, int y)
|
||||
{
|
||||
int f = textattr & 0x0F;
|
||||
int b = textattr >> 4;
|
||||
uint32_t fmask = f | (f << 8) | (f << 16) | (f << 24);
|
||||
uint32_t bmask = b | (b << 8) | (b << 16) | (b << 24);
|
||||
uint32_t *dest = (uint32_t *)&bg_bitmap[((y << 1) + y) << 1][x << 2];
|
||||
const uint32_t *src = (uint32_t *)&(font3x5[(int)c]);
|
||||
uint32_t s;
|
||||
|
||||
s = *src++;
|
||||
*dest = (fmask&s) | (bmask&~s);
|
||||
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||
|
||||
s = *src++;
|
||||
*dest = (fmask&s) | (bmask&~s);
|
||||
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||
|
||||
s = *src++;
|
||||
*dest = (fmask&s) | (bmask&~s);
|
||||
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||
|
||||
s = *src++;
|
||||
*dest = (fmask&s) | (bmask&~s);
|
||||
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||
|
||||
s = *src++;
|
||||
*dest = (fmask&s) | (bmask&~s);
|
||||
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||
|
||||
s = *src++;
|
||||
*dest = (fmask&s) | (bmask&~s);
|
||||
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_textattr *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_textattr(int _attr)
|
||||
{
|
||||
_textattr = _attr;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_textbackground *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_textbackground(int _color)
|
||||
{
|
||||
_textattr = (_textattr & 0x0F) | (_color << 4);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_textcolor *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_textcolor(int _color)
|
||||
{
|
||||
_textattr = (_textattr & 0xF0) | (_color);
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* ClrLine *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ClrLine(int y)
|
||||
{
|
||||
int x;
|
||||
|
||||
for(x=0 ; x<=W ; x++) PutChar(0, _textattr, x, y);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* NextLine *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void NextLine()
|
||||
{
|
||||
_wherex = 0;
|
||||
|
||||
if (++_wherey >= H) {
|
||||
_wherey = 0;
|
||||
}
|
||||
|
||||
ClrLine(_wherey);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* clrscr *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_clrscr()
|
||||
{
|
||||
int y;
|
||||
|
||||
for(y=0 ; y<=H ; y++) {
|
||||
ClrLine(y);
|
||||
}
|
||||
|
||||
gpconio_gotoxy(0,0);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_put *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_put(char _c)
|
||||
{
|
||||
/* We have save some memory with fonts */
|
||||
_c = _c & 0x7F; /* no extened chars */
|
||||
_c = _c - 0x20; /* no cntr chars */
|
||||
PutChar(_c, _textattr, _wherex, _wherey);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_putch *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_putch(char _c)
|
||||
{
|
||||
switch (_c) {
|
||||
case ASCII_LF:
|
||||
NextLine();
|
||||
break;
|
||||
case ASCII_CR:
|
||||
gpconio_gotoxy(0, _wherey);
|
||||
break;
|
||||
default:
|
||||
gpconio_put(_c);
|
||||
if (++_wherex >= W) {
|
||||
NextLine();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_puts *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_puts(const char *_str)
|
||||
{
|
||||
while (*_str) {
|
||||
gpconio_putch(*_str++);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_printf *
|
||||
*---------------------------------------------------------------------------*/
|
||||
int gpconio_printf(const char *_format, ...)
|
||||
{
|
||||
char s[256];
|
||||
va_list marker;
|
||||
va_start(marker, _format);
|
||||
int r = vsprintf(s, _format, marker);
|
||||
|
||||
va_end(marker);
|
||||
gpconio_puts(s);
|
||||
return r;
|
||||
}
|
||||
|
||||
void ShowConIO()
|
||||
{
|
||||
unsigned short BPPMODE = 11;
|
||||
unsigned short CLKVAL = (get_HCLK()/(83385*2*60))-1;
|
||||
uint32_t LCDBANK = GP32_CONIO_VRAM >> 22;
|
||||
uint32_t LCDBASEU = (GP32_CONIO_VRAM & 0x3FFFFF) >> 1;
|
||||
uint32_t LCDBASEL;
|
||||
unsigned short OFFSIZE = 0;
|
||||
unsigned short PAGEWIDTH;
|
||||
|
||||
rLCDCON1 = (CLKVAL<<8) | (0<<7) | (3<<5) | (BPPMODE<<1) | (1<<0) ;
|
||||
rLCDCON2 = 0;
|
||||
rLCDCON2 = (1<<24) | (319<<14) | (2<<6) | (1<<0) ;
|
||||
rLCDCON3 = 0;
|
||||
rLCDCON3 = (6<<19) | (239<<8) | (2<<0) ;
|
||||
rLCDCON4 = 0;
|
||||
rLCDCON4 = (0<<24) | (0<<16) | (0<<8) | (4<<0) ;
|
||||
rLCDCON5 = 0;
|
||||
rLCDCON5 = ((1<<10) | (1<<9) | (1<<8) | (0<<7) |
|
||||
(0<<6) | (0<<4) | (0<<2) | (1<<1) | (0<<0)) ;
|
||||
|
||||
LCDBASEL = LCDBASEU + 320*120;
|
||||
PAGEWIDTH = 120;
|
||||
|
||||
rLCDSADDR1 = (LCDBANK<<21) | (LCDBASEU<<0) ;
|
||||
rLCDSADDR2 = (LCDBASEL<<0) ;
|
||||
rLCDSADDR3 = (OFFSIZE<<11) | (PAGEWIDTH<<0) ;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* InitConIO *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void InitConIO()
|
||||
{
|
||||
ShowConIO();
|
||||
|
||||
gp_initButtons();
|
||||
gpconio_textattr(0);
|
||||
gpconio_textcolor(DEF_TEXTCOLOR);
|
||||
gpconio_textbackground(DEF_TEXTBACKGROUND);
|
||||
gpconio_clrscr();
|
||||
}
|
||||
|
||||
|
||||
static void delay_loop(unsigned int count)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < count; i++) {
|
||||
i = i;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* gp32_getch *
|
||||
*---------------------------------------------------------------------------*/
|
||||
static unsigned char inputch = ASCII_CR;
|
||||
char gpconio_getch(void)
|
||||
{
|
||||
int keyx;
|
||||
int key = 0;
|
||||
|
||||
while(1) {
|
||||
key = gp_getButtons();
|
||||
|
||||
do {
|
||||
keyx = gp_getButtons();
|
||||
} while (keyx == key);
|
||||
|
||||
switch (key) {
|
||||
case GP32_KEY_SELECT:
|
||||
gpconio_put(inputch);
|
||||
return inputch;
|
||||
break;
|
||||
|
||||
case GP32_KEY_START:
|
||||
gpconio_put(' ');
|
||||
inputch = ASCII_CR;
|
||||
return inputch;
|
||||
break;
|
||||
|
||||
case GP32_KEY_A:
|
||||
inputch = 'A';
|
||||
break;
|
||||
|
||||
case GP32_KEY_B:
|
||||
inputch = 'Z';
|
||||
break;
|
||||
|
||||
case GP32_KEY_UP:
|
||||
if ((inputch-1) >= 0x20) {
|
||||
inputch--;
|
||||
}
|
||||
break;
|
||||
|
||||
case GP32_KEY_DOWN:
|
||||
if ((inputch+1) <= 0x7E) {
|
||||
inputch++;
|
||||
}
|
||||
break;
|
||||
|
||||
case GP32_KEY_LEFT:
|
||||
if ((inputch - 0x20) >= 0x20) {
|
||||
inputch -= 0x20;
|
||||
}
|
||||
break;
|
||||
|
||||
case GP32_KEY_RIGHT:
|
||||
if ((inputch + 0x20) <= 0x7E) {
|
||||
inputch += 0x20;
|
||||
}
|
||||
break;
|
||||
|
||||
case GP32_KEY_R:
|
||||
inputch = '1';
|
||||
break;
|
||||
|
||||
case GP32_KEY_L:
|
||||
inputch = '9';
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
gpconio_put(inputch);
|
||||
delay_loop(10000);
|
||||
}
|
||||
}
|
||||
@@ -1,176 +0,0 @@
|
||||
/*
|
||||
* console.c : ARM GBA BSP
|
||||
*
|
||||
* This file contains the GBA console I/O package.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <bsp.h>
|
||||
#include <rtems/bspIo.h>
|
||||
#include <rtems/libio.h>
|
||||
#include <rtems/termiostypes.h>
|
||||
#include <termios.h>
|
||||
#include <irq.h>
|
||||
#include <s3c2400.h>
|
||||
#include <conio.h>
|
||||
|
||||
/*
|
||||
* BSP initialization
|
||||
*/
|
||||
|
||||
static int gp32_pollRead(int minor)
|
||||
{
|
||||
return(gpconio_getch());
|
||||
}
|
||||
|
||||
static int gp32_write(int minor, const char *buf, int len)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < len; i++) {
|
||||
gpconio_putch((unsigned short)buf[i]);
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
/* for printk support */
|
||||
BSP_output_char_function_type BSP_output_char = (BSP_output_char_function_type) gpconio_putch;
|
||||
BSP_polling_getchar_function_type BSP_poll_char = (BSP_polling_getchar_function_type) gpconio_getch;
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Console device driver INITIALIZE entry point.
|
||||
+--------------------------------------------------------------------------+
|
||||
| Initilizes the I/O console (keyboard + VGA display) driver.
|
||||
+--------------------------------------------------------------------------*/
|
||||
rtems_device_driver
|
||||
console_initialize(rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void *arg)
|
||||
{
|
||||
rtems_status_code status;
|
||||
|
||||
/*
|
||||
* Set up TERMIOS
|
||||
*/
|
||||
rtems_termios_initialize ();
|
||||
|
||||
/*
|
||||
* Do device-specific initialization
|
||||
*/
|
||||
InitConIO();
|
||||
|
||||
/*
|
||||
* Register the device
|
||||
*/
|
||||
status = rtems_io_register_name ("/dev/console", major, 0);
|
||||
if (status != RTEMS_SUCCESSFUL) {
|
||||
printk("Error registering console device!\n");
|
||||
rtems_fatal_error_occurred (status);
|
||||
}
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Console device driver OPEN entry point
|
||||
+--------------------------------------------------------------------------*/
|
||||
rtems_device_driver
|
||||
console_open(rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void *arg)
|
||||
{
|
||||
rtems_status_code status;
|
||||
static rtems_termios_callbacks cb =
|
||||
{
|
||||
NULL, /* firstOpen */
|
||||
NULL, /* lastClose */
|
||||
gp32_pollRead, /* pollRead */
|
||||
gp32_write, /* write */
|
||||
NULL, /* setAttributes */
|
||||
NULL, /* stopRemoteTx */
|
||||
NULL, /* startRemoteTx */
|
||||
TERMIOS_POLLED /* 1 = outputUsesInterrupts */
|
||||
};
|
||||
|
||||
status = rtems_termios_open (major, minor, arg, &cb);
|
||||
|
||||
if(status != RTEMS_SUCCESSFUL) {
|
||||
printk("Error openning console device\n");
|
||||
return status;
|
||||
}
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Console device driver CLOSE entry point
|
||||
+--------------------------------------------------------------------------*/
|
||||
rtems_device_driver
|
||||
console_close(rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void *arg)
|
||||
{
|
||||
rtems_device_driver res = RTEMS_SUCCESSFUL;
|
||||
|
||||
res = rtems_termios_close (arg);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Console device driver READ entry point.
|
||||
+--------------------------------------------------------------------------+
|
||||
| Read characters from the I/O console. We only have stdin.
|
||||
+--------------------------------------------------------------------------*/
|
||||
rtems_device_driver
|
||||
console_read(rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void *arg)
|
||||
{
|
||||
return rtems_termios_read (arg);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Console device driver WRITE entry point.
|
||||
+--------------------------------------------------------------------------+
|
||||
| Write characters to the I/O console. Stderr and stdout are the same.
|
||||
+--------------------------------------------------------------------------*/
|
||||
rtems_device_driver
|
||||
console_write(rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg)
|
||||
{
|
||||
return rtems_termios_write (arg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Handle ioctl request.
|
||||
*/
|
||||
rtems_device_driver
|
||||
console_control(rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg
|
||||
)
|
||||
{
|
||||
return rtems_termios_ioctl (arg);
|
||||
}
|
||||
@@ -1,600 +0,0 @@
|
||||
/*
|
||||
* defaultfont.c : ARM GBA BSP
|
||||
*
|
||||
* This file contains default font definitions
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define X 255
|
||||
#define GEN_FONT_DATA(a,b,c,d) ( ((d) << 24) | \
|
||||
((c) << 16) | \
|
||||
((b) << 8) | \
|
||||
((a) << 0) )
|
||||
|
||||
static const unsigned long font3x5[256][6] = {
|
||||
{ /* ' ' - ascii:0x20 font:0x00 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '!' - ascii:0x21 font:0x01 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* '"' - ascii:0x22 font:0x02 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '#' - ascii:0x23 font:0x03 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* '$' - ascii:0x24 font:0x04 */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* '%' - ascii:0x25 font:0x05 */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 )
|
||||
},{ /* '&' - ascii:0x26 font:0x06 */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* ''' - ascii:0x27 font:0x07 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '(' - ascii:0x28 font:0x08 */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X )
|
||||
},{ /* ')' - ascii:0x29 font:0x09 */
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 )
|
||||
},{ /* '*' - ascii:0x2A font:0x0A */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '+' - ascii:0x2B font:0x0B */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '<27>' - ascii:0x2C font:0x0C */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '-' - ascii:0x2D font:0x0D */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '.' - ascii:0x2E font:0x0E */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
},{ /* '/' - ascii:0x2F font:0x0F */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( X,0,0,0 )
|
||||
},{ /* '0' - ascii:0x30 font:0x10 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '1' - ascii:0x31 font:0x11 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '2' - ascii:0x32 font:0x12 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '3' - ascii:0x33 font:0x13 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '4' - ascii:0x34 font:0x14 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X )
|
||||
},{ /* '5' - ascii:0x35 font:0x15 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '6' - ascii:0x36 font:0x16 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '7' - ascii:0x37 font:0x17 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* '8' - ascii:0x38 font:0x18 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '9' - ascii:0x39 font:0x19 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* ':' - ascii:0x3A font:0x1A */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
},{ /* ';' - ascii:0x3B font:0x1B */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
},{ /* '<' - ascii:0x3C font:0x1C */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X )
|
||||
},{ /* '=' - ascii:0x3D font:0x1D */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '>' - ascii:0x3E font:0x1E */
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 )
|
||||
},{ /* '?' - ascii:0x3F font:0x1F */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* '@' - ascii:0x40 font:0x20 */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'A' - ascii:0x41 font:0x21 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'B' - ascii:0x42 font:0x22 */
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 )
|
||||
},{ /* 'C' - ascii:0x43 font:0x23 */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'D' - ascii:0x44 font:0x24 */
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
},{ /* 'E' - ascii:0x45 font:0x25 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* 'F' - ascii:0x46 font:0x26 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
},{ /* 'G' - ascii:0x47 font:0x27 */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'H' - ascii:0x48 font:0x28 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'I' - ascii:0x49 font:0x29 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* 'J' - ascii:0x4A font:0x2A */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* 'K' - ascii:0x4B font:0x2B */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'L' - ascii:0x4C font:0x2C */
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* 'M' - ascii:0x4D font:0x2D */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'N' - ascii:0x4E font:0x2E */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'O' - ascii:0x4F font:0x2F */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* 'P' - ascii:0x50 font:0x30 */
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
},{ /* 'Q' - ascii:0x51 font:0x31 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'R' - ascii:0x52 font:0x33 */
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'S' - ascii:0x53 font:0x33 */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 )
|
||||
},{ /* 'T' - ascii:0x54 font:0x34 */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
},{ /* 'U' - ascii:0x55 font:0x35 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* 'V' - ascii:0x56 font:0x36 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
},{ /* 'W' - ascii:0x57 font:0x37 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
},{ /* 'X' - ascii:0x58 font:0x38 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'Y' - ascii:0x59 font:0x39 */
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
},{ /* 'Z' - ascii:0x5A font:0x3A */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '[' - ascii:0x5B font:0x3B */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '\' - ascii:0x5C font:0x3C */
|
||||
GEN_FONT_DATA( X,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* ']' - ascii:0x5D font:0x3D */
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '^' - ascii:0x5E font:0x3E */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '_' - ascii:0x5F font:0x3F */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '<27>' - ascii:0x60 font:0x30 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* 'a' - ascii:0x31 font:0x31 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* 'b' - ascii:0x62 font:0x32 */
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 )
|
||||
},{ /* 'c' - ascii:0x63 font:0x33 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'd' - ascii:0x64 font:0x34 */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
},{ /* 'e' - ascii:0x65 font:0x35 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'f' - ascii:0x66 font:0x36 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
},{ /* 'g' - ascii:0x67 font:0x37 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 )
|
||||
},{ /* 'h' - ascii:0x68 font:0x38 */
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'i' - ascii:0x69 font:0x39 */
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* 'j' - ascii:0x6A font:0x3A */
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* 'k' - ascii:0x6B font:0x3B */
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'l' - ascii:0x6C font:0x3C */
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* 'm' - ascii:0x6D font:0x3D */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'n' - ascii:0x6E font:0x3E */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'o' - ascii:0x6F font:0x6F */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 )
|
||||
},{ /* 'p' - ascii:0x70 font:0x40 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
},{ /* 'q' - ascii:0x71 font:0x41 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X )
|
||||
},{ /* 'r' - ascii:0x72 font:0x43 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 )
|
||||
},{ /* 's' - ascii:0x73 font:0x43 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,X,X,0 )
|
||||
},{ /* 't' - ascii:0x74 font:0x44 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
},{ /* 'u' - ascii:0x75 font:0x45 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* 'v' - ascii:0x76 font:0x46 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
},{ /* 'w' - ascii:0x77 font:0x47 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
},{ /* 'x' - ascii:0x78 font:0x48 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X )
|
||||
},{ /* 'y' - ascii:0x79 font:0x49 */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
},{ /* 'z' - ascii:0x7A font:0x4A */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X )
|
||||
},{ /* '{' - ascii:0x7B font:0x4B */
|
||||
GEN_FONT_DATA( 0,0,X,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,X )
|
||||
},{ /* '\' - ascii:0x7C font:0x4C */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* '}' - ascii:0x7D font:0x4D */
|
||||
GEN_FONT_DATA( 0,X,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,X,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,0 )
|
||||
},{ /* '~' - ascii:0x7E font:0x4E */
|
||||
GEN_FONT_DATA( 0,0,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,0,0 ),
|
||||
GEN_FONT_DATA( 0,X,X,X ),
|
||||
GEN_FONT_DATA( 0,0,0,X ),
|
||||
GEN_FONT_DATA( 0,0,0,0 )
|
||||
},{ /* DEL - ascii:0x7F font:0x4F */
|
||||
GEN_FONT_DATA( X,X,X,X ),
|
||||
GEN_FONT_DATA( X,X,X,X ),
|
||||
GEN_FONT_DATA( X,X,X,X ),
|
||||
GEN_FONT_DATA( X,X,X,X ),
|
||||
GEN_FONT_DATA( X,X,X,X )
|
||||
}
|
||||
};
|
||||
249
c/src/lib/libbsp/arm/gp32/console/uart.c
Normal file
249
c/src/lib/libbsp/arm/gp32/console/uart.c
Normal file
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* console driver for S3C2400 UARTs
|
||||
*
|
||||
* This driver uses the shared console driver in
|
||||
* ...../libbsp/shared/console.c
|
||||
*
|
||||
* If you want the driver to be interrupt driven, you
|
||||
* need to write the ISR, and in the ISR insert the
|
||||
* chars into termios's queue.
|
||||
*
|
||||
* Copyright (c) 2004 Cogent Computer Systems
|
||||
* Written by Jay Monkman <jtm@lopingdog.com>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
*
|
||||
* http://www.OARcorp.com/rtems/license.html.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
#include <bsp.h> /* Must be before libio.h */
|
||||
#include <rtems/libio.h>
|
||||
#include <termios.h>
|
||||
#include <rtems/bspIo.h>
|
||||
|
||||
/* Put the CPU (or UART) specific header file #include here */
|
||||
#include <s3c2400.h>
|
||||
#include <libchip/serial.h>
|
||||
#include <libchip/sersupp.h>
|
||||
|
||||
/* How many serial ports? */
|
||||
#define NUM_DEVS 1
|
||||
|
||||
int uart_poll_read(int minor);
|
||||
|
||||
int dbg_dly;
|
||||
|
||||
/* static function prototypes */
|
||||
static int uart_first_open(int major, int minor, void *arg);
|
||||
static int uart_last_close(int major, int minor, void *arg);
|
||||
static int uart_read(int minor);
|
||||
static int uart_write(int minor, const char *buf, int len);
|
||||
static void uart_init(int minor);
|
||||
static void uart_write_polled(int minor, char c);
|
||||
static int uart_set_attributes(int minor, const struct termios *t);
|
||||
|
||||
/* These are used by code in console.c */
|
||||
unsigned long Console_Port_Count = NUM_DEVS;
|
||||
console_data Console_Port_Data[NUM_DEVS];
|
||||
|
||||
/* rtems console uses the following minor number */
|
||||
rtems_device_minor_number Console_Port_Minor = 0;
|
||||
|
||||
/* Pointers to functions for handling the UART. */
|
||||
console_fns uart_fns =
|
||||
{
|
||||
libchip_serial_default_probe,
|
||||
uart_first_open,
|
||||
uart_last_close,
|
||||
uart_read,
|
||||
uart_write,
|
||||
uart_init,
|
||||
uart_write_polled, /* not used in this driver */
|
||||
uart_set_attributes,
|
||||
FALSE /* TRUE if interrupt driven, FALSE if not. */
|
||||
};
|
||||
|
||||
/*
|
||||
* There's one item in array for each UART.
|
||||
*
|
||||
* Some of these fields are marked "NOT USED". They are not used
|
||||
* by console.c, but may be used by drivers in libchip
|
||||
*
|
||||
*/
|
||||
console_tbl Console_Port_Tbl[] = {
|
||||
{
|
||||
"/dev/com0", /* sDeviceName */
|
||||
SERIAL_CUSTOM, /* deviceType */
|
||||
&uart_fns, /* pDeviceFns */
|
||||
NULL, /* deviceProbe */
|
||||
NULL, /* pDeviceFlow */
|
||||
0, /* ulMargin - NOT USED */
|
||||
0, /* ulHysteresis - NOT USED */
|
||||
NULL, /* pDeviceParams */
|
||||
0, /* ulCtrlPort1 - NOT USED */
|
||||
0, /* ulCtrlPort2 - NOT USED */
|
||||
0, /* ulDataPort - NOT USED */
|
||||
NULL, /* getRegister - NOT USED */
|
||||
NULL, /* setRegister - NOT USED */
|
||||
NULL, /* getData - NOT USED */
|
||||
NULL, /* setData - NOT USED */
|
||||
0, /* ulClock - NOT USED */
|
||||
0 /* ulIntVector - NOT USED */
|
||||
}
|
||||
};
|
||||
|
||||
/*********************************************************************/
|
||||
/* Functions called via termios callbacks (i.e. the ones in uart_fns */
|
||||
/*********************************************************************/
|
||||
|
||||
/*
|
||||
* This is called the first time each device is opened. If the driver
|
||||
* is interrupt driven, you should enable interrupts here. Otherwise,
|
||||
* it's probably safe to do nothing.
|
||||
*
|
||||
* Since micromonitor already set up the UART, we do nothing.
|
||||
*/
|
||||
static int uart_first_open(int major, int minor, void *arg)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This is called the last time each device is closed. If the driver
|
||||
* is interrupt driven, you should disable interrupts here. Otherwise,
|
||||
* it's probably safe to do nothing.
|
||||
*/
|
||||
static int uart_last_close(int major, int minor, void *arg)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Read one character from UART.
|
||||
*
|
||||
* Return -1 if there's no data, otherwise return
|
||||
* the character in lowest 8 bits of returned int.
|
||||
*/
|
||||
static int uart_read(int minor)
|
||||
{
|
||||
char c;
|
||||
|
||||
if (minor == 0) {
|
||||
if (rUTRSTAT0 & 0x1) {
|
||||
c = rURXH0 & 0xff;
|
||||
return c;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
printk("Unknown console minor number: %d\n", minor);
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Write buffer to UART
|
||||
*
|
||||
* return 1 on success, -1 on error
|
||||
*/
|
||||
static int uart_write(int minor, const char *buf, int len)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (minor == 0) {
|
||||
for (i = 0; i < len; i++) {
|
||||
/* Wait for fifo to have room */
|
||||
while(!(rUTRSTAT0 & 0x2)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
rUTXH0 = (char) buf[i];
|
||||
}
|
||||
} else {
|
||||
printk("Unknown console minor number: %d\n", minor);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Set up the UART. */
|
||||
static void uart_init(int minor)
|
||||
{
|
||||
int i;
|
||||
unsigned int reg = 0;
|
||||
|
||||
/* enable UART0 */
|
||||
rCLKCON|=0x100;
|
||||
|
||||
/* value is calculated so : (int)(PCLK/16./baudrate) -1 */
|
||||
reg = get_PCLK() / (16 * 115200) - 1;
|
||||
|
||||
/* FIFO enable, Tx/Rx FIFO clear */
|
||||
rUFCON0 = 0x07;
|
||||
rUMCON0 = 0x0;
|
||||
/* Normal,No parity,1 stop,8 bit */
|
||||
rULCON0 = 0x3;
|
||||
/*
|
||||
* tx=level,rx=edge,disable timeout int.,enable rx error int.,
|
||||
* normal,interrupt or polling
|
||||
*/
|
||||
rUCON0 = 0x245;
|
||||
rUBRDIV0 = reg;
|
||||
|
||||
for (i = 0; i < 100; i++);
|
||||
|
||||
}
|
||||
|
||||
/* I'm not sure this is needed for the shared console driver. */
|
||||
static void uart_write_polled(int minor, char c)
|
||||
{
|
||||
uart_write(minor, &c, 1);
|
||||
}
|
||||
|
||||
/* This is for setting baud rate, bits, etc. */
|
||||
static int uart_set_attributes(int minor, const struct termios *t)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************/
|
||||
/*
|
||||
* The following functions are not used by TERMIOS, but other RTEMS
|
||||
* functions use them instead.
|
||||
*/
|
||||
/***********************************************************************/
|
||||
/*
|
||||
* Read from UART. This is used in the exit code, and can't
|
||||
* rely on interrupts.
|
||||
*/
|
||||
int uart_poll_read(int minor)
|
||||
{
|
||||
return uart_read(minor);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Write a character to the console. This is used by printk() and
|
||||
* maybe other low level functions. It should not use interrupts or any
|
||||
* RTEMS system calls. It needs to be very simple
|
||||
*/
|
||||
static void _BSP_put_char( char c ) {
|
||||
uart_write_polled(0, c);
|
||||
if (c == '\n') {
|
||||
uart_write_polled(0, '\r');
|
||||
}
|
||||
}
|
||||
|
||||
BSP_output_char_function_type BSP_output_char = _BSP_put_char;
|
||||
|
||||
|
||||
|
||||
@@ -32,9 +32,6 @@ extern "C" {
|
||||
|
||||
extern rtems_configuration_table BSP_Configuration;
|
||||
|
||||
void gp32_setFramebuffer(void *add);
|
||||
short gp32_initFramebufferN(void *add, uint32_t bitmode, uint32_t refreshrate);
|
||||
short gp32_initFramebufferBP(void *add, uint32_t bitmode, uint32_t refreshrate);
|
||||
#define gp32_initButtons() {rPBCON=0x0;}
|
||||
#define gp32_getButtons() ( (((~rPEDAT >> 6) & 0x3 )<<8) | (((~rPBDAT >> 8) & 0xFF)<<0) )
|
||||
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
* conio.h : ARM GP32 BSP
|
||||
*
|
||||
* This file contains the GP32 conio I/O package.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _CONIO_H
|
||||
#define _CONIO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Defines *
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define ASCII_BEL 0x07 /* bell */
|
||||
#define ASCII_BS 0x08 /* backspace */
|
||||
#define ASCII_TAB 0x09 /* horizontal tab */
|
||||
#define ASCII_LF 0x0A /* line feed */
|
||||
#define ASCII_CR 0x0D /* carriage return */
|
||||
#define ASCII_XON 0x11 /* control-Q */
|
||||
#define ASCII_XOFF 0x13 /* control-S */
|
||||
#define ASCII_ESC 0x1B /* escape */
|
||||
|
||||
enum COLORS
|
||||
{
|
||||
BLACK,
|
||||
BLUE,
|
||||
GREEN,
|
||||
CYAN,
|
||||
RED,
|
||||
MAGENTA,
|
||||
BROWN,
|
||||
LIGHTGRAY,
|
||||
DARKGRAY,
|
||||
LIGHTBLUE,
|
||||
LIGHTGREEN,
|
||||
LIGHTCYAN,
|
||||
LIGHTRED,
|
||||
LIGHTMAGENTA,
|
||||
YELLOW,
|
||||
WHITE,
|
||||
MAXCOLORS
|
||||
};
|
||||
|
||||
#define DEF_TEXTCOLOR BLACK
|
||||
#define DEF_TEXTBACKGROUND WHITE
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Prototypes *
|
||||
*---------------------------------------------------------------------------*/
|
||||
void gpconio_clrscr();
|
||||
void gpconio_textattr(int _attr);
|
||||
void gpconio_textbackground(int _color);
|
||||
void gpconio_textcolor(int _color);
|
||||
void gpconio_putch(char _c);
|
||||
void gpconio_puts(const char *_str);
|
||||
int gpconio_printf(const char *_format, ...);
|
||||
void gpconio_gotoxy(int _x, int _y);
|
||||
|
||||
char gpconio_getch(void);
|
||||
char gpconio_getch_noblock(void);
|
||||
|
||||
void InitConIO();
|
||||
void ShowConIO();
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _CONIO_H
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <rtems/libio.h>
|
||||
#include <rtems/bspIo.h>
|
||||
#include <s3c2400.h>
|
||||
#include <conio.h>
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Global Variables
|
||||
@@ -80,6 +79,13 @@ void bsp_pretasking_hook(void)
|
||||
|
||||
} /* bsp_pretasking_hook */
|
||||
|
||||
void bsp_idle_task(void)
|
||||
{
|
||||
while(1){
|
||||
asm volatile ("MCR p15,0,r0,c7,c0,4 \n");
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Function: bsp_start
|
||||
| Description: Called before main is invoked.
|
||||
@@ -98,16 +104,12 @@ void bsp_start_default( void )
|
||||
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
|
||||
Cpu_table.predriver_hook = NULL; /* use system's */
|
||||
Cpu_table.postdriver_hook = bsp_postdriver_hook;
|
||||
Cpu_table.idle_task = NULL;
|
||||
Cpu_table.idle_task = bsp_idle_task;
|
||||
|
||||
Cpu_table.do_zero_of_workspace = TRUE;
|
||||
Cpu_table.interrupt_stack_size = 4096;
|
||||
Cpu_table.extra_mpci_receive_server_stack = 0;
|
||||
|
||||
/* setup rCLKCON */
|
||||
/* disable all but IIS,IIC,PWMTIMER and LCD */
|
||||
rCLKCON=0x6048;
|
||||
|
||||
/* stop RTC */
|
||||
rTICINT=0x0;
|
||||
|
||||
@@ -119,9 +121,8 @@ void bsp_start_default( void )
|
||||
/* disable interrupts */
|
||||
rINTMOD=0x0;
|
||||
rINTMSK=BIT_ALLMSK; /* unmasked by drivers */
|
||||
/*rSRCPND=BIT_ALLMSK;
|
||||
rINTMSK=BIT_ALLMSK;
|
||||
rINTPND=BIT_ALLMSK;*/
|
||||
|
||||
last=0;
|
||||
for(i=0; i<4; i++) {
|
||||
pend=rSRCPND;
|
||||
if(pend == 0 || pend == last)
|
||||
@@ -200,6 +201,27 @@ void bsp_reset(void)
|
||||
rtems_interrupt_level level;
|
||||
_CPU_ISR_Disable(level);
|
||||
printk("bsp_reset.....\n");
|
||||
ShowConIO();
|
||||
while(1);
|
||||
/* disable mmu, invalide i-cache and call swi #4 */
|
||||
asm volatile(""
|
||||
"mrc p15,0,r0,c1,c0,0 \n"
|
||||
"bic r0,r0,#1 \n"
|
||||
"mcr p15,0,r0,c1,c0,0 \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"mov r0,#0 \n"
|
||||
"MCR p15,0,r0,c7,c5,0 \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"nop \n"
|
||||
"swi #4 "
|
||||
:
|
||||
:
|
||||
: "r0"
|
||||
);
|
||||
/* we should be back in bios now */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user