ATAG-структура содержащая параметры загругки ядра линукс. В Motorola ROKR z6 находится в кодовой группе 41(CG41).Получив управление Бутлоадер(MBM) должен после инициализации оборудования заполнить структуру ATAG а потом передать её ядру. ATAG имеет следующий вид
WORD(size) ATAG_CORE (0x54410001) (Structure members) WORD(size) ATAG_MEM (0x54410002) (Structure members) //В z6 не используется WORD(size) ATAG_VIDEOTEXT (0x54410003) (Structure members) //В z6 не используется WORD(size) ATAG_RAMDISK (0x54410004) (Structure members) //В z6 не используется WORD(size) ATAG_INITRD2 (0x54420005) (Structure members) //В z6 не используется 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) WORD(size) ATAG_NONE (0x00000000) (Structure members)
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 */
};
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