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.

sitara objects number limitation

Other Parts Discussed in Thread: SYSBIOS
hello 
we try to use sitara for 32 analog inputs of 32 bit each by using the PDO   and to add  32 bit objects for analog setting by using the COE 
We have a problem to use more then 14 moudles (according to the ETG 5500 255 can be use)
While we use SDK 1.0.0.9
 

1.       On the PDO:  when we use 14 objects: 0x1A00 (with one entrie 0x6000 32bit )   ,0x1A01 (with one entrie 0x6000 32bit ) …0x1A0D((with one entrie 0x6000 32bit )) –the system work properly.

2.       When we add 1 more module 0x1A0E (with one entrie 0x6000 32bit ) theapplication crash after connecting it to twincat master

b.   while debugging ,   We saw that the object link list is corrupted! (    the next pointer is the link list of the object dictionary point to garbage after connecting it to the master )

 

Are there any restriction about the number of object list ?  when we remove the first module (for example 0x1A01 )  and leave the new one (0x1A0E) the system work correctly .
what is the problem?we are hopless
 
The same happen with the COE objects (we can use only 10 objects of 32 bit :0x8010,0x8020...0x80A0 for AI setting) if we add one more the apllication crash .
Thank you
  • Tsachy,

    I nearly missed that as your subject is not quite clear. This is about EtherCAT implementation on AM335x, correct?

    Now I am not sure if the limitation is in stack or our ESC. We need to investigate. Usually we have enough space to host more than what your require. But could you provide example code for this? Implementation as well as XML for the device? Then we could check quickly.

    If you don't want to see your code on teh forum you can provide this privately to me at 'f-walzer at ti.com'.

    Regards,

  • Tsachy,

    I forgot to mention you should always try first with latest IA-SDK before reporting an issue. We might have fixed that already. Can you have a look at IA-SDK 1.1.0.3, please?

    regards,

  • hello Frank thank you. yes,we try to implement the EtgerCat on AM335x by using the ICE board as platform for develpoment . we also use TI sdk . first ,as you suggested i will try to use the the new SDk version 1.0.0.3 , if it wil not work i will send you the source code . (i verfied with ETG the limitaion on thier code , but they calim that tere is'nt any limitaion) Tsachy
  • hello Frank

    we tested it again with TI new SDK 1.0.0.3 and we saw the problem:

    we add 23 oblects( 0X8010..0x8160 and 0x801E)  of   to the COE AI Setting  and the system work correctly.

    we add 10 more objects (0x8170,0x8180,0x8190,0x81A0..0x8200) and while connecting it to the master the CPU crash with the error massege. see below.

    it seems that this CPU has memory problem ! and it is very limited on ethercat implementation

    (while try to debug the problem with the debugger we saw that the function that bulid the linked list of the object get currapted )

    attached teo versions of code (the first work (with 23 objects ) the second with 33 object (not work))

    "

    ask stack base: 0x40300070.

    Task stack size: 0x800.

    R0 = 0x65736666 R8 = 0xffffffff

    R1 = 0x40305d00 R9 = 0xffffffff

    R2 = 0x40305d00 R10 = 0xffffffff

    R3 = 0x80040120 R11 = 0xffffffff

    R4 = 0xffffffff R12 = 0x000016ff

    R5 = 0xffffffff SP(R13) = 0x403007a0

    R6 = 0xffffffff LR(R14) = 0x8000d4a8

    R7 = 0xffffffff PC(R15) = 0x8000d4c0

    PSR = 0x2000019f

    ti.sysbios.family.arm.exc.Exception: line 176: E_dataAbort: pc = 0x8000d4c0, lr = 0x8000d4a8.

    xdc.runtime.Error.raise: terminating execution"

    Tsachיי ''

  • i will send you the 2 versions on your private mail

    Tsachy

  • Hi Tsachy,

    I don't think it is very intelligent to ask for help here and at the same time make very negative comments about our solution. Especially if you can't show any prove it is really the TI ESC that fails. We are working hard to help customers even in our free time (I am on vacation now...) but it is more fun if everyone is friendly.

    I have forwarded your code to some collegues. But due to Christmas time it may well be you don't see an answer before January. Also did you check already that you are not running into a stack size problem? This can be easily found by taking the PC from above and go to disassembly window. Then you know what code produced the issue. You might want to single step through this piece to see where and why it fails. I have seen ARM crashes many times and usually they are not related to our PRU firmware for EtherCAT...

    As some of the addresses above are using internal memory (yes, this is limited to 64kB) you might need to switch to a debug build where all code and data is taken from external DDR. Then you have some MBytes and that should be sufficient for your app. For sure we do not have a memory issue with AM335x if it is used correctly.

    Regards,

     

  • Tsachy,

    the latest SDK is 1.1.0.3... so I hope your above version quote is a typo.

    Regards,

  • hello Frank

    first of all , sorry , (maybe i was miss understood ) it was realy not my intention to say that TI ESC not work

    we work many years with TI prodcuts (Digital and analog)and i can say for 100% that we never had any probelms with any one of them! (this was the main reason to choose TI as first choice as a platform for a new prodcut develpoment which later will use in all  our tools . (another  reason is the technical doc and examples)

    of course, we  apparicate your(and your collegues)  support .

    yes , we use  sdk 1.1.0.3

    sorry again  and enjoy your vacation

    Tsachy

  • Hi,

    Frank forwarded your code to me and I can see the issue, but it has nothing to do with SDK or EtherCAT stack.

    There is a programming error due to which ApplicationObjDic is corrupted. t_str (tiescappl.c) used for UART console debug message is only 8 bytes long and new debug prints added are much longer than t_str. 

    For eg:- sprintf(t_str,"sAI1Settings[0].i32Gain= %u\r\n",sAI1Settings[0].i32Gain);

    This corrupts pCoESendStored, appEntry and ApplicationObjDic. Since ApplicationObjDic is corrupted during APPL_GenerateMapping, OBJ_GetObjectHandle fails with data abort as pointer is corrupted 

  • hello PratheeshGangadhar

    thank you very much !  everything work  correctly  ! looks fantastic and impressive !

    the Ethercat stack run smoothly.

    you found the problem very fast !

    hope to use your (TI) service on the future again

    Tsachy