LINUX.ORG.RU

История изменений

Исправление Moisha_Liberman, (текущая версия) :

Отсутствует inird, ядро при сборке было собрано как uImage для uboot.

Да, как правило, ядро собирается под zync как make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage. Верно. Будут созданы linux-xlnx/arch/arm/boot/Image и linux-xlnx/arch/arm/boot/zImage. zImage это припакованное ядро, которое грузится в область 640К. Для того, чтобы подготовить такой образ используют mkimage и получают образ linux-xlnx/arch/arm/boot/uImage, который имеет wrapper для zImage внутри себя.

Это некий vmlinuz, чёрный ящик.

vmlinuz это всё то же ядро, только упакованное. По сути, это всё тот же zImage (на это «намекает» команда из приведённой ссылки – cp /usr/src/linux/arch/i386/linux/boot/bzImage /boot/vmlinuz). Но вот тут надо посмотреть поместится ли это ядро в отведённую область памяти, начинающёюся с адреса 0х8000. Или сразу проще грузить его прямо в RAM. По идее, после загрузки оно должно распаковаться и начать исполняться.

По идее, если ядро поместится в 640К, начиная с 0х8000, то грузить можно. Но да, это Astra, так что неизвестно что и как там. Так что Вы в принципе можете написать .scr-файл для описания загрузки или как ещё указать адрес загрузки для своего астровского ядра. Примерно так – bootz ${адрес загрузки Вашего zImage/vmlinuz} - ${адрес, где искать Ваши device tree}. Initrd здесь задействован не будет. Вариантов тут всего два – либо грузить начиная с 0х8000, либо грузить непосредственно в RAM.

Вы могли бы сделать эмулятор процессора Cortex A9 в QEMU и проверить загрузку там? Я, если что-то сомнительно, так и проверяю на всякий случай.

P.S.

Ведь адреса устройств от железки к железки отличаются.

Ну да, а device tree на что? =) Тут надо убедиться что используется именно специфичный для Вашего случая device tree. Или я неправильно понял отцитированное утверждение.

Исправление Moisha_Liberman, :

Отсутствует inird, ядро при сборке было собрано как uImage для uboot.

Да, как правило, ядро собирается под zync как make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage. Верно. Будут созданы linux-xlnx/arch/arm/boot/Image и linux-xlnx/arch/arm/boot/zImage. zImage это припакованное ядро, которое грузится в область 640К. Для того, чтобы подготовить такой образ используют mkimage и получают образ linux-xlnx/arch/arm/boot/uImage, который имеет wrapper для zImage внутри себя.

Это некий vmlinuz, чёрный ящик.

vmlinuz это всё то же ядро, только упакованное. По сути, это всё тот же zImage (на это «намекает» команда из приведённой ссылки – cp /usr/src/linux/arch/i386/linux/boot/bzImage /boot/vmlinuz). Но вот тут надо посмотреть поместится ли это ядро в отведённую область памяти, начинающёюся с адреса 0х8000. Или сразу проще грузить его прямо в RAM. По идее, после загрузки оно должно распаковаться и начать исполняться.

По идее, если ядро поместится в 640К, начиная с 0х8000, то грузить можно. Но да, это Astra, так что неизвестно что и как там. Так что Вы в принципе можете написать .scr-файл для описания загрузки или как ещё указать адрес загрузки для своего астровского ядра. Примерно так – bootz ${адрес загрузки Вашего zImage/vmlinuz} - ${адрес, где искать Ваши device tree}. Initrd здесь задействован не будет.

Вы могли бы сделать эмулятор процессора Cortex A9 в QEMU и проверить загрузку там? Я, если что-то сомнительно, так и проверяю на всякий случай.

P.S.

Ведь адреса устройств от железки к железки отличаются.

Ну да, а device tree на что? =) Тут надо убедиться что используется именно специфичный для Вашего случая device tree. Или я неправильно понял отцитированное утверждение.

Исходная версия Moisha_Liberman, :

Ну тут просто по идее тогда.

Отсутствует inird, ядро при сборке было собрано как uImage для uboot.

Да, как правило, ядро собирается под zync как make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage. Верно. Будут созданы linux-xlnx/arch/arm/boot/Image и linux-xlnx/arch/arm/boot/zImage. zImage это припакованное ядро, которое грузится в область 640К. Для того, чтобы подготовить такой образ используют mkimage и получают образ linux-xlnx/arch/arm/boot/uImage, который имеет wrapper для zImage внутри себя.

Это некий vmlinuz, чёрный ящик.

vmlinuz это всё то же ядро, только упакованное. По сути, это всё тот же zImage (на это «намекает» команда из приведённой ссылки – cp /usr/src/linux/arch/i386/linux/boot/bzImage /boot/vmlinuz). Но вот тут надо посмотреть поместится ли это ядро в отведённую область памяти, начинающёюся с адреса 0х8000. Или сразу проще грузить его прямо в RAM. По идее, после загрузки оно должно распаковаться и начать исполняться.

По идее, если ядро поместится в 640К, начиная с 0х8000, то грузить можно. Но да, это Astra, так что неизвестно что и как там. Так что Вы в принципе можете написать .scr-файл для описания загрузки или как ещё указать адрес загрузки для своего астровского ядра. Примерно так – bootz ${адрес загрузки Вашего zImage/vmlinuz} - ${адрес, где искать Ваши device tree}. Initrd здесь задействован не будет.

Вы могли бы сделать эмулятор процессора Cortex A9 в QEMU и проверить загрузку там? Я, если что-то сомнительно, так и проверяю на всякий случай.