реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Зависание embedded linux на ARM.
AnMD
сообщение Aug 29 2013, 08:32
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 6-09-11
Пользователь №: 67 029



Добрый день. Необходима помощь.

В данный момент занимаемся разработкой девайса следующей конфигурации:
cpu: TI AM3715
ram: 2 микросхемы K4X1G163PC(по 128MB) - в данный момент одна микросхема отключена софтварно.
ethernet: 2 контроллера KSZ8851SNLI(интерфейс подключения SPI)
flash: 2 микросхемы MT29F2G(по 256MB) - в данный момент одна микросхема отключена софтварно.
также подключена камера по интерфейсу с которой получаем картинку, обрабатываем и отдаем на внешку по ethernet или кладем на флешку(по запросу).

Все это дело работает под управлением ядра linux-3.9.2.
Файловая система с набором необходимого софта собрана при помощи buildroot-2013.05.
Кросскомпилятор которым собирается ядро и весь самописный софт gcc-4.6.4.

Вся связь, дебаг и все такое осуществляется через преобразователь rs232-USB.


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

Сначала грешили на связку(ethernet-SPI), но серия испытаний с отключенным ethernet'ом опровергла данные подозрения(отключали ethernet исключением процедуры инициализации в ядре).

При опросе через ethernet(выкачивание картинки, опрос состояния по протоколу modbus TCP), появление проблем происходит значительно быстрее.

Характерные признаки начала проблем с системой:
1)Полностью отваливается сеть.
2)Команды вводимые в консоли, выполняются только по двойному нажатию enter.
3)Выполнение некоторых комманд приводит к полному повисанию консоли(возможно и всего устройства). Например команды top.
4)Иногда могут сами по себе в консоли появляться сообщения - хелп по SysRQ.

CODE

[78238.108581] SysRq : HELP : loglevel(0-9) reBoot Crash show-all-locks(D) terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I)
thaw-filesystems(J) saK show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)



Dmesg ничего интересного не выдает. Работа якобы в нормальном режиме.

Подскажите что может вызывать описаные симптомы. Возможно кто-то уже сталкивался с таким повдением.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 29 2013, 12:49
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(AnMD @ Aug 29 2013, 12:32) *
Добрый день. Необходима помощь.

В данный момент занимаемся разработкой девайса следующей конфигурации:
cpu: TI AM3715
ram: 2 микросхемы K4X1G163PC(по 128MB) - в данный момент одна микросхема отключена софтварно.
ethernet: 2 контроллера KSZ8851SNLI(интерфейс подключения SPI)
flash: 2 микросхемы MT29F2G(по 256MB) - в данный момент одна микросхема отключена софтварно.
также подключена камера по интерфейсу с которой получаем картинку, обрабатываем и отдаем на внешку по ethernet или кладем на флешку(по запросу).

Все это дело работает под управлением ядра linux-3.9.2.
Файловая система с набором необходимого софта собрана при помощи buildroot-2013.05.
Кросскомпилятор которым собирается ядро и весь самописный софт gcc-4.6.4.

Вся связь, дебаг и все такое осуществляется через преобразователь rs232-USB.


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

Сначала грешили на связку(ethernet-SPI), но серия испытаний с отключенным ethernet'ом опровергла данные подозрения(отключали ethernet исключением процедуры инициализации в ядре).

При опросе через ethernet(выкачивание картинки, опрос состояния по протоколу modbus TCP), появление проблем происходит значительно быстрее.

Характерные признаки начала проблем с системой:
1)Полностью отваливается сеть.
2)Команды вводимые в консоли, выполняются только по двойному нажатию enter.
3)Выполнение некоторых комманд приводит к полному повисанию консоли(возможно и всего устройства). Например команды top.
4)Иногда могут сами по себе в консоли появляться сообщения - хелп по SysRQ.

CODE

