
- •Preface
- •About this book
- •Intended audience
- •Using this book
- •Typographical conventions
- •Further reading
- •Feedback
- •Feedback on ARM TCP/IP
- •Feedback on this book
- •Introduction
- •1.1 A typical embedded networking stack
- •1.2 What is PPP?
- •1.3 ARM TCP/IP requirements
- •1.3.1 Memory requirements
- •1.3.2 CPU requirements
- •1.3.3 Operating system requirements
- •1.4 ARM PPP requirements
- •1.4.1 Line management functions
- •1.4.2 Static memory
- •1.4.3 Dynamic memory
- •1.4.4 Periodic clock tick
- •1.5 Example package directories
- •1.6 Sample programs
- •TCP/IP Porting
- •2.1 Porting procedure
- •2.2 Portable and nonportable files
- •2.2.1 Portable files
- •2.2.2 Nonportable files
- •2.3 Creating the IP port file
- •2.3.1 Standard macros and definitions
- •2.3.2 CPU architecture
- •2.3.4 Debugging aids
- •2.3.5 Timers and multitasking
- •2.3.6 Stack features and options
- •2.4 Coding the glue layer
- •2.4.1 Task control
- •2.5 Specifying IP addresses
- •2.5.1 Porting programmer IP issues
- •2.5.2 End user IP issues
- •2.6 Testing the TCP/IP port
- •PPP Porting
- •3.1 Porting procedure
- •3.2 Porting PPP
- •3.2.1 Source files
- •3.2.2 Compiling PPP
- •3.2.3 Entry points and support calls
- •3.3 Testing PPP
- •3.3.1 Loopback
- •3.3.2 Client connection
- •3.3.3 Server connection
- •3.3.4 Abrupt disconnect
- •3.3.5 Multilink test
- •TCP/IP API Functions
- •4.2.1 cksum()
- •4.2.2 dprintf() and initmsg()
- •4.2.3 dtrap()
- •4.2.4 ENTER_CRIT_SECTION() and EXIT_CRIT_SECTION()
- •4.2.5 LOCK_NET_RESOURCE() and UNLOCK_NET_RESOURCE()
- •4.2.6 npalloc()
- •4.2.7 npfree()
- •4.2.8 panic()
- •4.2.9 prep_ifaces()
- •4.2.10 tcp_sleep()
- •4.2.11 tcp_wakeup()
- •4.3 Network interfaces
- •4.3.1 The NET structure
- •4.3.2 n_close()
- •4.3.3 n_init()
- •4.3.4 n_reg_type()
- •4.3.5 n_stats()
- •4.3.6 pkt_send()
- •4.3.7 raw_send()
- •PPP API Functions
- •5.2.1 _ALLOC() functions
- •5.2.2 ConPrintf()
- •5.2.3 _FREE() functions
- •5.2.4 get_secret()
- •5.2.5 ppp_port_init()
- •5.3 Serial line drivers
- •5.3.1 ln_connect()
- •5.3.2 ln_getc()
- •5.3.3 ln_hangup()
- •5.3.4 ln_putc()
- •5.3.5 ln_speed()
- •5.3.6 ln_state()
- •5.3.7 ln_write()
- •5.4 PPP entry points
- •5.4.1 lcp_lowerdown()
- •5.4.2 lcp_lowerup()
- •5.4.3 ppp_input()
- •5.4.4 ppp_timeisup()
- •5.4.5 prep_ppp()
- •Modem Functions
- •6.1 dialer.c
- •6.1.1 dial()
- •6.1.2 dial_check()
- •6.1.3 dialer_status()
- •6.1.4 modem_cmd()
- •6.1.5 modem_connect()
- •6.1.6 modem_getc()
- •6.1.7 modem_gets()
- •6.1.8 modem_hangup()
- •6.1.9 modem_init()
- •6.1.10 modem_lstate()
- •6.1.11 modem_putc()
- •6.1.12 modem_reset()
- •6.1.13 modem_speed()
- •6.1.14 modem_state()
- •6.1.15 modem_write()
- •6.2 login.c
- •6.2.1 do_script()
- •6.2.2 login()
- •6.2.3 log_input()
- •6.2.4 log_output()
- •6.2.5 logserver()
- •6.3 mdmport.c
- •6.3.1 dial_delay()
- •6.3.2 hangup()
- •6.3.3 modem_clr_dtr() and modem_set_dtr()
- •6.3.4 modem_DCD()
- •6.3.5 modem_portstat()
- •DHCP Client Functions
- •7.1 DHCP client functions
- •7.1.1 dhc_init()
- •7.1.2 dhc_discover()
- •7.1.3 dhc_set_callback()
- •7.1.4 dhc_halt()
- •7.1.5 dhc_second()
- •Low-overhead UDP Functions
- •8.1 UDP functions
- •8.1.1 udp_alloc()
- •8.1.2 udp_close()
- •8.1.3 udp_open()
- •8.1.4 udp_send()
- •8.1.5 udp_socket()
- •Sockets
- •9.1 ARM implementation of sockets
- •9.2 Socket API reference
- •9.2.1 t_accept()
- •9.2.2 t_bind()
- •9.2.3 t_connect()
- •9.2.4 t_errno()
- •9.2.5 t_getpeername()
- •9.2.6 t_getsockname()
- •9.2.7 t_getsockopt()
- •9.2.8 t_listen()
- •9.2.9 t_recv() and t_recvfrom()
- •9.2.10 t_select()
- •9.2.11 t_send() and t_sendto()
- •9.2.12 t_setsockopt()
- •9.2.13 t_shutdown()
- •9.2.14 t_socket()
- •9.2.15 t_socketclose()
- •ARM-specific Functions
- •10.1 ARM directories
- •10.1.1 armthumb
- •10.2 cksum.s
- •10.3 clock.c
- •10.3.1 clock_init()
- •10.3.2 clock_c()
- •10.4 delay.s
- •10.5 dtrap.s
- •10.6 except.s
- •10.7.1 ENTER_CRIT_SECTION() and EXIT_CRIT_SECTION()
- •10.7.2 irqDispatch()
- •10.7.3 irq_Enable() and irq_Disable()
- •10.7.4 irqInit()
- •10.8 lswap.s
- •10.10 olicom.c
- •10.11 pcmcia.c
- •10.12 stack.s
- •10.13 uart.c description
- •10.14 uart.c ring buffer management functions
- •10.14.1 ring_add()
- •10.14.2 ring_avail()
- •10.14.3 ring_new()
- •10.14.4 ring_remove()
- •10.14.5 ring_space()
- •10.15 uart.c interface functions
- •10.15.1 uart_getc()
- •10.15.2 uart_DCD()
- •10.15.3 uart_delay()
- •10.15.4 uart_do_irq()
- •10.15.5 uart_init()
- •10.15.6 uart_irq()
- •10.15.7 uart_putc()
- •10.15.8 uart_ready()
- •10.15.9 uart_reset()
- •10.15.10 uart_setup()
- •10.15.11 uart_stats()
- •10.16 uart.c debug TTY interface functions
- •10.16.1 dputchar()
- •10.16.2 getch()
- •10.16.3 kbhit()
- •Miscellaneous Library Functions
- •11.1 app_ping.c
- •11.2 in_utils.c
- •11.2.1 con_page()
- •11.2.2 hexdump()
- •11.2.3 nextarg()
- •11.2.4 ns_printf()
- •11.2.5 panic()
- •11.2.6 print_eth()
- •11.2.7 print_ipad()
- •11.2.8 print_uptime()
- •11.2.11 sysuptime()
- •11.2.12 uslash()
- •11.3 memman.c
- •11.4 menus.c, menulib.c, and nrmenus.c
- •11.5 nextcarg.c
- •11.5.1 nextcarg()
- •11.6 nvfsio.c
- •11.6.1 Overview
- •11.6.2 nv_fclose()
- •11.6.3 nv_fgets()
- •11.6.4 nv_fopen()
- •11.6.5 nv_fprintf()
- •11.6.6 nv_fwrite()
- •11.6.7 nv_initialize()
- •11.6.8 nv_writeflash()
- •11.7 nvparms.c
- •11.8 parseip.c
- •11.8.1 parseip()
- •11.9 reshost.c
- •11.9.1 in_reshost()
- •11.10 strilib.c
- •11.11 strlib.c
- •11.12 tcp_echo.c
- •11.13 ttyio.c
- •11.14 udp_echo.c
- •11.15 userpass.c
- •11.15.1 add_user()
- •11.15.2 check_permit()
- •Example Applications
- •12.1 Overview of the examples
- •12.1.1 Requirements
- •12.1.2 Building projects
- •12.1.3 Running the examples
- •12.2 Example descriptions
- •12.2.1 chargen
- •12.2.2 loopback
- •12.2.3 maildemo
- •12.2.4 menus
- •Error Codes
- •A.1 ENP_ error codes
- •A.2 Socket error codes

Miscellaneous Library Functions
11.3memman.c
The ARM networking software uses the two functions npalloc() and npfree() to make dynamic memory allocations. In systems that include the standard C library, these can be mapped directly onto calloc() and free() using defined macros in the ipport.h file.
If you are experiencing memory allocation problems and suspect that memory blocks are being referenced after they have been freed, or that data is being written beyond the end of the allocated area, you may be able to use the npalloc() and npfree() functions implemented in memman.c to help with debugging. If you are using these functions, you may also use the diagnostic function blocklist() which uses dprintf() to print a list of the memory blocks currently in use.
11-16 |
Copyright © 1998 and 1999 ARM Limited. All rights reserved. |
ARM DUI 0079B |

Miscellaneous Library Functions
11.4menus.c, menulib.c, and nrmenus.c
These three files contain functions that implement a menu system that can be readily extended as new modules are added to a project. The menu system is intended to run with your application code, and allows you to exercise different areas of the network protocols. The menus can be accessed either by way of the standard input and output channels, or by way of a TELNET socket or other GenericIO channel.
ARM DUI 0079B |
Copyright © 1998 and 1999 ARM Limited. All rights reserved. |
11-17 |