BSP Updates – NET+OS 6.3

 

 

 

Last Updated: 04/06/11         Fix Count: 34

 

 
Title 
Serial driver flow control change
 
Case:  internal
 
Date Fixed:  04/04/11
 
Description
The NET+OS serial driver was initialized to use SW flow control during driver loading.  This could halt the transmitter if it receives a serial data frame with 0x13 in it.
 
Solution 

NET+OS serial driver modified to come up with no flow control.

 

 
Title 
Profinet stack could hang under heavy load
 
Case:  33485
 
Date Fixed:  09/09/10
 
Description
Profinet stack crashes when heavy web traffic is present. 
 
Solution 

Moved ndq_restart to Ethernet receive queue thread for the case when both bypass transmit and receive queue thread are enabled. This is done to avoid cases where freeing transmitted bypass packets could be blocked by a Fusion critical section semaphore.

 

 
Title 
HW register definitions added
 
Case:  1248414
 
Date Fixed:  05/14/08
 
Description
Some register definitions described in the HW Reference were missing from reg_def.h. 
 
Solution 

Ported additional register definitions back from the CVS tip.

 

 
Title 
select failure
 
Case:  25051
 
Date Fixed:  02/12/08
 
Description
select waits forever for data, randomly, when 0 seconds are specified and 500000 usec are specified.
 
Solution 

select on the serial port was blocking forever. This was caused by the timeval structure being allocated

on the stack of the function, but being used outside of the function

 

 
Title 
TFTP failure
 
Case:  24340
 
Date Fixed:  11/05/07
 
Description
Trying to TFTP an image into flash from the bootloader fails.
 
Solution 
Modified code so the WRAP bit is set before setting the descriptor in ArmEthSend.

 

 
Title 
USB IN endpoint failure
 
Case:  24656
 
Date Fixed:  10/30/07
 
Description
0-length transfers on IN endpoint generate an error.
 
Solution 
Modified code to allow 0-length transfers on IN endpoint.

 

 
Title 
USB driver corrupting vector table
 
Case:  24656
 
Date Fixed:  10/29/07
 
Description
Vector table gets overwritten during normal operation.
 
Solution 
The USB driver was calling write, which in turn called malloc, which is not a good thing to do in an ISR. Replaced all malloc/free calls with tx_block_allocate/tx_block_release.

 

 
Title 
NAWAIT timer issue
 
Case:  17886/24631
 
Date Fixed:  10/19/07
 
Description
The NAWAIT timer was hard-coded to use timer1.  This could cause problems if an application opened timer1 and then called nawait.
 
Solution 
Modified code so NAWAIT uses the next available timer.

 

 
Title 
GPIO cleanup
 
Case:  23360
 
Date Fixed:  06/25/07
 
Description
Errors in the #defines in bsp/devices/ns9xxx/ns9360/gpio/gpio.c could cause problems with several GPIO pins.
 
Solution 
Corrected errors affecting pins 11, 65, 68, 69, 70, and 71

 

 
Title
I2C errors using one wire I2C device on the bus
 
Case:  22063
 
Date Fixed: 06/18/07

Description
One wire bus buster on I2C bus can lose data.
 
Solution
               I2C interrupt is disabled until ISR is installed completely
               
               Default spike filter value is set to 7 
               
               Write queue count and I2C status are changed after updating the register (initially it was done before) to
               prevent possible race condition. The reason is, with the old code, I2C ISR can read these values before register
               update and could mess up the state machine 
               
               Use of volatile data to prevent possible code omission due to optimization

 

 
Title
I2C error when more than one device is on the bus
 
Case:  1231908
 
Date Fixed: 06/14/07

Description
When using more than one device on the i2c bus, and NetOS does a read from the first device, followed by a write to the other device,
then a read from the first device again, the second read has the incorrect i2c device address placed on the bus.
 
Solution
Fixed problem in NAI2CKickStartRx().

 

 
Title
Serial DMA stall
 
Case:  1230281
 
Date Fixed: 05/14/07

Description
Serial channel C DMA transmitter stalls while updating display.
 
Solution
The DMA CE bit for TX should always be reset to 1 regardless of whether it is already a 1. 

 

 
Title
I2C locks up while doing file IO
 
Case:  1227809
 
Date Fixed: 04/06/07

Description
I2C could lock up while doing file I/O
 
Solution
Now we call i2c_is_bus_locked() from i2c_dev_open() to prevent lockups when customers use file I/O style API calls.

 

 
Title
Fix to prevent NAI2CInit from being called more than once
 
Case:  21981
 
Date Fixed: 04/05/07

