mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-28 15:53:06 +08:00
* tools/build/.cvsignore, tools/build/ChangeLog,
tools/build/Makefile.am, tools/build/README, tools/build/binpatch.c, tools/build/cklength.c, tools/build/config.h.in, tools/build/configure.ac, tools/build/cvsignore-add.sh, tools/build/doxy-filter, tools/build/eolstrip.c, tools/build/install-if-change.in, tools/build/multigen, tools/build/packhex.c, tools/build/rtems-bin2c.c, tools/build/search-id.sh, tools/build/unhex.c, tools/cpu/.cvsignore, tools/cpu/ChangeLog, tools/cpu/Makefile.am, tools/cpu/configure.ac, tools/cpu/generic/.cvsignore, tools/cpu/generic/ChangeLog, tools/cpu/generic/Makefile.am, tools/cpu/generic/configure.ac, tools/cpu/generic/size_rtems.in, tools/cpu/nios2/.cvsignore, tools/cpu/nios2/ChangeLog, tools/cpu/nios2/Makefile.am, tools/cpu/nios2/README, tools/cpu/nios2/bridges.c, tools/cpu/nios2/bridges.h, tools/cpu/nios2/clocks.c, tools/cpu/nios2/clocks.h, tools/cpu/nios2/configure.ac, tools/cpu/nios2/devices.c, tools/cpu/nios2/devices.h, tools/cpu/nios2/linkcmds.c, tools/cpu/nios2/linkcmds.h, tools/cpu/nios2/memory.c, tools/cpu/nios2/memory.h, tools/cpu/nios2/nios2gen.c, tools/cpu/nios2/output.c, tools/cpu/nios2/output.h, tools/cpu/nios2/ptf.c, tools/cpu/nios2/ptf.h, tools/cpu/nios2/sample.ptf, tools/cpu/sh/.cvsignore, tools/cpu/sh/AUTHORS, tools/cpu/sh/COPYING, tools/cpu/sh/ChangeLog, tools/cpu/sh/Makefile.am, tools/cpu/sh/TODO, tools/cpu/sh/configure.ac, tools/cpu/sh/sci.c, tools/cpu/sh/sci.h, tools/cpu/sh/shgen.c: New files.
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.guess
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
Makefile
|
||||
Makefile.in
|
||||
missing
|
||||
mkinstalldirs
|
||||
@@ -0,0 +1,3 @@
|
||||
Ralf Corsepius (corsepiu@faw.uni-ulm.de)
|
||||
* Initial implementation
|
||||
* generator for sci bitrate table
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,86 @@
|
||||
2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org>
|
||||
|
||||
* configure.ac: Require autoconf-2.68, automake-1.11.1.
|
||||
|
||||
2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
|
||||
|
||||
* configure.ac: New BUG-REPORT address.
|
||||
|
||||
2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
|
||||
|
||||
* configure.ac: Require autoconf-2.60. Require automake-1.10.
|
||||
|
||||
2006-01-31 Ralf Corsepius <ralf.corsepius@rtems.org>
|
||||
|
||||
* shgen.c: include <stdlib.h>.
|
||||
|
||||
2004-09-24 Ralf Corsepius <ralf_corsepius@rtems.org>
|
||||
|
||||
* configure.ac: Require automake > 1.9.
|
||||
|
||||
2004-01-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Let shgen.1 depend on shgen$(EXEEXT).
|
||||
|
||||
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Require automake >= 1.8, autoconf >= 2.59.
|
||||
|
||||
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Use rtems-bugs@rtems.com as bug report email address.
|
||||
|
||||
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Remove AC_CONFIG_AUX_DIR.
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AC_PREREQ(2.57).
|
||||
|
||||
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Reformat.
|
||||
Add autom4te*cache.
|
||||
Remove autom4te.cache.
|
||||
|
||||
2002-04-01 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Remove AC_EXEEXT (obsolete).
|
||||
|
||||
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac:
|
||||
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
|
||||
* Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
|
||||
2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Add autom4te.cache for autoconf > 2.52.
|
||||
* configure.in: Remove.
|
||||
* configure.ac: New file, generated from configure.in by autoupdate.
|
||||
|
||||
2000-11-13 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* shgen.c: Set default Phi to 20MHz (BUG-FIX).
|
||||
|
||||
2000l-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS.
|
||||
|
||||
2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal.
|
||||
|
||||
2000-10-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Switch to GNU-canonicalized autoconf macros.
|
||||
|
||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: New file.
|
||||
@@ -0,0 +1,18 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../../aclocal
|
||||
|
||||
noinst_PROGRAMS = shgen
|
||||
|
||||
shgen_SOURCES = sci.h sci.c shgen.c
|
||||
|
||||
if HELP2MAN
|
||||
man_MANS = shgen.1
|
||||
|
||||
shgen.1: shgen$(EXEEXT)
|
||||
$(HELP2MAN) -N ./shgen >$@
|
||||
endif
|
||||
|
||||
include $(top_srcdir)/../../../automake/host.am
|
||||
@@ -0,0 +1,13 @@
|
||||
* Add support for more drivers to shgen !!!!
|
||||
|
||||
* shgen relies on having a gnu-compatible getopt, which should be
|
||||
available on all hosts using gcc/egcs/binutils.
|
||||
Using other getopt-variants may produce faulty results or shgen may also
|
||||
refuse to compile. Probably the easiest solution to this problem would be
|
||||
to integrate libiberty into rtems.
|
||||
|
||||
* shgen uses floating point mathematics. Therefore Makefile.in contains a
|
||||
reference to libm. In case the host doesn't have its floating point
|
||||
support in libm, shgen will fail to compile. If we should ever meet such
|
||||
a host, checks for floating point libraries have to be added to rtems'
|
||||
autoconf support.
|
||||
@@ -0,0 +1,25 @@
|
||||
## Process this file with autoconf to produce a configure script.
|
||||
##
|
||||
## $Id$
|
||||
|
||||
AC_PREREQ([2.68])
|
||||
AC_INIT([rtems-tools-cpu-sh],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
|
||||
AC_CONFIG_SRCDIR([shgen.c])
|
||||
RTEMS_TOP(../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
|
||||
AM_INIT_AUTOMAKE([foreign 1.11.1])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AC_PROG_CC
|
||||
AC_CHECK_LIB(m,fabs)
|
||||
AC_CHECK_FUNCS(getopt_long)
|
||||
AC_CHECK_PROGS(HELP2MAN,help2man)
|
||||
AM_CONDITIONAL(HELP2MAN,test -n "$HELP2MAN" )
|
||||
|
||||
RTEMS_TOOLPATHS
|
||||
|
||||
# Explicitly list all Makefiles here
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Copyright (c) 1998 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
|
||||
*
|
||||
* See the file COPYING for copyright notice.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "sci.h"
|
||||
|
||||
/*
|
||||
n .. baudrate generator source 0,1,2,3
|
||||
|
||||
N .. BRR setting (0..255)
|
||||
|
||||
Phi .. processor baud rate
|
||||
|
||||
B .. bitrate
|
||||
*/
|
||||
|
||||
typedef struct sci_tab {
|
||||
unsigned int B ;
|
||||
unsigned int n ;
|
||||
int N ;
|
||||
double err ;
|
||||
} sci_tab_t ;
|
||||
|
||||
static unsigned int bitrate [] = {
|
||||
50,
|
||||
75,
|
||||
110,
|
||||
134,
|
||||
150,
|
||||
200,
|
||||
300,
|
||||
600,
|
||||
1200,
|
||||
1800,
|
||||
2400,
|
||||
4800,
|
||||
9600,
|
||||
19200,
|
||||
38400,
|
||||
57600,
|
||||
115200,
|
||||
230400,
|
||||
460800
|
||||
};
|
||||
|
||||
static sci_tab_t test_array[4] ;
|
||||
|
||||
static void Compute(
|
||||
unsigned int n,
|
||||
unsigned int B,
|
||||
double Phi,
|
||||
struct sci_tab *entry )
|
||||
{
|
||||
int a = ( 32 << ( 2 * n ) ) * B ;
|
||||
|
||||
entry->n = n ;
|
||||
entry->B = B ;
|
||||
entry->N = rint( ( Phi / a ) - 1.0 ) ;
|
||||
|
||||
if ( ( entry->N > 0 ) && ( entry->N < 256 ) )
|
||||
entry->err =
|
||||
( ( Phi / ( (entry->N + 1) * a ) - 1.0 ) * 100.0 );
|
||||
else
|
||||
{
|
||||
entry->err = 100.0 ;
|
||||
entry->n = 255 ;
|
||||
entry->N = 0 ;
|
||||
}
|
||||
}
|
||||
|
||||
static sci_tab_t *SelectN(
|
||||
unsigned int B,
|
||||
double Phi )
|
||||
{
|
||||
unsigned int i ;
|
||||
struct sci_tab* best = NULL ;
|
||||
|
||||
for ( i = 0 ; i < 4 ; i++ )
|
||||
{
|
||||
double err ;
|
||||
|
||||
Compute( i, B, Phi, &test_array[i] );
|
||||
err = fabs( test_array[i].err );
|
||||
|
||||
if ( best )
|
||||
{
|
||||
if ( err < fabs( best->err ) )
|
||||
best = &test_array[i] ;
|
||||
}
|
||||
else
|
||||
best = &test_array[i] ;
|
||||
}
|
||||
|
||||
return best ;
|
||||
}
|
||||
|
||||
int shgen_gensci(
|
||||
FILE *file,
|
||||
double Phi ) /* Processor frequency [Hz] */
|
||||
{
|
||||
unsigned int i ;
|
||||
|
||||
fprintf( file,
|
||||
"/*\n * Bitrate table for the serial devices (sci) of the SH at %.3f MHz\n"
|
||||
" */\n\n", Phi / 1000000.0 );
|
||||
fprintf( file,
|
||||
"/*\n"
|
||||
" * n .. SMR bits 0,1 : baud rate generator clock source\n"
|
||||
" * N .. BRR bits 0..7: setting for baud rate generator\n"
|
||||
" * error .. percentual error to nominal bitrate\n"
|
||||
" * Hitachi's HW manual recommends bitrates with an error less than 1%%\n"
|
||||
" * We experienced values less than 2%% to be stable\n"
|
||||
" */\n\n" );
|
||||
fprintf( file, "#include <termios.h>\n\n" );
|
||||
fprintf( file,
|
||||
"static struct sci_bitrate_t {\n"
|
||||
" unsigned char n ;\n"
|
||||
" unsigned char N ;\n"
|
||||
"} _sci_bitrates[] = {\n"
|
||||
"/* n N error */\n" );
|
||||
|
||||
for ( i = 0 ; i < sizeof(bitrate)/sizeof(int) ; i++ )
|
||||
{
|
||||
struct sci_tab* best = SelectN( bitrate[i], Phi );
|
||||
|
||||
if ( i > 0 )
|
||||
fprintf( file, ",\n" );
|
||||
fprintf( file, " { %1d, %3d } /* %+7.2f%% ; B%d ",
|
||||
best->n,
|
||||
best->N,
|
||||
best->err,
|
||||
best->B );
|
||||
if ( best->n > 3 )
|
||||
fprintf( file, "(unusable) " );
|
||||
fprintf( file, "*/" );
|
||||
}
|
||||
|
||||
fprintf( file, "\n};\n\n" );
|
||||
|
||||
fprintf( file,
|
||||
"int _sci_get_brparms( \n"
|
||||
" tcflag_t cflag,\n"
|
||||
" unsigned char *smr,\n"
|
||||
" unsigned char *brr )\n"
|
||||
"{\n"
|
||||
" unsigned int offset ;\n\n"
|
||||
" offset = ( cflag & ( CBAUD & ~CBAUDEX ) )\n"
|
||||
" + ( ( cflag & CBAUDEX ) ? B38400 : 0 );\n"
|
||||
" if ( offset == 0 ) return -1 ;\n"
|
||||
" offset-- ;\n\n"
|
||||
" if ( _sci_bitrates[offset].n > 3 ) return -1;\n\n"
|
||||
" *smr &= ~0x03;\n"
|
||||
" *smr |= _sci_bitrates[offset].n;\n"
|
||||
" *brr = _sci_bitrates[offset].N;\n\n"
|
||||
" return 0;\n"
|
||||
"}\n" );
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
#ifndef _shgen_sci_h
|
||||
#define _shgen_sci_h
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
extern int shgen_gensci(
|
||||
FILE *file,
|
||||
double Phi /* Processor frequency [Hz] */
|
||||
);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright (c) 1998,1999,2000, 2006 Ralf Corsepius, Ulm Germany.
|
||||
*
|
||||
* See the file COPYING for copyright notice.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h> /* strcmp, strerror */
|
||||
#include <stdlib.h> /* exit */
|
||||
#include <errno.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include "sci.h"
|
||||
|
||||
static void usage( FILE* ofile, char *prog )
|
||||
{
|
||||
fprintf( ofile, "Usage: %s [options] driver\n", prog );
|
||||
fprintf( ofile, "\nOptions:\n" );
|
||||
fprintf( ofile, "Processor frequency (default 20MHz):\n") ;
|
||||
fprintf( ofile, "\t-M Phi .. processor frequency [MHz]\n" );
|
||||
fprintf( ofile, "\t-K Phi .. processor frequency [KHz]\n" );
|
||||
fprintf( ofile, "\t-H Phi .. processor frequency [Hz]\n" );
|
||||
fprintf( ofile, "Driver:\n" );
|
||||
fprintf( ofile, "\tsci .. bitrate table for sci\n" );
|
||||
|
||||
fprintf( ofile, "\nWritten by Ralf Corsepius <corsepiu@faw.uni-ulm.de>\n" );
|
||||
fprintf( ofile, "\nCopyright (c) 1998,1999,2000\tRalf Corsepius\n" );
|
||||
}
|
||||
|
||||
#if HAVE_GETOPT_LONG
|
||||
#define NOARG 0
|
||||
#define HASARG 1
|
||||
#define OPTARG 2
|
||||
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{ "version", NOARG, NULL, 'v' },
|
||||
{ "help", NOARG, NULL, 'h' },
|
||||
{ "mega-hertz", HASARG, NULL, 'M' },
|
||||
{ "kilo-hertz", HASARG, NULL, 'K' },
|
||||
{ "hertz", HASARG, NULL, 'H' },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
#endif
|
||||
|
||||
static void shgen_header( FILE *file )
|
||||
{
|
||||
fprintf( file,
|
||||
"/*\n * DO NOT EDIT - this file is automatically generated by shgen %s\n",
|
||||
VERSION );
|
||||
fprintf( file,
|
||||
" * Copyright (c) 1998,1999,2000 Ralf Corsepius (corsepiu@faw.uni-ulm.de)\n */\n" );
|
||||
fprintf( file,
|
||||
"\n/* This file is not copyrighted */\n\n" );
|
||||
}
|
||||
|
||||
int main( int argc, char *argv[] )
|
||||
{
|
||||
double Phi = 20000000.0 ;
|
||||
|
||||
#if HAVE_GETOPT_LONG
|
||||
int option_index = 0 ;
|
||||
while( ( optopt = getopt_long( argc, argv, "M:K:H:hv",
|
||||
long_options, &option_index ) ) > 0 )
|
||||
#else
|
||||
while ( ( optopt = getopt( argc, argv, "M:K:H:hv" ) ) > 0 )
|
||||
#endif
|
||||
{
|
||||
switch ( optopt )
|
||||
{
|
||||
case 'M' :
|
||||
sscanf( optarg, "%lf", &Phi );
|
||||
Phi = Phi * 1000000.0;
|
||||
break ;
|
||||
case 'K' :
|
||||
sscanf( optarg, "%lf", &Phi );
|
||||
Phi = Phi * 1000.0;
|
||||
break ;
|
||||
case 'H' :
|
||||
sscanf( optarg, "%lf", &Phi );
|
||||
break ;
|
||||
case 'h' :
|
||||
usage( stdout, argv[0] );
|
||||
exit(0);
|
||||
case 'v' :
|
||||
fprintf( stdout, "%s version %s\n", argv[0], VERSION );
|
||||
exit(0);
|
||||
default :
|
||||
usage( stderr, argv[0] );
|
||||
exit(1);
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( argc - optind != 1 )
|
||||
{
|
||||
fprintf( stderr, "%s: Missing argument: driver\n", argv[0] );
|
||||
exit(1);
|
||||
}
|
||||
|
||||
shgen_header( stdout );
|
||||
|
||||
if ( strcmp( argv[optind], "sci" ) == 0 )
|
||||
{
|
||||
shgen_gensci( stdout, Phi );
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf( stderr, "%s: Invalid argument: driver\n", argv[0] );
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
Reference in New Issue
Block a user