@@ -33,17 +33,48 @@ being merged to `master`:
33
33
34
34
## Limitations
35
35
36
- The emulator handles only a few syscalls made by common apps; for instance,
36
+ There is absolutely no guarantee that apps will have the same behavior on
37
+ hardware devices and Speculos, though the differences are limited.
38
+
39
+ ### Syscalls
40
+
41
+ The emulator handles only a few syscalls made by common apps. For instance,
37
42
syscalls related to app install, firmware update or OS info can't be
38
43
implemented.
39
44
40
- There is absolutely no guarantee that apps will have the same behavior on
41
- hardware devices and Speculos:
45
+ Invalid syscall parameters might throw an exception on a real device while
46
+ being ignored on Speculos.
47
+ Notably, this is the case for application allowed derivation path and curve and
48
+ application settings flags which are enforced by the device OS, but ignored by
49
+ Speculos.
50
+
51
+ ### Memory alignment
52
+
53
+ Attempts to perform unaligned accesses when not allowed (eg. dereferencing a
54
+ misaligned pointer) will cause an alignment fault on a Ledger Nano S device but
55
+ not on Speculos. Note that such unaligned accesses are supported by other
56
+ Ledger devices.
57
+
58
+ Following code crash on LNS device, but not on Speculos nor on other devices.
59
+ ```
60
+ uint8_t buffer[20];
61
+ for (int i = 0; i < 20; i++) {
62
+ buffer[i] = i;
63
+ }
64
+ uint32_t display_value = *((uint32_t*) (buffer + 1));
65
+ PRINTF("display_value: %d\n", display_value);
66
+ ```
67
+
68
+ ### Watchdog
69
+
70
+ NanoX device use an internal watchdog enforcing usage of regular calls to
71
+ ` io_seproxyhal_io_heartbeat(); ` . This watchdog is not emulated on Speculos.
72
+
73
+ ### Pending review screen
42
74
43
- - Invalid syscall parameters might throw an exception on a real device while
44
- being ignored on Speculos.
45
- - Attempts to perform unaligned accesses when not allowed (eg. dereferencing a
46
- misaligned pointer) will cause an alignment fault on a hardware device.
75
+ The C SDK offers a feature to display a warning screen upon app launch
76
+ indicating that the app has not been reviewed.
77
+ As the ` _install_parameters ` are not handled by Speculos, the screen won't be displayed.
47
78
48
79
49
80
## Security
0 commit comments