Description
It was possible to call NAI2CInit more than once.  This could lead to some serious memory leaks.  NAI2CInit was meant to be called once.
 
Solution
The function NAI2CInit now has a flag that is set the first time and checked every time, so it will only execute once.

 

 
Title
Connect products  lock up during startup when using SPI
 
Case:  19817
 
Date Fixed: 01/05/07

Description
When modifying the BSP.h for SPI on the first port and UART on the second port (with changes to gpio.h to make sure the first port is setup for SPI_MASTER rather than undefined), and STDIO/DIALOG ports setup for /com/1, the unit will fail to boot up correctly.  This affects the ConnectEM, ConnectME, ConnectWIEM and ConnectWIME platforms.
 
Solution
Corrected device table to conditionally include the legacy SPI driver in devices.c, and added the define BSP_SPI_PORT_API in the wiem platform to choose the desired SPI driver – new, legacy or simple.

 

 
Title
I2C device locks up during startup
 
Case:  20017
 
Date Fixed: 12/18/06

Description
I2C device locks up occasionally on startup. 

Solution

Corrected I2C deadlock condition when SDA line is logic low during startup.

 
Title

SPI not working on ConnectCore 9C

 

Case:  1221300

 

Date Fixed:  11/29/06

Description

Serial port definitions missing SPI and other capabilities.
 
Solution
Corrected definitions in gpio.h.
 
 
Title

fwrite() failure

 

Case:  1221193

 

Date Fixed:  11/22/06

Description

Data erroneously appended to file when calling fwrite
 
Solution
Corrected issue with logic that controlled file offset.  Data is now inserted into the file correctly.
 
 
Title
Fopen() failure
 
Case:  19764
 
Date Fixed:  10/21/06
 
Description
Fopen fails when called with ‘w’ or ‘w+’ and file does not already exist.
 
Solution
Corrected issue in fopen logic.  File will be created if it does not exist.
 
 
Title
Race condition causes crash
 

Case: 17913

 

Date Fixed:  05/04/06

Description

The existing implementation has a race condition that causes crashes.

Solution
Fixed nat_fs_unlink() to not support background removal of an opened file,
since a background thread is needed to implement this properly.

 

 
Title
Data corruption on USB device Control endpoint
 
Case:  17624
 
Date Fixed:  01/18/06
 
Description
Cache coherency failures are occurring when memory adjacent
to the driver DMA buffers is being accessed after the DMA memory is setup
(invalidated), but prior to the actual transfer causes.  This access pulls
the line into cache and then becomes incoherent when the DMA occurs.
 
Solution
Aligned and isolated the DMA buffer on 32-byte boundaries for the
Control-Out endpoint.
 
 
Title
FTP Authentication Failure
 
Case: 17521
 
Date Fixed: 12/16/05
 
Description
User callback function called twice with error "Invalid Password"
during a single authentication sequence.
 
Solution
Corrected defect that caused the registered application error handler
from NARegisterTraceFailure() to be called multiple times for a single
authentication failure.
 

 

Title

Intermittent invalid GPIO output logic levels and settings


Case: 17509

 

Date Fixed:  12/14/05

 

Description

In a busy system, a read-modify-write within NAsetGPIOpin
and NAconfigureGPIOpin can result in incorrect settings when an
interrupt (or thread switch) occurs within the read-write-modify and
another NAsetGPIOpin and NAconfigureGPIOpin call is executed within
that interrupt handler (or switched thread).

 

Solution

Encapsulated all GPIO read-modify-write statements with
an NASetIRQ() to disable and reenable IRQs while executing the
read-modify-write.
 
 
Title
Software reset using blExecuteImage((WORD32 *)Reset_Handler_ROM);
on systems using write back data cache will crash
 

Case: 17376

 

Date Fixed:  12/07/05

Description
The MMU is being restarted without proper initialization . System
experiences an undefined instruction exception which will appear as
a crash. System will end up calling customizeErrorHandler() 
 
Solution
Check if the MMU has already been started and if it has, don't restart it.

 


Title

Using the 9360 GPIO 18 as a general purpose output logic 0 State

 

Case:  17414

 

Date Fixed:  12/06/05

Description

Configuring GPIO 18 on any 9360 platform to an output logic
zero is incorrect and instead the pin is configured to an input. 

 

Solution

Corrected naSetupPort18() to sense for BSP_GPIO_INITIAL_STATE_OUTPUT_DRIVER_LOGIC0 instead of
NA_GPIO_SELECT_MUX_GPIO_OUTPUT on BSP_GPIO_INITIAL_STATE_PIN18.

 

 

Title
Using the 9360 PWM on an alternate path and the LCD could
cause compilation errors

 

