fp@479: ------------------------------------------------------------------------------- fp@479: fp@479: $Id$ fp@479: fp@1325: vim: spelllang=en spell fp@1325: fp@479: ------------------------------------------------------------------------------- fp@479: fp@1206: Changes since 1.4.0: fp@1206: fp@1266: * Added a userspace library for accessing the application interface. This fp@1266: library is licensed under LGPLv2. fp@1392: * Added distributed clocks support. fp@1509: * Added watchdog configuration via application interface (thanks to J. Mohre). fp@1266: * Added VoE mailbox protocol support. fp@1844: * Added SoE mailbox protocol support. fp@1500: * Improved the callback mechanism. ecrt_master_callbacks() now takes two fp@1500: callback functions for sending and receiving datagrams. fp@1500: ecrt_master_send_ext() is used to execute the sending of non-application fp@1500: datagrams. fp@1225: * Separated datagram initialization from filling the payload with zeros. fp@1225: Introduced new method ec_datagram_zero() for that. fp@1206: * Added phy_read and phy_write commands to ethercat tool. fp@1479: * Added e100 driver for Intel PRO/100 NICs. fp@1546: - Added e100 driver for 2.6.27. fp@1479: - Added e100 driver for 2.6.28, thanks to Kim. H. Madsen. fp@1505: - Added e100 driver for 2.6.29, thanks to Andre Puschmann. fp@1812: - Added e100 driver for 2.6.31. fp@2121: - Added e100 driver for 2.6.32. fp@1479: * Added 8139too driver for kernels 2.6.25 (F. Pose), 2.6.26 (M. Luescher), fp@2075: 2.6.27, 2.6.28, 2.6.29 (M. Goetze), 2.6.31 (F. Pose), 2.6.32 (F. Pose), fp@2075: 2.6.34 (Malcolm Lewis), 2.6.36 (F. Pose) and 2.6.37 (F. Pose). fp@2051: * Added e1000 driver for 2.6.26 (M. Luescher), 2.6.27 and 2.6.28. fp@1973: * Added r8169 driver for 2.6.24, 2.6.27, 2.6.28, 2.6.29, 2.6.31 and 2.6.32 fp@1973: (latter thanks to Robbie K). fp@1305: * Debug interfaces are created with the Ethernet addresses of the attached fp@1305: physical device. fp@1313: * Improved error case return codes of many functions. fp@1370: * Implemented the File Access over EtherCAT (FoE) mailbox protocol, thanks to fp@1370: O. Zarges. fp@1337: * Going to the Bootstrap state is now supported by the state machines and the fp@1337: command-line tool. fp@1497: * Added ecrt_open_master() and ecrt_master_reserve() separation for fp@1510: the userspace library (thanks to Martin Troxler). fp@1510: * Added bus information interface (methods ecrt_master(), fp@1510: ecrt_master_get_slave(), ecrt_master_get_sync_manager(), fp@1510: ecrt_master_get_pdo() and ecrt_master_get_pdo_entry()) to get information fp@1510: about the currently connected slaves and the PDO entries provided (thanks to fp@1510: Martin Troxler and Stefan Weiser). fp@1510: * Added ecrt_master_sdo_download() and ecrt_master_sdo_upload() fp@1510: methods to let an application transfer SDOs before activating the master fp@1510: (thanks to Stefan Weiser). fp@1498: * Fixed SDO upload segment response (thanks to Christoph Peter). fp@1533: * Fixed SDO upload segment response for 10 bytes mailbox length (thanks to fp@1533: Joerg Mohre). fp@1382: * SDO entry access rights are shown in 'ethercat sdos'. fp@1384: * Added 64-bit data access macros to application header. fp@1399: * Added debug level for all masters as a module parameter. Thanks to Erwin fp@1399: Burgstaller. fp@1400: * Clear slave list on link down. fp@1401: * Output device link state in 'ethercat master'. fp@1422: * Added 'ethercat graph' command which outputs the bus topology in fp@1422: DOT language. fp@1443: * Changed EC_MAX_SII_SIZE to 4096. fp@1474: * 'ethercat xml' creates valid XML for more than one slave fp@1474: (thanks to E. Burgstaller). fp@1485: * Added 'ethercat eoe' command to display Ethernet over EtherCAT statistics. fp@1514: * Added 'ethercat cstruct' command to output PDO information in C language. fp@1489: * Significantly improved EoE bandwidth by running EoE processing in a kthread. fp@1528: * Switched version control from Subversion to Mercurial. fp@1526: * Implemented CompleteAccess for SDO downloads. fp@1826: * ethercat tool is now able to handle multiple masters. The --masters option fp@1826: supports ranges like '0,3,8-10'. fp@1206: fp@1330: Changes in 1.4.0: fp@1304: fp@1304: * Fixed race condition in jiffy-based frame timeout calculation. fp@1304: * Fixed race condition concerning the ec_slave_config_state->operational flag. fp@1304: * Fixed wrong calculation of the expected working counter if the process data fp@1304: of a domain span several datagrams. fp@1318: * Fixed a kernel oops when a slave configuration is detached while the actual fp@1318: configuration is in progress. fp@1310: * Fixed typo in logging output. fp@1325: * Removed 'bashisms' from init script ('function' keyword). fp@1325: * Fixed bug in e1000 drivers. Memory was allocated when sending the first fp@1325: frame. fp@1326: * Modified licence headers to avoid conflicts with the GPL. fp@1326: * Restricted licence to GPLv2 only. fp@1327: * Fixed spelling of 'PDO', 'SDO' (all uppercase) and 'xx over EtherCAT' fp@1327: (without hyphens). fp@1304: fp@1304: Changes in 1.4.0-rc3: fp@1243: fp@1243: * Ported the master thread to the kthread interface. fp@1243: * Added missing semaphore up() in an ioctl(). In rare cases, the master fp@1243: semaphore was not released. fp@1243: * Minor fix in 'slaves' command that fixed duplicate display of supported fp@1243: mailbox protocols. fp@1327: * The SDO Information Service is only queried, if the slave has the fp@1243: corresponding SII bit set. fp@1243: * Added some missing header files in the command-line-tool code. fp@1243: * Removed unstable e100, forcedeth, and r8169 drivers. fp@1243: fp@1205: Changes in version 1.4.0-rc2: fp@1205: fp@1205: * Fixed a deadlock causing race condition concerning thread signaling when the fp@1205: master thread had no opportunity to run, but shall be killed immediately fp@1205: after creation. fp@1205: * Added missing up()s causing a semaphore being not released in some rare fp@1205: cases. fp@1205: * Minor fixes. fp@1205: * Removed some deprecated files. fp@1205: fp@1205: Changes in version 1.4.0-rc1: fp@767: fp@792: * Realtime interface changes: fp@1083: - Replaced ec_slave_t with ec_slave_config_t, separating the bus fp@1083: configuration from the actual slaves. Therefore, renamed fp@792: ecrt_master_get_slave() to ecrt_master_slave_config(). fp@792: - Replaced slave address string with alias and position values. See fp@792: ecrt_master_slave_config(). fp@792: - Removed ecrt_master_get_slave_by_pos(), because it is no longer fp@832: necessary due to alias/position addressing. fp@792: - Added ec_slave_config_state_t for the new method fp@792: ecrt_slave_config_state(). fp@792: - Process data memory for a domain can now be allocated externally. This fp@842: offers the possibility to use a shared-memory region. Therefore, fp@832: added the domain methods ecrt_domain_size() and fp@832: ecrt_domain_external_memory(). fp@1327: - PDO entry registration functions do not return a process data pointer, fp@1083: but an offset in the domain's process data. In addition, an optional bit fp@1083: position can be requested. This was necessary for the external domain fp@1083: memory. An additional advantage is, that the returned offset is fp@1083: immediately valid. If the domain's process data is allocated internally, fp@832: the start address can be retrieved with ecrt_domain_data(). fp@792: - Replaced ecrt_slave_pdo_mapping/add/clear() with fp@1327: ecrt_slave_config_pdo_assign_add() to add a PDO to a sync manager's PDO fp@1327: assignment and ecrt_slave_config_pdo_mapping_add() to add a PDO entry to a fp@1327: PDO's mapping. ecrt_slave_config_pdos() is a convenience function fp@1083: for both, that uses the new data types ec_pdo_info_t and fp@1327: ec_pdo_entry_info_t. PDO entries, that are mapped with these functions fp@1083: can now immediately be registered, even if the bus is offline. fp@792: - Renamed ec_bus_status_t, ec_master_status_t to ec_bus_state_t and fp@792: ec_master_state_t, respectively. Renamed ecrt_master_get_status() to fp@792: ecrt_master_state(), for consistency reasons. fp@792: - Added ec_domain_state_t and ec_wc_state_t for a new output parameter fp@832: of ecrt_domain_state(). The domain state object does now contain fp@832: information, if the process data was exchanged completely. fp@1327: - Former "PDO registration" meant PDO entry registration in fact, therefore fp@792: renamed ec_pdo_reg_t to ec_pdo_entry_reg_t and ecrt_domain_register_pdo() fp@832: to ecrt_slave_config_reg_pdo_entry(). fp@792: - Removed ecrt_domain_register_pdo_range(), because it's functionality can fp@1327: be reached by specifying an explicit PDO assignment/mapping and fp@1327: registering the mapped PDO entries. fp@1327: - Added an SDO access interface, working with SDO requests. These can be fp@864: scheduled for reading and writing during realtime operation. fp@1327: - Exported ecrt_slave_config_sdo(), the generic SDO configuration function. fp@900: - Removed the bus_state and bus_tainted flags from ec_master_state_t. fp@1011: * Device interface changes: fp@1011: - Moved device output parameter of ecdev_offer() to return value. fp@1084: * Replaced the Sysfs interface with a new 'ethercat' command-line tool, that fp@1084: communicates with the master via a character device and ioctls. The device fp@1084: is created via udev. The tool is able to fp@1083: - Write alias addresses. fp@1083: - Show the bus configuration. fp@1083: - Output binary domain process data. fp@1083: - Set the master's debug level. fp@1083: - Show domain information. fp@1083: - Show master information. fp@1327: - List PDO assignment/mapping. fp@1327: - Write an SDO entry. fp@1327: - List SDO dictionaries. fp@1327: - Read an SDO entry. fp@1083: - Output a slave's SII contents. fp@1083: - Write slave's SII contents. fp@1083: - Show slaves. fp@1083: - Request slave states. fp@1083: - Generate slave information xmls. fp@909: * Removed include/ecdb.h. fp@1084: * Using the timestamp counter is now optional (configure --enable-cycles), fp@1084: because it is only available on Intel architectures. fp@1327: * SDO dictionaries will now also be fetched in operation mode. fp@910: * SII write requests will now also be processed in operation mode. fp@1327: * Mapping of PDO entries is now supported. fp@1327: * Current PDO assignment/mapping is now read via CoE during bus scan, using fp@1327: direct SDO access, independent of the dictionary. fp@897: * Network driver news: fp@897: - Added 8139too driver for kernel 2.6.22, thanks to Erwin Burgstaller. fp@897: - Added 8139too driver for kernel 2.6.23, thanks to Richard Hacker. fp@922: - Added 8139too driver for kernel 2.6.24. fp@897: - Added e1000 driver for kernel 2.6.22. fp@898: - Added e1000 driver for kernel 2.6.24, thanks to Matthias Luescher. fp@1479: - Added alpha support for the Realtek r8169 chipset, thanks to Scott fp@897: Hassan. fp@1153: - Fixed unnecessary watchdog executions in e1000 drivers (thanks to fp@1153: Olav Zarges). fp@1154: - Fixed missing protection for a spin_lock_irqrestore() call in e1000 fp@1154: drivers from 2.6.20 to 2.6.24 (thanks to Olav Zarges). fp@900: * Removed the "bus validation" routines. Slave scanning is now done any time fp@900: the bus topology changes, even during realtime operation. Because of this, fp@900: the bus_tainted flag was deprecated and removed. fp@900: * Slave configuration is not done during ecrt_master_activate() any more, but fp@900: later during realtime operation. The state of the configuration can be fp@900: queried via the ecrt_domain_state() and ecrt_slave_config_state() functions. fp@817: * Added support for slaves that do not support the LRW datagram type. Separate fp@817: domains have to be used for inputs and output. fp@1169: * CoE implementation: fp@1327: - Use expedites transfer type for SDOs <= 4 byte (thanks to J. Mohre). fp@1327: - Allow gaps in PDO mapping (thanks to R. Roesch). fp@1169: - Added some transfer timeouts. fp@1479: - Asynchronous handling of Emergency requests. fp@1479: - Bug fixes. fp@1084: * Sync managers are disabled, if the size is zero. fp@812: * Renamed ec_master module parameters main and backup to main_devices and fp@812: backup_devices to avoid warnings of some compilers. fp@1169: * List end evaluate CoE detail flags from general category. fp@812: * Added MODPROBE_FLAGS variable in start script and sysconfig file. fp@815: * Implemented missing datagram types. fp@1083: * Changed all occurrences of 'EEPROM' to 'SII' fp@870: * Allow multiple sync manager categories in SII. fp@767: fp@767: ------------------------------------------------------------------------------- fp@767: fp@732: Changes in version 1.3.2: fp@732: fp@756: * New feature: Read dynamic PDO mapping from SDO dictionary. fp@756: * Implemented SII writing workaround for some broken slaves. fp@738: * Improved handling for spontaneous AL state changes. fp@737: * Master takes mailbox sync manager configurations from EEPROM words fp@737: 0x0018-0x001b, if no sync manager configurations are provided. fp@735: * Calculate checksum when writing EEPROM or alias address. fp@759: * Fixed source MAC address setting bug. fp@732: * Removed config.kbuild and replaced Kbuild files by Kbuild.in files. fp@732: fp@732: ------------------------------------------------------------------------------- fp@732: fp@709: Changes in version 1.3.1: fp@709: fp@723: * Improved EoE handling: Avoided skipping of datagrams and release lock fp@723: while processing. fp@723: * Added some statistics to the datagram structure. fp@723: * Master state machine clears all station addresses with a broadcast datagram fp@723: before setting them. fp@723: * Added --enable-eoe conditional. fp@723: * Minor extensions of the master info file. fp@723: * Improved handling of unexpected working counters. fp@723: * Create network interfaces for EoE devices with alias as eoeXaY. fp@709: * Fixed problems on big-endian systems. fp@709: * Added documentation on how to set up an EoE network. fp@709: fp@709: ------------------------------------------------------------------------------- fp@709: fp@573: Changes in version 1.3.0: fp@573: fp@709: * Added Intel PRO/1000 Gigabit Ethernet driver (e1000). fp@709: * Added testing version of Intel PRO/100 Ethernet driver (e100). fp@709: * Added testing version of NVIDIA nForce Ethernet driver (forcedeth). fp@661: * Removed "ec_eoeif_count" master module parameter. EoE handlers are created fp@661: dynamically instead. fp@639: * Added "main" and "backup" parameters to master module to hand over the fp@639: MAC addresses of the devices to wait for. This made the ec_device_index fp@709: parameter of the Ethernet drivers obsolete. The broadcast MAC address means, fp@709: that the master accepts the first device offered by any Ethernet driver. fp@573: * Changed format of sysconfig file and accordingly adjusted functionality fp@661: of the init script to handle the above MAC address lists. fp@612: * Realtime interface changes: fp@637: - ecrt_master_run() became obsolete, because the master state machine is now fp@637: run in process context. fp@640: - Parameter changes in PDO registration functions ecrt_domain_register_pdo() fp@640: and ecrt_register_pdo_range(): Replaced slave_address, vendor ID and fp@661: product code arguments with a slave pointer, which has to be obtained with fp@640: a prior call to ecrt_master_get_slave(). fp@640: - ecrt_master_get_slave() got additional parameters to check for vendor ID fp@640: and product code. fp@643: - Removed addressing scheme "X:Y" for ecrt_master_get_slave(). fp@697: - Added ecrt_master_get_slave_by_pos() to avoid the string handling of fp@697: ecrt_master_get_slave(). fp@661: - Added ecrt_master_get_status() to get status information about the bus. fp@661: - Added functions to set up an alternative PDO mapping for a slave, i. e. fp@635: ec_slave_pdo_mapping_clear(), ec_slave_pdo_mapping_add() and fp@635: ec_slave_pdo_mapping(). fp@573: * Device interface changes: fp@573: - Replaced ecdev_register() and ecdev_unregister() with ecdev_offer() and fp@573: ecdev_withdraw(), respectively. The device modules now offer all their fp@661: devices to the master. The master then decides, which ones to register. fp@670: - Replaced ecdev_link_state() with ecdev_set_link(); added ecdev_get_link(). fp@601: * All EEPROM write operations from user space are now blocking until fp@661: writing has finished. Appropriate error codes are returned. fp@661: * Implemented setting of the "Secondary slave address" (alias) via sysfs. fp@646: * Implemented SDO reading in operation mode via sysfs. fp@598: * Removed annoying eeprom_write_enable file. EEPROM writing always enabled. fp@656: * Slave configuration is now done exclusively from the master thread. Removed fp@656: ec_master_sync_io(). Userspace threads are now waiting for events in the fp@656: state machine. fp@650: * Master state machine scheduled with timeout if idle, otherwise is executed fp@650: as fast as possible (with schedule()). fp@709: * Added dummy module for simulation purposes. fp@696: * Limited infinite EEPROM reading, if 0xffff limiter word is missing. fp@698: * Init script works now properly on non-SUSE distros (no rc.status dependency fp@698: any more). fp@573: * Removed EtherCAT line comments from 8139too drivers. fp@573: fp@573: ------------------------------------------------------------------------------- fp@573: fp@495: Changes in version 1.2.0: fp@495: fp@709: * Several fixes of bugs and stability issues. Master should now run fine fp@564: with kernels 2.6.17 to 2.6.19. fp@533: * Realtime interface changes: fp@508: - Re-introduced ecrt_domain_queue() to allow datagram queuing apart fp@508: from datagram processing. The queuing of a domain's datagrams is not fp@508: done in ecrt_domain_process() any more! fp@508: - Removed ecrt_master_deactivate(). Its functionality was moved into fp@508: ecrt_master_release(). fp@508: - Removed ecrt_master_prepare(). Its functionality was moved into fp@508: ecrt_master_activate(). fp@508: - Renamed ecdev_start() and ecdev_stop() to ecdev_open() and ecdev_close(). fp@508: These two functions now take a pointer to ec_device_t as their arguments. fp@508: - The data_ptr parameter of ecrt_domain_register_pdo(), fp@508: ecrt_domain_register_pdo_list() and ecrt_domain_register_pdo_range() may fp@508: not be NULL any more. fp@508: - Removed ecrt_slave_pdo_size(). This function was deprecated long before. fp@541: - Introduced ECRT_VERSION_MAGIC macro and ecrt_version_magic() function. fp@533: * Device interface changes: fp@533: - ec_isr_t was replaced by ec_pollfunc_t, the device driver has to supply fp@533: a poll function to call its ISR. This was introduced because some network fp@533: drivers' interrupt functions have different arguments. fp@508: * State machines now try to re-send datagrams on datagram timeout. fp@508: * New option -c of the lsec script, displays slave current consumptions and fp@508: remaining current. fp@508: * Added frame counter in master info file. fp@495: fp@495: ------------------------------------------------------------------------------- fp@495: fp@495: Changes in version 1.1.1: fp@495: fp@479: * State change FSM: Clearing of sync managers before PREOP. fp@479: * Added modules_install make target. fp@479: * Device modules for kernel 2.6.17. fp@479: * SDO configurations available in Sysfs. fp@479: * FMMU configurations cleared when going to INIT. fp@709: * Slave-specific logs only at debug level 1 (for large buses). fp@479: * Slave flags (error, online) available in Sysfs. fp@479: * Acknowledging of spontaneous state changes in master FSMs. fp@479: * ecrt_master_deactivate() deprecated. fp@479: * Persistent slave lists. Slave structures are only regenerated on topology fp@479: change in IDLE mode. fp@479: * SDO reading via Sysfs. fp@479: * Added ecrt_domain_register_pdo_range() fp@479: * Fetching of SDO dictionary. fp@479: * Better timing behaviour when starting up under high CPU load. fp@479: * Applied Autotools. fp@479: * Improved output of lsec. fp@479: * SDO download state machine. fp@479: fp@479: ------------------------------------------------------------------------------- fp@479: fp@479: Changes in version 1.1: fp@479: fp@479: * Improved realtime interface. fp@479: fp@479: -------------------------------------------------------------------------------