рдХрд╛рд░ рдореЗрдВ рдбреАрд╡реАрдЖрд░ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдФрд░ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реИред рдореВрд▓реНрдп / рдЧреБрдгрд╡рддреНрддрд╛ рдЕрдиреБрдкрд╛рдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдореЗрдВ рд╕реЗ рдПрдХ F500 рд▓рд╛рдЗрди рдФрд░ рдЙрдирдХреЗ рдмрдбрд╝реЗ рднрд╛рдИ рдХрд░рдХрд╛рдо Q2 рд╣реИрдВред рдпрд╣рд╛рдБ рдЗрди рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░реЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рд▓рдВрдмрд╛ рд╡рд┐рд╖рдп рд╣реИред
рд▓рдЧрднрдЧ рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдореИрдВ рдРрд╕реЗ рдЙрдкрдХрд░рдг рдХрд╛ рдорд╛рд▓рд┐рдХ рдмрди рдЧрдпрд╛ рдФрд░ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рд╡реНрдпрдХреНрддрд┐рддреНрд╡ рджреЗрдирд╛ред рдЙрдкрд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖред рдиреНрдпреВрдирддрдо рдХрд╛ рдХрд╛рд░реНрдп рд╢реБрд░реБрдЖрддреА рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдХреНрд░реАрдирд╕реЗрд╡рд░ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдерд╛ред рдпрд╣ рдХрд╛рд░реНрдп рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд░рдЪрдирд╛рддреНрдордХ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЬрдЧрд╣ рдирд╣реАрдВ рдереАред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ -
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░
рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ GitHub (рдЖрд╡рд╢реНрдпрдХрддрд╛ .Net 4.0) рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╢реБрд░реБрдЖрдд
рдпреЗ рд▓рд┐рдВрдХ рдлрд░реНрдорд╡реЗрдпрд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдмрди рдЧрдП:
pixeldoc.kicks-ass.net/projects/goprohdhero/firmware/v02.05.11goprouser.freeforums.org/search.php?author_id=4914&sr=postschdk.setepontos.com/index.php?topic=5890.0рд╕рд╛рде рд╣реА рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдХреА рдХреНрд╖рдорддрд╛ рдЕрдкрдиреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕рдВрдкреВрд░реНрдг рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдмреИрдХрдЕрдк рдХрд░рдиреЗ рдХреА рд╣реИред
рдПрдХ рд╣реЗрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, UART рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рдлрд░реНрдорд╡реЗрдпрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИред
рдлрд░реНрдорд╡реЗрдпрд░ рд╕рдВрд░рдЪрдирд╛
рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ 5 рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ (рдЙрдирдХрд╛ рд╕рдЯреАрдХ рдЙрджреНрджреЗрд╢реНрдп рдЕрдЬреНрдЮрд╛рдд рд╣реИ):
[Bst] [Bld] [Pri] [Rom] [Dsp]
рд░реЛрдо рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ - рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╣рд┐рдд рд╣реИред
рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
[Bst] [Bld] [Pri] [Rom] [Dsp]
рдлрд╝рд╛рдЗрд▓ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ:
unsafe public struct FileHeader { public Int32 BstStart; public Int32 BstEnd; public Int32 BldStart; public Int32 BldEnd; public UInt64 Empty0; public Int32 PriStart; public Int32 PriEnd; public UInt64 Empty1; public Int32 RomStart; public Int32 RomEnd; public Int32 DspStart; public Int32 DspEnd; public UInt32 Magik; public fixed byte Const[0x19F - 0x03C + 1]; public fixed byte Empty2[0x7FF - 0x1A0 + 1]; }
рдпрджрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдПрдВрдб рд╕реЗрдХреНрд╢рди рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рддреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реЗрдХреНрд╢рди рдлрд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рдХреЙрдиреНрд╕рдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдЬреНрдЮрд╛рдд рд╣реИ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд░реНрддрдорд╛рди рдлрд░реНрдорд╡реЗрдпрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреБрднрд╛рдЧ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╢реАрд░реНрд╖рдХ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
unsafe public struct SectionHeader { public UInt32 CRC32; public UInt32 Version; public UInt32 Date; public Int32 ImgLen; public UInt32 Mem; public UInt32 Flags; public UInt32 Magik; public fixed byte Empty0[0x8FF - 0x81C + 1]; }
CRC32 рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдмрд╕реЗ рддреБрдЪреНрдЫ
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрднрд╛рдЧ рдбреЗрдЯрд╛ (рд╣реЗрдбрд░ рдФрд░ рд╕рдВрд░реЗрдЦрдг рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд┐рдирд╛) рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА
рд╣реИ ред
ImgLen рдЕрдиреБрднрд╛рдЧ рдбреЗрдЯрд╛ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдВрдмрд╛рдИ рд╣реИред
рдЕрдиреБрднрд╛рдЧ рд░реЛрдо
рд░реЛрдо рдЕрдиреБрднрд╛рдЧ рдПрдХ рд╕рд░рд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рд░реЛрдо рдЕрдиреБрднрд╛рдЧ рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рд╣реИ:
Rom { } { }
рд╣реЗрдбрд░ рд░реЛрдо
unsafe public struct RomHeader { public Int32 FilesCount; public Int32 Magik; public fixed byte Empty0[0x10FF - 0x0908 + 1]; }
рдлрд╝рд╛рдЗрд▓ рд╣реЗрдбрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
unsafe public struct RomFileHeader { public fixed byte FileNameBuf[Const.RomFilenameLength]; public Int32 FileOffset; public Int32 FileLength; public UInt32 Magik; }
рд╕рдВрд╕рд╛рдзрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрдХреНрд╢рди рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдлреНрд▓реИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рд░реЛрдо рдЕрдиреБрднрд╛рдЧ рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
1. FileHeader рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рд░реЛрдо рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝рдХрд░
2. рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ 0x800 рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВред рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореВрд▓ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред
3. рд╕реЗрдХреНрд╢рди рд╣реЗрдбрд░ рдореЗрдВ рдЪреЗрдХрд╕рдо рдХреЛ рд░рд┐рдХреЙрд▓ рдХрд░реЗрдВред
4. рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ рд╕рдм рд▓рд┐рдЦреЗрдВред
рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдРрд╕рд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдирд╛ рдорд┐рд▓рд╛:
github.com/magnitudo/F500Tool ред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рд░реЛрдо рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:
bitmaps.bin
fonts.bin
рдирд╛рдореЛрдВ рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реИред рдЕрднреА рддрдХ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЫрд╛рдВрдЯрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред
рдХреЛрдИ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?