[78238.108581] SysRq : HELP : loglevel(0-9) reBoot Crash show-all-locks(D) terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I)
thaw-filesystems(J) saK show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)



Dmesg ничего интересного не выдает. Работа якобы в нормальном режиме.

Подскажите что может вызывать описаные симптомы. Возможно кто-то уже сталкивался с таким повдением.


Перед uBoot в 64К кеш процессора загружается и запускается X-loader. В бут партишне он представлен файлом MLO. X-loader загрузит uBoot когда все настроит. Он настраивает контроллер динамической памяти: Частоту и временную диаграму. Скорее всего у вас неверно настроено. Там по умолчанию кажется 200 мегагерцовая память.
Я это место хорошо знаю. Я даже писал тест. Загружешь X-loader и тестируешь хардвер. В основном память. Если найду -- пришлю

Сообщение отредактировал Tarbal - Aug 29 2013, 12:52
Go to the top of the page
 
+Quote Post
AnMD
сообщение Aug 29 2013, 13:52
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 6-09-11
Пользователь №: 67 029



Цитата(Tarbal @ Aug 29 2013, 16:49) *
Перед uBoot в 64К кеш процессора загружается и запускается X-loader. В бут партишне он представлен файлом MLO. X-loader загрузит uBoot когда все настроит. Он настраивает контроллер динамической памяти: Частоту и временную диаграму. Скорее всего у вас неверно настроено. Там по умолчанию кажется 200 мегагерцовая память.
Я это место хорошо знаю. Я даже писал тест. Загружешь X-loader и тестируешь хардвер. В основном память. Если найду -- пришлю



Все частоты, тайминги и прочее у нас вынесено в икслоадер. В данный момент работает память на 133Mhz. Все остальные параметры инициализации проверены несколько раз, это уже пройденный этап. Тесты проходят, тоже писалиsm.gif Проблема выше...
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Aug 29 2013, 14:46
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Судя по выскакивающему Magic SysRq я бы сказал, что у Вас какая-то проблема с последоваельным портом или преобразователем USB-serial. Если его совсем отключить, устройство виснет?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 29 2013, 19:10
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



У этого процессора есть ножка, которую можно использовать как вывод разных внутренних clocks. Если она подключена, то можно попробовать если частоты правильные и не меняются когда проблемы начинаются. В конфигурации выхода есть возможность поделить. Если не поделить, то частоты выше 100 мегагерц непросто смотреть осциллографом или чем другим.
Что помню там есть два выхода, второй может быть подключен к разным источникам.
Проверьте если частоты не изменяются.

Тест проделайте:
Поставьте эту же систему на Beagleboard. Там почти такой же процессор.
Ну для начала рут файл систему записать на устройство с биглбордом и попробовать те же условия.

Это даст вам информацию, что виновато верхний уровень или кернел, бутлоадер и икхлоадер.

Цитата(Dron_Gus @ Aug 29 2013, 18:46) *
Судя по выскакивающему Magic SysRq я бы сказал, что у Вас какая-то проблема с последоваельным портом или преобразователем USB-serial. Если его совсем отключить, устройство виснет?

Кстати да!
Можно запретить в конфигурации кернела CONFIG_MAGIC_SYSRQ и перестроить кернел.

А проверить стазу можно вот так:
echo 0 >/proc/sys/kernel/sysrq


in /proc/sys/kernel/sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function
description):
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks

You can set the value in the file by the following command:
echo "number" >/proc/sys/kernel/sysrq


Сообщение отредактировал Tarbal - Aug 29 2013, 19:14
Go to the top of the page
 
+Quote Post
AnMD
сообщение Aug 30 2013, 10:04
Сообщение #6





Группа: Новичок
Сообщений: 7
Регистрация: 6-09-11
Пользователь №: 67 029



