|
|
  |
Отладка ROM кода Sitara am3517 |
|
|
|
Oct 28 2013, 10:36
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089

|
Имеется плата с камнем TI am3517, 8ми битной Nand. С Nand плата не грузится, с MMC работает нормально. Подключение отладчика показало, что ROM код стартует, инициализирует регистры GPMC, после чего перезагружается и по новой. При пошаговой отладке не удалось понять на чём валится процесс загрузки, т.к. срабатывает исключение и выкидывает на какой то вектор, который в обычном режиме работы никогда не срабатывает (ставил брэйкпоинт в отладчике). Вопроса, собственно, два: 1. Почему не идет загрузка с nand? при загрузке с mmc записываю в nand первичный загрузчик, u-boot и т.д. дамп показывает, что всё записалось. 2.Как включить поддержку watchpoint для j-link под linux? вот здесь: http://processors.wiki.ti.com/index.php/J-...mulator_Support нашел, что по умолчанию в j-link watchpoints выключены и их как то надо включить. Работаю в убунте, code composer studio v 5. Под виндой нет поддержки данного камня у j-link.
|
|
|
|
|
Oct 28 2013, 14:55
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Dilim @ Oct 28 2013, 13:36)  1. Почему не идет загрузка с nand? при загрузке с mmc записываю в nand первичный загрузчик, u-boot и т.д. дамп показывает, что всё записалось. если есть возможность, посмотрите осциллом наличие обмена между АРМом и нандом - если обращения нет, то неправильно сконфигурен режим загрузки для АРМа чип нанда выбран правильно (исходя из таблицы рекомендуемых "Table 24-34. Supported NAND Devices")? есть ли на форумах преценденты, что с этого чипа грузится?
|
|
|
|
|
Oct 28 2013, 18:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(Dilim @ Oct 28 2013, 14:36)  Имеется плата с камнем TI am3517, 8ми битной Nand. С Nand плата не грузится, с MMC работает нормально. Подключение отладчика показало, что ROM код стартует, инициализирует регистры GPMC, после чего перезагружается и по новой. При пошаговой отладке не удалось понять на чём валится процесс загрузки, т.к. срабатывает исключение и выкидывает на какой то вектор, который в обычном режиме работы никогда не срабатывает (ставил брэйкпоинт в отладчике). Вопроса, собственно, два: 1. Почему не идет загрузка с nand? при загрузке с mmc записываю в nand первичный загрузчик, u-boot и т.д. дамп показывает, что всё записалось. 2.Как включить поддержку watchpoint для j-link под linux? вот здесь: http://processors.wiki.ti.com/index.php/J-...mulator_Support нашел, что по умолчанию в j-link watchpoints выключены и их как то надо включить. Работаю в убунте, code composer studio v 5. Под виндой нет поддержки данного камня у j-link. Я бы посоветовал подключить обработчик ексепшна. Скорее всего вы либо обращаетесь к неразрешенной памяти, либо адрес не выровнен по 32 битам, что и вызывает ексепшн. Дайте знать если вам интересен загрузчик с обработчиком ексепшна. У меня где-то был. Виснуть не будет. Вы модернизировали код? Когда я делал мне сказали как настраивать JTAG. Сейчас не вспомню. Посмотрите link с форума поддержки в нижней части страницы есть список тем про код композер и jtag. http://e2e.ti.com/search/default.aspx#q=co...um&group=29Вы можете там (TI e2e) задать вопрос.
Сообщение отредактировал Tarbal - Oct 28 2013, 18:19
|
|
|
|
|
Oct 29 2013, 06:16
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089

|
Цитата(Jury093 @ Oct 28 2013, 18:55)  если есть возможность, посмотрите осциллом наличие обмена между АРМом и нандом - если обращения нет, то неправильно сконфигурен режим загрузки для АРМа
чип нанда выбран правильно (исходя из таблицы рекомендуемых "Table 24-34. Supported NAND Devices")? есть ли на форумах преценденты, что с этого чипа грузится? Чип выбран по таблице, причем пробовали Micron и Samsung, правда с одинаковым chip ID 0xDA. Режим загрузки выбран, чтобы первый был нанд, и обмен идёт - это видно через отладчик. Читается ID, конфигурируются регистры GPMC(конфигурируется правильно) и после этого ребут. Цитата(Tarbal @ Oct 28 2013, 22:17)  Я бы посоветовал подключить обработчик ексепшна. Скорее всего вы либо обращаетесь к неразрешенной памяти, либо адрес не выровнен по 32 битам, что и вызывает ексепшн. Дайте знать если вам интересен загрузчик с обработчиком ексепшна. У меня где-то был. Виснуть не будет.
Вы модернизировали код? Да как раз вся проблема в том, что до выполнения загрузчика дело не доходит, если судить по отладчику, то за пределы rom кода самого процессора выполнение не идёт. Цитата(Tarbal @ Oct 28 2013, 22:17)  Когда я делал мне сказали как настраивать JTAG. Сейчас не вспомню. Посмотрите link с форума поддержки в нижней части страницы есть список тем про код композер и jtag. http://e2e.ti.com/search/default.aspx#q=co...um&group=29Спасибо, jtag вчера настроил под виндой, теперь всё работает.
|
|
|
|
|
Oct 30 2013, 07:53
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Dilim @ Oct 29 2013, 09:16)  Чип выбран по таблице, причем пробовали Micron и Samsung, правда с одинаковым chip ID 0xDA. Режим загрузки выбран, чтобы первый был нанд, и обмен идёт - это видно через отладчик. Читается ID, конфигурируются регистры GPMC(конфигурируется правильно) и после этого ребут. у вас это соединение есть? Код The wait pin signal gpmc_wait0 is connected to the NAND BUSY output похоже вылетает в rom-процедурах считывания id1 или id2.. конфигурационые пины выставлены правильно? может там дефект.. судя по бут-сиквенс у вас все правильно и дальше должен считываться первый блок из нанда.. из софтовой лирики: а как вы пишете в нанд? из линукса после загрузки с sd/mmc? как вариант попробуйте из юбута затереть весь нанд и его же средствами, считав файлы с sd, накатить в нанд..
|
|
|
|
|
Oct 30 2013, 12:12
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089

