рд╕реАрдореЗрдВрд╕ SGold: рдЬрд╛рд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИрдХрд┐рдВрдЧ

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рднреА рд╕реАрдореЗрдВрд╕ SGold рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлреЛрди рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХреЛрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЬрд╛рд╡рд╛ рдорд╢реАрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреЙрдорд░реЗрдб рдХреИрдУрд╕ (рджрд┐рдорд┐рддреНрд░реА рдЬрд╝рдЦрд╛рд░реЛрд╡) рдиреЗ рдХрд┐рдпрд╛ рдерд╛, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдмреАрдмреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рд╕реАрдореЗрдВрд╕ рдлреЛрди рдкрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдФрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред
SGoldLite рдФрд░ SGold-2 рдкрд░рд┐рд╡рд╛рд░ред рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ред

рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ?


рдпрд╣ рд╕рдм рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рдбреЗрдЯрд╛ рдХреЗрдмрд▓ рдХреЗ рдмрд┐рдирд╛ рдлреЛрди рд╕реЗ рд╕реАрдзреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рддреНрдд рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ (рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдУрд╡рд░рдХреНрд▓реЙрдХ рдХрд░рдирд╛, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдирд╛, рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдирд╛, рдЖрджрд┐) рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
(рдЬреИрд╕реЗ рдХрд┐ ELF рдкреНрд░рд╛рд░реВрдк рдХреЗ рдкреНрд░рд╕рд┐рджреНрдз рдирд┐рд╖реНрдкрд╛рджрдХ, рдЬрд╛рд╡рд╛ рд╣реАрдк рдХреЛ рдмрдврд╝рд╛рдирд╛, рдЖрджрд┐) рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП - рдПрдЖрд░рдПрдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдирд╛, рдкреНрд░реЛрд╕реЗрд╕рд░ (рдЬреЛ рдХрд┐ IPhone 2 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реИрд╕реЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП) рд╕рднреА рд╢рд░реНрддреЗрдВ рд╣реИрдВред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред Intrigued?
рддреЛ рдЙрд╕реЗ рджреВрд╕рд░рд╛ рдЬреАрд╡рди рджреЛ!

рд╕реНрд░реЛрдд рдХреЛрдб


рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ ASpace рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рд░рд╛ рдХрд╛рдо рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ред рдЖрдЧреЗ рдореИрдВ рдЗрд╕рдХреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рд╕рдордЭрд╛рдКрдВрдЧрд╛ред

рдкреНрд░рд╛рд░рдВрдн


рдЦреИрд░, рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡рд┐рдзрд┐ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреА рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдЖрд░рдПрдо рдХреЛрдбрд╛рдВрддрд░рдХред рд╕реАрдореЗрдВрд╕ рдЬрд╛рд╡рд╛ рдорд╢реАрди рдореЗрдВ рдЬрд┐рдк рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред рдпрд╣ рддрдм рдерд╛ рдХрд┐ "vaunted рдлрд╛рд╕реАрд╡рд╛рджреА" рдЫреЗрджрд╛, рдУрд╣, рдЕрд░реНрдерд╛рдд, рдЬрд░реНрдорди рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рдЫреЗрдж рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рд╕рднреА рдореМрдЬреВрджрд╛ рдлрд╝рд░реНрдорд╡рд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдирдП рд▓реЛрдЧ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╛ рдЦреБрд╢реА рдХреЗ рд▓рд┐рдП, рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ)ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХреЛрдб рджреЗрдЦреЗрдВ:

//    ZIP  public byte[] aspace_ziparray = {0,0,0,0}; //,   2,  public int[] mainarray = {0}; //   public static final int ASPACE_RET_SUCCESS = 1; public static final int ASPACE_RET_UNKNOWNERROR = 0; public static final int ASPACE_RET_NOZIPFILE = -1; public static final int ASPACE_RET_NOZIPENTRY = -2; public static final int ASPACE_RET_SIGNOFIND = -3; //     0xA8000000 (SDRAM)  0xB0000000 (Flash) private static final int ASPACE_OFFSET_SDRAM_TO_FLASH = 0x8000000; //    0x00000000 (  ) public static int mainarray_startindex = 0; /*     Flash */ //   ()   0xA0000030 private static final int[] aspace_sgold_flash_signature = { 0xA0000000, //0xA0000000 0x5FFFFFFF, //0x5FFFFFFF 0xA0000074, //0xA0000074 0x544B4A43 //CJKT Marker }; /*   ( ) */ public int ASpace_Init(String any_zipfile, String any_zipentryname) { try { //  ,       ZipFile zf = new ZipFile(any_zipfile); if (zf != null) { // ZipEntry      ZipEntry ze = zf.getEntry(any_zipentryname); if (ze != null) { //  InputStream zis = zf.getInputStream(ze); //   ,      , //     2 zis.read(aspace_ziparray, 4, 0x7FFFFFFF); // zip -  zf.close(); //    Flash //       //     0x0 int i = ASPACE_OFFSET_SDRAM_TO_FLASH/4; for (; i > 0; i--) { int j = 0; for (int k = 0; k < 4; k++) { if (mainarray[i + k] != aspace_sgold_flash_signature[k]) { j = 1; break; } } if (j == 0) { //    Flash mainarray_startindex = i - (aspace_sgold_flash_signature_offset/4); // ,    , .. 0x00 mainarray_startindex += ( 0x50000000/4 ); break; } } //,   if (i != 0) return ASPACE_RET_SUCCESS; //  else return ASPACE_RET_SIGNOFIND; //     } else return ASPACE_RET_NOZIPENTRY; //    } else return ASPACE_RET_NOZIPFILE; //  } catch (Exception e) { return ASPACE_RET_UNKNOWNERROR; } } 


рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╕реАрдореЗрдВрд╕ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореИрдк рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
0x00000000-0x00003FFF - рдЖрдВрддрд░рд┐рдХ SRAM # 1 (рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЕрдВрджрд░)
0x00080000-0x00097FFF - рдЖрдВрддрд░рд┐рдХ SRAM # 2 (рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЕрдВрджрд░)
0x00400000-0x0040FFFF - рдЖрдВрддрд░рд┐рдХ рдмреВрдЯрдореЙрдо (рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЕрдВрджрд░)
0xA0000000-0xA7FFFFFF - рдмрд╛рд╣рд░реА рдлреНрд▓реИрд╢ (рдХрднреА-рдХрднреА 32 рдПрдордмреА, 64 рдПрдордмреА, 96 рдПрдордмреА, 128 рдПрдордмреА)
0xA8000000-0xA9FFFFFF - рдмрд╛рд╣рд░реА рдПрд╕рдбреАрдЖрд░рдПрдПрдо (8 рдПрдордмреА, 16 рдПрдордмреА, 32 рдПрдордмреА рд╣реЛрддрд╛ рд╣реИ)
0xB0000000-0xB7FFFFFF - рд▓рд┐рдЦрдиреЗ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдлреНрд▓реИрд╢ рдорд┐рд░рд░
0xF0000000-0xFFFFFFFF - I / O рдкреЛрд░реНрдЯ, рдорд╛рдЗрдХреНрд░реЛрди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░

рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ Aspace_ziparray рд╕рд░рдгреА рдХреЗ рдмрд╛рд╣рд░ 0x7FFFFFFFF рд╡рд┐рдзрд┐ рдмрд╛рдЗрдЯреНрд╕ рдкрдврд╝рдиреЗ рд╕реЗ, рд╣рдо рдореЗрдирд░реЗ рд╕рд░рдгреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЬрд╛рд╡рд╛ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ 2 рдЬреАрдмреА (0x7FFFFFFF) рддрдХ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рднреАрддрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░рдгреА рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдкреЙрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╕рд░рдгреА рдХреА рд╕рд╛рдордЧреНрд░реА рдкрддрд╛ рд╕реНрдерд╛рди рд╣реИ,
рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдореЗрдВ рдЗрд╕ рд╕рд░рдгреА рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ред

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЬрд╛рд╡рд╛ рд╣рд┐рдк рдореЗрдВ рдХрд╣реАрдВ рд╣реИред
X65 рд╡реЗрдВ рдореЙрдбрд▓ рдкрд░, рдпрд╣ 0xA8000000-0xA8300000 рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИред
X75 рд╡реЗрдВ рдореЙрдбрд▓ рдкрд░, рдпрд╣ 0xA8500000-0xA8700000 рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИред

рдЪреВрдВрдХрд┐ рд╕рд░рдгреА рдЕрдВрддрд░ рд╣реИ, рддреЛ рдПрдХ рд╕реЗрд▓ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ 1 рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рд╣рдо 4 рдмрд╛рдЗрдЯ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдорд╛рд░реА рд╕рд░рдгреА рдЕрдВрддрд░рдВрдЧ рд╣реИ, рдпрд╣ 2 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдПрд╕рдбреАрдЖрд░рдПрдПрдо, рдлреНрд▓реИрд╢ рдорд┐рд░рд░, рдЖрдИ / рдУ рдкреЛрд░реНрдЯ рдФрд░ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдореЗрдореЛрд░реА рдХреЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВред
рдмрд╛рдХреА, рддреЛ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, "рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ" рд╣реИред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдлреНрд▓реИрд╢ рдорд┐рд░рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛ, рдФрд░ рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ, рд░рд╛рд╕реНрддреЗ рдореЗрдВ Aspace_sgold_flash_signature рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдлреНрд▓реИрд╢ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╛рдпрд╛, рд╣рдо рд╢реБрд░реБрдЖрддреА рдкрддреЗ рдкрд░ рдХреВрджрддреЗ рд╣реИрдВ, рдкрддрд╛ 0x00 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрдЦреНрдп рд╕рд░рдгреА рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЪрд░ mainarray_startindex рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╕рдм рдХреБрдЫ, рдЖрд░рдВрднреАрдХрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдкрдврд╝реЛ рдФрд░ рд▓рд┐рдЦреЛ


