|
|
  |
freescale i.mx27 и linux |
|
|
|
May 16 2009, 11:43
|
Участник

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

|
добрый день! у меня тут борда на сабже, и я пытаюсь поднять на ней линукс. на борде прошит редбут, при помощи openembedded я собрал 2 ядра: 2.6.16 запатченое под этот проц (из BSP к mx27IPCam) и 2.6.30. оба ядра при загрузке пишут Код Uncompressing Linux........................................................................... ........................ done, booting the kernel. и виснут наглухо. хорошо бы отладить и посмотреть что там творится, для этого у меня есть J-Link, но его консоль не позволяет нормально трейсить, не умеет дизассемблировать. я пытался отладить из GDB, но у меня ничего не вышло, т.е. через команду monitor можно делать все тоже, что и в консоли J-Link-а, а средствами самого gdb ничего не выходит, только удалось сделать load, но на run или step он ругается, говорит не знаю как это сделать. а OpanOCD у меня не видит J-Link. конечно, лучше всего, если ответит кто-нибудь, кто уже работал с mx27, но, это, наверное, маловероятно... поэтому хотя бы помогите его оттрейсить! спасибо заранее!!
|
|
|
|
|
May 16 2009, 17:24
|
Участник

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

|
Цитата(AlexandrY @ May 16 2009, 19:43)  Что за борда? Вы ее периферию хоть простыми тестами проверяли? борда своя, аппаратно работает. тесты в редбуте проходят. rs232 и ethernet работают. тесты памяти проходят. а больше там пока ничего не напаяно. сейчас там 16mb NOR flash, 512mb NAND flash, 256mb SDRAM
Сообщение отредактировал kiabrin - May 16 2009, 17:26
|
|
|
|
|
May 16 2009, 21:51
|
Участник

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

|
Цитата(AlexandrY @ May 16 2009, 22:56)  А менеджер питания какой? MC13783 или как в IP камере на LM26480S?
И какая ревизия i.MX27? сейчас пока на LDO, навесным монтажом. все напряжения в порядке. да и причем тут.... он же вообще не стартует. тут вопрос чем отладить ядро, что бы понять, чего оно циклится на адресе 15C-160 от начала...
Сообщение отредактировал kiabrin - May 16 2009, 21:52
|
|
|
|
|
May 18 2009, 09:06
|
Участник

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

|
Цитата(AlexandrY @ May 18 2009, 00:59)  Ну как бы 3-и поколения плат на i.MX27 поднял... Но вам наверно виднее  да нет, конечно Вам виднее  а де посмотреть ревизию проца? на самом камне написано: Код MCIMX27LVOP4A M27J CTAQ0836A питание по схеме на TPS650241, но там при разводке накосячили, и поэтому пока там стоит несколько LDO навеской. redboot пишет следующее: Код ++... Read from 0x07ee0000-0x07f00000 at 0xc07e0000: . ... Read from 0x07ed3000-0x07ed4000 at 0xc07ff000: .
Board Type: OHT-PC-iMX27-EPIC Clock input: 26 MHz Booting from [SDRAM]
Ethernet mxc_fec: MAC address 00:00:45:67:89:ab IP: 192.168.5.110/255.255.255.0, Gateway: 192.168.5.1 Default server: 192.168.1.243
RedBoot(tm) bootstrap and debug environment [ROMRAM] Non-certified release, version OHT 20090309 - built 14:30:32, Apr 26 2009
Platform: MX27 OHT (Freescale i.MX27 based) PASS x.x [x32 SDR] Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
RAM: 0x00000000-0x07f00000, [0x00024b60-0x07ed1000] available FLASH: 0xc0000000 - 0xc0800000, 64 blocks of 0x00020000 bytes each. RedBoot> fis load linux2 -b 0x50000 ... Read from 0x07ee0000-0x07eff000 at 0xc07e0000: . ... Read from 0x00050000-0x001bc048 at 0xc0240000: ............ RedBoot> exec entry=0xa0008000, target=0xa0008000 Using base address 0x00050000 and length 0x0016c048 Uncompressing Linux........................................................................... ........................ done, booting the kernel. грузимся из NOR, потому что с NAND есть проблемы в редбуте, но этим другой человек занимается. можно ли связаться с Вами по ICQ, мой номер 3625297. спасибо за помощь!
|
|
|
|
|
May 18 2009, 19:18
|

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

|
RedBoot не моя тема. У меня свой загрузчик для осей. Но в том что вы показали видна странность. Грузите вы ядро с адреса 0x00050000, а управление передаете в гораздо меньшие адреса 0xa0008000 Хотя как бы в RedBoot-е в доке для платформы i.MX27 для обоих рекомендуется 0x00100000. (области с 0x00000000 и с 0xa0000000 мапированы на одну и ту же физическую память) Т.е. и загрузка и точка входа начинаются с одного адреса. Или вы сильно перепахали этот RedBoot? Ну и наверно вы не забыли подправить инициализацию периферии i.MX27 по сравнению со штатной идущей в RedBoot, поскольку у вас обрезанная функциональность в чипе. Кстати тесты памяти в RedBoot нельзя считать надежными. А так професcионально консультации не даю, просто нет возможности  Цитата(kiabrin @ May 18 2009, 12:06)  RAM: 0x00000000-0x07f00000, [0x00024b60-0x07ed1000] available FLASH: 0xc0000000 - 0xc0800000, 64 blocks of 0x00020000 bytes each. RedBoot> fis load linux2 -b 0x50000 ... Read from 0x07ee0000-0x07eff000 at 0xc07e0000: . ... Read from 0x00050000-0x001bc048 at 0xc0240000: ............ RedBoot> exec entry=0xa0008000, target=0xa0008000 Using base address 0x00050000 and length 0x0016c048 Uncompressing Linux........................................................................... ........................ done, booting the kernel.[/code]
|
|
|
|
|
May 19 2009, 07:48
|
Участник

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

