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.

some questions about C6678 pcie boot

Hi,everyone ,

      I use C6678 EVM and there is a "hello world" demo about pcie boot,in the demo,the core0 would write the entry address to core 1....7 and send interrupt to them ,then core 1....7 would run the code .before core 1....7 receive the interrupt ,the state of them is "idle ",right ?

     And I have some questions as following :

     1.Is there some ways to make core 1.......7 return to the state of  "idle" once again after they have run ?  

     2.In .map file ,the address of entry address (_c_int00) is 0x0c00d420,and the address of main() is 0x0c005c98,why the address of entry address and main()  is different ?the core would run from  address of entry address first ?how it reach the address of main() and run the code in main()? 

     Thank you ,

     Simon

  • Simon,

    We will get back to you on the above query shortly. Thank you for the post and patience.
  • I am not sure about your program. Do you use TI RTOS?  (SYS BIOS?) in that case the code returns to idle by default.

    If not, then do while(1) before the end of your main.  The code will return to main and to the infinite while after the interrupt service routine.

    TI uses the _c_int00 for automatic initialization and configuration that is done before the start of the user's application.  Thus the starting point is always _c_int00 and then the code goes to main

    Usually the code starts running and stops at main()  if you want it to stop before main or after put a break point.  How to tell the CCS to stop at _c_int00 - do search on it at e2e and you will find answers  (If not get back to me,  but search first)

    Ran

  • Hi,Ran,

           Thank you for your answer .

           Yes,I use SYS BIOS.

           So the core1....7 would return to the state of "idle" automatical after they have executed all codes in main()? And they would run again after they received interrupt again ?

           Regards,

           Simon

  • I was not clear

    In main, after you start BIOS (usually the last instruction of main) the code never returns back to main()

    The control of the execution moves to BIOS schedule. If you defined a task (or multiple tasks) it will go to the task depends on the mechanism how to start a task. If no task is define, the execution goes to the default task which is the idle task. Idle task is there by default (the configuration of idle task is done in the _c_int00 for example)


    I hope this helps

    Ran
  • Hi,Ran,

          I have questions as following ,hope you help me :

          e2e.ti.com/.../527177

         The main issue is  :the value of the core 's magic address (entry address )is correct ,but the core doesn't run in the correct address as I described in above link.

         Thank you.

          Simon

         

  • My guess is that you do not build the boot code correctly.  I enclosed a document that describes step by step how to go from project to boot. It may not exactly the boot that you use, but it might give you insight into the process (my example is SPI boot, you may use different boot method)/cfs-file/__key/communityserver-discussions-components-files/791/7658.6253.LabKeystone_5F00_I_5F00_boot.docx

    Ran