Цитата(Tarbal @ Aug 29 2013, 23:10) *
У этого процессора есть ножка, которую можно использовать как вывод разных внутренних clocks. Если она подключена, то можно попробовать если частоты правильные и не меняются когда проблемы начинаются. В конфигурации выхода есть возможность поделить. Если не поделить, то частоты выше 100 мегагерц непросто смотреть осциллографом или чем другим.
Что помню там есть два выхода, второй может быть подключен к разным источникам.
Проверьте если частоты не изменяются.


Частоты проверяли. Понижали и смотрели осциллографом. Все стабильно.

Цитата(Tarbal @ Aug 29 2013, 23:10) *
Тест проделайте:
Поставьте эту же систему на Beagleboard. Там почти такой же процессор.
Ну для начала рут файл систему записать на устройство с биглбордом и попробовать те же условия.

Это даст вам информацию, что виновато верхний уровень или кернел, бутлоадер и икхлоадер.

Биглборда у нас нет. Но есть Mistral'евский кит с данным процом. Попробуем залить ядро на него.

Цитата(Tarbal @ Aug 29 2013, 23:10) *
Кстати да!
Можно запретить в конфигурации кернела CONFIG_MAGIC_SYSRQ и перестроить кернел.

А проверить стазу можно вот так:
echo 0 >/proc/sys/kernel/sysrq


in /proc/sys/kernel/sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function
description):
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks

You can set the value in the file by the following command:
echo "number" >/proc/sys/kernel/sysrq


Отключить SysRq не проблема. Но появление сообщения скорее симптом, а не причина. Поэтому отключение SysRq не излечивает девайс, а лишь убирает симптом.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 30 2013, 11:36
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(AnMD @ Aug 30 2013, 14:04) *
Частоты проверяли. Понижали и смотрели осциллографом. Все стабильно.


Биглборда у нас нет. Но есть Mistral'евский кит с данным процом. Попробуем залить ядро на него.



Отключить SysRq не проблема. Но появление сообщения скорее симптом, а не причина. Поэтому отключение SysRq не излечивает девайс, а лишь убирает симптом.


