ARINC 615A¶
Overview¶
ARINC 615A defines the data loading protocol for transferring software to avionics Line Replaceable Units (LRUs) over Ethernet. It uses a TFTP-like transport with specialized discovery, status, and abort mechanisms.
Key Facts
- Transport: UDP (TFTP-based, port 69)
- Block size: 512 bytes (standard TFTP)
- Integrity: CRC-32 per file
- Phases: Find → Information → Upload → Status
- Abort: Supported from any state
Protocol Phases¶
stateDiagram-v2
[*] --> IDLE
IDLE --> FINDING: Find Request
FINDING --> INFORMING: Find Response
INFORMING --> UPLOADING: Info Response
UPLOADING --> COMPLETING: All files transferred
COMPLETING --> DONE: Status = Complete
FINDING --> ABORTED: Abort
INFORMING --> ABORTED: Abort
UPLOADING --> ABORTED: Abort
COMPLETING --> ABORTED: Abort
ABORTED --> [*]
DONE --> [*] Phase 1: Find (LRU Discovery)¶
The data loader broadcasts a Find Request to discover target LRUs on the network.
Phase 2: Information (Identification)¶
Query the target for hardware/software configuration before loading.
Phase 3: Upload (File Transfer)¶
Transfer one or more files using TFTP block-by-block protocol:
Loader Target
│───── Upload Init ──────────►│
│◄──── ACK ──────────────────│
│───── Data Block 1 ─────────►│
│◄──── ACK ──────────────────│
│───── Data Block 2 ─────────►│
│◄──── ACK ──────────────────│
│ ... │
│───── Data Block N (< 512B)─►│ ← Short block = end of file
│◄──── ACK ──────────────────│
│───── Upload Complete ───────►│
Phase 4: Status (Verification)¶
Poll the target for upload status until complete or error.
API Reference¶
#include "arinc615a.h"
// Session management
void a615a_session_init(a615a_session_t *session);
int a615a_add_file(a615a_session_t *session, const char *filename,
const uint8_t *data, size_t size);
// State machine
void a615a_session_advance(a615a_session_t *session, a615a_opcode_t op);
// Block transfer
bool a615a_get_next_block(a615a_session_t *session, uint8_t *block, size_t *len);
double a615a_get_progress(const a615a_session_t *session);
// Message construction
size_t a615a_build_find_req(const char *target_pn, uint32_t session_id,
uint8_t *buf, size_t buf_len);
size_t a615a_build_status_req(uint32_t session_id, uint8_t *buf, size_t buf_len);
// CRC-32 (file integrity)
uint32_t a615a_crc32(const void *data, size_t len);
Build & Run¶
Output:
=== ARINC 615A Data Loading Protocol Verification ===
...
=== RESULTS: 43 passed, 0 failed ===
=== ALL TESTS PASSED ===
References¶
- ARINC Specification 615A-4 (2007)
- ARINC 665-3 (LSP format compatibility)