|
|
  |
портирование linux |
|
|
|
May 21 2009, 12:12
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 25-09-07
Пользователь №: 30 808

|
мне нужно портировать линукс на самопальную плату на freescale i.MX27. не могли бы вы мне рассказать, какие есть стандартные шаги, чтобы это сделать? у меня есть сейчас сама плата, на которой пока напаяно питание, 128М SDRAM, 16М NOR FLASH, 512M NAND FLASH, RS232, Ethernet. по архитектуре плата ближе всего к mx27IPCam. есть так же J-Link и Keil. я пытаюсь запустить линукс из BSP к mx27IPCam, но он виснет после распаковки ядра. поможете? заранее огромное спасибо.
|
|
|
|
|
May 21 2009, 20:04
|
Частый гость
 
Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768

|
Цитата(kiabrin @ May 21 2009, 17:12)  мне нужно портировать линукс на самопальную плату на freescale i.MX27. не могли бы вы мне рассказать, какие есть стандартные шаги, чтобы это сделать? у меня есть сейчас сама плата, на которой пока напаяно питание, 128М SDRAM, 16М NOR FLASH, 512M NAND FLASH, RS232, Ethernet. по архитектуре плата ближе всего к mx27IPCam. есть так же J-Link и Keil. я пытаюсь запустить линукс из BSP к mx27IPCam, но он виснет после распаковки ядра. поможете? заранее огромное спасибо. i.mx27 вроде как официально поддерживается ядром начиная с двадцать какой-то версии. кроме того, есть порт от timesys, там был вполне годный код, когда я его крайний раз разглядывал (чуть меньше года назад). в вашей текущей постановке, IMO, задача не решается, надо брать дебаггер в зубы и смотреть как конкретно виснет... да хотя бы magic sysrq включить и попробовать подампить структуры. еще хорошо задаться вопросом, чем отличается ваша плата от ipcam.
Сообщение отредактировал slanted - May 21 2009, 20:07
|
|
|
|
|
May 22 2009, 00:25
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 25-09-07
Пользователь №: 30 808

|
Цитата(slanted @ May 22 2009, 00:04)  i.mx27 вроде как официально поддерживается ядром начиная с двадцать какой-то версии. кроме того, есть порт от timesys, там был вполне годный код, когда я его крайний раз разглядывал (чуть меньше года назад).
в вашей текущей постановке, IMO, задача не решается, надо брать дебаггер в зубы и смотреть как конкретно виснет... да хотя бы magic sysrq включить и попробовать подампить структуры. еще хорошо задаться вопросом, чем отличается ваша плата от ipcam. у меня 2 сборки, 2.6.19.2 из BSP и 2.6.30. ведут себя одинаково. дебаггер в зубы брал. первое -- почему-то передается неверный machine archetecture type -- 2С63 кажется. если в регистр прописать верный -- загрузка идёт дальше, и через преличное время циклится где-то. уже после включения MMU. в консоли тишина. строчку инициализации передаю: "mem=128M console=ttyS0,115200n8 noinitrd rw ip=dhcp". а что такое magic sysrq? какие структуры дампить? где в памяти их искать? от IPCam на данный момент, в той части что напаяно, 2 главных отличия: 1. i.mx27L вместо i.mx27 2. 26mHz вместо 25.
|
|
|
|
|
May 22 2009, 18:49
|
Частый гость
 
Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768

|
Цитата(kiabrin @ May 22 2009, 05:25)  у меня 2 сборки, 2.6.19.2 из BSP и 2.6.30. ведут себя одинаково. Готовый бинарник или самосбор? Цитата дебаггер в зубы брал. первое -- почему-то передается неверный machine archetecture type -- 2С63 кажется. если в регистр прописать верный -- загрузка идёт дальше, Вопросы к загрузчику. Цитата и через преличное время циклится где-то. уже после включения MMU. в консоли тишина. строчку инициализации передаю: "mem=128M console=ttyS0,115200n8 noinitrd rw ip=dhcp". Как определили включение mmu? В этой консоли скорее всего ничего и не будет, она заводится когда большая часть низкоуровневой инициализации уже прошла. К сожалению, я не в курсе как там дела с early console на arm'е, на x86 для его включения надо писать console=uart,0x3f8,38400n8 или earlycon=тожесамое. Кстати, дефолтная консоль там console=ttySMX0,57600n8, как написано в arch/arm/configs Цитата а что такое magic sysrq? какие структуры дампить? где в памяти их искать? linux/Documentation/sysrq.txt, кернельный монитор вызываемый по alt-sysrq-key (какой key -- написано в доке), на сериальной консоли можно вызвать через double break. Можно посмотреть процессы, ребутнуть систему и так далее. Хотя вот увидел оговорку, что double break только на pc опять же работает, так что это скорее всего без толку.
|
|
|
|
|
May 23 2009, 07:56
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 25-09-07
Пользователь №: 30 808

