This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
In the SYS/BIOS Ind. SDK V1.1.0.5 EtherCAT example there are new TI vendor specific register on the address 0x0E18 to 0x0E1F. Compared to V1.1.0.4 in the file tiescbsp.c the procedure "bsp_esc_reg_perm_init()" there are the following new lines:
pRegPerm->reg_properties[0xE18]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE19]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE1A]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE1B]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE1C]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE1D]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE1E]= TIESC_PERM_RW; pRegPerm->reg_properties[0xE1F]= TIESC_PERM_RW;
I can not find this register in the AM335x EtherCAT firmware API Guide on http://processors.wiki.ti.com/index.php/AM335x_EtherCAT_firmware_API_guide
Any ideas what this register are doing?
Thanks and best regards,
Patrick
Hi,
Just updated this info in the API guide, they are vendor specific registers added to fine tune drift compensation algorithm for special scenarios
If you do not require Distributed Clocks support probably this can be ignored and no need to enable access to those registers via ECAT
Hi Pratheesh,
Thanks for the description of this new registers.
By the way I think there is an implementation error in th file "tiescbsp.c" in the procedure "bsp_esc_reg_perm_init()" in the following code sequence:
#ifndef SYSTEM_TIME_PDI_CONTROLLED for (i=0; i < 27; i++) pdi_reg_perm_array[i+0x900]= TIESC_PERM_READ_ONLY; for (i=0; i < 22; i++) pdi_reg_perm_array[i+0x920]= TIESC_PERM_READ_ONLY; #else for (i=0; i < 16; i++) pdi_reg_perm_array[i+0x900]= TIESC_PERM_READ_ONLY; for (i=0; i < 8; i++) pdi_reg_perm_array[i+0x910]= TIESC_PERM_RW; for (i=0; i < 8; i++) pdi_reg_perm_array[i+0x918]= TIESC_PERM_READ_ONLY; for (i=0; i < 12; i++) pdi_reg_perm_array[i+0x920]= TIESC_PERM_RW; for (i=0; i < 4; i++) pdi_reg_perm_array[i+0x92c]= TIESC_PERM_READ_ONLY; pdi_reg_perm_array[i+0x930]= TIESC_PERM_RW; pdi_reg_perm_array[i+0x931]= TIESC_PERM_RW; pdi_reg_perm_array[i+0x932]= TIESC_PERM_READ_ONLY; pdi_reg_perm_array[i+0x933]= TIESC_PERM_READ_ONLY; pdi_reg_perm_array[i+0x934]= TIESC_PERM_RW; pdi_reg_perm_array[i+0x935]= TIESC_PERM_RW; #endif
Probably after the last for-loop the index "i" should not be there.
Best regards,
Patrick
Hi,
Thanks for the find , yes "i" should not be there, unfortunately this code path is not tested a lot because ENABLE_PDI_REG_PERMISSIONS is not enabled by default. Will file a bug to track this.