...
The node-ID can be configured by LSS additionally, see chapter 2.7.
Paulus only supports 11 bit standard identifier.
...
The NMT state machine according to /CiA-301/ is not supported by the Paulus bootloader completely because code size optimization. The Paulus bootloder remains in the NMT state PRE-OPERATIONAL after the boot-up.
NMT command | actions on Paulus |
Reset node | change into the NMT state Reset Application to re-start Paulus |
Reset communication | activate a new node-Id changed by LSS, reset SDO communication and send boot-up message, but a new CAN bit rate is NOT activated |
Start remote node | ignore NMT command and remain in the NMT state PRE-OPERATIONAL |
Enter pre-operational | ignore NMT command |
Stop remote node | ignore NMT command and remain in the NMT state PRE-OPERATIONAL |
...
Figure 1: Reset Communication
...
SDO services
Paulus operates as SDO server and supports the following SDO transfer protocols:
...
Paulus supports the following SDO abort codes:
SDO abort code | description |
05030000h | A wrong toggle bit in the SDO request message was occurred. |
06010002h | It was attempted to write a read only object. The Heartbeat producer time in object 1017h is not writeable. |
06060000h | An error was occurred during the flashing of the data into the program flash memory. |
06070012h | The domain size in the SDO request exceeds the size of the domain object. |
08000000h | This abort code indicates: · an error during erasing the program flash memory · the receipt of an unsupported service request · the receipt of a SDO request with a wrong or not supported SDO protocol |
...
After sending the boot-up message, the bootloader can send an additional Emergency message. This is useful to signal that the bootloader program is running instead of the application program. This functionality can be activated about the compiler define BL_TXEMCY_AFTER_BOOTUP in <target>/bl_config.h:
#define BL_TXEMCY_AFTER_BOOTUP 1
The content of the first Emergency message is defined in the variable emcyErrMsg[EMCY_0] in the module bl_canopen.c. A send Emergency after an occurred CRC error is available in newer porting’s.
Emergency messages are transmitted by the function canMsgTransmit().
...
LSS slave | yes |
LSS master | no |
LSS switch state global | yes |
LSS switch state selective | yes |
LSS configure node-ID | yes |
LSS configure bit timing parameter | yes |
LSS activate bit timing parameter | yes |
LSS store configuration | yes with manufacturer-specific memory functions |
LSS inquiry·
|
no yes |
LSS identification | yes |
LSS fast scan | yes |
...
This functionality can be activated about the compiler define BL_USE_LSS in <target>/bl_config.h:
#define BL_USE_LSS 1
The activated LSS functionality can be configured by the following compiler-defines in <target>/bl_config.h:
#define BL_USE_LSS_STORE 1
...
The LSS service “store” is optional and is switched on by this compiler-define.
#define BL_START_IN_LSS_CONFIGURATION_MODE 1
...
The bootloader is in the state LSS/CONFIGURATION after start-up.
#define BL_AUTO_SEND_NONCONFIGURED_SLAVE 1
...
The bootloader transmits the LSS “identify non-configured slave” message after start-up automatically without a request from the LSS master. This message substitutes the boot-up message for unconfigured devices. Please note that this behavior is not specified in the /CiA-305/.
The LSS service “store configuration” is available to save the node-ID and CAN bit rate in the nonvolatile memory. The functions for the access on the nonvolatile memory are manufacturer-specific and have to be added in bl_user.c/usrLssInd().
The LSS service “activate bit timing parameters” shall be used to activate a new CAN bit rate in the complete CANopen network. The new CAN bit rate cannot be activated by Reset Communication.
...
The object dictionary of Paulus includes the following objects:
index | sub-index | access right | description |
1000h | 0 | const | device type |
1001h | 0 | const | no error is indicated by this object |
1014h | 0 | const | EMCY cob-ID (see chapter 2.5) |
1017h | 0 | const | Heartbeat producer time (see chapter 2.4) |
1018h | 0 – 2 (4) | const | identity object (from Paulus v1.27 full object supports possible) |
1018h | 3 – 4 | const | identity object, only if LSS is active |
1F50h | 0 | const | number of elements |
1F50h | 1 | wo | object for firmware download of program number 1 |
1F51h | 0 | const | number of elements |
1F51h | 1 | rw | download command of program number 1 (see chapter 2.8.1) |
1F56h | 0 – 1 | ro | application software identification |
1F57h | 0 – 1 | ro | flash status identification (see chapter 2.8.3) |
...
Paulus supports the following program control commands:
value | description | |
write access | read access | |
00h | -- | -- |
01h | start application program | -- |
02h | -- | -- |
03h | erase the application program in the flash memory | -- |
04h – 7Fh | reserved | |
80h - FFh | no manufacturer-specific command is available |
...
Paulus remains running when the compiler define BL_AUTO_START is not set. In this case the application can only be started by the start command, see chapter 2.9.1.
Change between Paulus and the application program
...