mirage-rs / mirage Goto Github PK
View Code? Open in Web Editor NEWReimplementation of the Nintendo Switch firmware
License: Other
Reimplementation of the Nintendo Switch firmware
License: Other
For cryptographic operations, an implementation of a driver for the Tegra Security Engine is required.
Should be implemented as the libswitch::se
module.
The Security Engine has a whole bunch of registers (see Switchbrew) mapped to address 0x70012000
. The driver should feature a general API for checking error registers, triggering interrupts, setting keyslots and keyslot flags, as well as a Secure AES API and an RSA API for crypto operations, a SHA256 Hash API, and an RNG API for random data generation.
Since RCM payloads are limited in size, it wouldn't make much sense to try to fit everything, including future crates and changes, into it.
Thus, we need the functionality to
mount and unmount SD cards
read/write files
process those in Rust code
and the same aspects for the Switch's internal storage, the eMMC.
This is probably out of scope for libswitch as it isn't totally Switch/Tegra210-related so a separate crate with no_std capability would be adequate.
Thus, we don't have std::fs
and need a partial replacement for it. Since Switch only supports Fat32 and exFat by extension, https://github.com/sunriseos/libfat can be used for that. It doesn't support exFat, but this isn't high priority for now.
Once this is implemented, it can be used for chainloading from the SD card.
This is the tracking issue for the libswitch::power
module containing drivers for the Switch's TI BQ24193, the Maxim 17050, and the Maxim 77620.
Required to complete #1.
Max77620 driver has the highest priority. The others are nice to have, however low priority at the moment.
This is used for battery charging and should provide at least a function to retrieve the value (i16
) of one of the following device properties, represented in an enum:
/// Representation of the BQ24193 device properties.
pub enum Properties {
InputVoltageLimit,
InputCurrentLimit,
SystemMinimumVoltage,
FastChargeCurrentLimit,
ChargeVoltageLimit,
RechargeThreshold,
ThermalRegulation,
ChargeStatus,
TempStatus,
DevId,
ProductNumber,
}
These are to be retrieved over I2C. See the Technical Reference for details.
Used for fuel gauging. Similar to the BQ24193, this has a similar system of retrieving values for certain device properties. The enum would however contain different members (notably a whole bunch more) with different values. See Technical Reference for details.
Used for PMIC stuff. Hence, the driver should contain an abstraction of the device that holds its ID and the corresponding methods for configuring and managing the regulators which is done via I2C.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.