...
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 |
Table 1: NMT commands
The NMT command Reset node initiates a software reset. Normally this NMT command is applied after a successful firmware download to start the new application program, see chapter 2.9.2.
...
Paulus operates as SDO server and supports the following SDO transfer protocols:
SDO expedited transfer | yes |
SDO normal (segmented) transfer download upload |
yes no |
SDO block transfer | no |
Table 2: supported SDO services
...
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 |
Table 3: SDO abort codes
...
Paulus supports the following error control services:
boot-up message | yes |
Heartbeat producer | configurable |
Heartbeat consumer | no |
Node Guarding | no |
Table 4: supported error control services
...
Paulus supports the following Emergency services:
Emergency producer | configurable |
Emergency consumer | no |
Table 5: supported Emergency services
...
Paulus supports the following LSS services:
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 |
Table 6: supported LSS services
...
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) |
Table 7: Paulus object dictionary
...
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 |
Table 8: program control commands
...
Depending on the implementation there is only strongly limited support for this object available. It is possible to read and identify the CRC sum of the flashed application. Since Paulus version 1.40 object value
is 00h for invalid or not available application software identification.
Object 1F57h: flash status identification
Paulus supports the following flash status information according to /CiA-302-3/:
0 | 0 | status ok |
1 | in progress | |
1-31 |
| not supported (exception: a value unequal 0 means unknown error during erasing/flashing occurred) |
Table 9: flash status
Download an application program
...
The application program can initiate a jump back into Paulus. The re-start behavior of Paulus is determined by a keyword stored in the shared RAM. The application program shall use a macro to set the keyword and to jump to Paulus:
APPL | BOOTLOADER_JUMP(APPL) | Paulus is re-started and does not start the application program. The application program has to be started by command. |
BOOT | BOOTLOADER_JUMP(BL) | auto-start is active: Paulus is re-started and starts the application program. auto-start is deactive: Paulus is re-started and the application program has to be started by command. |
Table 10: BOOTLOADER_JUMP macros
...