Keil Logo

Technical Support

On-Line Manuals

RL-ARM User's Guide (MDK v4)

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

With RTX Kernel

Even though RL-TCPnet is designed as a stand alone TCP/IP Operating System, you can use it with the RTX kernel. This is useful for large complex applications, where different jobs are implemented as tasks. In this case, the basic framework is different because the functions from the stand alone framework are moved into tasks.

The following tasks are introduced:

  • tcp_init task is used to initialize the system. Since the task is not needed after initialization is complete, the task can be terminated.
  • tcp_main task runs the main thread for RL-TCPnet. It must have the lowest priority in the system. Otherwise, the tasks with a lower priority than the tcp_poll task will never execute.
  • tcp_tick task generates periodic ticks for RL-TCPnet. For proper timing, the interval timer and the kernel timer reload value must be set in the Net_Config.c configuration file. The interval time should be the same as set in the configuration file.

    When the timings are not correct, the application might fail to complete certain functions. For example, requests may retransmit too fast, or the waiting timeout might expire before receiving a valid response from a remote server.

Here is a framework for the RTX kernel application:

#include <RTL.h>

__task void tcp_tick (void) {
  os_itv_set (10);
  while (1) {
    os_itv_wait ();
    /* Timer tick every 100 ms */
    timer_tick ();

__task void tcp_main (void) {
  while (1) {
    main_TcpNet ();
    os_tsk_pass ();

__task void tcp_init (void) {
  system_init ();
  init_TcpNet ();
  os_tsk_create (tcp_tick, 2);
  os_tsk_create (tcp_main, 1);
  /* Init done, terminate this task. */
  os_tsk_delete_self ();

void main (void) {
  os_sys_init (tcp_init);

Follow these guidelines when using RL-TCPnet with the RTX kernel:

  • Functions are not reentrant. This means they must not be interrupted and called again from another task. All TCPnet-related functionality should be collected in a single networking task.
  • All callback functions are executed from the networking task. Use the kernel event, semaphore, and mailbox functions to communicate with other tasks.
  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

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.