Т.к. у него [Тиона-Про-270] только один COM-порт полный и имеет уровни
RS-232, то он понадобился для работы с модемом. Поэтому я решил
отлаживаться через ttyS2.
в переменной окружения u-boot-а bootargs написал:
console=ttyS2,115200
в файле /etc/inittab написал: console::respawn:/sbin/getty -L 115200 /
dev/ttyS2 vt100
но тем не менее, в самом начале загрузки (когда U-Boot даёт
возможность в него зайти) ввод и вывод идут на ttyS0. Это мешает, т.к.
по включению модем выдаёт что-то нечленораздельное, и оно
воспринимается u-boot-ом как просьба войти в режим настроек.
Я могу, конечно, сделать так, что модем будет включаться чуть позже,
но это некрасивое решение.
Можно ли переконфигурировать u-Boot так, чтоб он с самого начала
работал через ttyS2?
Если можно, то где это настраивается? Я искал, но не нашел.
> Можно ли переконфигурировать u-Boot так, чтоб он с самого начала
> работал через ttyS2?
> Если можно, то где это настраивается? Я искал, но не нашел.
Придется пересобрать с включенным CONFIG_STUART
Посмотрел исходники u-Boot-a. Правильно я понимаю, что его задаёт
#define CONFIG_MPSC_PORT
если да, то в каком файле? там много .h - файлов, каждый для своего
микроконтроллера, я боюсь пробовать методом тыка, т.к. не хотелось бы
связываться с прошивкой u-Boot-а по JTAG-у .
и если надо будет перешивать u-Boot, то по какому адресу его
копировать командой cp.b?
Понял, спасибо. Попробую. А адрес, куда заливать?
Во flash в 0x0, но без JTAG лучше не начинать.
Достал JTAG, но опять застопорился. В единственном, где определяется
CONFIG_STUART, файле "include/configs/trizepsiv.h"
есть такие строки
/*
* select serial console configuration
*/
#define CONFIG_SERIAL_MULTI
#define CONFIG_FFUART 1 /* we use FFUART on Conxs */
#define CONFIG_BTUART 1 /* we use BTUART on Conxs */
#define CONFIG_STUART 1 /* we use STUART on Conxs */
т.е. включены все возможные опции.
В некоторых других местах кода я вижу, что CONFIG_STUART проверяется в
последнюю очередь.
Правильно ли я понимаю, что надо всё остальное выключить (и
закомментировать CONFIG_SERIAL_MULTI), тогда получится, что u-boot
начнет работать через ttyS2 ?
В идеале да, но я не пробовал. И раз в Trizeps IV такая конфигурация,
то и multi тоже должно работать.
Да, но в файле include/configs/tion270.h
#define CONFIG_STUART
(вместо CONFIG_FFUART, define ... 0 не надо, будет не то).
2009/6/27 Sergey Alyoshin <alyos...@gmail.com>:
По поводу конфига - я видимо немного не сообразил сразу.
Сначала сделал в файле trizepsiv, скомпилил, залил всё оказалось без
изменений, но главное, u-boot работал.
Тут до меня дошло, что на каждую борду свой конф. файл. Меня
окрылило :) - после перепрошивки ведь u-Boot работал!
Начал искать аналогичный для Тиона, нашел. Заменил в точности как вы
потом и сказали ( CONFIG_FFUART заменил на CONFIG_STUART).
Перекомпилил. Залил точно также
tftpboot A0000000 u-boot.bin
protect off bank 1
erase 00000000 +$filesize
cp.b A0000000 00000000 $filesize
В результате - u-boot не работает вообще. Я не расстроился, т.к. не я
первый, видимо там есть какая-то недокументированная штуковина, в
первый раз я заливал тот же образ, что там и был - всё нормально. Во
второй - залил не тот - перестало работать. Меня терзают смутные
сомнения: не выполняет ли микропроцессор код u-boot-а прямо из флеша,
в который пишет? Если да, то тогда прошить новый у-буут практически
нереально без JTAG-a.
Собственно так перешел ко второй части танца. Начал читать про то, как
перепрошивать JTAGом.
Приведу ссылки (для будущих поколений):
http://groups.google.com/group/tion_sbc/browse_thread/thread/e667fb15f4c02ce9/2c16a22e03e2e465?lnk=gst&q=270#2c16a22e03e2e465
- вроде бы правильное обсуждение (много по теме)
http://www.zao-zeo.ru/dokuwiki/doku.php/openocd - ваша страничка про
OpenOCD
http://www.olimex.com/dev/arm-jtag.html - страничка программатора,
который пытаюсь использовать
http://www.zao-zeo.ru/media/files/adapters/jtag-adapter_circuit.pdf -
схема переходника для Тиона-Про-270
http://www.freddiechopin.info/index.php/en/download/category/4-openocd?download=8%3Aopenocd-010
собственно OpenOCD. Со штатного места скачать не удалось.
А вот с файлами для OpenOCD не получилось. Ссылки, данные на вашей
страничке про OpenOCD вроде как (возможно временно) не работают.
я имею в виду эти вот две:
http://www.zao-zeo.ru/media/files/openocd/win/parport.cfg
http://www.zao-zeo.ru/media/files/openocd/win/tion-pro270.cfg
да, вот эта вот (хоть и не нужна здесь), но тоже не работает
http://www.zao-zeo.ru/media/files/openocd/win/olimex-arm-usb-ocd.cfg
А без этих файлов вроде как прошить нельзя JTAG-ом.
Собственно вопрос: не могли бы вы их выложить и дать ссылку на
пошаговую процедуру заливки образа u-boot-а LPT-шным Olimex-овским
JTAG-ом из под Windows (если, конечно, такой документ или обсуждение
есть вообще). Если нету, тогда не тратьте время, я попробую воссоздать
картину, что где брать и как делать - и напишу потом. Если будут
конкретные вопросы, на которые ответов не найду - тогда спрошу уж...
Так и есть, PXA270 загружается с 0x0. Для перезаписанного U-Boot, не
смотрели сообщения на STUART (третий порт, и он не RS232)?.
> А вот с файлами для OpenOCD не получилось. Ссылки, данные на вашей
> страничке про OpenOCD вроде как (возможно временно) не работают.
> я имею в виду эти вот две:
> http://www.zao-zeo.ru/media/files/openocd/win/parport.cfg
> http://www.zao-zeo.ru/media/files/openocd/win/tion-pro270.cfg
> да, вот эта вот (хоть и не нужна здесь), но тоже не работает
> http://www.zao-zeo.ru/media/files/openocd/win/olimex-arm-usb-ocd.cfg
На сервере эти файлы есть (на странице wiki этот список файлов создан скриптом),
но он из предосторожности .cfg файлы не отдаёт. Сейчас уберу эти суффиксы.
> Собственно вопрос: не могли бы вы их выложить и дать ссылку на
> пошаговую процедуру заливки образа u-boot-а LPT-шным Olimex-овским
> JTAG-ом из под Windows (если, конечно, такой документ или обсуждение
> есть вообще). Если нету, тогда не тратьте время, я попробую воссоздать
> картину, что где брать и как делать - и напишу потом. Если будут
> конкретные вопросы, на которые ответов не найду - тогда спрошу уж...
На wiki писал человек у которого работало с Olimex ARM-JTAG и из под Windows.
Если не заработает, возможно, поможет изменение подачи питания на ИМС
ARM-JTAG не с LPT порта а с платы.
Как и обещал, привожу полную последовательность перепрошивки u-boot-a
(во многом повторюсь, но это не будет вредным, надеюсь)
1) Купил в "мегаэлектронике" (простите за рекламу, просто больше нигде
у нас (в Питере) не нашел) такой вот JTAG-адаптер http://www.olimex.com/dev/arm-jtag.html
2) Спаял переходник согласно схеме: http://www.zao-zeo.ru/media/files/adapters/jtag-adapter_circuit.pdf
3) Скачал OpenOCD отсюда:
http://www.freddiechopin.info/index.php/en/download/category/4-openocd?download=8%3Aopenocd-010
4) Установил из zip-архива скачанного OpenOCD .msi файл (установился
он сам, без подсказок в C:\Program Files\OpenOCD\0.1.0\ )
5) Скачал файл http://www.zao-zeo.ru/media/files/openocd/win/parport и
сохранил его под именем C:\Program Files\OpenOCD\0.1.0\interface
\parport.cfg
6) Скачал файл http://www.zao-zeo.ru/media/files/openocd/win/tion-pro270
и сохранил его под именем C:\Program Files\OpenOCD\0.1.0\target\tion-
pro270.cfg
7) Скачал файл http://www.zao-zeo.ru/media/files/openocd/xscale/debug_handler.bin
и сохранил его в каталог C:\Program Files\OpenOCD\0.1.0\xscale
(для этого каталог xscale пришлось создать вручную)
8) Выключил комп с Windows-ом и стенд с Тионом-Про270 и подключил
программатор (возможно это не обязательно, но 2 раза я уже сжигал LPT-
порт, теперь на воду дую).
9) Включил комп и Тион-Про270.
10) На компе запустил: C:\Program Files\OpenOCD\0.1.0\drivers\giveio
\remove_giveio.bat
11) Затем запустил: C:\Program Files\OpenOCD\0.1.0\drivers\giveio
\install_giveio.bat
12) Затем запустил: openocd.exe -f "C:\ProgramFiles\OpenOCD
\0.1.0\interface\parport.cfg" -f "C:\Program Files\OpenOCD\0.1.0\target
\tion-pro270.cfg"
13) При этом (насколько я понимаю) запустился этот отладчик, который
представляет из себя (в одной из ипостасей) телнет-сервер, слушающий
порт 4444. (зачем так было сделано - не знаю, но наверно должно быть
удобно - можно отладчик запускать на одной машине, а командовать им с
другой, хотя в нашем случае это и избыточно).
14) из под другой консоли (меню пуск-> выполнить -> cmd) запустил
ipconfig, узнал, что мой IP адрес 192.168.1.145
15) затем запустил telnet 192.168.1.145
16) на диск С в корневой каталог положил скомпилированный на Linux-
машине образ u-boot-a под именем u-boot.bin
17) в сеансе телнета набрал
flash erase_sector 0 0 127
flash probe 0
flash write_image c:\\u-boot.bin
18) Выключил Тион-Про270. Отсоединил от него JTAG.
u-boot работает.
Решил вроде бы проблему:
вернул всё в исходное состояние,
#define CONFIG_FFUART 1
но в файле /common/main.c
нашел то место, где осуществляется вход в настройки u-boot-a (по
строке "Hit any key...")
исправил любой символ на пробел. Теперь в настройки входит по нажатию
пробела, остальные клавиши игнорирует. Должно этого хватить, если
другие проблемы не появятся :)
держу пальцы крестиком,хоть и печатать неудобно :)
Маленькая ремарка: после прошивки перекомпилённого u-boot-a надо
настроить переменные окружения. У меня была проблема в том, что на
рабочей плате я не сохранил значения их. Поэтому пришлось искать в
этой группе.
Вот ссылка на сообщение, где перечисленны вроде бы корректные
значения:
http://groups.google.com/group/tion_sbc/browse_thread/thread/eee0394f56243fb3/e5efc6c4afc608f0?lnk=gst&q=printenv#e5efc6c4afc608f0
Мне пришлось выставить следующие переменные:
rd_file=urootfs
kern_fladdr=00080000
rd_fladdr=00480000
bootcmd=bootm ${kern_fladdr}
bootargs=console=ttyS2,115200n8 root=/dev/mtdblock2 rootfstype=jffs2
kern_file=uImage
В моём случае значения отличаются от принятых по умолчанию, т.к.
использую jffs2 файловую систему.
Теперь модем не мешает загружаться.
Нужен патч не меньше svn512, там добавлена соотв. конфигурация в
include/configs/tion270.h
CONFIG_JFFS2_CMDLINE, CONFIG_CMD_JFFS2 и MTD*.
Хотел еще поделиться наблюдением: после переноса отладочного СОМ-порта
с ttyS0 на ttyS1 (в итоге перенёс именно на S1), заметил, что
компьютер перестал загружаться, когда отключил платку-переходник из
CMOS в RS232. Не разбирался глубоко из-за чего это произошло, просто
соединил RX с землёй и проблема исчезла (подозреваю, что долгое
нахождение RX в подтянутом к питанию состоянии вызывает что-нибудь
типа break-condition в юарте и блокирует дальнейшую загрузку, т.к.
этот терминал прописан в inittab). Раньше, когда ttyS0 (и вроде бы
даже ttyS2) были отладочными портами - такого не было.
Хотел бы также поблагодарить (Сергея в особенности) за очень
профессиональную помощь и исключительное терпение. Устройство
заработало нормально, даже внешний watch-dog не пригодился ни разу
пока что.
Спасибо что сообщали о результатах.