Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Note

Bear in mind as well that this description applies to the Gen 1 design.

Items in square brackets (\[\]) are optional.

Note

Wiki Markup

Initial instruction

  • Execution after reset starts at 0xfffffffc
    • A branch instruction (either b or ba; 26 bit range) to some boot code is loaded here
      • The Xilinx example branches to in block RAM (bram) at 0xffffff00
      • The RTEMS example branches to download_entry (but I'm not sure how)
    • Potentially a sc (system call) instruction could be loaded here? Any advantage to this?
      • Probably not as the corresponding ivor register (PPC 440) is not loaded yet
      • The PPC 405 doesn't have ivor registers, so it would continue executing at the system call vector

...

  • Command line is in the first and only argument
    • In our system this is always a null pointer
  • Disable interrupts
  • Store command line
  • Call bsp_start()
  • Determine RTEMS work area and heap location and size
  • Initialize RTEMS data structures
  • Initialize the C library
    • This also installs the heap
  • Call bsp_pretasking_hook()
  • Wiki Markup\[Enable RTEMS debugging capabilities\]
  • RTEMS initialization before loading device drivers
  • Call bsp_predriver_hook()
  • Initialize device drivers
  • Call bsp_postdriver_hook()
  • Start multitasking
  • Call bsp_cleanup()
  • Return to the start code
    • Not clear what's in the lr at this point, i.e., where do we return to?

...

  • Announce what's running
  • Configure the network from DHCP
  • Set up the dynamic linkerunmigrated-wiki-markup
  • \[Start the shell\]unmigrated-wiki-markup
  • \[Start the debugger daemon ({{gdb}} stub)\]
  • Create a Task
  • Determine what the Task should run
    • Read metadata from flash
    • Read the front panel rotary switch
  • Dynamically link the code
  • Run the Task