Because that's the way the code was written. Ask Realtek why. A rather extreme example but in one of the drivers I compile there are two files each about 475-500kB in size with large blocks of hex characters which get translated to binary when compiled and provide the firmware.
e.g.
Code: Select all
0x01, 0x95, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x05, 0x14, 0x10, 0x48, 0x84, 0x7A, 0x00, 0x00,
0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x4C, 0xB1, 0x02, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x60, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x6F, 0x7E, 0x00, 0x00,
0x15, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x15, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x05, 0xF0,
with one file having in excess of 4500 lines and the other more than 5000 lines like these.
As far as I'm concerned this is far more convenient that requiring a separate firmware file, especially if the driver is included in the image but the firmware is not and is not included in any of the firmware packages that can be downloaded.