рдореЗрдирд░реЗ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ mainarray_startindex рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо SRAM / SDRAM / I / O рдкреЛрд░реНрдЯ рдХреЛ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рддрд░реАрдХреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

 //   32    public int ASpace_readword(int address); //   16    public int ASpace_readhwrd(int address); //    public int ASpace_readbyte(int address); //   32    public int ASpace_writeword(int address, int value); //   16    public int ASpace_writehwrd(int address, int value); //    public int ASpace_writebyte(int address, int value); 


рдПрдЖрд░рдПрдо рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдЖрд░рдПрдо рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдорд╢реАрди рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред
рдлрд╝реЛрди рдХрд╛ SRAM / SDRAM рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рднрд░рд╛ рд╣реИ (рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, C / C ++ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓реНрд╕ рдХреЛ рдкрдврд╝реЗрдВ) рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдХрд┐рд╕реА рдЦрд╛рд▓реА рдЬрдЧрд╣ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рднреА рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдФрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрдкрдиреЗ рд╕реНрдерд╛рди рд╕реЗ рдмрджрд▓реЗрдВ,) рддрдм рдлрд░реНрдорд╡реЗрдпрд░ рдЦреБрдж рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЧрд┐рд░ рди рдЬрд╛рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП ARM рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

  /* ARM Caller -  ARM - */ //    public final int aspace_sgold_armcaller_newpointer = 0x803F8; //    ARM Caller'a public final int aspace_sgold_armcaller_bodyaddress = 0x8E010; //       public final int aspace_sgold_workcode_bodyaddress = 0x8E100; //    private static final int ASPACE_ARMCALLER_STATE = 16; private static final int ASPACE_ARMCALLER_OLDPROC = 17; private static final int ASPACE_ARMCALLER_RUNPROC = 18; private static final int ASPACE_ARMCALLER_PARAM0 = 19; private static final int ASPACE_ARMCALLER_PARAM1 = 20; private static final int ASPACE_ARMCALLER_PARAM2 = 21; private static final int ASPACE_ARMCALLER_PARAM3 = 22; private static final int ASPACE_ARMCALLER_RETURN = 23; //  private static int aspace_armcaller_repaddress = 0; //   ARM Caller'a private static int aspace_armcaller_bodyaddress = 0; //     ARM  private static int[] aspace_armcaller = { 0xE92D401F, // ; STMFD SP!, {R0-R4,LR} 0xE59F0038, // ; LDR R0, =old_proc 0xE12FFF30, // ; BLX R0 0xE59F002C, // ; LDR R0, =state 0xE3500000, // ; CMP R0, #0 0x08BD801F, // ; LDMEQFD SP!, {R0-R4,PC} 0xE59F002C, // ; LDR R0, =param0 0xE59F102C, // ; LDR R1, =param1 0xE59F202C, // ; LDR R2, =param2 0xE59F302C, // ; LDR R3, =param3 0xE59F4018, // ; LDR R4, =run_proc 0xE12FFF34, // ; BLX R4 0xE58F0024, // ; STR R0, [PC,#0x24] ; ret 0xE3A00000, // ; MOV R0, #0 0xE58F0000, // ; STR R0, [PC,#0x00] ; state 0xE8BD801F, // ; LDMFD SP!, {R0-R4,PC} 0x00000000, // ; state 0x00000000, // ; old_proc 0x00000000, // ; run_proc 0x00000000, // ; param0 0x00000000, // ; param1 0x00000000, // ; param2 0x00000000, // ; param3 0x00000000 // ; ret }; 


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╢рд░реАрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдЖрд░рдПрдо-рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, 4 рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдХрд▓рд╛рдХрд╛рд░ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐рдпрд╛рдБ:

  /*   / ARM Caller'a (   ) */ // ARM Caller'a public int ASpace_InstallArmCaller(int replace_address, int body_address); // ARM Caller'a public int ASpace_DeInstallArmCaller(); /*     */ public int ASpace_RunArmCode(int address, int arg0, int arg1, int arg2, int arg3); 


рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ


рдЦреИрд░, рдЬреЛ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдореВрд▓, рдиреАрдВрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред
рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдПрдЖрд░рдПрдо рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 /*    / ARM  Data Abort */ public void ASpace_DisableDataAbort(); public void ASpace_EnableDataAbort(); /*    SDRAM  0xB8000000 (  ARM Caller) */ public void ASpace_SDRAMRemap(); /*          */ public int ASpace_SearchFunction(int search_address, int search_size, int[] pattern, int offset); /*          */ public int ASpace_SearchFunctionByWords(int search_address, int search_size, int[] pattern, int offset); 


рдирд┐рд╖реНрдХрд░реНрд╖


рдКрдкрд░, рдореИрдВрдиреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ред рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рд╣реИ,
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдЖрдк рд╕реНрд░реЛрдд рдФрд░ рддреИрдпрд╛рд░ рдорд┐рд▓реЗрдЯ рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рд╕реАрдореЗрдВрд╕ SGold рд╕реЗрд╡рд╛ рдЙрдкрдХрд░рдг ред

Source: https://habr.com/ru/post/In149068/


All Articles