|
Цитата(slanted @ May 22 2009, 22:49)  Готовый бинарник или самосбор? собрано в openembedded Цитата Вопросы к загрузчику.
Как определили включение mmu? я через J-Link + Keil отлаживаю. он пишет. кроме того PC изменился. Цитата В этой консоли скорее всего ничего и не будет, она заводится когда большая часть низкоуровневой инициализации уже прошла. К сожалению, я не в курсе как там дела с early console на arm'е, на x86 для его включения надо писать console=uart,0x3f8,38400n8 или earlycon=тожесамое.
Кстати, дефолтная консоль там console=ttySMX0,57600n8, как написано в arch/arm/configs строчка взята с OMAP5912, такой же арм, кстати. Цитата linux/Documentation/sysrq.txt, кернельный монитор вызываемый по alt-sysrq-key (какой key -- написано в доке), на сериальной консоли можно вызвать через double break. Можно посмотреть процессы, ребутнуть систему и так далее. Хотя вот увидел оговорку, что double break только на pc опять же работает, так что это скорее всего без толку. мда... ну, это если он доходит до туда...
|
|
|
|
|
May 23 2009, 09:38
|
Группа: Новичок
Сообщений: 1
Регистрация: 21-11-04
Пользователь №: 1 184

|
Цитата(kiabrin @ May 22 2009, 04:25)  строчку инициализации передаю: "mem=128M console=ttyS0,115200n8 noinitrd rw ip=dhcp". в доке на IPcam строчка, применительно к консоли, выглядит так "console=ttymxc0,115200 root=/dev/mtdblock2 rootfstype=jffs2 ip=none"
|
|
|
|
|
May 26 2009, 07:19
|
Частый гость
 
Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768

|
Цитата(kiabrin @ May 23 2009, 12:56)  строчка взята с OMAP5912, такой же арм, кстати. Арм-то такой же, машина другая, а имя девайса как раз определяется набором драйверов, т.е. машиной. Возможно, у вашего ядра есть какие-то патчи дополнительные, поэтому в любом случае стоит проконсультироваться с linux/arch/arm/configs/ и, если уж совсем сомнения загрызут -- с linux/drivers/serial. Кстати, я вот сейчас глянул в имеющиеся под рукой сорцы 2.6.28, там таки реализовали early serial console (drivers/serial/mxc_uart_early.c), можно попробовать консоль в виде console=mxcuart,0x43f9000,1152008n1. Цитата мда... ну, это если он доходит до туда... Вообще говоря да, по вашему описанию похоже, что оно у вас даже до start_kernel не доходит. Early printk там инициализируется довольно рано, но никаких сообщений о том, что происходит до того вы не увидите, так что только j-link.
|
|
|
|
|
May 26 2009, 08:17
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Во первых человек написал что у него версия базовая 2.6.19.2 Во вторых сам vmlinux ему успевает уже послать через UART послание о завершении распаковки, так что с портом все нормально и проблем с диагностическими сообщениями нет. И в третьих человек сам назвал причину своей проблемы, она в том что на этапе инициализации ядро не находит своего номера машины во внутренней таблице. Толи он не скачал самую последнюю таблицу машин, то ли своей машине дал оригинальный незарегистрированный номер. Толи вообще неправильно передает указатель на таблицу. Цитата(slanted @ May 26 2009, 10:19)  Арм-то такой же, машина другая, а имя девайса как раз определяется набором драйверов, т.е. машиной. Возможно, у вашего ядра есть какие-то патчи дополнительные, поэтому в любом случае стоит проконсультироваться с linux/arch/arm/configs/ и, если уж совсем сомнения загрызут -- с linux/drivers/serial.
Кстати, я вот сейчас глянул в имеющиеся под рукой сорцы 2.6.28, там таки реализовали early serial console (drivers/serial/mxc_uart_early.c), можно попробовать консоль в виде console=mxcuart,0x43f9000,1152008n1.
Вообще говоря да, по вашему описанию похоже, что оно у вас даже до start_kernel не доходит. Early printk там инициализируется довольно рано, но никаких сообщений о том, что происходит до того вы не увидите, так что только j-link.
|
|
|
|
|
May 26 2009, 22:22
|
Частый гость
 
Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768

|
Цитата(AlexandrY @ May 26 2009, 13:17)  Во первых человек написал что у него версия базовая 2.6.19.2 2.6.30 ведет себя также. Цитата Во вторых сам vmlinux ему успевает уже послать через UART послание о завершении распаковки, так что с портом все нормально и проблем с диагностическими сообщениями нет. Ядреный бут и само ядро на стадии early printk используют разные имплементации уарта. Между окончанием бута и инициализацией printk много всего интересного происходит, включая старт mmu. Цитата И в третьих человек сам назвал причину своей проблемы, она в том что на этапе инициализации ядро не находит своего номера машины во внутренней таблице. Толи он не скачал самую последнюю таблицу машин, то ли своей машине дал оригинальный незарегистрированный номер. Толи вообще неправильно передает указатель на таблицу. Это вторая из двух проблем. Он же писал, что если туда руками вписать правильный id -- вешается после старта mmu.
|
|
|
|
|
May 28 2009, 17:27
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Оно может быть и так, но надо помнить что здесь речь идет о патченной Freescal-ом версии. И патчена она с оригинальной версии 2.6.19.2 А в версии 2.6.30.x уже сильно изменилась структура директорий для i.MX, изменились конфиги и многие исходники. Т.е. ситуация выглядит так: человек выделил патч из 2.6.19.2-MX и наложил его на 2.6.30.x и еще в совсем другом проекте инфраструктуры сборки - openembedded. Тут либо полное непонимание темы, либо высший пилотаж, но тогда задаются очень странного уровня вопросы. Цитата(slanted @ May 27 2009, 01:22)  2.6.30 ведет себя также.
Ядреный бут и само ядро на стадии early printk используют разные имплементации уарта. Между окончанием бута и инициализацией printk много всего интересного происходит, включая старт mmu.
Это вторая из двух проблем. Он же писал, что если туда руками вписать правильный id -- вешается после старта mmu.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|