|
Цитата(Jury093 @ Oct 30 2013, 11:53)  у вас это соединение есть? Код The wait pin signal gpmc_wait0 is connected to the NAND BUSY output Пин gpmc_wait0 подключен к выводу READY/BUSY нанда. Цитата(Jury093 @ Oct 30 2013, 11:53)  похоже вылетает в rom-процедурах считывания id1 или id2..
конфигурационые пины выставлены правильно? может там дефект..
судя по бут-сиквенс у вас все правильно и дальше должен считываться первый блок из нанда.. sys_boot пины проверял неоднократно, там все нормально, да и не похоже, что в них ошибка, потому что он вроде как пытается с нанда загрузится. Если бы не читал id, или читал бы неправильно, то не конфигурил бы правильно регистры GPMC_CONFIG. Так что тут вроде как всё хорошо. Судя по бут-сиквенс дальше он должен копировать образ загрузчика из нанда в RAM и при пошаговой отладке в регистре R0 на несколько шагов появлятся адрес 0x40200800 (с этого адреса начинается исполнение загрузчика в RAM - проверял на работающей плате с 16ти битным нандом) но после этого всё рушится.. Цитата(Jury093 @ Oct 30 2013, 11:53)  из софтовой лирики: а как вы пишете в нанд? из линукса после загрузки с sd/mmc? как вариант попробуйте из юбута затереть весь нанд и его же средствами, считав файлы с sd, накатить в нанд.. Именно через юбут и записываю. После заливки сравнивал получившийся дамп нанда и файл загрузчика в hex редакторе - всё одинаково.
Сообщение отредактировал Dilim - Oct 30 2013, 12:13
|
|
|
|
|
Oct 30 2013, 13:45
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Dilim @ Oct 30 2013, 15:12)  Пин gpmc_wait0 подключен к выводу READY/BUSY нанда. ок Цитата sys_boot пины проверял неоднократно, там все нормально, да и не похоже, что в них ошибка, потому что он вроде как пытается с нанда загрузится. Если бы не читал id, или читал бы неправильно, то не конфигурил бы правильно регистры GPMC_CONFIG. Так что тут вроде как всё хорошо. Судя по бут-сиквенс дальше он должен копировать образ загрузчика из нанда в RAM и при пошаговой отладке в регистре R0 на несколько шагов появлятся адрес 0x40200800 (с этого адреса начинается исполнение загрузчика в RAM - проверял на работающей плате с 16ти битным нандом) но после этого всё рушится.. так все же что-то считывает с нанда или валится в момент чтения? момент достаточно принципиальный: одно дело не может считать Id, другое - пытается работать со считанными данными.. в мане на проц есть такое абзац "24.4.7.4.2 Read Sector Procedure During the booting procedure, the ROM code reads 512-byte sectors from the NAND device. The reading fails in two cases: • The accessed sector is in a block marked as invalid. • The accessed sector contains an error that cannot be corrected with ECC" и ветка на форуме - вроде без решения, но с похожей симптоматикой: http://e2e.ti.com/support/arm/sitara_arm/f/791/t/36709.aspxЦитата Именно через юбут и записываю. После заливки сравнивал получившийся дамп нанда и файл загрузчика в hex редакторе - всё одинаково. на том же форуме много разговоров, о том как писать нанд через юбут и упоминания о правильном моде..
Сообщение отредактировал Jury093 - Oct 30 2013, 13:55
|
|
|
|
|
Nov 8 2013, 07:31
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089

|
Цитата(sasamy @ Oct 30 2013, 18:58)  Цитата(Jury093 @ Oct 30 2013, 17:45)  ок так все же что-то считывает с нанда или валится в момент чтения? момент достаточно принципиальный: одно дело не может считать Id, другое - пытается работать со считанными данными.. в мане на проц есть такое абзац "24.4.7.4.2 Read Sector Procedure During the booting procedure, the ROM code reads 512-byte sectors from the NAND device. The reading fails in two cases: • The accessed sector is in a block marked as invalid. • The accessed sector contains an error that cannot be corrected with ECC" и ветка на форуме - вроде без решения, но с похожей симптоматикой: http://e2e.ti.com/support/arm/sitara_arm/f/791/t/36709.aspxна том же форуме много разговоров, о том как писать нанд через юбут и упоминания о правильном моде.. Дело в том, что на плате с 16ти разрядным нанд такой способ загрузки работает. Не будут же отличаться ЕСС для разных разрядностей флешек.. или у TI всё настолько?)
|
|
|
|
|
Nov 8 2013, 12:07
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089

|
ХА! действительно, так оно и было, для разных разрядностей по разному пишется... долго же я с этим мучался! Всем спасибо!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|