сборочный загрузчик - PullRequest
       9

сборочный загрузчик

1 голос
/ 01 марта 2012

В моем коде запуска сборки для ARM9 у меня есть несколько строк, которые я не понимаю, и они выглядят так:

    .word   0x41676d69
    .word   0,0,0,0,0
image_type:
    .word   0x0000000A
sizeOfPermanentCode:    
    .word   (__image_size)
    .word   0,0
bootparameter:  
    .word   0
    .word   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Я слышал, что число 0x41676d69 является своего рода магическим числом изображения, ноя не знаю, почему это используется для.А как насчет других элементов .word?Кто они такие?Что они делают?

С уважением Žiga Lausegger

1 Ответ

3 голосов
/ 02 марта 2012

Из того, что я вижу, загрузочный образ должен выглядеть примерно так в начале ...

+--------------------------+
|      (asm) B Start       | 0x00
+--------------------------+ 
|    Magic (0x41676d69)    | 0x04
+--------------------------+
| code CRC (if type=0x0b)  | 0x08
+--------------------------+
|                          | 0x0c
+--                      --+
|                          |
+--       Reserved       --+
|        (set to 0)        |
+--                      --+
|                          |
+--------------------------+
| image type(0x0a or 0x0b) | 0x1c
+--------------------------+
| image size (incl header) | 0x20
+--------------------------+
| image version (ignored)  | 0x24
+--------------------------+
|   build time (ignored)   | 0x28
+--------------------------+
|  "boot parameter" (..?)  | 0x2c
+--------------------------+
:                          : 0x30
.                          .
  it gets fuzzy from here. 
  Looks like this is yours 
  to do what you want with 
.                          .
:                          :
+--------------------------+
| header CRC(if type=0x0a) | 0x6c
+--------------------------+ 
|                          | 0x70
+--                      --+
|                          |
+--       Reserved       --+
|        (set to 0)        |
+--                      --+
|                          |
+==========================+
|  boot code starts here   | 0x80

B Start - это инструкция перехода к точке входа в загрузочном коде.Где находится эта точка входа, в основном зависит от вас.

0x41676d69 сообщает загрузчику, что это загрузочный образ.CRC - это в основном контрольные суммы (но не спрашивайте меня, как они рассчитываются);к счастью, если для image_type установлено значение 10 (0x0a), они игнорируются и могут быть установлены на 0.

Насколько я вижу, версия образа и время сборки игнорируются при загрузкегрузчик тоже.Они просто для инструментов или чего-то еще, чтобы было легче выяснить версии и прочее.

«Параметр загрузки», я не слишком уверен в этом.Я вижу материал, который говорит "просто установите его на 0" - который, очевидно, работает.:) Но что это значит, если это не 0, я не могу вам сказать.

...