This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gnat 4.9.2 on arm with rtems


Hello,

I try to get the a working gnat toolchain running to build binaries for the raspberry pi with rtems4.11.
For debugging purposes the pi is emulated in qemu.

Currently I try to get the following basic tasking example to run:

with Text_IO; use Text_IO;

procedure Hello is

   task Hello_Task;

   task body Hello_Task is
   begin
     Put_Line ("*** GNAT/RTEMS Hello World Test ***");
     New_Line;
     Put_Line ("Welcome to the World of Lady Ada");

     New_Line;
     Put_Line ("Initiating 20 second delay");
     delay 20.0;
     Put_Line ("Delay Complete");

     Put_Line ("*** END OF GNAT/RTEMS Hello World Test ***");
   end Hello_Task;

begin
    Put_Line ("Main program");
        null;
end Hello;

After rtems initialization a thread is created which calls the gnat_main function and then runs the rts and the task.
What I see so far is that after the hello_tasks delays itself the Complete_Master procedure (s-tassta.adb:444) is called, but with Self_Id set to the Id of the hello_task.
The call finishes and the runtime is cleaned before the task if able to wake up.
If I debug the same program on my desktop pc  Complete_Master is called with the Id of the main task. It then notices that it has to wait for its  dependent task (hello_task), sleeps until it finishes and  only then terminates the runtime.

I would like to know from where Complete_Master is called to break there and find out why it uses the wrong id.
Also general tips on how to debug that kind of thing would be greatly appreciated.

Thank you very much,

     Jan


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]