RTL driver update (still in progress)

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3346 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2011-03-06 13:55:20 +00:00
parent 22b6b6cbc2
commit 40a804582e
8 changed files with 788 additions and 49 deletions
+30 -6
View File
@@ -45,6 +45,32 @@
* Pre-processor Definitions
****************************************************************************/
/* COM1 port addresses */
#define COM1_PORT 0x3f8 /* COM1: I/O port 0x3f8, IRQ 4 */
#define COM2_PORT 0x2f8 /* COM2: I/O port 0x2f8, IRQ 3 */
#define COM3_PORT 0x3e8 /* COM3: I/O port 0x3e8, IRQ 4 */
#define COM4_PORT 0x2e8 /* COM4: I/O port 0x2e8, IRQ 3 */
/* 16650 register offsets */
#define COM_RBR 0 /* DLAB=0, Receiver Buffer (read) */
#define COM_THR 0 /* DLAB=0, Transmitter Holding Register (write) */
#define COM_DLL 0 /* DLAB=1, Divisor Latch (least significant byte) */
#define COM_IER 1 /* DLAB=0, Interrupt Enable */
#define COM_DLM 1 /* DLAB=1, Divisor Latch(most significant byte) */
#define COM_IIR 2 /* Interrupt Identification (read) */
#define COM_FCR 2 /* FIFO Control (write) */
#define COM_LCR 3 /* Line Control */
#define COM_MCR 4 /* MODEM Control */
#define COM_LSR 5 /* Line Status */
#define COM_MSR 6 /* MODEM Status */
#define COM_SCR 7 /* Scratch */
/* 16650 register bit definitions */
#define LSR_THRE (1 << 5) /* Bit 5: Transmitter Holding Register Empty */
/****************************************************************************
* Private Data
****************************************************************************/
@@ -67,14 +93,12 @@
void up_lowputc(char ch)
{
/* Wait until the BIOS can accept another character (so that the OS will
* continue to run.
*/
/* Wait until the Transmitter Holding Register (THR) is empty. */
while ((inb(0x3f8+5) & (1 << 5)) == 0);
while ((inb(COM1_PORT+COM_LSR) & LSR_THRE) == 0);
/* Then output the character */
/* Then output the character to the THR*/
outb(ch, 0x3f8);
outb(ch, COM1_PORT+COM_THR);
}
+3 -7
View File
@@ -296,14 +296,10 @@ irq_common:
/* Trace macros, use like trace 'i' to print char to serial port. */
.macro io_outb, addr, data
mov dx, $\addr
mov al, $\data
out dx, al
.endm
.macro trace, ch
io_outb 0x3f8, \ch
mov $0x3f8, %dx
mov $\ch, %al
out %al, %dx
.endm
/* This macro creates a stub for an ISR which does NOT pass it's own
+11 -8
View File
@@ -53,7 +53,7 @@
# CONFIG_DRAM_SIZE - Describes the installed DRAM.
# CONFIG_DRAM_START - The start address of DRAM (physical)
# CONFIG_DRAM_END - Last address+1 of installed RAM
# CONFIG_ARCH_IRQPRIO - The ST32F103Z supports interrupt prioritization
# CONFIG_ARCH_IRQPRIO - The LPC17xx supports interrupt prioritization
# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
# stack. If defined, this symbol is the size of the interrupt
# stack in bytes. If not defined, the user task stacks will be
@@ -208,6 +208,7 @@ CONFIG_PHY_KS8721=y
CONFIG_PHY_AUTONEG=y
CONFIG_PHY_SPEED100=n
CONFIG_PHY_FDUPLEX=y
CONFIG_NET_REGDEBUG=n
#
# General build options
@@ -333,9 +334,9 @@ CONFIG_ARCH_LOWPUTC=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_INSTRUMENTATION=n
CONFIG_TASK_NAME_SIZE=0
CONFIG_START_YEAR=2010
CONFIG_START_MONTH=12
CONFIG_START_DAY=22
CONFIG_START_YEAR=2011
CONFIG_START_MONTH=3
CONFIG_START_DAY=6
CONFIG_GREGORIAN_TIME=n
CONFIG_JULIAN_TIME=n
CONFIG_DEV_CONSOLE=y
@@ -530,16 +531,17 @@ CONFIG_MMCSD_HAVECARDDETECT=n
# CONFIG_NET_BROADCAST - Broadcast support
# CONFIG_NET_LLH_LEN - The link level header length
# CONFIG_NET_FWCACHE_SIZE - number of packets to remember when looking for duplicates
# CONFIG_NET_WLAN - Enable or disable WLAN network interface
#
CONFIG_NET=n
CONFIG_NET=y
CONFIG_NET_IPv6=n
CONFIG_NSOCKET_DESCRIPTORS=0
CONFIG_NSOCKET_DESCRIPTORS=2
CONFIG_NET_SOCKOPTS=y
CONFIG_NET_BUFSIZE=420
CONFIG_NET_TCP=n
CONFIG_NET_TCP=y
CONFIG_NET_TCP_CONNS=40
CONFIG_NET_MAX_LISTENPORTS=40
CONFIG_NET_UDP=n
CONFIG_NET_UDP=y
CONFIG_NET_UDP_CHECKSUMS=y
#CONFIG_NET_UDP_CONNS=10
CONFIG_NET_ICMP=n
@@ -551,6 +553,7 @@ CONFIG_NET_STATISTICS=y
CONFIG_NET_BROADCAST=n
#CONFIG_NET_LLH_LEN=14
#CONFIG_NET_FWCACHE_SIZE=2
CONFIG_NET_WLAN=y
#
# UIP Network Utilities
+22 -25
View File
@@ -207,9 +207,6 @@ CONFIG_PHY_KS8721=y
CONFIG_PHY_AUTONEG=y
CONFIG_PHY_SPEED100=n
CONFIG_PHY_FDUPLEX=y
CONFIG_NET_EMACRAM_SIZE=8192
CONFIG_NET_NTXDESC=7
CONFIG_NET_NRXDESC=7
CONFIG_NET_REGDEBUG=n
#
@@ -336,9 +333,9 @@ CONFIG_ARCH_LOWPUTC=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_INSTRUMENTATION=n
CONFIG_TASK_NAME_SIZE=0
CONFIG_START_YEAR=2010
CONFIG_START_MONTH=11
CONFIG_START_DAY=10
CONFIG_START_YEAR=2011
CONFIG_START_MONTH=3
CONFIG_START_DAY=6
CONFIG_GREGORIAN_TIME=n
CONFIG_JULIAN_TIME=n
CONFIG_DEV_CONSOLE=y
@@ -533,22 +530,21 @@ CONFIG_MMCSD_HAVECARDDETECT=n
# CONFIG_NET_BROADCAST - Broadcast support
# CONFIG_NET_LLH_LEN - The link level header length
# CONFIG_NET_FWCACHE_SIZE - number of packets to remember when looking for duplicates
# CONFIG_NET_WLAN - Enable or disable WLAN network interface
#
CONFIG_NET=n
CONFIG_NET=y
CONFIG_NET_IPv6=n
CONFIG_NSOCKET_DESCRIPTORS=8
CONFIG_NSOCKET_DESCRIPTORS=2
CONFIG_NET_SOCKOPTS=y
CONFIG_NET_BUFSIZE=562
CONFIG_NET_BUFSIZE=420
CONFIG_NET_TCP=y
CONFIG_NET_TCP_CONNS=8
CONFIG_NET_NTCP_READAHEAD_BUFFERS=16
CONFIG_NET_TCPBACKLOG=n
CONFIG_NET_MAX_LISTENPORTS=8
CONFIG_NET_TCP_CONNS=40
CONFIG_NET_MAX_LISTENPORTS=40
CONFIG_NET_UDP=y
CONFIG_NET_UDP_CHECKSUMS=y
#CONFIG_NET_UDP_CONNS=8
CONFIG_NET_ICMP=y
CONFIG_NET_ICMP_PING=y
#CONFIG_NET_UDP_CONNS=10
CONFIG_NET_ICMP=n
CONFIG_NET_ICMP_PING=n
#CONFIG_NET_PINGADDRCONF=0
CONFIG_NET_STATISTICS=y
#CONFIG_NET_RECEIVE_WINDOW=
@@ -556,6 +552,7 @@ CONFIG_NET_STATISTICS=y
CONFIG_NET_BROADCAST=n
#CONFIG_NET_LLH_LEN=14
#CONFIG_NET_FWCACHE_SIZE=2
CONFIG_NET_WLAN=y
#
# UIP Network Utilities
@@ -657,7 +654,7 @@ CONFIG_LPC17_USBDEV_DMAINTMASK=0
#
CONFIG_USBHOST_OHCIRAM_SIZE=1536
CONFIG_USBHOST_NEDS=2
CONFIG_USBHOST_NTDS=3
CONFIG_USBHOST_NTDS=2
CONFIG_USBHOST_TDBUFFERS=3
CONFIG_USBHOST_TDBUFSIZE=128
CONFIG_USBHOST_IOBUFSIZE=512
@@ -761,11 +758,11 @@ CONFIG_EXAMPLE_UIP_DHCPC=n
#
CONFIG_EXAMPLE_NETTEST_SERVER=n
CONFIG_EXAMPLE_NETTEST_PERFORMANCE=n
CONFIG_EXAMPLE_NETTEST_NOMAC=y
CONFIG_EXAMPLE_NETTEST_IPADDR=(10L<<24|0L<<16|0L<<8|2L)
CONFIG_EXAMPLE_NETTEST_DRIPADDR=(10L<<24|0L<<16|0L<<8|1L)
CONFIG_EXAMPLE_NETTEST_NETMASK=(255L<<24|255L<<16|255L<<8|0L)
CONFIG_EXAMPLE_NETTEST_CLIENTIP=(10L<<24|0L<<16|0L<<8|1L)
CONFIG_EXAMPLE_NETTEST_NOMAC=n
CONFIG_EXAMPLE_NETTEST_IPADDR=(10<<24|0<<16|0<<8|2)
CONFIG_EXAMPLE_NETTEST_DRIPADDR=(10<<24|0<<16|0<<8|1)
CONFIG_EXAMPLE_NETTEST_NETMASK=(255<<24|255<<16|255<<8|0)
CONFIG_EXAMPLE_NETTEST_CLIENTIP=(10<<24|0<<16|0<<8|1)
#
# Settings for examples/ostest
@@ -817,11 +814,11 @@ CONFIG_EXAMPLES_NSH_DISABLESCRIPT=n
CONFIG_EXAMPLES_NSH_DISABLEBG=n
CONFIG_EXAMPLES_NSH_ROMFSETC=n
CONFIG_EXAMPLES_NSH_CONSOLE=y
CONFIG_EXAMPLES_NSH_TELNET=y
CONFIG_EXAMPLES_NSH_TELNET=n
CONFIG_EXAMPLES_NSH_ARCHINIT=y
CONFIG_EXAMPLES_NSH_IOBUFFER_SIZE=512
CONFIG_EXAMPLES_NSH_DHCPC=n
CONFIG_EXAMPLES_NSH_NOMAC=y
CONFIG_EXAMPLES_NSH_NOMAC=n
CONFIG_EXAMPLES_NSH_IPADDR=(10<<24|0<<16|0<<8|2)
CONFIG_EXAMPLES_NSH_DRIPADDR=(10<<24|0<<16|0<<8|1)
CONFIG_EXAMPLES_NSH_NETMASK=(255<<24|255<<16|255<<8|0)
@@ -837,7 +834,7 @@ CONFIG_EXAMPLES_NSH_FATMOUNTPT=/tmp
#
# Architecture-specific NSH options
#
CONFIG_EXAMPLES_NSH_MMCSDSPIPORTNO=1
CONFIG_EXAMPLES_NSH_MMCSDSPIPORTNO=0
CONFIG_EXAMPLES_NSH_MMCSDSLOTNO=0
CONFIG_EXAMPLES_NSH_MMCSDMINOR=0
+47
View File
@@ -4,6 +4,53 @@ README
This README file describes the contents of the build configurations available
for the NuttX QEMU i486 port.
Contents
^^^^^^^^
* QEMU
* Configurations
QEMU
^^^^
QEMU is a generic and open source machine emulator and virtualizer. Here are
some links (which are mostly outdated by the time your read this):
Home Page: http://wiki.qemu.org/Main_Page
Downloads: http://wiki.qemu.org/Download
Documentation: http://wiki.qemu.org/Manual
Usage: qemu -nographic -kernel nuttx.elf
Building QEMU:
tar zxf qemu-0.14.0.tar.gz
cd qemu-0.14.0
./configure
make
make install
Cygwin build problems:
Error:
"gcc: The -mno-cygwin flag has been removed; use a mingw-targeted cross-compiler."
Workaround:
None known. It does not seem possible to build QEMU using the Cygwin gcc.
I tried editing configure. Removing the following line will allow QEMU to
configure:
QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
However, it then fails later during the compilation phase.
Recommendation:
1. Google for "qemu windows download" and download some pre-built QEMU
binaries. I found 0.14.0 here: http://dietpc.org/windows/qemu/, or
2. Try building QEMU with MingGW
Configurations
^^^^^^^^^^^^^^
+1
View File
@@ -48,6 +48,7 @@ SECTIONS
.text ALIGN (0x1000) : {
_srodata = ABSOLUTE(.);
*(.rodata .rodata.*)
*(.rdata .rdata.*)
*(.fixup)
*(.gnu.warning)
*(.glue_7)
+3 -3
View File
@@ -642,12 +642,12 @@ static int skel_rmmac(struct uip_driver_s *dev, FAR const uint8_t *mac)
int skel_initialize(int intf)
{
struct lpc17_driver_s *priv;
struct skel_driver_s *priv;
/* Get the interface structure associated with this interface number. */
DEBUGASSERT(inf < ONFIG_skeleton_NINTERFACES);
priv = &g_ethdrvr[intf];
DEBUGASSERT(inf < CONFIG_skeleton_NINTERFACES);
priv = &g_skel[intf];
/* Check if a Ethernet chip is recognized at its I/O base */
File diff suppressed because it is too large Load Diff