Case: 17395

 

Date Fixed:  12/05/05

Description
Using any PWM on an alternate GPIO pin will erroneously
cause a compilation error when also using the LCD on the primary PWM
pins. The PWM primary pins are on GPIO 36 through 39, which
correspond to LCD data bits 12-15. For example, 18-bit or dual 8-bit
LCD applications will run in to this problem.

 

Solution

The intent of this was to trap at compile time GPIO
conflicts. This was an error and there is no GPIO conflict. Corrected
the 9360-specific GPIO file to properly sense and trap for this
condition.
 
 
Title
The serial UART can potentially send duplicate characters when CTS is toggled
 
Case: HW Errata
 
Date Fixed: 11/23/05
 
Description
Due to an internal ASIC errata in the NET50, NS7520, NS9360
and NS9750, the character sent when flow control goes active (on CTS) can
be duplicated.  For more information, refer to the processor errata
documentation.  (put link to errata here)
 
Solution
This driver contains the software workaround enabled by default.
This software workaround requires no external hardware, but will react
slower to flow control signaling and thus have greater flow control skid
characters.  Flow control skid characters are those characters that are
transmitted after the flow control signal (CTS) goes active.  Refer to the
processor errata document for precise flow control skid character rates.
If the hardware workaround is incorporated, the software workaround can be
disabled (thus, preventing the higher flow control skid characters.)  This
software workaround can be disabled by commenting out the compiler directive
definition for NA_SERIAL_ENABLE_CTS_DUPLICATE_CHAR_ERRATA in the driver
(mercury_serl.c and netos_serl.c).
 

 

Title

Application rom.bin Fails to initialize

 

Case: 17301

 

Date Fixed:  11/23/05

 

Description

When loading an application’s rom.bin file (instead of using the bootloader), used to run an image directly from Flash,

as opposed to RAM, the initialization fails, and an "nccInitializationFailed:. . . “  message is displayed instead of

the dialog.

 

Solution

Corrected the function nccGetRequiredRamSize to check its location in memory and deduce from this information whether it is

running in ROM or RAM.  Based on this information, if in ROM will not include the text section in its calculation of RAM needed, while if

running in RAM, it will include the text section size.

 

 

Title

Clean up extraneous calls to setupsimpleserial

 

Case: 17165

 

Date Fixed:  11/01/05

 

Description

Setupsimpleserial could be called after it was already setup.

 

Solution:

Changed bsp_printf to call setupsimpleserial only if the channel

is not currently enabled.

 

 

Title

Calls to NAInvertGPIOpin cause momentary glitches

 

Case:  17129

 

Date Fixed:  10/14/05

Description
The GPIO configuration bits were cleared then reprogrammed,
causing extraneous switching. 
 
Solution                                  
Corrected NAInvertGPIOpin() to invert the logic value only.

 

 

Title

Potential Framing, Parity, or data corruption when receiving serial

data on the NS9360 or NS9750

 

Case: HW Errata

 

Date Fixed:  10/10/05

Description

Due to internal ASIC errata in the NS9360 and NS9750, the start
bit of a new character may not be detected when the character or buffer gap
timer expires.  For more information, refer to the processor errata
documentation.

 

Solution

A workaround exists that requires external hardware.  When this
hardware is present, the software required for this workaround can be enabled
by defining the compiler directive NA_SERIAL_ENABLE_GAP_TIMER_ARM9_SYNCHRONIZATION_ERRATA
in the driver.(mercury_serl.c).

 

 
Title
Setting up External IRQ1 on a NS9360 based platform
 
Case: 16760
 
Date Fixed:  08/22/05
 
Description
There is a defect when setting up a NS9360-based platform
to use the alternate path of the external IRQ1 (GPIO 28).  The value
loaded into the configuration register is going to the wrong place.
So this value remains in the default state and the value loaded for
GPIO 24 is getting inadvertently changed.
 
Solution
Correct  the programming for NS9360 platforms to put this

data into the right location.

 


Title

Timer API fails to properly configure

 

Case: 16737

 

Date Fixed:  08/21/05

Description

When used as a raw timer, the NATimerConfigure() is failing to
successfully configure.
 

Solution

Corrected a defect in the timer code, where a switch instance was
missing a break statement and falling through the default, which
is used to trap unrecognizable conditions.
 

 

Title

Setting Multiple FIRQ Handlers

 

Case: 16743

 

Date fixed:  08/18/05

Description

The ARM processor allows one FIRQ, but the function naIsrInstall() allows
multiple FIRQ handlers to be registered.

 

Solution

A mechanism was added to naIsrInstall() to trap when an FIRQ was already
registered.

 

 

