first commit
This commit is contained in:
42
README.md
Normal file
42
README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# mini_desktop — GEC6818 Desktop System
|
||||
|
||||
800×480 framebuffer + touch desktop with photo album and IR remote control.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
desktop → album (swipe photo browser)
|
||||
→ ir_app (learn / send / receive IR codes)
|
||||
```
|
||||
|
||||
## Non-blocking I/O pattern
|
||||
|
||||
All I/O uses `O_NONBLOCK` + drain-events-into-cache. Never block on `read()`.
|
||||
|
||||
Touch events are drained per-frame via `ts_read()` — after the `while(ts_read > 0)`
|
||||
loop exits (no more events), remaining logic (serial polling, etc.) runs once,
|
||||
then the outer loop repeats. This keeps the UI responsive to both touch and serial.
|
||||
|
||||
### Do NOT let `ts_read()` return 1 with stale data
|
||||
|
||||
`ts_read()` uses a `static int has_new` flag. It MUST be reset to `0` at the top
|
||||
of every call. If you forget this, `has_new` sticks at `1` after the first touch,
|
||||
every `ts_read()` call returns 1 forever, and `while (ts_read(...) > 0)` loops
|
||||
spin endlessly — **code after the loop is never reached**. This bit us when
|
||||
`page_learn()` could never read from the IR serial port.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
docker run --platform linux/amd64 --rm \
|
||||
-v /path/to/toolchain:/opt/gec6818-toolchain:ro \
|
||||
-v /path/to/mini_desktop:/work -w /work \
|
||||
gec6818-dev:ubuntu18 bash -c 'make static'
|
||||
```
|
||||
|
||||
## Deploy
|
||||
|
||||
```bash
|
||||
ssh root@192.168.1.88 'killall mini_desktop 2>/dev/null; sleep 1'
|
||||
scp -O mini_desktop root@192.168.1.88:/home/cyy/
|
||||
```
|
||||
Reference in New Issue
Block a user