change bsp at at
Tue Jan 2 13:35:31 UTC 2018


1:i want to change the bsp according to the zynq zedboard。it only has console driver and i2c driver。 so i want to add some drviers i used in bare-metal software before (such as gpio)。i do not know how to start。

please give me some advice。

i find the function in bootcard.c       "rtems_initialize_device_drivers"   i think i need add code here, but the bsp i used installed as lib.    so ,  can i  change the source code?

i do not understand the RTEMS_DRVMGR_STARTUP level 1,2,3,4   ,is there a example to add my device driver to the rtems architecture?

void rtems_initialize_device_drivers(void)
   *  Initialize all the device drivers and initialize the MPCI layer.
   *  NOTE:  The MPCI may be build upon a device driver.

  /* BSPs has already registered their "root bus" driver in the
   * bsp_predriver hook or so.
   * Init Drivers to Level 1, constraints:
   *   - Interrupts and system clock timer does not work.
   *   - malloc() work, however other memory services may not
   *     have been initialized yet.
   *   - initializes most basic stuff
   * Typical setup in Level 1:
   *   - Find most devices in system, do PCI scan and configuration.
   *   - Reset hardware if needed.
   *   - Install IRQ driver
   *   - Install Timer driver
   *   - Install console driver and debug printk()
   *   - Install extra memory.

  /* Initialize I/O drivers. 
   * Driver Manager note:
   * All drivers may not be registered yet. Drivers will dynamically
   * be initialized when registered in level 2,3 and 4.

  /* Init Drivers to Level 2, constraints:
   *  - Interrupts can be registered and enabled.
   *  - System Clock is running
   *  - Console may be used.
   * This is typically where drivers are initialized
   * for the first time.

  /* Init Drivers to Level 3 
   * This is typically where normal drivers are initialized
   * for the second time, they may depend on other drivers
   * API inited in level 2

  /* Init Drivers to Level 4,
   * Init drivers that depend on services initialized in Level 3

    if ( _System_state_Is_multiprocessing ) {

   *  Run the APIs and BSPs postdriver hooks.
   *  The API extensions are supposed to create user initialization tasks.

2:another question is how can i enable the interrupt? in the init task is ok? at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the users mailing list