Keil Logo Arm Logo

Technical Support

On-Line Manuals

RL-ARM User's Guide

RL-RTX RL-FlashFS RL-TCPnet TCP Socket Opening TCP Connection TCP Active Open TCP Passive Open Sending TCP Data Example for Sending Data Multiple TCP Connections UDP Socket Opening UDP Connection Sending UDP Data When DHCP Enabled When ARP Cache Empty Example for Sending Data IP Multicasting Multiple UDP Connections Configuring RL-TCPnet Static Configuration System Definitions Ethernet Network Interface PPP Network Interface SLIP Network Interface UDP Socket TCP Socket BSD Socket HTTP Server Telnet Server TFTP Server TFTP Client FTP Server FTP Client DNS Client SMTP Client SNMP Agent SNTP Client Error Function Runtime Configuration Library Files Using RL-TCPnet Stand Alone With RTX Kernel Event Driven Operation IP Address Assignment Ethernet Interface PPP Interface SLIP Interface Localhost Applications HTTP Server Script Language CGI Functions Ajax Support Using XML XML Example How it works SOAP Support SOAP Interface Large POST Messages Web Pages Default Page Error Pages Web on SD Card Web Update File System Interface Http Caching How it works Internal Web External Web Multi-user Authentication Using RAM File System FCARM File Converter PRINT Directive NOPRINT Directive PAGEWIDTH Directive PAGELENGTH Directive ROOT Directive Telnet Server Command Line Interface Multi-user Authentication Sending Reply Message Short Reply Long Reply Continuous Screen Update TFTP Server File System Interface TFTP Client File System Interface FTP Server File System Interface Multi-user Authentication Supported Commands FTP Client File System Interface SMTP Client SNMP Agent MIB Database MIB Interface MIB Entry MIB Table DNS Resolver Starting DNS Device Drivers Ethernet Driver Interrupt Mode Modem Driver Serial Driver Using Serial Link Cable Connection Modem Connection Windows Dial-up Add Direct Serial Link New Dial-up Connection Configure PPP Dial-up Configure SLIP Dial-up Debugging Enabling Debug Debug Level Redirecting Output Function Overview BSD Routines CGI Routines Ethernet Routines FTP Routines HTTP Routines IGMP Routines Miscellaneous Routines Modem Routines PPP Routines Serial Routines SLIP Routines SMTP Routines SNMP Routines System Functions TCP Routines Telnet Routines TFTP Routines UDP Routines RL-CAN RL-USB Example Programs Library Reference Appendix

Error Function

Various errors can cause the system to crash when the system is running. For critical errors, the system calls the system error function sys_error(). This makes is possible to catch the exception and possibly recover from it.

The system can, for example, run out of memory or fail to allocate the TCP socket. These are usually an indication that the system configuration is wrong and needs to be corrected. The error function alerts the developer as to what requires changing.

The parameter code holds the error code of the exception. This can have the following values:

Error Code Type of Error Description
ERR_MEM_ALLOC Out of memory This is normally the case when the memory pool size is too small. You must increase the size of the memory pool in the configuration.
ERR_MEM_FREE Invalid memory block release Possible reason is that the link pointers were overwritten by the user. This can happen when the user application has written buffer data out of boundaries of the allocated memory block.
ERR_MEM_CORRUPT Link pointer corrupted The system memory link is corrupted and points to an odd address. Resuming the program execution would cause the Hard Fault or B-Class Trap with Illegal Word Operand Access. Possible reason is writing buffer data out of boundaries of the allocated memory block.
ERR_MEM_LOCK Memory management function re-entered The system alloc or free memory function was interrupted by a task or interrupt and then called again. This would corrupt memory handling. Possible reason is wrong usage of TCPnet functions from different tasks. Only BSD socket functions are thread safe, all other functions are not.
ERR_UDP_ALLOC No free UDP Sockets The system has run out of UDP sockets. You must increase the number of available UDP sockets in the configuration.
ERR_TCP_ALLOC No free TCP Sockets The system has run out of TCP sockets. You must increase the number of available TCP sockets in the configuration.
ERR_TCP_STATE Undefined State TCP socket is in an undefined state. This can happen when the system memory is accidentally overwritten by the user application.

This is an example of the error function which can be customized. This function currently does nothing but stop the TCPnet system by running in an endless loop.

void sys_error (ERROR_CODE code) {
  /* This function is called when a fatal error is encountered. The normal */
  /* program execution is not possible anymore. Add your critical error    */
  /* handler code here.                                                    */

  switch (code) {
    case ERR_MEM_ALLOC:
      /* Out of memory. */
      break;

    case ERR_MEM_FREE:
      /* Trying to release non existing memory block. */
      break;

    case ERR_MEM_CORRUPT:
      /* Memory Link pointer is Corrupted. */
      /* More data written than the size of allocated mem block. */
      break;

    case ERR_MEM_LOCK:
      /* Locked Memory management function (alloc/free) re-entered. */
      /* RTX multithread protection malfunctioning, not implemented */
      /* or interrupt disable is not functioning correctly. */
      break;

    case ERR_UDP_ALLOC_SOCKET:
      /* Out of UDP Sockets. */
      break;

    case ERR_TCP_ALLOC_SOCKET:
      /* Out of TCP Sockets. */
      break;

    case ERR_TCP_STATE_UNDEFINED:
      /* TCP State machine in undefined state. */
      break;
  }

  /* End-less loop */
  while (1);
}

 

  • The ERR_MEM_LOCK error was added in RLARM version 4.53

Keil logo

Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings