By default with the large memory mode, sdcc places temp data in DSEG (__data) and parameters in XSEG (__xdata). This causes both to be placed on the stack instead. Previously, the temperary variables were using up to ox69 bytes in DSEG. After the change, temperary variables now end at 0x5D (12 bytes less). The i2c routines were using the following XSEG bytes: - 0x03 - 0x0b (i2c_recv - 8 bytes now on the stack) - 0x0c - 0x14 (i2c_send - 8 bytes now on the stack) - 0x15 - 0x1e (i2c_get - 9 bytes now on the stack) - 0x1f - 0x2c (i2c_set - 13 bytes now on the stack) - 0x1e2 - 0x1e5 (i2c_reset - 4 bytes now on the stack) - 0x1e6 - ? (i2c_start - ? bytes now on the stack)
System76 EC
System76 EC is a GPLv3 licensed embedded controller firmware for System76 laptops.
Documentation
- Supported embedded controllers
- Flashing firmware
- Debugging
- Creating a custom keyboard layout
- Adding a new board
Dependencies
The complete set of dependencies can be installed using the deps.sh
script
from the Open Firmware repo.
Dependencies specific to EC development can be installed with:
sudo apt install \
avr-libc \
avrdude \
gcc-avr \
sdcc
Description
Languages
C
81.5%
Makefile
9.2%
Rust
8.1%
Shell
1.2%