ATAG: различия между версиями
Abram (обсуждение | вклад) (Поправлена орфография и форматирование) | |||
Строка 1: | Строка 1: | ||
− | + | = Определение = | |
− | |||
− | --- | + | ATAG - структура, содержащая параметры загрузки ядра [[Linux]]. В [[MOTOMAGX]] находится в [[CG41]].Получив управление, [[Bootloader]] должен после инициализации оборудования заполнить структуру ATAG, после чего передать её ядру. |
− | + | ||
− | + | = Структура ATAG = | |
− | + | ||
− | + | {| border="1" | |
− | + | |- style="background:#bfbfbf; font-weight: bold" | |
− | + | ! Тип структуры | |
− | + | ! Идентификатор | |
− | + | |- | |
− | + | | ATAG_CORE | |
− | + | | 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_CORE | 0x54410001 |
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 — Заголовок структуры 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