LuaDB File Format#
LuaDB Not a database, but a file packaging format widely used for LuatOS firmware.
It acts as a read-only file system..
File Format Definition#
typedef struct header_tld {
uint8_t type;
uint8_t len;
uint8_t data[len]; // length depends on previous len value
}header_tld_t;
typedef struct file_tld {
uint8_t type;
uint32_t len;
uint8_t data[len];
}file_tld_t;
typedef struct luadb {
header_tld_t[] headers;
file_tld_t[] files;
}luadb_t;
header_tld.type Value and meaning#
0x01 The file header len is fixed to 4, the value is 0xA5 0x5A 0xA5 0x5A, and it is fixed to the first one in the header area TLD
0x02 The version number len is fixed to 2 and the value is 0x00 0x02
0x03 The head length len is fixed to the total length of headers, uint32_t
0x04 The number of files len is fixed to 2, and the number of data in the file area, uint16_t
0xFE The check value len is fixed to 2, CRC16. This is the last one in the header area.TLD
Although positions other than 0x01/0xFE by definition can be arbitrary, the actual implementation is usually given in the order listed above..
file_tld.type Value and meaning#
0x01 Magic number, len is fixed to 4, value is 0xA5 0x5A 0xA5 0x5A
0x02 The file name len is not fixed, the value is the file name data
0x03 The file data length len is 4, which is different from others. The content is the length of the file data, uint32_t, and then the file data.
0xFE The check value len is fixed 2, CRC16
Special agreement#
At the end of the file area is a file named “.airm2m_all_crc#.bin”, and the content is the hex value of md5 of all data before the current file data..
Fixed Limits for Formatting#
The number of files is limited to 1024 files