|
Цитата(AlexandrY @ May 18 2009, 23:18)  RedBoot не моя тема. У меня свой загрузчик для осей. Но в том что вы показали видна странность. Грузите вы ядро с адреса 0x00050000, а управление передаете в гораздо меньшие адреса 0xa0008000 Хотя как бы в RedBoot-е в доке для платформы i.MX27 для обоих рекомендуется 0x00100000. (области с 0x00000000 и с 0xa0000000 мапированы на одну и ту же физическую память) Т.е. и загрузка и точка входа начинаются с одного адреса. Или вы сильно перепахали этот RedBoot? Ну и наверно вы не забыли подправить инициализацию периферии i.MX27 по сравнению со штатной идущей в RedBoot, поскольку у вас обрезанная функциональность в чипе. Кстати тесты памяти в RedBoot нельзя считать надежными. А так професcионально консультации не даю, просто нет возможности  в редбуте включен MMU, и оперативка мапирована на адрес 0. сам редбут занимает память с 0 до примерно 40000, так что я гружу образ с адреса 50000. в fis там записано, что у ядра начальный адрес и точка входа a0008000. по команде exec редбут выключает MMU, релоцирует образ на адрес a0008000 и передает туда управление. я это проверял. кстати, так написано в доке по редбуту. редбут да, исправлен. а тесты памяти пускались самописные из под редбута. господа, ребята, ну ладно, тут понятно что всё тонко. но во-первых, ну должен же kernel хоть что-то написать в консоль сначала? и самое главное -- посоветуйте пожалуйста чем его отлаживать!
|
|
|
|
|
May 19 2009, 08:11
|

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

|
Вы где Redboot-то брали? Я смотрю исходники Redboot и не вижу где он делает ремапинг в MMU чтобы переместить 50000 в 8000 тем более что такое перемещение чревато невыровненностью границы по 1Meg И exec не делает распаковки, она делается на этапе fis load, так что не понятно что за распаковка у вас после exec появляется. И MMU не отключается а просто выключается кэширование и буфферизация. А отлаживать надо JTAG-ом понятно. Вы что, после компиляции MAP файл не получаете? Советовал бы Redboot скомпилить в Keil-е. Но можно и без этого. Просто создайте пустой проект и определите где там виснет. Или вы совсем новичок в этом деле? Цитата(kiabrin @ May 19 2009, 10:48)  в редбуте включен MMU, и оперативка мапирована на адрес 0. сам редбут занимает память с 0 до примерно 40000, так что я гружу образ с адреса 50000. в fis там записано, что у ядра начальный адрес и точка входа a0008000. по команде exec редбут выключает MMU, релоцирует образ на адрес a0008000 и передает туда управление. я это проверял. кстати, так написано в доке по редбуту.
редбут да, исправлен.
а тесты памяти пускались самописные из под редбута.
господа, ребята, ну ладно, тут понятно что всё тонко. но во-первых, ну должен же kernel хоть что-то написать в консоль сначала?
и самое главное -- посоветуйте пожалуйста чем его отлаживать!
|
|
|
|
|
May 19 2009, 09:00
|
Участник

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

|
Цитата(AlexandrY @ May 19 2009, 12:11)  Вы где Redboot-то брали?
Я смотрю исходники Redboot и не вижу где он делает ремапинг в MMU чтобы переместить 50000 в 8000 тем более что такое перемещение чревато невыровненностью границы по 1Meg
И exec не делает распаковки, она делается на этапе fis load, так что не понятно что за распаковка у вас после exec появляется. И MMU не отключается а просто выключается кэширование и буфферизация.
А отлаживать надо JTAG-ом понятно. Вы что, после компиляции MAP файл не получаете?
Советовал бы Redboot скомпилить в Keil-е. Но можно и без этого. Просто создайте пустой проект и определите где там виснет. Или вы совсем новичок в этом деле? дело такое, я и без редбута его грузил J-Link ом и запускал с тем же эффектом. Uncompressing linux..... -- это пишет уже само ядро. после этого оно должно запустится уже распакованое. а как этим J-Link ом отлаживать? он не имеет представления об ассемблере, не то что о map-файлах. я поэтому в начале и спрашивал про то, чем это можно сделать. как например прикрутить к J-Link-у OpenOCD? а редбута у меня даже исходников нету. я же говорю, им другой человек занимался. а ядра я собираю из openembedded.
|
|
|
|
|
May 19 2009, 09:15
|

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

|
А.. уже яснее. Как же тот спец что переделал Redboot отлаживался? Короче ваша проблема решается довольно просто но только не open source тулсами. Качайте среду разработки Keil и работайте с отладкой через нее. А вопросы задавайте в разделе про ARM-ы Цитата(kiabrin @ May 19 2009, 12:00)  дело такое, я и без редбута его грузил J-Link ом и запускал с тем же эффектом. Uncompressing linux..... -- это пишет уже само ядро. после этого оно должно запустится уже распакованое.
а как этим J-Link ом отлаживать? он не имеет представления об ассемблере, не то что о map-файлах. я поэтому в начале и спрашивал про то, чем это можно сделать. как например прикрутить к J-Link-у OpenOCD?
а редбута у меня даже исходников нету. я же говорю, им другой человек занимался. а ядра я собираю из openembedded.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|