Changes between Version 10 and Version 11 of bdv_driver


Ignore:
Timestamp:
Mar 25, 2015, 7:15:06 PM (9 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • bdv_driver

    v10 v11  
    1111The SEG_IOC_BASE address must be defined in the hard_config.h file.
    1212
    13 The _bdv_read() and _bdv_write() functions are always blocking. They can be called in 2 modes:
    14  * In '''synchronous''' mode, these functions use a polling policy on the BDV STATUS register to detect transfer completion, as interrupts are not activated. This mode is used by the boot code to load the map.bin file into memory (before MMU activation), or to load the .elf files (after MMU activation).
     13The _bdv_access() function is always blocking, and can be called in 2 modes:
     14 * In '''synchronous''' mode, these functions use a polling policy on the BDV STATUS register to detect transfer completion (busy waiting). It does not use interrupt. This mode is used by the boot code to load the map.bin file into memory (before MMU activation), or to load the .elf files (after MMU activation).
    1515 * In '''descheduling''' mode, these functions use a descheduling plus IRQ policy: The ''_bdv_gtid'' global variable register the calling task global index, and the ISR executed when transfer completes restart the calling task. This mode is used, to handle the user system calls.
    1616
    17 The BDV component is single channel, but can be used by several programs running in parallel, as the ''_bdv_lock'' global variable guaranties exclusive access to the device.  The _bdv_read() and _bdv_write() functions use atomic LL/SC to get the lock.
     17The BDV component is single channel, but can be used by several programs running in parallel, as the ''_bdv_lock'' global variable guaranties exclusive access to the device. 
    1818
    1919The addressable registers map, the operation codes, and the status values are defined [source:soft/giet_vm/giet_drivers/bdv_driver.h here].
     
    3535
    3636 === void '''_bdv_isr'''( unsigned irq_type,  unsigned irq_id,  unsigned channel ) ===
    37 This Interrupt Service Routine save the status register value in the ''_bdv_status'' global variable, acknowledge the IRQ, and activates the task waiting on IO transfer. It can be an HWI or a SWI.
    38  * irq_type : HWI / PTI / WTI
    39  * irq-id     : index returned by ICU/XCU
    40  * channel  : unused (block-device peripheral is single channel).
     37This Interrupt Service Routine is only used in descheduling mode. It save the status register value in the ''_bdv_status'' global variable, acknowledge the IRQ, and activates the task waiting on IO transfer. It can be an HWI or a SWI.
     38 * '''irq_type''' : HWI / PTI / WTI
     39 * '''irq-id'''     : index returned by XCU
     40 * '''channel'''  : unused (BDV device is single channel).
    4141
    4242