This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
need the correct template & packages for ppp
- From: "shobhit saxena" <shobhit dot sahai at gmail dot com>
- To: ecos-discuss at sources dot redhat dot com
- Date: Wed, 21 Feb 2007 05:27:29 -0500
- Subject: [ECOS] need the correct template & packages for ppp
hello everyone,
i am working on arm e7t board using ecos tool.I
wanna run the following program "windows_telnet".The problem is when
i take the "net template" & add "ppp support" to the ecos options,it
successfully builds.Then i tried to make this program but it shows
error " windows_telnet section .bss is not within region ram".i know
that the executable is more than the size of RAM in the board(512 kb).
CAN ANYONE SUGGEST ME A COFIGURATION ON THE ECOS TOOL SO THAT PPP
& TELNET BOTH WORK WITHOUT THE ABOVE ERROR.
#include <pkgconf/system.h>
#include <pkgconf/net_lwip.h>
#include <network.h>
#include <cyg/ppp/ppp.h>
#define SOMAXCONN 3
static char *windows_script[] =
{
"TIMEOUT", "2",
"", "CLIENTCLIENT\\c",
"CLIENTSERVER", "\\c",
0
};
void telnet(void)
{
struct sockaddr_in sin;
struct sockaddr_in pin;
/* get an internet domain socket */
int sd;
if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
return;
}
/* complete the socket structure */
memset(&sin, 0, sizeof(sin));
sin.sin_len = sizeof(sin);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(23);
unsigned int opt = 1;
if (setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1)
{
goto out;
}
/* bind the socket to the port number */
if (bind(sd, (struct sockaddr *) &sin, sizeof(sin)) == -1)
{
goto out;
}
/* show that we are willing to listen */
if (listen(sd, SOMAXCONN) == -1)
{
goto out;
}
int sd_current;
/* wait for a client to talk to us */
socklen_t addrlen = sizeof(pin);
if ((sd_current = accept(sd, (struct sockaddr *) &pin, &addrlen)) == -1)
{
goto out;
}
for (;;)
{
char *prompt="eCos>";
int promptlen = strlen(prompt);
if (write(sd_current, prompt, promptlen) != promptlen)
{
goto AbortSession;
}
/* get a message from the client */
char dir[256];
int len;
size_t i;
for (i=0; i<sizeof(dir)-1; i++)
{
// returns when a full line has been collected
len=read(sd_current, dir+i, 1);
if (len != 1)
{
goto AbortSession;
}
if (write(sd_current, dir+i, 1)!=1)
{
goto AbortSession;
}
// ignore CR
if (dir[i]=='\r')
{
i--;
}
// Break out on a new line
if (dir[i]=='\n')
{
break;
}
dir[i]=0;
}
}
AbortSession:
/* close up both sockets */
close(sd_current);
out:
close(sd);
}
int main(int argc, char **argv)
{
// Bring up the TCP/IP network
init_all_network_interfaces();
for (;;)
{
cyg_ppp_options_t options;
cyg_ppp_handle_t ppp_handle;
// Initialize the options
cyg_ppp_options_init( &options );
options.script=windows_script;
options.baud = CYGNUM_SERIAL_BAUD_9600;
options.flowctl = CYG_PPP_FLOWCTL_NONE;
options.idle_time_limit = 0; // never shut down.
// Start up PPP
ppp_handle = cyg_ppp_up( "/dev/ser0", &options );
// Wait for it to get running
if( cyg_ppp_wait_up( ppp_handle ) == 0 )
{
// Make use of PPP
for (;;)
{
telnet();
}
// never reached, but for illustration:
// Bring PPP link down
cyg_ppp_down( ppp_handle );
// Wait for connection to go down.
cyg_ppp_wait_down( ppp_handle );
}
}
}
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss