Открыть главное меню

ATAG: различия между версиями

 
(Поправлена орфография и форматирование)
Строка 1:Строка 1:
ATAG-структура содержащая параметры загругки ядра линукс. В Motorola ROKR z6 находится в кодовой группе 41(CG41).Получив управление Бутлоадер(MBM) должен после инициализации оборудования заполнить структуру ATAG а потом передать её ядру.
+
= Определение =
ATAG имеет следующий вид
 
  
----------------------------------
+
ATAG - структура, содержащая параметры загрузки ядра [[Linux]]. В [[MOTOMAGX]] находится в [[CG41]].Получив управление, [[Bootloader]] должен после инициализации оборудования заполнить структуру ATAG, после чего передать её ядру.
WORD(size)  ATAG_CORE       (0x54410001) (Structure members)
+
 
WORD(size)  ATAG_MEM       (0x54410002) (Structure members) //В z6 не используется
+
= Структура ATAG =
WORD(size)  ATAG_VIDEOTEXT (0x54410003) (Structure members) //В z6 не используется
+
 
WORD(size)  ATAG_RAMDISK   (0x54410004) (Structure members) //В z6 не используется
+
{| border="1"
WORD(size)  ATAG_INITRD2   (0x54420005) (Structure members) //В z6 не используется
+
|- style="background:#bfbfbf; font-weight: bold"
WORD(size)  ATAG_SERIAL     (0x54410006) (Structure members) //В z6 не используется
+
! Тип структуры
WORD(size)  ATAG_REVISION   (0x54410007) (Structure members) //В z6 не используется
+
! Идентификатор
WORD(size)  ATAG_VIDEOLFB   (0x54410008) (Structure members) //В z6 не используется
+
|-
WORD(size)  ATAG_CMDLINE   (0x54410009) (Structure members)
+
| ATAG_CORE
WORD(size)  ATAG_NONE       (0x00000000) (Structure members)
+
| 0x54410001
---------------------------------------------------------------------------------------------------
+
|-
ATAG_CORE
+
| ATAG_MEM
 +
| 0x54410002
 +
|-
 +
| ATAG_VIDEOTEXT
 +
| 0x54410003
 +
|-
 +
| ATAG_RAMDISK
 +
| 0x54410004
 +
|-
 +
| ATAG_INITRD2
 +
| 0x54420005
 +
|-
 +
| ATAG_SERIAL
 +
| 0x54410006
 +
|-
 +
| ATAG_REVISION
 +
| 0x54410007
 +
|-
 +
| ATAG_VIDEOLFB
 +
| 0x54410008
 +
|-
 +
| ATAG_CMDLINE
 +
| 0x54410009
 +
|-
 +
| ATAG_NONE
 +
| 0x00000000
 +
|-
 +
|}
 +
 
 +
Несмотря на столь огромное разнообразие структур, все они не используются; например, в [[ROKR]] [[Z6]] используются только ATAG_CORE, ATAG_CMDLINE и ATAG_NONE.
 +
 
 +
= ATAG_CORE =
  
 
ATAG_CORE — Заголовок структуры
 
ATAG_CORE — Заголовок структуры
Строка 21:Строка 51:
 
Size
 
Size
 
5 (2 if no data)
 
5 (2 if no data)
Structure members
+
<code><pre>Structure members
 
struct atag_core {
 
struct atag_core {
 
         u32 flags;              /* bit 0 = read-only */  
 
         u32 flags;              /* bit 0 = read-only */  
 
         u32 pagesize;          /* systems page size (usually 4k)*/  
 
         u32 pagesize;          /* systems page size (usually 4k)*/  
 
         u32 rootdev;            /* root device number */
 
         u32 rootdev;            /* root device number */
};  
+
}; </code></pre>
 
--------------------------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------------------------
 
ATAG_NONE
 
ATAG_NONE

Версия 16:58, 2 марта 2009

Определение

ATAG - структура, содержащая параметры загрузки ядра Linux. В MOTOMAGX находится в CG41.Получив управление, Bootloader должен после инициализации оборудования заполнить структуру ATAG, после чего передать её ядру.

Структура ATAG

Тип структурыИдентификатор
ATAG_CORE0x54410001
ATAG_MEM0x54410002
ATAG_VIDEOTEXT0x54410003
ATAG_RAMDISK0x54410004
ATAG_INITRD20x54420005
ATAG_SERIAL0x54410006
ATAG_REVISION0x54410007
ATAG_VIDEOLFB0x54410008
ATAG_CMDLINE0x54410009
ATAG_NONE0x00000000

Несмотря на столь огромное разнообразие структур, все они не используются; например, в ROKR Z6 используются только ATAG_CORE, ATAG_CMDLINE и ATAG_NONE.

ATAG_CORE

ATAG_CORE — Заголовок структуры Value 0x54410001 Size 5 (2 if no data)

Structure members
struct atag_core { u32 flags; /* bit 0 = read-only */ u32 pagesize; /* systems page size (usually 4k)*/ u32 rootdev; /* root device number */
}; </code>

ATAG_NONE

ATAG_NONE — нулевой Тэг Value 0x00000000 Size 2 Structure members None Description В Z6 flags=0x00000000,pagesize=0x00000100,rootdev=0x00000000. Этот Тэг используется для завершения структкры ATAG его размер должен быть 0 (а не 2 как у тэгоф данных).


ATAG_CMDLINE

ATAG_CMDLINE — Тэг коммандная строка Value

0x54410009 Size

2 + ((length_of_cmdline + 3) / 4) Structure membersstruct atag_cmdline {

 char cmdline[1]; /* this is the minimum size */

};

Description В ROKR Z6 используется такая строка ipu_mem=4444K@0x93700000 brdrev=P3A noinitrd console=/dev/null rw mem=60M@0x90000000 init=/linuxrc ip=off root=/dev/mtdblock/root mtdparts=nand0:192k@256k(pds),128k(setup),256k(logo),128k(secure),1536k@1088k(kern)ro,3968k(bpsw),29680k(root)ro,7680k(lang),7m(user),10752k(resrc),66512k(mass_storage),16k(kpanic),2672k(rsv)

Используется для передачи коммандной строки ядру.Строка длжна быть NULL terminated. Значения length_of_cmdline указывает на завершающий символ(/n).


Остальные тэги в телефонах Motorola в часности ROKR Z6 не используются подробное описание можно найти на http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html#ATAG_CORE