158a0f0d0SEitan Adler 258a0f0d0SEitan Adler#------------------------------------------------------------------------------ 3*a4d6d3b8SXin LI# $File: rpi,v 1.3 2022/04/02 14:39:34 christos Exp $ 458a0f0d0SEitan Adler# rpi: file(1) magic for Raspberry Pi images 558a0f0d0SEitan Adler-44 lelong 0 658a0f0d0SEitan Adler>4 lelong 0 758a0f0d0SEitan Adler>>8 lelong 1 858a0f0d0SEitan Adler>>12 lelong 4 958a0f0d0SEitan Adler>>>16 string 283x 1058a0f0d0SEitan Adler>>>>20 lelong 1 1158a0f0d0SEitan Adler>>>>>24 lelong 4 1258a0f0d0SEitan Adler>>>>>>28 string DTOK 1358a0f0d0SEitan Adler>>>>>>>32 lelong 44 1458a0f0d0SEitan Adler>>>>>>>>36 lelong 4 1558a0f0d0SEitan Adler>>>>>>>>>40 string RPTL Raspberry PI kernel image 16d38c30c0SXin LI 17d38c30c0SXin LI-56 lelong 0 18d38c30c0SXin LI>4 lelong 0 19d38c30c0SXin LI>>8 lelong 1 20d38c30c0SXin LI>>12 lelong 4 21d38c30c0SXin LI>>>16 string 283x 22d38c30c0SXin LI>>>>20 lelong 1 23d38c30c0SXin LI>>>>>24 lelong 4 24d38c30c0SXin LI>>>>>>28 string DTOK 25d38c30c0SXin LI>>>>>>>32 lelong 1 26d38c30c0SXin LI>>>>>>>>36 lelong 4 27d38c30c0SXin LI>>>>>>>>>40 string DDTK8 28d38c30c0SXin LI>>>>>>>>>>48 lelong 4 29d38c30c0SXin LI>>>>>>>>>>>52 string RPTL Raspberry PI kernel image 30*a4d6d3b8SXin LI 31*a4d6d3b8SXin LI# From: Joerg Jenderek 32*a4d6d3b8SXin LI# URL: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html 33*a4d6d3b8SXin LI# #raspberry-pi-4-boot-eeprom 34*a4d6d3b8SXin LI# Reference: https://github.com/raspberrypi/rpi-eeprom/blob/master/rpi-eeprom-config 35*a4d6d3b8SXin LI# Note: start with same magic as for BIOS (ia32) ROM Extension handled by ./intel 36*a4d6d3b8SXin LI# masked with MAGIC_MASK and then compared with MAGIC 37*a4d6d3b8SXin LI0 belong&0xFFffF00F 0x55aaF00F Raspberry PI EEPROM 38*a4d6d3b8SXin LI#!:mime application/octet-stream 39*a4d6d3b8SXin LI!:mime application/x-raspberry-eeprom 40*a4d6d3b8SXin LI# like: pieeprom-2020-09-03.bin 41*a4d6d3b8SXin LI!:ext bin 42*a4d6d3b8SXin LI# a 32 bit offset to the next section like: 000184d4 000184c8 00018534 ... 0000bb84 0000bbd4 0000bbd4 43*a4d6d3b8SXin LI>4 ubelong x \b, offset %8.8x 44*a4d6d3b8SXin LI#>(4.L) ubelong x NEXT=%8.8x 45*a4d6d3b8SXin LI# self.length 46*a4d6d3b8SXin LI>8 ubelong !0 \b, length %x 47*a4d6d3b8SXin LI# self.filename 48*a4d6d3b8SXin LI>12 string >0 \b, "%s" 49*a4d6d3b8SXin LI# length is zero 50*a4d6d3b8SXin LI>8 ubelong =0 51*a4d6d3b8SXin LI# if length is zero then 2nd section magic here can be zero; this means sections parsing done 52*a4d6d3b8SXin LI>>8 ubelong !0 \b, 2nd MAGIC=%8.8x 53