change bsp
bin.wang at qkmtech.com
bin.wang at qkmtech.com
Tue Jan 2 13:35:31 UTC 2018
hi
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.
*/
#ifdef RTEMS_DRVMGR_STARTUP
/* 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.
*/
_DRV_Manager_init_level(1);
bsp_driver_level_hook(1);
#endif
/* 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.
*/
_IO_Initialize_all_drivers();
#ifdef RTEMS_DRVMGR_STARTUP
/* 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.
*/
_DRV_Manager_init_level(2);
bsp_driver_level_hook(2);
/* 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
*/
_DRV_Manager_init_level(3);
bsp_driver_level_hook(3);
/* Init Drivers to Level 4,
* Init drivers that depend on services initialized in Level 3
*/
_DRV_Manager_init_level(4);
bsp_driver_level_hook(4);
#endif
#if defined(RTEMS_MULTIPROCESSING)
if ( _System_state_Is_multiprocessing ) {
_MPCI_Initialization();
_MPCI_Internal_packets_Send_process_packet(
MPCI_PACKETS_SYSTEM_VERIFY
);
}
#endif
/*
* Run the APIs and BSPs postdriver hooks.
*
* The API extensions are supposed to create user initialization tasks.
*/
_API_extensions_Run_postdriver();
}
2:another question is how can i enable the interrupt? in the init task is ok?
bin.wang at qkmtech.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20180102/0a797c05/attachment.html>
More information about the users
mailing list