HITDAQ/FPGA_nios/hit_pat
2024-10-11 14:26:20 +02:00
..
inc add niosII software 2024-10-11 14:26:20 +02:00
mem_init add niosII software 2024-10-11 14:26:20 +02:00
src add niosII software 2024-10-11 14:26:20 +02:00
.cproject add niosII software 2024-10-11 14:26:20 +02:00
.force_relink add niosII software 2024-10-11 14:26:20 +02:00
create-this-app add niosII software 2024-10-11 14:26:20 +02:00
hit_pat.objdump add niosII software 2024-10-11 14:26:20 +02:00
onchip_flash.flash add niosII software 2024-10-11 14:26:20 +02:00
readme.txt add niosII software 2024-10-11 14:26:20 +02:00

Readme - Simple Socket Server Software Example

DESCRIPTION:	
A Simple Socket Server that controls development board LEDs. 

This software application may be targeted for TSE design having RGMII interface 
media between Ethernet MAC and Ethernet Phy. 

RGMII (Reduced Gigabit Media Independent Interface) is intended to be an 
alternative to GMII. The principle objective of RGMII is to reduce the number 
of pins from 22 (GMII) down to 12 in a cost-effective manner. RGMII interface 
require a 1.5 to 2ns delay (90 degree phase shift) on the transmitted clock 
over the data bus. This timing requirement can be achieved through a PCB trace 
delay, or optionally of introducing the delay on-chip at the physical layer 
transceiver chip. This example software include a configuration file to enable 
the on-chip delay method.

Requirements:
  -RTOS Type - MicroC/OS-II
  -Software Component - NicheStack TCP/IP Stack - Nios II Edition
  -Period System Timer - SYS_CLK_TIMER

PERIPHERALS USED:
This example exercises the following peripherals:
- Ethernet MAC 
- PIO, 8-bit output (named "led_pio" in SOPC Builder)
- PIO, 16-bit output (named "seven_seg_pio" in SOPC Builder) (optional)
- STDOUT device (UART or JTAG UART)

SOFTWARE SOURCE FILES:
This example includes the following software source files:

- iniche_init.c: Contains main() and SSSInitialTask() to initialize NicheStack 
and then create the other tasks once network has been properly initialized.
Tasks which will use sockets, such as the SSSSimpleSocketServerTask() in this 
example, must be created with TK_NEWTASK.  All other tasks can be created by directly
calling the MicroC/OS-II API to create a task, i.e. OSTaskCreateExt().

- simple_socket_server.c: Implementation of a simple_socket_server including all necessary sockets
calls to handle a single socket connection & process received commands.

- network_utilities.c: Contains MAC address and IP address routines to
manage addressing. These are used by NicheStack during initialization, but are
implementation-specific (you set your MAC address to whatever you want.. or read
it from your own special non-volatile memory.

- network_utilities.h: Contains prototype for function get_board_mac_addr().

- led.c: Contains tasks to manage board LED commands and update LED displays.
LEDManagementTask interprets commands, and toggles the row of 8 LEDS or signals the 
LED7SegLightshowTask in response to commands received from the host running telnet.
The LEDManagementTask reads data from a MicroC/OS-II SSSLEDCommandQ Queue which
receives its data from the SSSSimpleSocketServerTask.  LED7SegLightshowTask controls the 
7-segment display.    

- simple_socket_server.h: Definitions for the entire example application.

- alt_error_handler.h: Definitions for 3 error handlers, one each for MicroC-OS/II, Network, 
and Simple Socket Server Application.

- alt_error_handler.c: Implementation for 3 error handlers, one each for MicroC-OS/II, 
Network, and Simple Socket Server Application.

- tse_my_system.c: Allow customization of tse_mac_device[] structure through global array initialization.
If using marvell phy, this can be set to RGMII mode in this file.  Other Phys will operate in one mode or 
the other depending on thier implementation in driver file altera_avalon_tse.c.

BOARD/HOST REQUIREMENTS:
Must contain a supported phy, and use a quartus project that uses tse and msgdma.

This example requires an Ethernet cable connected to the development board's 
RJ-45 jack, and a JTAG connection with the development board. If the host 
communication settings are changed from JTAG UART (default) to use a
conventional UART, a serial cable between board DB-9 connector  and the host is
required. 

If DHCP is available (and enabled in the Software component configuration page, from
the BSP properties configuration), NicheStack TCP/IP Stack will attempt 
to obtain an IP address from a DHCP server. Otherwise, a static IP address (defined in 
Simple_Socket_Server.h) will be assigned after a DHCP timeout.  

ADDITIONAL INFORMATION:

This is an example socket server using NicheStack TCP/IP Stack on MicroC/OS-II. The server
implements simple commands to control board LEDs through a separate MicroC/OS-II
task. It is in no way a complete implementation of a telnet server.

A good introduction to sockets programming is the book "Unix Network Programming" by 
Richard Stevens. Additionally, the text "Sockets in C", by Donahoo & Calvert, is a concise 
& inexpensive text for getting started with sockets programming.

This example will not run on the Instruction Set Simulator (ISS).

Once the simple socket server example is running and has obtained an IP address (shown 
in the terminal window of Nios II Software Build Tools for Eclipse), 
you can connect to it over a network by typing the 
following command in a command shell on a development host:

  telnet <ip address> 30

This command will try to connect to the Simple Socket Server using port 30.