Понятно. Для начала кернел не обязательно. Только рут файловую систему скопируйте.
Используите ключи при копировании -arp
cp -arp rootfs_source/* rootfs_target/

если без -arp , то получится неправильная копия.

В результате вы будете знать в чем проблема в верхнем уровне или нижнем.

Кернел возможно придется конфигурировать если вы меняли/добавляли устройства.


Еще вот какая мысль:
написать апликацию, которая делает дамп памяти и сравнить содержимое регистров конфигурации динамической памяти когда начинаются проблемы с исходным содержимым. Если нет ничего подобного {не удивлюсь если уже проверили sm.gif} -- могу прислать.

Сообщение отредактировал Tarbal - Aug 30 2013, 11:37
Go to the top of the page
 
+Quote Post
psL
сообщение Aug 30 2013, 12:29
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Ядро обычно по-тихому не валится. Нужно включить в kernel hacking debug info. И/или отладочные сообщения в драйвере сети.
Одно непонятно - вы считаете, что у вас валится только консоль, а плата при этом продолжает работать?
В юзерспейсе запускается что-нибудь, кроме BusyBox и т.п.? Какое-то самописное пользовательское по?
Что с потреблением памяти, если оставить консоль работать с включенным top?
Go to the top of the page
 
+Quote Post
AnMD
сообщение Aug 31 2013, 05:10
Сообщение #9





Группа: Новичок
Сообщений: 7
Регистрация: 6-09-11
Пользователь №: 67 029



Цитата(Tarbal @ Aug 30 2013, 15:36) *
Еще вот какая мысль:
написать апликацию, которая делает дамп памяти и сравнить содержимое регистров конфигурации динамической памяти когда начинаются проблемы с исходным содержимым. Если нет ничего подобного {не удивлюсь если уже проверили sm.gif} -- могу прислать.


А вот этого еще не делали. Присылайте cedar.lab.electro@gmail.com. Попробуемsm.gif

Цитата(psL @ Aug 30 2013, 16:29) *
Ядро обычно по-тихому не валится. Нужно включить в kernel hacking debug info. И/или отладочные сообщения в драйвере сети.
Одно непонятно - вы считаете, что у вас валится только консоль, а плата при этом продолжает работать?
В юзерспейсе запускается что-нибудь, кроме BusyBox и т.п.? Какое-то самописное пользовательское по?
Что с потреблением памяти, если оставить консоль работать с включенным top?


Дебаг инфу включили. Когда валится до конца ты выдает дамп и бэктрейс. Все как положено.

Я думаю у нас валится не только консоль, просто симптомы начинаются с консоли. При этом плата продолжает работать, потому что крутится ПО дергающее картинку с камеры, и вот это ПО продолжает писать в консоль через каждые 1000 картинок средний FPS(кадров в секунду).
В юзерспейсе кроме бизибокса работает:около десятка самописных приложений: для получения и анализа картинки с камеры + для осуществления коммуникации через ethernet по разным протоколам.

Память никто не кушает. Проверяли. Топ это тоже доказывает.


Сейчас решили попробовать ядро на девайсе с микросхемами ОЗУ от другого производителя. Посмотрим что получится. Пока uptime 2-ое суток.
Go to the top of the page
 
+Quote Post
psL
сообщение Aug 31 2013, 06:00
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(AnMD @ Aug 31 2013, 09:10) *
Дебаг инфу включили. Когда валится до конца ты выдает дамп и бэктрейс. Все как положено.

Я думаю у нас валится не только консоль, просто симптомы начинаются с консоли. При этом плата продолжает работать, потому что крутится ПО дергающее картинку с камеры, и вот это ПО продолжает писать в консоль через каждые 1000 картинок средний FPS(кадров в секунду).
В юзерспейсе кроме бизибокса работает:около десятка самописных приложений: для получения и анализа картинки с камеры + для осуществления коммуникации через ethernet по разным протоколам.

Память никто не кушает. Проверяли. Топ это тоже доказывает.

Сейчас решили попробовать ядро на девайсе с микросхемами ОЗУ от другого производителя. Посмотрим что получится. Пока uptime 2-ое суток.

Консоль можно поднять через telnet.
Как у вас смонтирована rootfs? В ram или на mtd?
Может развернуть rootfs на nfs, и писать статистику прямо в файл, а не на консоль? Система упадет, а состояние близкое к последнему останется в nfs шаре и его м.б. проанализировать. Или при проблемах с eth увидите, что nfs через какое-то время отваливается, особенно при интенсивном обмене в файловой системе.
Возможно было бы правильнее не запускать свое ПО - оставить только ось. В качестве нагрузки, например, создать два раздела tmpfs и копировать тестовый файл с одного на другой, или передавать файлы с платы/на плату по ftp, если виноват обмен по сети. В u-boot для теста памяти есть mtest.
Утечки м.б. не только в юзерспейсе, но и в ядре, особенно если есть самописные модули. Можно посмотреть через kmemleak
Go to the top of the page
 
+Quote Post
sasamy
сообщение Aug 31 2013, 07:09
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AnMD @ Aug 29 2013, 12:32) *
Характерные признаки начала проблем с системой:
1)Полностью отваливается сеть.
2)Команды вводимые в консоли, выполняются только по двойному нажатию enter.
3)Выполнение некоторых комманд приводит к полному повисанию консоли(возможно и всего устройства). Например команды top.
4)Иногда могут сами по себе в консоли появляться сообщения - хелп по SysRQ.


Я бы в первую очередь посмотрел

cat /proc/interrupts

может какой-то из IRQ интенсивно счетчик накручивает, а вообще лучше ftrace в руки -
можно узнать в каких местах кода ядро проводит слишком много времени, включая и обработчики прерываний.

http://events.linuxfoundation.org/slides/2...010_rostedt.pdf
https://www.kernel.org/doc/Documentation/trace/ftrace.txt
http://www.omappedia.com/wiki/Installing_and_Using_Ftrace

Сообщение отредактировал sasamy - Aug 31 2013, 07:21
Go to the top of the page
 
+Quote Post
AnMD
сообщение Aug 31 2013, 07:40
Сообщение #12





Группа: Новичок
Сообщений: 7
Регистрация: 6-09-11
Пользователь №: 67 029



Цитата(psL @ Aug 31 2013, 10:00) *
Консоль можно поднять через telnet.
Как у вас смонтирована rootfs? В ram или на mtd?
Может развернуть rootfs на nfs, и писать статистику прямо в файл, а не на консоль? Система упадет, а состояние близкое к последнему останется в nfs шаре и его м.б. проанализировать. Или при проблемах с eth увидите, что nfs через какое-то время отваливается, особенно при интенсивном обмене в файловой системе.
Возможно было бы правильнее не запускать свое ПО - оставить только ось. В качестве нагрузки, например, создать два раздела tmpfs и копировать тестовый файл с одного на другой, или передавать файлы с платы/на плату по ftp, если виноват обмен по сети. В u-boot для теста памяти есть mtest.
Утечки м.б. не только в юзерспейсе, но и в ядре, особенно если есть самописные модули. Можно посмотреть через kmemleak


rootfs смонтирована как mtd. По nfs тоже работали, не совсем понимаю что конкретно писать в файл по nfs? Логи и после перезагрузки остаются на устройстве, вряд ли что-то новое увидим если будем через nfs работать.

Тестирование без своего ПО проводилось. Результат аналогичный. Если гонять голое ядро, все равно симптомы проявляются, только через больший промежуток времени. Даже если из ядра выпилить все упоминания о наличии eth контроллеров. Тест памяти в u-boot'е говорит что все ок.

Kmemleak попробуем использовать. Спасибо.

Цитата(sasamy @ Aug 31 2013, 11:09) *
Я бы в первую очередь посмотрел

cat /proc/interrupts

может какой-то из IRQ интенсивно счетчик накручивает, а вообще лучше ftrace в руки -
можно узнать в каких местах кода ядро проводит слишком много времени, включая и обработчики прерываний.

http://events.linuxfoundation.org/slides/2...010_rostedt.pdf
https://www.kernel.org/doc/Documentation/trace/ftrace.txt
http://www.omappedia.com/wiki/Installing_and_Using_Ftrace



Счетчик прерываний вроде в пределах нормы(если сравнивать на упавшем девайся и на не упавшем).

Ftrace будем использовать. Посмотрим что даст. Спасибо.

Сообщение отредактировал AnMD - Aug 31 2013, 07:41
Go to the top of the page
 
+Quote Post
psL
сообщение Aug 31 2013, 13:33
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(AnMD @ Aug 31 2013, 11:40) *
не совсем понимаю что конкретно писать в файл по nfs?

перенаправить консоль в файл и отключиться от консоли, если дело в консоли, лог смотреть через nfs. Опять же с nfs будет нагрузка на eth
Go to the top of the page
 
+Quote Post
sasamy
сообщение Aug 31 2013, 16:36
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AnMD @ Aug 31 2013, 11:40) *
Тест памяти в u-boot'е говорит что все ок.


Этот тест ни о чем не говорит. В первую очередь запустите тест хотя бы на сутки с нормальным тестером, например вполне приличный
http://pyropus.ca/software/memtester/

поддержка его есть например в buildroot. Сейчас вы возможно ищите черную кошку в темной комнате которой там нет.

Цитата
Консоль можно поднять через telnet.
...
Может развернуть rootfs на nfs


забавные советы, учитывая что

Цитата
Характерные признаки начала проблем с системой:
1)Полностью отваливается сеть.


Сообщение отредактировал sasamy - Aug 31 2013, 16:40
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 31 2013, 16:40
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



послал емайл
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 09:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016