Jump to content

    

Прошивка 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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Edited by alexey123_45

Share this post


Link to post
Share on other sites
Не может ли быть аппаратная проблема в самом процессоре?

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

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

Edited by alexey123_45

Share this post


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

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

 

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

 

Share this post


Link to post
Share on other sites

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

Edited by alexey123_45

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this