Is there any way of emulating an I/O device (eg. super IO controller) in an UEFI runtime driver running behind the OS?
Is there any way of emulating an I/O device in UEFI?
441 Views Asked by mateass At
1
There are 1 best solutions below
Related Questions in IO
- Java listFiles in directory in jar
- C++ cin can't read in integers with 0 in them
- C++ reading a file into a struct
- What is meant by Streams w.r.t Java IO
- Blender Python Script Deleting Meshes
- C++ not reading anything from files
- Output EOF using %f
- how to write the output of iostream to buffer, python3
- Direct chart plotting Pandas DataFrame columns to Xlsxwriter in a loop
- Why is it slower to print directly to console/terminal than redirecting?
- withDefaultPrettyPrinter() doesn't make the output be formatted
- How fast can we make a specific tr?
- How to grep a string in a program?
- Why does grep give "Binary file (standard input) matches"?
- Trying to use output of one function to influence the next function to count words in text file
Related Questions in DRIVER
- C++ Mongodb driver, not working
- Raspberry PI Compute Module - SPI1
- Insert element into nested array in Mongodb
- Loading a Windows Driver Class other than NetService to act as an NDIS Filter
- where to find oneplus one binaries (Device tree, Vendor, Kernel) to build rom from AOSP?
- Why does this static funtion have three prefixes?
- Is it possible to limit data traffic in kernel USB drivers?
- Twain driver scanner integration in Windows 8.1
- USB3 Controller & Kinect 2
- Connecting R from JSP
- Universal Drivers will run inside Universal Apps in Windows 10?
- USB keeps disconnecting...only for mobile devices
- IoCreateDeviceSecure function denies the access from member in Administrators
- Intel OpenGL Driver bug?
- CoreMediaIO camera driver not detected until restart of application
Related Questions in EMULATION
- Why my android application stopped when I run it in Emulator?
- How to install Intel's HAXM emulator on dual core processor machines?
- Android Emulator showing on left top corner
- How to change original (unchangeable?) ICCID/SIM card serial from an AVD
- How to set/get GPS Accuracy on Android Emulator?
- app neither installing not running on emulator
- Unfortunately "My app" has stopped
- How to setup an Android Virtual Device with a data partition larger than 200 MB?
- MASM - Macro variable?
- Facebook application has been stopped working on android emulator?
- emulator out of window non movable windows 8.Always have to change the monitor resolution.. need permanent solution
- babun: copy/paste from windows clipboard into vim?
- Android Emulator: Unfortunately Launcher has stopped
- Not able to connect to Internet from Visual Studio Emulator for Android
- Androidstudio gapps has stopped in emulator
Related Questions in UEFI
- board firmware update through uefi capsule feature from Linux
- How to static link EDK II library into application in Visual Studio 2008 tool chain
- uEFI Virtual to Physical Memory translation
- Can't format Hard Disk Drives and install linux to Dell hybrid ultrabook
- Failed to add external hard disk with FreeBSD 10.1
- How to remove Ubuntu entries from UEFI
- Use of redefining void pointer to pointer to an anonymous structure?
- UEFI Secure Boot Linux Permissions
- Reading/Writing EFI variables on Linux in kernel mode
- How does an OS find a peripheral's assigned address(es)?
- UEFI secure boot issues with hello efi
- How does UEFI do task scheduling
- Is it possible to use EFI to create fully cross-platform disk driver?
- Are Intel's PTT and TPM equivalent
- Efi app linker error unresolved external symbol gEfiShellProtocolGuid referenced in function main
Related Questions in EFI
- How to static link EDK II library into application in Visual Studio 2008 tool chain
- How to remove Ubuntu entries from UEFI
- Reading/Writing EFI variables on Linux in kernel mode
- Is it possible to use EFI to create fully cross-platform disk driver?
- EFI or BIOS in intel atom??.
- Error 9090: Xen 4.2 with Centos 6.6 but Ubuntu/Xen works fine on same hardware
- Detect BIOS from WinPE: Legacy or UEFI, using vbs // Outputting results from a .exe to .txt
- UEFI - ImageLoad doesn't work - error = Not Found
- Building UEFI driver using Visual Studio
- How to access command line arguments in UEFI?
- Adding my own UEFI application\driver to the UEFI (VMware)
- Does current EFI BIOS natively support AHCI?
- how to detect ECC error in memroy testing under UEFI shell
- Does booting in EFI mode mean that I shall not have access to BIOS interrupts?
- Is there any way of emulating an I/O device in UEFI?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You will need to create an SMM driver that traps specific I/O ranges, generating SMIs, which will route these accesses to your driver. Values written to the trapped I/O ranges can be retrieved from the CPU Save State area by your driver and processed accordingly by your emulated device's state machine. Values that the OS reads from the trapped I/O range will be returned by your driver by replacing the saved state of the EAX register in the CPU Save State, where the value is returned on x86 systems.
This technique was widely used by legacy BIOSes to emulate 8042 keyboard controller and support USB HID devices at the BIOS level (AKA Legacy USB). Note, that SMM is only available on x86 systems and is very platform-dependent, i.e. your driver may work on one platform, but not the other one. There is a good level of SMM abstraction in modern UEFI implementations, which helps scalability of SMM code, but I/O trapping capabilities vary for different chipsets. SMM-based emulation capabilities were taken to the extreme in AMD Geode processors, where we emulated most of the PC peripherals, not only SuperIOs, but all the way up to audio and video controllers.