nxdrvlinux/libcifx/Toolkit/version_history.txt
Sebastian Doell ac2f4d1789 Add initial driver source based on svn versions:
- toolkit V2.8.0.1@14806
 - BSL V1.8.0.0@14590
 - tcpserver: V1.4.3.0@14676 (marshaller V2.4.0.1@14551)
2024-02-05 09:23:09 +01:00

555 lines
24 KiB
Plaintext

cifX-Toolkit Version History:
=============================
V2.8.0.1
-----------------
- Added missng ulOption parameter in SerialDPM example functions (Read_NXxx / Write_NXxx)
V2.8.0.0
-----------------
- Added chip-type verfication for firmware download
- Added new compile time option CIFX_TOOLKIT_USE_CUSTOM_DRV_FUNCS
- Added license information
- Update HILDEF headers to version 20230403-00
- Fixed error/rejection during NXS firmware download
- Fixed issue which only allowed a COLDSTART when APP-CPU and IDPM was used
- Fixed file upload for empty files (file size = 0)
- Fixed issue regarding unaligned access to the DPM
V2.7.3.0
-----------------
- Added new option and functions to enable cached I/O buffer access for PLC functions
Modified and extended OS functions:
OS_MapUserPointer()/OS_FlushCacheMemory_ToDevice()/OS_InvalidateCacheMemory_FromDevice()
Modified and extended USER and CIFX API functions:
USER_GetCachedIOBufferMode() / xChannelPLCMemoryPtr()
- Updated 2nd Stage Loader to V1.8.0.0
V2.7.2.0
-----------------
- Fixed xSysdeviceResetEx() to allow passing of additional flags to underlying functions
V2.7.1.0
-----------------
- Fixed reset parameter and flag masking, before writing them to the ulSystemControl value in the DPM
- Update HilscherDefinitions to version 20220112-00
V2.7.0.0
-----------------
- Fixed missing return of ulState packet errors in cifXReadFirmwareIdent()
- Removed "\r\n" from trace strings
- Fix netX51 detection during startup
- Make CRC32 function public
- Unify OS_* functions in API header and supplied template implementation
- Change prototype of OS_Time() to support 64bit time values
- Update HilscherDefinitions to version 20211110-00
- Update cifXAPI to version 20210908-00
- Fixed GCC compiler warnings (unaligned pointer value from packed member address of a struct or union)
- Optimize DSR function by minimizing hardware accesses
V2.6.0.0
-----------------
- Changed type of bIrqNumber from uint8_t to uint32_t
V2.5.1.0
-----------------
- Fixed reset handling to update handshake flag state when device is in interrupt mode
- Update HilscherDefinitions to version 20200514-01
V2.5.0.0
-----------------
- xDriverEnumBoards() now returns CIFX_NO_MORE_ENTRIES, if actual board count is exceeded
- Fix CIFX_DMA_STATE_GETSTATE define in DEV_DMAState()
V2.4.0.0
-----------------
- Fixed Firmware update via xSysdeviceResetEx() if executed on APP CPU
- Big Endian fixes including possible unexpected values when performing write
access using xChannelControlBlock(). xChannelCommonStatusBlock() and xChannelControlBlock()
shall only be called with offset '0' on big endian targets
- Increase timeout during updatestart handling for jump to firmware (netX90/netX4000)
- Simultanious access to handshake flags may lead to loss of latest Change-Of-State flags
- Update HilscherDefinitions to version 20191108-00
- Update cifX API headers to version 20191108-00
- Updated 2nd Stage Loader to V1.6.0.1
V2.3.0.0
-----------------
- Update PCI IDs for CIFX M2 devices
V2.2.0.0
-----------------
- Detection of newer netX90 chip revisions fails
- xSysdeviceFindFirstFile() does not check for last packet or packet length=0
- Missing HWIF function around mailbox counter access in xChannelRegisterNotification()
- SerialDPM initialization fails if the first detected interface is SERDPM_UNKNOWN
V2.1.0.0
-----------------
- Add DEV function for ResetEx modes
- Prevent DPM access during resets for netX4000 based PCI devices
V2.0.1.0
-----------------
- Using hilscher standard definition files
- netX90 / netX4000 device support added (flash based devices)
- Support download of netX90/netX4000 firmware (update) files
- Rework chip type detection
- Add new API function xSysdeviceResetEx()
V1.6.0.0
-----------------
- Fixed ulCopySize calculation in DEV_CheckForDownload()
V1.5.0.0
-----------------
- Updated 2nd Stage Loader to V1.6.0.0
- Fixed delete of existing files in all channels if a new firmware is loaded (DEV_RemoveChannelFiles() was only called with channel 0)
- Fixed DEV_RemoveChannelFiles() "Find First File" iteration does not reset the internal data on each new iteration
- Fixed LINT warning in toolkit c modules
- Fixed USER_xxx function prototypes in cifXToolkit.h to match implementation
- Extended template file TKitUser_Custom.c by missing USER_GetDMAMode() function
- Fixed warnings when compiling the toolkit with gcc compiler
- Added "const" keyword to CrC32Table[] definition in cifXDownload.c, so the table can be stored in .rodata when used in an emdedded system
- Changed SPM / HWIF example implementation to use the DEVICEINSTANCE pointer instead of the pvOSDependent pointer
- Added OS_SpiInit() OS_SPILock() and OS_SPIUnlock() functions to SPM function interface
- Added locking mechanism for SPM read/write functions to prevent overlapped fucntion calls
- Changed the default firmware startup timeout definition CIFX_TO_FIRMWARE_START from 10 to 20 seconds
- Improved return value checking (e.g. malloc) during hardware initiaization in cifXInit()
- xChannelBusState() / CIFX_BUS_STATE_GETSTATE now updates the COS flags to be able to call the function in a loop and to get an updated state
- Fixed internal check handle functions CheckSysdeviceHandle()/CheckChannelHandle() to be usable also during system start
- Added more error descriptions for xDriverErrorDescripton()
- Added additional check for system channel READY before accessing it
V1.4.0.0
-----------------
- Improved ISR handler by reading only necessary handshake registers on PCI cards
- Fixed LINT warning in DEV_DoSystemStart(), multiple definition of ptSysChannel
- Fixed LINT warning by adding type casts
- Fixed xSysdeviceInfo()/CIFX_INFO_CMD_SYSTEM_CHANNEL_BLOCK for use with SPM, removed access via the "DPM pointer"
- Fixed xSysdeviceExtendedMemory() missing convert/HWIF function when reading tSystemState
- Renamed "md5" files to "Hilmd5" preventing conflicts with custom components using same file name
- xChannelIORead()/xChannelIOWrite() does not return COM flag state in "uncontrolled mode"
- DEV_IsCommunicating() removed re-read of NCF_Handshake flags for SPM speed improvment
V1.3.0.0
-----------------
- Fixed DSR Handler channel loop counting preventing one additional iteration
- Fixed compiler warnings created by implicit data conversion on 64bit systems
- Fixed Lint warnings in cifXInit.c
- Fixed notification call "post reset event" (eCIFX_TOOLKIT_EVENT_POSTRESET) done to late
- Added system state trace log information (e.g. DPM cookie) during start-up
- Added include in cifXUser.h surrounding <#if _MSC_VER> allowing none Microsoft compiler using -wundef
V1.2.0.1
-----------------
- Remove single line comment (not allowed in ANSI-C)
V1.2.0.0
-----------------
- Changed function interface of the hardware read/write functions (PFN_HWIF_MEMCPY). Using void pointer instead of uint32_t
for address parameter, skips address calculation for memory mapped devices on 64bit systems.
- xChannelSyncState() may not work on flash-based devices (if no reset is done during initialization)
or after xSysdeviceReset()
- Added target independent protocol implementation for serial DPM handling
- xChannelRegisterNotification/CIFX_NOTIFY_COM_STATE now calls always the user callback to signal the actual COM flag state
- Interrupt mode with shared PCI interrupts may result in invalid flags being handled in seldom cases
- Added support for IAR C/C++ Compiler (ARM Cores only)
- Added support for armcc Compiler (previously known as ARM RealView)
- Always check cookie before evaluation of READY flag to prevent misinterpretation of invalid DPM content
- Updated 2nd Stage Loader to V1.4.17.0
- Introduced eCHIP_TYPE_NETX52 to distinguish between netX51 and netX52
- Introduced initial wait for bootloader startup before invoking POST_BOOTLOADER event
- Mailbox notification may cause illegal memory access due to missing hardware interface abstraction and endianness conversion
- DMA mode does not work properly on big endian machines due to missing endianness conversion
V1.1.5.0
-----------------
- DEV_TransferPacket() may drop unexpected packets
- DEV_WaitForBitstate_Poll / DEV_WaitForSynchState_Poll may wait one additional cycle before returning
- netX51/52 RAM Based device support
ATTENTION: DPM Timings might need to be adjusted in eCIFX_TOOLKIT_EVENT_PRE_BOOTLOADER notification callback,
as RDY signal is not activated by ROM loader. If the host has strict timings (e.g. NXPCA-PCI), the
DPM won't be readable.
Sample code:
case eCIFX_TOOLKIT_EVENT_PRE_BOOTLOADER:
if(eCHIP_TYPE_NETX51 == ptDevInst->eChipType)
{
/* netX51 has a timing configuration without rdy/busy, so we need to adjust it here, to be able to access
memory starting at offset 0x100 */
NETX51_DPM_CONFIG_AREA_T* ptDpmConfig = (NETX51_DPM_CONFIG_AREA_T*)ptDevInst->pbDPM;
ptDpmConfig->ulDpmRdyCfg = MSK_NX56_dpm_rdy_cfg_rdy_pol | /* DPM is ready when external RDY-signal is high. */
(1 << SRT_NX56_dpm_rdy_cfg_rdy_drv_mode); /* Push-Pull Mode */
ptDpmConfig->ulDpmTimingCfg = 0; /* Disable setup times and filter. */
}
break;
- Updated 2nd Stage Loader to V1.4.16.0
V1.1.4.0
-----------------
- Fixed memory leak when using netX100 RAM based devices (e.g. cifX)
- Fixed memory leak if unsupported DPM channel was found
- Updated 2nd Stage Loader to V1.4.12.0
V1.1.3.0
-----------------
- Added Lint fixes and re-ordered handling in DSR function
- Added excplicit casts to allow compiling using C++ compiler (Tested using Visual Studio)
- Suppress checking of sync handshake flags in DEV_IsReady/IsRunning and DEV_GetHandshakeBitState for performance reasons on slow busses
- Updated 2nd Stage Loader to V1.4.10.0
V1.1.2.0
-----------------
- Added notification callback for COM flag state
V1.1.1.0
-----------------
- Added command packet to set the device time during hardware startup, if a RTC is aveilable
- Added MRAM API functions
V1.1.0.0
-----------------
- Fix: Lock DEV_DoSystemStart() againt DSR to prevent writes to handshake flags while in reset, if an IRQ occurs
- Fix: DEV_DoSystemStart() now clears internal COS Flags in Interrupt mode
- Updated unsigned long data types to uint32_t
- New header file added to separate declarations for cifX hardware functions from cifXToolkit.h
- Added Hardware interface layer (supports serial DPM access e.g. via SPI, RDY/BSY DPM workaround)
- Added optional validation of pointers and handles passed to toolkit functions (CIFX_TOOLKIT_PARAMETER_CHECK)
- Added Debug Trace output of device information (DevNr/SerialNr/SlotNr)
- Added eCIFX_DEVICE_DONT_TOUCH device type to use cards without any changes
- Added xSysdeviceBootstart() / DEV_DoSystemBootstart() function to switch into bootloader mode
V1.0.4.0
-----------------
- Starting automatically downloaded configuration database may fail for flash based devices
V1.0.3.0
-----------------
- Handshake Flags may get out of synch when doing a system start in interrupt mode, if
firmware asserts interrupt at unexpected time
- Module downloading to flash / starting from flash may timeout when for large modules
V1.0.2.0
-----------------
- xChannelDMAState() comments fixed
- netJACK 100 added to PCI definitions header file
- ChannelDemo() / xChannelIOWrite() uses now abSendData[] instead of abRecvData[]
- cifXCreateChannels(), fixed memory leak if channel was not created
- xSysdeviceReset() / xChannelReset(CIFX_SYSTEMSTART) may leave COS flags in invalid
state in interrupt mode (influences loadable modules)
V1.0.1.0
-----------------
- DSR Handler crashes due to invalid access on a communication channel instance
- xSysdeviceReset is now locked against ISR/DSR or Cyclic Thread. Earlier versions
may write invalid handshake flags during a system start if the cyclic thread or IRQ
accesses the flags during this time.
- Downloading loadable modules (.NXO) may fail on larger files due to the last
confirmation packet taking longer than expected
V1.0.0.0
-----------------
- xChannelSyncState parameters updated (added Timeout)
- SyncState Error codes added
- Loadable modules may not work (depends on implementation of OS_Strncpy)
- Fixed GCC compiler warning (deferencing pointer breaks strict-aliasing rules)
- If start of Firmware fails (e.g. wrong HW options) the card will not
be rejected by toolkit. It will be used as a card with a system device only.
- xChannelPLCMemoryPointer may not working correctly due to an invalid parameter
passed to OS_MapUserPointer / UnmapUserPointer
- GetMDRequest may fail depending on the implementation of OS_Strncpy
- xChannelPLCActivateRead / Write did not lock access to handshake flags
- cifXHandleWarmstart() using same buffer for send/receive in TransferPacket() fixed
- DEV_DeleteFile(), OS_Strncpy() size of copied data must include the necessary 0 character
- DEV_Download() uses twice the packet timeout (=10s) for the last packet if modules are loaded
V0.10.1.0
--------------------------
- Interrupt mode may miss first interrupt after initialization, due to readout
of sync handshake flags
V0.10.0.0
--------------------------
- Functions for SyncMode added
- Interrupt Handling changed to support notification callbacks for user (xChannelRegisterNotification)
V0.9.9.0
--------------------------
- 64-Bit Support added (ISO-C99 header file "stdint.h" is now needed to provide
fixed-width data types)
B0.953
--------------------------
09.02.2010
- ISA card handling improved by adding an aditional DEV_ReadHandshakeFlags()
in cifXCreateChannels()
B0.952
--------------------------
25.01.2010
- cifXEndianess.h. added additional braces into the conversion macros
B0.951
--------------------------
03.12.2009
- DEV_GetMBXState(), receive count handling fixed
B0.950
--------------------------
06.11.2009
- DMA support added
- Slot number handling added
B0.946
--------------------------
01.10.2009
- DEV_ReadHostState extended by fReadHostCOS to prevent the read back of the
host COS flags when they are not changed by the hardware
- Handling of COS flags improved (BUS_STATE / CONFIG_LOCK / INITIALIZE) and handled now
in DEV_DoHostCOSChange()
- DEV_DoChannelInit() now checks if the READY flag is gone and than waits until it is back
B0.945
--------------------------
31.08.2009
- cifXStartModule() fixed if no channel is available during first start
- HilPCIDefs.h included
- cifXHWFunctions(), TRUE/FALSE definition replaced with 1/0
- cifXDownload(), CIFX_BUFFER_TOO_SHORT fixed by using now the max. packet size for confirmation packets
B0.944
--------------------------
07.07.2009
- Interrupt handling in ISR and DPC fixed/improved
- xChannelBusState(), COM_FLAG handling in conjunction with
timeout settings fixed/improved
- xChannelBusState() handling moved to DEV_HostState() function to be callable as a low level function
timeout settings fixed/improved
B0.943
--------------------------
28.04.2009
- Module download improved for comX
B0.942
--------------------------
13.02.2009
- DEV_CheckCOSFlags is now locked against DEV_DoChannelInit,
to prevent COS Flag evaluation while a channel init is running
B0.941
--------------------------
30.01.2009
- Big Endian Host support added via CIFX_TOOLKIT_BIGENDIAN define
- New parameter (eDeviceType) added to device instance to allow
DPM cards (e.g. NXHX500/50) to only use RAM (like cifX does).
Previous versions always expected a serial flash on DPM based devices
- New parameter (eChipType) added to device instance, so functions like
USER_GetBootloader can check if a bootloader for a netX50 or netX100/500
is requested.
- netX50 support added
20.01.2009
- "Loadable Modules" support for comX included
B0.940
--------------------------
12.12.2008
- PRLIMINARY support for "Loadable Modules" included
V0.931 (under Development)
--------------------------
10.12.2008
- cifXCreateChannels()
answer to warmstart commands now excepted with size != 0 preventing error 0x800A0012
27.11.2008
- IO mode RCX_IO_MODE_BUFF_DEV_CTRL included
24.11.2008
- cifXTKitISRHandler() extended by new parameter fPCIIgnoreGlobalIntFlag
- Filename cases corrected to support case sensitive operating systems
17.06.2008
- While loops extended by Sleep(0)
B0.930 (under Development)
--------------------------
16.05.2008
- xChannelOpen() error return extended CIFX_INVALID_CHANNEL
- OS_MapUserPointer() and OS_UnmapUserPointer() now have a new parameter pvOSDependent
07.05.2008
- Signalling interrupts from DSR changed, so that systems
that may get interrupted during DSR are working
- DSRhandler changed to signal netX Handshake bit changes (since previous irq)
instead of Host/Netx flag differences. This allows DEV_WaitForBitstate_Irq
06.05.2008
- xDriverErrorDescripton did not return error description,
due to internal array size miscalculation29.04.2008
- DOWNLOAD_MODE_LICENSECODE added
28.04.2008
- PLC Functions did not return NO_COMFLAG error
B0.923 (under Development)
--------------------------
02.04.2008
- Wait functions in cifXHWFunctions reviewed
- xChannelReset(CIFX_CHANNEL_INIT) will only check if the
channel becomes READY. Checking for RUNNING removed.
- cifXStopDevice(), deletion of the system device interrupt events included
21.02.2008
- Error return in xDriverMemoryPointer() and xChannelPLCMemoryPtr() fixed
V0.922 (under Development)
--------------------------
04.09.2007
- Setup program:
- Bug fix, which solves the Warmstart.dat files deletion if more than
two cards are using it, included (this fix was lost in V0.921)
- Firmware name and version now shows "-- not available --" for .mod files
PROFINET slave parameters:
- Input/output size changed to 1024 Byte
- Device type string limited to 25 characters
- Test program:
- Scroll bar for the receive packet text control included, to allow viewing of packets,
which are bigger than the control.
- All version information changed to V0.922
V0.921 (under Development)
--------------------------
26.07.2007
- Download now supports downloading to serial flash on target (if available)
Filename passed to download function will be used to identify target (e.g. "SYSFLASH")
10.07.2007
- cifX Test crashed, if no device was selected in dialog
03.05.2007
- On DPM based devices a the driver always creates a communication channel. Even without a firmware.
This can lead into blue screen if such a channel is access from a user application.
26.04.2007
- Function xChannelBusState() now checks the
COMMUNICATION-Flag if a timeout is given.
Without a timeout, only BUS ON /OFF is processed
25.04.2007
- Reading security FLASH and placing data into the
DPM (bootloader and firmware)
- File header handling included
- Prevent multiple firmware files (only the first one
is usable) included
- Test of DPM and PCI hardware
19.04.2007
- MD5 checking for files included (calculated on hardware and firmware)
- Download for DPM based hardware reworked and
files are only be downloaded if they are not existing
or different
- Download mode now choosen by the file extension
- New 2nd stage bootloader detection and handling included
18.04.2007
- API functions for
* xSysdeviceUpload/Download, xSysdeviceFileFindFirst/FindNext
* xChannelUpload/Download, xChannelFileFindFirst/FindNext
extended by two new parameters, to be able to deliver unhandled
receive packets during these functions
- Definitions for CIFX_COLDSTART and CIFX_WARMSTART changed
to CIFX_SYSTEMSTART and CIFX_CHANNELINIT
- New COS-Flag handling included
- Function xChannelBusState() included
V0.920 (under Development)
--------------------------
11.04.2007
- C++ style comments removed, missing comment end cifXHWFunctions() fixed
10.04.2007
- Prepared interrupt handling (provided in cifXInterrupt.c)
- Update DEVICEINSTANCE structure to provide infos needed for IRQ handling
- Added OS Dependent functions for Enabling/Disabling device interrupt (needed in OS Abstraction layer)
- Added CIFx Device Driver dependent include files into OS_Includes.h
- Added the following functions to cifX API
* xChannelIOInfo
* xSysdeviceReset
* xChannelFindFirstFile
* xChannelFindNextFile
* xChannelUpload
* xSysdeviceFindFirstFile
* xSysdeviceFindNextFile
* xSysdeviceUpload
- Added cifXTkitCyclic timer to Toolkit API, used to poll the COS flags on a polled cifX device.
Needs to be called by user cyclically (recommended time is approx. 500ms)
- Added Device Functions used by new API functions
* DEV_Upload function
* DEV_DoWarmstart
* DEV_DoColdStart
- Prepared interrupt handling via 2 functions needing to be called by user it IRQ is needed
* cifXTKitISRHandler
* cifXTKitDSRHandler
- Renamed USER_ErrorTrace to USER_Trace and changed signature to provide more flexibility.
Toolkit now uses a global variable g_ulTraceLevel to adjust the amount of trace messages.
- Some hardware dependent functions did poll the Handshake flags if interrupt is enabled
- DEV_ReadHandshakeFlag did check the COS flags wrong
- DEV_TriggerWatchdog illegally returned CIFX_DEV_NOT_RUNNING even if the device was running
- DEV_IsCommunicating did not set CIFX_DEV_NO_COMFLAG correctly
- USER_GetInterruptsEnable added, to give the user the possibility to enable interrupts on a
per device base
V0.912 (09.01.2007)
-------------------
- Function bodies for
xChannelGetSendPacket
xChannelConfigLock
xChannelReset
included
- Internal version number set to V0.912
V0.911 (26.10.2006)
-------------------
- UNREFERENCED_PARAMETER macro fixed
V0.910 (19.10.2006)
-------------------
- Compiler Warning fixes for GNU compiler
- VxWorks combatible HANDLE now used (HANDLE-->CIFXHANDLE, API change)
- CifxErrors.h now uses C-Style comments
- Structure Packing fixed for MidSys_Public.h
- Some toolkit functions now static, as they are only used internally
V0.903 (13.10.2006)
-------------------
- DEV_WaitForBitState_Poll's timeout changed.
- Starttime was read inside poll loop
- Starttime read into unsigned long, for overflow detection
a long variable is needed
- DEV_ReadHandshakeFlags() wrong HCF_NETX_COS_ACK flag fixed
- Fixed bit state waiting timeout for timer overflows
- Warmstart handling included
- OS_MapUserPointer/OS_UnmapUserPointer added for DPM mapping to application
V0.902 (06.10.2006)
-------------------
- Put/GetPacket now checks for Ready flag
- Fixed size calculation for OS_MemRealloc calls
- Host Handshake Flags did not update COS flags
- Host Handshake Flags are now read earlier, to
allow Ready check on Firmware read packets
- Calculation of the mailbox size for system channel
and communication channel fixed (sizeof......)
V0.900 BETA (10.08.2006)
------------------------
- first version