Смена консольного COM-порта на Тион-Про-270

44 views
Skip to first unread message

Timur

unread,
Jun 23, 2009, 9:42:10 AM6/23/09
to tion_sbc
Здравствуйте, еще один вопрос по Тиону-Про-270

Т.к. у него [Тиона-Про-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?
Если можно, то где это настраивается? Я искал, но не нашел.

Sergey Alyoshin

unread,
Jun 23, 2009, 10:04:17 AM6/23/09
to tion...@googlegroups.com
2009/6/23 Timur <progra...@bk.ru>:

> Можно ли переконфигурировать u-Boot так, чтоб он с самого начала
> работал через ttyS2?
> Если можно, то где это настраивается? Я искал, но не нашел.


Придется пересобрать с включенным CONFIG_STUART

Timur

unread,
Jun 23, 2009, 10:05:47 AM6/23/09
to tion_sbc
> Если можно, то где это настраивается? Я искал, но не нашел.

Посмотрел исходники u-Boot-a. Правильно я понимаю, что его задаёт
#define CONFIG_MPSC_PORT
если да, то в каком файле? там много .h - файлов, каждый для своего
микроконтроллера, я боюсь пробовать методом тыка, т.к. не хотелось бы
связываться с прошивкой u-Boot-а по JTAG-у .

и если надо будет перешивать u-Boot, то по какому адресу его
копировать командой cp.b?

Timur

unread,
Jun 23, 2009, 10:09:57 AM6/23/09
to tion_sbc
> Придется пересобрать с включенным CONFIG_STUART

Понял, спасибо. Попробую. А адрес, куда заливать?

Sergey Alyoshin

unread,
Jun 23, 2009, 10:29:14 AM6/23/09
to tion...@googlegroups.com
2009/6/23 Timur <progra...@bk.ru>:

>> Придется пересобрать с включенным CONFIG_STUART
>
> Понял, спасибо. Попробую. А адрес, куда заливать?

Во flash в 0x0, но без JTAG лучше не начинать.

Timur

unread,
Jun 27, 2009, 11:02:57 AM6/27/09
to tion_sbc
> Во 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 ?

Timur

unread,
Jun 27, 2009, 11:17:54 AM6/27/09
to tion_sbc
> Во flash в 0x0, но без JTAG лучше не начинать.

Нашел JTAG, начал более детально разбираться. В единственном файле,
где встречается определение #define CONFIG_STUART 1 определены также и
другие опции (файл 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 */

В другом файле (cpu/pxa/serial.c) эта опция (CONFIG_STUART)
проверяется последней:


#define FFUART_INDEX 0
#define BTUART_INDEX 1
#define STUART_INDEX 2

#ifndef CONFIG_SERIAL_MULTI
#if defined (CONFIG_FFUART)
#define UART_INDEX FFUART_INDEX
#elif defined (CONFIG_BTUART)
#define UART_INDEX BTUART_INDEX
#elif defined (CONFIG_STUART)
#define UART_INDEX STUART_INDEX
#else
#error "Bad: you didn't configure serial ..."
#endif
#endif

правильно ли я понимаю, что для работы u-boot-а через ttyS2 мне надо в
trizepsiv.h написать следующее:
//#define CONFIG_SERIAL_MULTI
#define CONFIG_FFUART 0 /* we use FFUART on Conxs */
#define CONFIG_BTUART 0 /* we use BTUART on Conxs */

Sergey Alyoshin

unread,
Jun 27, 2009, 3:09:33 PM6/27/09
to tion...@googlegroups.com

В идеале да, но я не пробовал. И раз в Trizeps IV такая конфигурация,
то и multi тоже должно работать.

Sergey Alyoshin

unread,
Jun 27, 2009, 3:10:48 PM6/27/09
to tion...@googlegroups.com
2009/6/27 Timur <progra...@bk.ru>:

> правильно ли я понимаю, что для работы u-boot-а через ttyS2 мне надо в
> trizepsiv.h написать следующее:
> //#define CONFIG_SERIAL_MULTI
> #define CONFIG_FFUART          0       /* we use FFUART on Conxs */
> #define CONFIG_BTUART          0       /* we use BTUART on Conxs */
> #define CONFIG_STUART          1       /* we use STUART on Conxs */

Да, но в файле include/configs/tion270.h

Sergey Alyoshin

unread,
Jun 27, 2009, 3:12:33 PM6/27/09
to tion...@googlegroups.com
Точнее только

#define CONFIG_STUART
(вместо CONFIG_FFUART, define ... 0 не надо, будет не то).


2009/6/27 Sergey Alyoshin <alyos...@gmail.com>:

Timur

unread,
Jun 27, 2009, 6:42:11 PM6/27/09
to tion_sbc
Извините, что запостил 2 раза, просто у меня что-то наверно с инетом
произошло - первый раз запостил - вроде удачно, но не появилось здесь.
Тогда набрал более подробно второй раз. И опять то же самое.

По поводу конфига - я видимо немного не сообразил сразу.
Сначала сделал в файле 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 (если, конечно, такой документ или обсуждение
есть вообще). Если нету, тогда не тратьте время, я попробую воссоздать
картину, что где брать и как делать - и напишу потом. Если будут
конкретные вопросы, на которые ответов не найду - тогда спрошу уж...

Sergey Alyoshin

unread,
Jun 28, 2009, 3:19:19 AM6/28/09
to tion...@googlegroups.com
2009/6/28 Timur <progra...@bk.ru>:

> сомнения: не выполняет ли микропроцессор код u-boot-а прямо из флеша,
> в который пишет? Если да, то тогда прошить новый у-буут практически
> нереально без JTAG-a.

Так и есть, 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 порта а с платы.

Timur

unread,
Jun 28, 2009, 5:37:07 AM6/28/09
to tion_sbc
Прошить u-boot через JTAG получилось.
Но версия u-boot-а, с установленным
#define CONFIG_STUART 1
вместо
#define CONFIG_FFUART 1
почему-то отказывается работать.
Проверял на всех трёх COM-портах Тиона-Про270. Молчат.

Как и обещал, привожу полную последовательность перепрошивки 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 работает.

Timur

unread,
Jun 28, 2009, 8:26:52 AM6/28/09
to tion_sbc
> Проверял на всех трёх COM-портах Тиона-Про270. Молчат.

Решил вроде бы проблему:
вернул всё в исходное состояние,
#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 файловую систему.

Теперь модем не мешает загружаться.

Timur

unread,
Jul 1, 2009, 6:19:22 PM7/1/09
to tion_sbc
Заметил одну особенность пересобранного из исходников u-boot-а:
В нем меньше команд, например, нет команды mtdparts или команды ls,
позволяющей смотреть произвольную директорию на КФС.
menuconfig-а, аналогичного КФС и ядру я не нашел. Если это не займет у
вас много времени и вам не придется анализировать исходники и вы
просто знаете, где это конфигурируется (входящие в u-boot команды
пользователя) то скажите пожалуйста (или хотя бы где приблизительно
искать).

Sergey Alyoshin

unread,
Jul 2, 2009, 3:57:57 AM7/2/09
to tion...@googlegroups.com
2009/7/2 Timur <progra...@bk.ru>:

Нужен патч не меньше svn512, там добавлена соотв. конфигурация в
include/configs/tion270.h
CONFIG_JFFS2_CMDLINE, CONFIG_CMD_JFFS2 и MTD*.

Timur

unread,
Jul 5, 2009, 2:40:37 PM7/5/09
to tion_sbc
Понятно, спасибо.

Хотел еще поделиться наблюдением: после переноса отладочного СОМ-порта
с ttyS0 на ttyS1 (в итоге перенёс именно на S1), заметил, что
компьютер перестал загружаться, когда отключил платку-переходник из
CMOS в RS232. Не разбирался глубоко из-за чего это произошло, просто
соединил RX с землёй и проблема исчезла (подозреваю, что долгое
нахождение RX в подтянутом к питанию состоянии вызывает что-нибудь
типа break-condition в юарте и блокирует дальнейшую загрузку, т.к.
этот терминал прописан в inittab). Раньше, когда ttyS0 (и вроде бы
даже ttyS2) были отладочными портами - такого не было.


Хотел бы также поблагодарить (Сергея в особенности) за очень
профессиональную помощь и исключительное терпение. Устройство
заработало нормально, даже внешний watch-dog не пригодился ни разу
пока что.

Sergey Alyoshin

unread,
Jul 6, 2009, 4:05:36 AM7/6/09
to tion...@googlegroups.com
> Хотел бы также поблагодарить (Сергея в особенности) за очень
> профессиональную помощь и исключительное терпение. Устройство
> заработало нормально, даже внешний watch-dog не пригодился ни разу
> пока что.

Спасибо что сообщали о результатах.

Reply all
Reply to author
Forward
0 new messages