Files:      netos\h\ncc_init.h
              
netos\h\pthread.h

               netos\h\semaphore.h

               netos\h\gpiomux_def.h

               netos\h\reg_deg.h

   netos\h\arm9\mctimer.h

   netos\h\arm9\usbreg_def.h

               netos\src\bsp\bootloader\net\armeth.c

               netos\src\bsp\common\appconf_api.c

               netos\src\bsp\common\sysAccess.c

               netos\src\bsp\common\nafs_intf.c

               netos\src\bsp\common\starttcp.c

               netos\src\bsp\devices\common\ethernet\eth.h
               netos\src\bsp\devices\common\ethernet\eth_isr.c
               netos\src\bsp\devices\common\ethernet\eth_os.c
               netos\src\bsp\devices\common\ethernet\eth_recv.c
               netos\src\bsp\devices\common\ethernet\eth_send.c
               netos\src\bsp\devices\common\ethernet\eth_dma.c
               netos\src\bsp\devices\common\ethernet\eth_stack.c
               netos\src\bsp\devices\common\serial\mercury_serl.c
               netos\src\bsp\devices\common\serial\netos_serl.c

               netos\src\bsp\devices\common\serial\sp_serl.c

               netos\src\bsp\devices\common\serial\netos_serl.h

               netos\src\bsp\devices\common\timer\timer.c

   netos\src\bsp\devices\common\usb\usb_api.h

               netos\src\bsp\devices\net_50_20\net50\gpio\gpio.c

               netos\src\bsp\devices\net_50_20\serial\gdbserial.c
               netos\src\bsp\devices\net_50_20\serial\simpleserial.c

               netos\src\bsp\devices\net_50_20\ns7520\gpio\gpio.c

               netos\src\bsp\devices\ns9xxx\common\i2c\i2c_api.c

               netos\src\bsp\devices\ns9xxx\common\i2c\i2c_api.h

               netos\src\bsp\devices\ns9xxx\common\i2c\i2c_gpio.c

               netos\src\bsp\devices\ns9xxx\common\i2c\i2c_eeprom.c

               netos\src\bsp\devices\ns9xxx\common\i2c\i2c_driver.h

               netos\src\bsp\devices\ns9xxx\common\i2c\i2c_driver.c

               netos\src\bsp\devices\ns9xxx\common\usb\usb.c

               netos\src\bsp\devices\ns9xxx\common\usb\usb_driver.c

               netos\src\bsp\devices\ns9xxx\common\usb\usb_def.h

               netos\src\bsp\devices\ns9xxx\ns9360\gpio\gpio.c

               netos\src\bsp\devices\ns9xxx\ns9750\gpio\gpio.c

               netos\src\bsp\init\arm7\NCC_INIT.c
               netos\src\bsp\init\arm7\flashutil.c
               netos\src\bsp\init\arm9\mc_isr.c

               netos\src\bsp\init\arm9\NCC_INIT.c

               netos\src\bsp\platforms\connectcore9c_a\gpio.h

               netos\src\bsp\platforms\connectem\cs.c
               netos\src\bsp\platforms\connectme\cs.c
               netos\src\bsp\platforms\connectsp\cs.c
               netos\src\bsp\platforms\net50_d\cs.c
               netos\src\bsp\platforms\net50bga_a\cs.c
               netos\src\bsp\platforms\ns7520_a\cs.c
               netos\src\bsp\platforms\ns9360_a\bsp.h
               netos\src\bsp\platforms\connectwiem\cs.c
               netos\src\bsp\platforms\connectwime\cs.c
               netos\src\bsp\platforms\connectem\devices.c

               netos\src\bsp\platforms\connectme\devices.c

               netos\src\bsp\platforms\connectwiem\devices.c

               netos\src\bsp\platforms\connectwime\devices.c

               netos\src\bsp\platforms\connectwime\bsp.h

               netos\src\examples\nausbdevapp\usb_test.c

               netos\src\examples\nausbdevapp\data.c

               netos\src\examples\nai2capitestapp\root.c

               netos\src\examples\nai2capitestapp\i2c_test.c

               netos\src\examples\nai2capitestapp\ i2c_test.h

               netos\src\examples\nai2capitestapp\appconf.h

 

Special Instructions

 

  • Unzip the patch(es) to the root of your NET+OS installation, for example C:\netos63_gnu\.
  • Be sure to install any patches listed under Dependencies below
  • Rebuild your BSP.
  • Rebuild your application.

 

Patch Link:  BSPUpdates_63

 

Dependencies

This patch also requires the installation of the following patch(es):

 

ApiReference_63

TCPIPUpdates_63

ThreadXUpdates_63