⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.porting

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 PORTING
字号:
## $Id: README.porting,v 1.1.2.1 2003/02/20 21:37:34 joel Exp $#The vmeUniverse driver needs some support from the BSP fora) PCI configuration space accessb) PCI interrupt acknowledgementc) PCI interrupt handler installationThe driver was developed using the powerpc/shared/ BSP(it also supports vxWorks) and by default uses that BSP'sa) PCI access APIb,c) irq handling API (AKA 'new' style BSP_install_rtems_irq_handler()   API).Some hooks exist in the driver to ease porting to other BSPs.The following information has been assembled when answering aquestion regarding a ppcn_60x BSP port:I looked through the ppcn_60x BSP. Here's what I found: - this BSP does NOT adhere to neither the 'old' nor the 'new' API   but provides its own (startup/setvec.c: set_vector()). - the BSP has a 'driver' for vmeUniverse although mine is far more   complete (including support for VME interrupts, DMA etc.). - Porting my driver to your BSP should not be too hard:     1) vmeUniverse needs PCI configuration space support from the      BSP:        a) a routine 'pciFindDevice' (need to be macro-aliased           to the proper routine/wrapper of your BSP) who scans           PCI config space for the universe bridge.           You could add 'libbsp/powerpc/shared/pci/pcifinddevice.c'           to your BSP substituting the pci_read_config_xxx calls           by the ones present on your BSP (see step 2))        b) routines to read PCI config registers (byte and longword)           [on your BSP these are PCIConfigRead32/PCIConfigRead8;           hence you could replace the macros on top with            #define pciConfigInLong PCIConfigRead32   2) vmeUniverse needs to know how to acknowledge a PCI interrupt      In your case, nothing needs to be done            #define BSP_PIC_DO_EOI do {} while (0)   3) Install the VME ISR dispatcher: replace the 'new' style      interrupt installer (BSP_install_rtems_irq_handler()) by      a proper call to 'set_vector()'   4) I might have missed something... I attach the latest version of the vmeUniverse driver in case you wantto try to do the port (should be easy).For the sake of ease of maintenance, I just added a few hooks making itpossible to override some things without having to modify the driver code. 1,2) PCI config space access macros may be overriden via CFLAGS      when compiling vmeUniverse.c, hence:      CFLAGS += -DBSP_PIC_DO_EOI=do{}while(0)      CFLAGS += -DBSP_PCI_CONFIG_IN_LONG=PCIConfigRead32      CFLAGS += -DBSP_PCI_CONFIG_IN_BYTE=PCIConfigRead8      (you still need to supply BSP_pciFindDevice) 3)   create your own version of vmeUniverseInstallIrqMgr():      copy to a separate file and replace         BSP_rtems_install_irq_handler() by a proper call to set_vector.  4)   Send me email :-)USAGE NOTE: To fully initialize the driver, the following steps can/mustbe performed: vmeUniverseInit();  /* MANDATORY: Driver Initialization */ vmeUniverseReset(); /* OPTIONAL: Reset most registers to a known state;                       * if this step is omitted, firmware setup is                      * preserved                      */ vmeUniverseMasterPortCfg(...); /* OPTIONAL: setup the master windows                                 * (current setup preserved if omitted)                                 */ vmeUniverseSlavePortCfg(...);  /* OPTIONAL: setup the slave windows                                 * (current setup preserved if omitted)                                 */ vmeUniverseInstallIrqMgr();    /* NEEDED FOR VME INTERRUPT SUPPRORT                                 * initialize the interrupt manager.                                 * NOTE: you need to call your own                                 * version of this routine here                                 */For an example of init/setup, consult libbsp/powerpc/shared/vme/vmeconfig.c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -