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

как запустить своё приложение по старту uClinux ...

в линуксе это делается через прописывагие нужного приложения в rc.local, в сборке uClinux для моей платы нашёл файл rc, в нём тоже прописывается ряд приложений и действий по старту, но запуска приложения не происходит :(

#!/bin/sh

hostname MK

/bin/expand /etc/ramfs.img /dev/ram1

mount -t proc proc /proc

mount -t ext2 /dev/ram1 /var

mkdir /var/tmp

mkdir /var/log

mkdir /var/run

mkdir /var/lock

mkdir /var/empty

/bin/mknod /dev/ttyS0 c 4 64

/bin/mknod /dev/ttyS1 c 4 65

/bin/mknod /dev/ttyS2 c 4 66

/bin/mknod /dev/ttyS3 c 4 67

ifconfig lo 127.0.0.1

#ifconfig eth0 192.168.0.220 broadcast 192.168.0.255 netmask 255.255.255.0

#httpd &

cat /etc/motd

/bin/uart

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

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


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

Первое, почему приложение находиться в коатлоге bin?

Второе, запуск идет от root или от пользователя?

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


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

>>Первое, почему приложение находиться в коатлоге bin?

потому что после сборки uClinux исполняемый файл был засунут туда

>>Второе, запуск идет от root или от пользователя?

по аналоги с обычным линуксом могу предположить что то что запускается из файла rc, запускается от рута. в тоже время после загрузки uClinux в дебаговой консоли пишу uart и программа стартует ...

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

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


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

Бредовые мысли конечно, но попробуйте переписатьв /home и запустить оттуда и второе что делает программа uart. Может просто косяк с настройками порта? Как определили что програма не запускаеться? По запущенным процессам? Можно в первых строках main вставить какой нибуть printf().

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


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

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

определил что не запускается, потому что по старту программа гасит два светодиода, а этого не происходит, в тоже время запуск программы из дебаговой консоли проходит удачно :)

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


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

Начните с примитивного приложения "hello world", если при старте на консоль печатает строку, значит что-то не так с вашим более усложненным приложением uart - может ли так быть, что какие-то аппаратные блоки еще "не готовы" в момент запуска init и выполнения /etc/rc ? А чуть позже, когда "пыль осела и все железо готово" запуск вручную работает.

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


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

в линуксе это делается через прописывагие нужного приложения в rc.local, в сборке uClinux для моей платы нашёл файл rc, в нём тоже прописывается ряд приложений и действий по старту, но запуска приложения не происходит :(

 

У вас ядро 2.6.21?

Если да, то там похоже есть глюк (или нюанс который я не понял):

 

Добавлять самой последней стокой в /etc/rc свою программу не надо, она действительно не запускается. добавьте где-нибудь в середине, ближе к концу.

 

у меня это выглядит примерно так:

........
........
........
#insmod /lib/modules/2.6.21-uc0/kernel/drivers/usb/gadget/g_file_storage.ko file=/dev/mmca1

LANG=ru_RU
httpd &
/bin/myprog </dev/mtrm1 >/dev/mtrm1 2>/dev/mtrm1 &

# if user defined rc exists then execute it
if [ -f /mnt/mmc/userrc ]; then
 /bin/sh /mnt/mmc/userrc
fi

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


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

интересное наблюдение

ядро 2.6.24.2, сделал по рекомендации, но это ничего не изменило :(

#!/bin/sh

hostname MTK

/bin/expand /etc/ramfs.img /dev/ram1

mount -t proc proc /proc

mount -t ext2 /dev/ram1 /var

mkdir /var/tmp

mkdir /var/log

mkdir /var/run

mkdir /var/lock

mkdir /var/empty

/bin/uart

 

/bin/mknod /dev/ttyS0 c 4 64

/bin/mknod /dev/ttyS1 c 4 65

/bin/mknod /dev/ttyS2 c 4 66

/bin/mknod /dev/ttyS3 c 4 67

 

ifconfig lo 127.0.0.1

#ifconfig eth0 192.168.0.220 broadcast 192.168.0.255 netmask 255.255.255.0

#httpd &

cat /etc/motd

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

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


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

переставил осьссусе32 на убунту64 , вроди бы ничего не менял, но после перекомпиляции и запуска получил кернелпаник, похожий на тт что в ветке рядом, посмотрел в установки uClinux и понял что там не взведён init, поставил его , но получил следующее

RAMDISK: romfs filesystem found at block 0                                                                      
RAMDISK: Loading 213KiB [1 disk] into ram disk... done.                                                         
VFS: Mounted root (romfs filesystem) readonly.                                                                  
init: exec rc failed                                                                                            
init: Booting to single user mode                                                                               
init: exec of single user shell failed                                                                          
init: Missing PROCESS field in inittabinit: Missing PROCESS field in inittabinit: Missing PROCESS field in initt
init: -/bin/sh respawning too fast                                                                              
init: -/bin/sh exec failed                                                                                      
init: -/bin/sh respawning too fast                                                                              
init: -/bin/sh respawning too fast                                                                              
init: -/bin/sh exec failed                                                                                      
init: -/bin/sh respawning too fast                                                                              
init: -/bin/sh respawning too fast                                                                              
init: -/bin/sh einit: -/bin/sh respawning too fast

при rc

#!/bin/sh
hostname MTK
/bin/expand /etc/ramfs.img /dev/ram1
mount -t proc proc /proc
mount -t ext2 /dev/ram1 /var
mkdir /var/tmp
mkdir /var/log
mkdir /var/run
mkdir /var/lock
mkdir /var/empty
/bin/mknod /dev/ttyS0 c 4 64
/bin/mknod /dev/ttyS1 c 4 65
/bin/mknod /dev/ttyS2 c 4 66
/bin/mknod /dev/ttyS3 c 4 67
ifconfig lo 127.0.0.1
#ifconfig eth0 192.168.0.220 broadcast 192.168.0.255 netmask 255.255.255.0 G2420HDBL
#httpd &
cat /etc/motd
uart
# that's it... success
exit 0

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


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

В rc.local напишите не /bin/uart

 

а точное имя файла с расширением, например /bin/uart. (точка в конце)

 

Файл должен иметь атрибут исполняемой программы.

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


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

методом научного тыка(делал make menuconfig и подключал опции которые могли бы повлиять на пуск) удалось запустить, основной проблемой как понимаю было отсутствие в моей сборке Core Application-init

вапще было бы неплохо найти книжку где бы были описаны ВСЕ позиции настройки uClinux через make menuconfig,не обладаете такой информацией?

 

заработал старый конфиг который был изначально, тоесть стартовую строку программы правильно написал

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

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


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

так как требовалось видеть дебаговую консоль, почти всё время пользовал плату с воткнутым дебаговым кабелем и вот отключив его полусил, что не стартует uClinux, гугленье пока что не принесло плодов

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

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


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

с воткнутым дебаговым кабелем

 

Значит сигнал сброса и выбора бутлоадера на плате формируются неправильно,

а через консольный RS232 они приходят из компьютера по линиям DTR и RTS.

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


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

у меня грузится uboot, выводится пингвин(на этом всё стопорится), значит всётаки не в этом дело?

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


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

по схематике у нас на разъёме используются RXD TXD GND DSR CTS, соединил CTS и GND и всё заработало, электронщик сказал что надо на бут резюк поставить,чтобы он в воздухе не мотался :)

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...