Перейти к содержанию

    

Прошивка OMAP L-138

Здравствуйте

Столкнудся с такой проблемой: Развели плату на базе OMAP L-138(схема платы во вложении). Настройл загрузочные пины на загрузку по UART2. подключил утилиту OMAP-L138_FlashAndBootUtils_2_40. Дал команду на стирание NAND

sfh_OMAP-L138.exe -erase -targetType OMAPL138 -flashType NAND -p COM4 -v

В консоли лог выполнения программы выглядит так

 

-----------------------------------------------------

TI Serial Flasher Host Program for OMAP-L138

© 2017, Texas Instruments, Inc.

Ver. 1.67

-----------------------------------------------------

 

[TYPE] Global erase

[TARGET] OMAPL138

[DEVICE] NAND

[NAND Block] 1

Attempting to connect to device /dev/ttyUSB0...

Press any key to end this program at any time.

(AIS Parse): Read magic word 0x41504954.

(AIS Parse): Waiting for BOOTME... (power on or reset target now)

(AIS Parse): BOOTME received!

(AIS Parse): Performing Start-Word Sync...

(AIS Parse): Performing Ping Opcode Sync...

(AIS Parse): Processing command 0: 0x58535901.

(AIS Parse): Performing Opcode Sync...

(AIS Parse): Loading section...

(AIS Parse): Loaded 14100-Byte section to address 0x80000000.

(AIS Parse): Processing command 1: 0x58535901.

(AIS Parse): Performing Opcode Sync...

(AIS Parse): Loading section...

(AIS Parse): Loaded 1352-Byte section to address 0x80003714.

(AIS Parse): Processing command 2: 0x58535906.

(AIS Parse): Performing Opcode Sync...

(AIS Parse): Performing jump and close...

(AIS Parse): AIS complete. Jump to address 0x80000000.

(AIS Parse): Waiting for DONE...

(AIS Parse): Boot completed successfully.

Waiting for SFT on the OMAP-L138...

Target: BOOTUBL

Target: DONE

 

И все далее программа не идет

Взял плату другово производителя по схемотехнике такая же только NAND другой фирмы k9f4g08u0d. На ней все работает, программа корректно завершается

Посмотрел осциллографом пины, которые подключены к NAND на этой плате, там все соответствует временной диаграмме.

Посмотрел на нашей плате все порты стоят в +3.3В и ни на что не реагируют

В чем может быть проблема?

SOM_P.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получается программа чистки NAND зависает по не понятным причинам. Вы какой-нибудь другой код на процессоре запускали, работал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет не запускал, но я сделал следующее: Я скачал исходники утилиты прошивочной. И в функции выдачи команды на NAND поставил бесконечный цикл и стал выдавать на все ножки 1-0 в бесконечном цикле. На рабочей плате ножки дергаются(вижу осциллографом), на нашей нет.Т.е. вообще ни один пин не дернулся.

Похоже что порты стоят в 3-м состоянии. Но странно, утилита одна и та же, процессор явно грузится и программа там работает, т.к. консольный лог я вижу и он соответствует рабочей плате.Я ставлю свои контрольные сообщения, они тоже выводятся одинаково на обоих платах. Не может ли быть аппаратная проблема в самом процессоре?

Изменено пользователем alexey123_45

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Не может ли быть аппаратная проблема в самом процессоре?

Проверьте питание RVDD.

 

Еще OMAP-L138 можно глухо завесить, если не потать питание RTC, а затем выполнить обращение к его регистрам. Загрузчику

это ни к чему, но все же. И лучше, конечно, грузить свою программу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз есть исходники, то подключитесь отладчиком и отследите процесс выполнения программы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Питание присутствует. Не может такого быть, что на конденсаторах оно есть, а до непосредственно ножек не дошло из-за паек, например?

 

Отладчиком подключился, программа перестает работать на первом же обращении к NAND. И перестает она работать, потому что не может выдать команду reset на NAND. Но на на рабочей плате ровно эта же программа без проблем работает

Совсем глупое предположение(хотя официальный диллер говорит, что ничего такого не слышал). Может ли быть так, что для другой ревизии чипа эта программа работает некорректно?

Изменено пользователем alexey123_45

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Совсем глупое предположение(хотя официальный диллер говорит, что ничего такого не слышал). Может ли быть так, что для другой ревизии чипа эта программа работает некорректно?

Теоретически - может. У вас на плате может быть старая ревизия, в которой есть какой-то баг, пофиксенный позже. А прога написана для более нового чипа, с исправленным багом.

Я сам когда-то работал с OMAP-Lxxx и наступал на баги в них лично. Причём даже не отмеченные (на тот момент) в еррата. Так что это немудрено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ревизию можете посмотреть в Memory Browser по адресу 0xFFFD0000, режим Caracter. Увидите что то типо d800k00*, где * - 2,4,6,8

 

Посмотрите, также значение по адресу 0x68000000, режим 32-bit hex, он должен содержать 0x40000205. Это регистр EMIFA.MIDR.

 

И расшифруйте "не может выдать команду reset на NAND", в идеале должно быть "после чтении/записи такого-то региста/адреса..."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для reset NAND существует команда 0xFF. Т.е. выдаем команду 0xFF и ждем момента. когда R/B опустится в нуль на некий промежуток времени в качестве ответа. Для того чтобы выдать команду нужно подать на управляющие ноги сигналы, ну в часности опустить в нуль CS. Это делает процессор. вот я осциллографом этих управляющих воздействий не вижу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То, что снаружи ни какой реакции нет - это ясно. Предполагаем, что с железом все хорошо.

Процессор сам по себе ни чего не делает. Тогда вопрос встает следующим образом, пытается ли программа "выдать команду reset на NAND"? Может она завершается раньше.

В эксперименте с подачей на все ножки 1-0 в бесконечном цикле, есть уверенность, что программа на вашей плате заходит в этот цикл?

Если гарантированно заходит, в таком случае надо убедиться, что

1. Подача тактового сигнала на модуль GPIO разрешена

2. Что выводы сконфигурированы как GPIO

В случае NAND надо убедится, что

1. тактовая частота EMIFA в допустимом диапазоне

2. разрешена подача тактового сигнала на модуль EMIFA

3. EMIFA сконфигурирован верно

 

Может еще что-то... если все соблюдено значит дело в железе.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

программу я проверял на рабочей плате, там все хорошо работает и судя по отладчику все работает на нерабочей плате. По поводу GPIO не смотрел, но я проверю этот момент, но странно, почему утилита от TI для прошивки, которая работает везде и проблем не возникало(мы пользовались готовыми платами разных производителей и KIT-ами в том числе) не работает тут.

Изменено пользователем alexey123_45

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по схеме, у вас нарушена последовательность подачи питающих напряжений - 3.3V стартует немедленно, а должен запускаться после 1.8V.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините за глупый вопрос, а как вы это поняли? Просто это схема не моя. Не могли бы вы объяснить подробнее?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация