Changes between Version 9 and Version 10 of bdv_driver


Ignore:
Timestamp:
Mar 24, 2015, 11:19:17 AM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • bdv_driver

    v9 v10  
    1313The _bdv_read() and _bdv_write() functions are always blocking. They can be called in 2 modes:
    1414 * 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).
    15  * In '''descheduling''' mode, these functions use a descheduling plus IRQ strategy: The ISR executed when transfer completes should restart the calling task. This mode must be used, to handle the user system calls. The ''_bdv_gtid'' global variable register the calling task global index.
     15 * 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
    1717The 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.
     
    1919The addressable registers map, the operation codes, and the status values are defined [source:soft/giet_vm/giet_drivers/bdv_driver.h here].
    2020
    21  
     21 == __Access Functions__ ==
     22
    2223 === unsigned int '''_bdv_init'''() ===
    2324This function cheks block size == 512, and desactivates the interrupts.