реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> портирование linux
kiabrin
сообщение May 21 2009, 12:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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, но он виснет после распаковки ядра.
поможете? заранее огромное спасибо.
Go to the top of the page
 
+Quote Post
slanted
сообщение May 21 2009, 20:04
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
kiabrin
сообщение May 22 2009, 00:25
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
slanted
сообщение May 22 2009, 18:49
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 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 опять же работает, так что это скорее всего без толку.
Go to the top of the page
 
+Quote Post
kiabrin
сообщение May 23 2009, 07:56
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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 опять же работает, так что это скорее всего без толку.


мда... ну, это если он доходит до туда...
Go to the top of the page
 
+Quote Post
wetter
сообщение May 23 2009, 09:38
Сообщение #6





Группа: Новичок
Сообщений: 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"
Go to the top of the page
 
+Quote Post
slanted
сообщение May 26 2009, 07:19
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 26 2009, 08:17
Сообщение #8


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.
Go to the top of the page
 
+Quote Post
Aprox
сообщение May 26 2009, 11:57
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(AlexandrY @ May 26 2009, 12:17) *
Во первых человек написал что у него версия базовая 2.6.19.2
Во вторых сам vmlinux ему успевает уже послать через UART послание о завершении распаковки, так что с портом все нормально и проблем с диагностическими сообщениями нет.
И в третьих человек сам назвал причину своей проблемы, она в том что на этапе инициализации ядро не находит своего номера машины во внутренней таблице.
Толи он не скачал самую последнюю таблицу машин, то ли своей машине дал оригинальный незарегистрированный номер.
Толи вообще неправильно передает указатель на таблицу.

Стоит также присмотреться к другой частоте 26mHz вместо 25. Для Ethernet 25 mHz- это принципиально.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 26 2009, 12:12
Сообщение #10


Ally
******

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



У Ethernet-а на платформе i.MX27 свой кварц.

А вот временная диаграмма SDRAM может сильно пострадать, но если система смогла развернуть в SDRAM-е 4 метра линукса, то вероятно эта проблема тут не актуальна (пока..., во всяком случае biggrin.gif )

Цитата(Aprox @ May 26 2009, 14:57) *
Стоит также присмотреться к другой частоте 26mHz вместо 25. Для Ethernet 25 mHz- это принципиально.
Go to the top of the page
 
+Quote Post
slanted
сообщение May 26 2009, 22:22
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 28 2009, 17:27
Сообщение #12


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.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 16:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016