What's New in AR166 Version 3.00a
The RTX code has been rewritten. The
os_clock_demon() task scheduler has been removed
and replaced with system function calls. The new library is about
30% faster and uses up to 300 bytes less ram. Older versions of
AR166_Config.c configuration file are not
compatible to new version and need to be replaced.
Added a mutex task priority inversion -
priority inheritance has been implemented. When a
medium-priority task preempts a lower-priority task using a shared
resource (a mutex) on which a higher-priority task is pending, a
priority of lower-priority task is temporary raised to the priority
level of a higher-priority task. As soon as a lower-priority task
releases a mutex, a priority level of this task is lowered back to
a default value.
Added stack checking option to AR166_Config.c
configuration file. When this option is enabled, RTX Kernel
executes additional code to check for stack-overflow error.
Corrected a problem of isr_sem_send() function.
This function did not work correctly when a task was already
waiting for a semaphore and might hold a task in
WAIT_SEM state for additional 65536 system tick
Corrected a problem of os_tsk_prio() function.
This function did not work correctly when a priority of a task in a
delay has been changed.
A Flash File System implementation has been rewritten and
Added support for Flash Sectors bigger than 64 KBytes.
Added support for SD/MMC Flash Memory Card with
standard FAT12 and FAT16 file system. Memory Cards up to 2 GBytes
are supported. An SD_File example for MCB-XC167
evaluation board is located in
Added support for multiple drives: embedded Flash drives, RAM
drives and Memory Card drives, which can be used simultaneously to
store and retrieve files. O1der versions of
AF166_Config.c configuration files are not
compatible to this version and need to be replaced.
Added script cgi files for the web server may may
now be stored on external File System, for example on external SD
Card. There is no limitation where the cgi files
are stored. Additional function http_fgets for
script buffering has been added to HTTP_uif.c user
Added IP Multicasting with IGMP -
Internet Group Management Protocol. IP Multicasting allows sending
and receiving Multicast UDP datagrams to several hosts
Note: All Ethernet drivers have been updated to
enable receiving of Multicast packets.
Added unsolicited message interface to the Telnet
Server. With this interface the application layer (for example a
basic interpreter) may use the Telnet Server to send unsolicited
messages to the remote user.
Added configurable Web Server Error Pages. Http
Server 40x Error Pages are extracted to a single file
HTTP_err.c which can be copied to the user project
Added function http_get_session() to HTTP Server
module. This function returns a HTTP Server Session instance index.
It may be called from the CGI module to identify a HTTP Client
which has issued a request to HTTP Server.
Corrected wrong handling of TCP retransmit
packets. Wrong handling could cause sporadic
stalls on high traffic TCP sockets if a packet has been
lost. The socket would recover after a retry-timeout of 4
Corrected a problem of truncating NetBIOS names.
By a mistake only 12 characters of the host name were decoded from
the NBNS packet. This has been corrected to decode all 16
Corrected a problem of incorrect Flag Character
processing in PPP module. PPP Stack has expected a
Start and a Stop Flag. This has been corrected and now a frame can
be correctly received between any two flags.
Corrected: a problem of HTTP Server when serving the
Mozilla Firefox web-browser. HTTP Server failed to
process a Firefox POST requests correctly and
because of this web pages generated with POST method did not work
for this browser.
Corrected a problem of incorrect file closing in
HTTP Server script interpreter. The files included with 'i' script
command were not closed correctly when they were located on
external File System and accessed via http_uif.c
Corrected improper processing of css files
(Cascading Style Sheet). The format has been changed from binary
"application/octet-stream" to ASCII
Corrected a problem of DHCP client module. When
several DHCP clients have started at the same time (simultaneously
powered up), some of them might fail to obtain a valid IP address.
This happened because a DHCP reply checking was not strict and two
or more DHCP clients tried to obtain the same IP address. DHCP
client which failed would still obtain a valid IP address after
DHCP has been internally restarted after 30 seconds.
Corrected a problem of Null_Modem.c modem driver
which failed to work with Windows XP dial-in PPP connection.
Corrected a problem of PPP module in LCP
negotiation phase. Because of this problem it has failed to connect
to some GPRS modems when TCPnet was much faster than modem.
Corrected a problem of PPP Client module which has
sent a PPP authentication request also if
authentication was not requested by remote PPP Server.
Corrected a problem in udp_send() function which
has limited a data size to 1432 bytes. This was wrong and has been
changed to 1472 bytes as a limit for UDP data size.
Corrected a problem of DHCP client. Because of
this problem a DHCP client would fail to obtain an IP address if
the IP address configured in AT166_Config.c
matches the subnet address of your local network. For example if
your local subnet is 192.168.0.* and the local IP
address in AT166_Config.c is 192.168.0.100, the
DHCP server will not return an IP address.
Corrected a problem of wrong css file converting.
They are now stored in ASCII format to the web server virtual file
Corrected a problem of wrong '\' character expansion for creating
webserver filesystem files. This has been expanded to '\\' for
.html and .inc files. This
used with a code such as:
Warning: The configuration files
AT166_Config.c and AT166_Debug.c
are no more compatible to older versions and need to be replaced.
Incompatible configuration files will not compile and build.
Fixed a mutex task deadlock problem. When a task
with higher priority would release and again grab a mutex, a lower
priority task would become ready. Because of a mutex problem, this
task would never get a chance to execute, not even after a
Fixed a problem of wrong operation of
os_mbx_send() when a message has been fetched from
a full mailbox and then pushed back again from the same task with
no task switch in between. If another task has been waiting to send
a message to this mailbox, this task would become ready and would
send a message to a mailbox, which was full with no space for free
Fixed a problem in fseek() function. This function
would set wrong file position pointer when called with
SEEK_SET parameter. The problem was that after
fseek(), fread() read from wrong file position if the file position
is not located in first file block.