Page 3 of 6

Re: BOARD - вывод отладочной информации

Posted: Tue Jul 05, 2011 6:49 pm
by Mario
Код CleverMouse копирует, в область куда помещается передаваемый параметр, дефолтный путь, что есть правильное решение. Я оставляю за бортом то что есть еще более хитрое решение, но поскольку сам им не пользовался, то не мне судить.
Spoiler:

Code: Select all

START:				; start of execution
	mov	edi, filename
	cmp	byte [edi], 0
	jnz	param
	mov	esi, default_filename
@@:
	lodsb
	stosb
	test	al, al
	jnz	@b
param:
Код Sorcerer делает особую уличную магию (без обид).

Code: Select all

mov ax, filename
mov [I_PARAM], al
Первый указатель 16 битный, тогда как у нас 32 битная адресация, дальше еще не понятней сохраняем 8 битную часть и все это идет как указатель. В общем мудрено и непонятно чего ты пытался получить.

Re: BOARD - вывод отладочной информации

Posted: Tue Jul 05, 2011 7:03 pm
by SoUrcerer
:D ужас какой! Сам испугался, когда увидел свой код сейчас.

Re: BOARD - вывод отладочной информации

Posted: Tue Jul 05, 2011 7:05 pm
by Mario
Ночью надо спать. :mrgreen:

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 2:23 pm
by yogev_ezra
eBox-3350MX: Скачал http://builds.kolibrios.org/Vortex86MX- ... 997-img.7z (который уже с новым BOARD в автозагрузке). После загрузки выводится пустой BOARD (без лога вообще) и использование процессора 100%. Если прибить этот BOARD через "Task Manager", то всё становится нормально, загрузка опускается до 0, и если запустить BOARD ещё раз, то лог выводится исправно.

В AUTORUN.DAT вроде всё написано правильно, ничего не менял, и до изменения всё работало:

Code: Select all

/RD/1/DEVELOP/BOARD   <NO>        1    # Load DEBUG board

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 2:28 pm
by Mario
Проблема в том что при загрузке передается неправильный параметр (не являющийся путем к файлу) и код этого не учитывает. Нужна проверка на обратный слеш "/" параметра переданного при загрузке.

З.Ы. Если Вероника сама не поправит вечером сделаю.

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 2:33 pm
by yogev_ezra
Mario wrote:Проблема в том что при загрузке передается неправильный параметр (не являющийся путем к файлу) и код этого не учитывает. Нужна проверка на обратный слеш "/" параметра переданного при загрузке.
Ну ты же сам говорил, что <NO> нужен как "Place Holder", если я не хочу передавать никакой параметр, верно? Потому что второй параметр - это время задержки, а он обязательно должен быть вторым.

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 2:51 pm
by Mario
Нет, тут дело не в этом, а как раз в том что передается параметр "<NO>". Другие приложения проверяют переданную строку на валидность, хотя-бы проверкой обратного слеша "/". BOARD же тупо копирует если есть хоть какие-то данные отличные от 0. Поскольку файл с путем "<NO>" создать невозможно, то происходит хрень.

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 3:27 pm
by yogev_ezra
Mario wrote:Нет, тут дело не в этом, а как раз в том что передается параметр "<NO>". Другие приложения проверяют переданную строку на валидность, хотя-бы проверкой обратного слеша "/". BOARD же тупо копирует если есть хоть какие-то данные отличные от 0. Поскольку файл с путем "<NO>" создать невозможно, то происходит хрень.
Тогда я неверно понял другое твоё сообщение на эту тему:
Mario wrote:Нет, каждый передаваемый параметр определяется исключительно кодом содержащимся в самом запускаемом приложении. Параметр <NO> определен как компромиссное решение - ни одна программа такой параметр теоретически не обрабатывает в качестве допустимого входного параметра.
А где идёт обработка файла AUTORUN.DAT? В ядре? А там нельзя поставить проверку, что если в AUTORUN.DAT для приложения указан параметр <NO>, то приложению не передаётся никакой параметр?

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 4:11 pm
by CleverMouse
Имя файла вполне может и не начинаться со слеша. Я поправила код, чтобы board не входил в бесконечный цикл при ошибке создания файла. Я считаю, что вопрос с передачей параметров имеет смысл решать на уровне launcher, обрабатывающего autorun.dat, причём заодно сделать задание параметров с пробелами, обрабатывая - дополнительно к текущему варианту - кавычки как начало/конец параметра. Тогда пустой параметр можно задать, написав "". Если не будет возражений, я несколько позже добавлю соответствующий код в launcher.

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 4:12 pm
by Mario
yogev_ezra
А где идёт обработка файла AUTORUN.DAT? В ядре?
Обработкой AUTORUN.DAT занимается приложение LAUNCHER.
А там нельзя поставить проверку, что если в AUTORUN.DAT для приложения указан параметр <NO>, то приложению не передаётся никакой параметр?
Вероятно можно, но никто не задавался такой целью раньше.

UPD. Немного опоздал с ответом.

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 4:15 pm
by Mario
CleverMouse
ИМХОется мне что возражений не будет. :)
Полезная вещь.

З.Ы. Когда ты только все успеваешь. У меня работа забирает все силы и мозг. :(

Re: BOARD - вывод отладочной информации

Posted: Thu Jul 07, 2011 5:33 pm
by CleverMouse
Я закоммитила обещанное изменение в launcher.

Re: BOARD - вывод отладочной информации

Posted: Sun Jul 17, 2011 1:55 pm
by yogev_ezra
Если board добавлен в автозагрузку с параметром записи лога на жёсткий диск (/hd0/1), то после загрузки Колибри проходит несколько секунд, прежде чем board начинает выводить сообщения на экран и в файл. Я поставил в автозагрузку только board и ac97snd (ну чтоб было хоть что-то выводить в лог), и задержка на несколько секунд всё равно происходила. Если в параметре ничего не указать (то есть, использовать рамдиск по умолчанию), то запись в лог начинается мгновенно. Вероятно, что-то в ядре блокирует запись на жёсткий диск при загрузке Колибри.

Re: BOARD - вывод отладочной информации

Posted: Tue Aug 23, 2011 3:17 pm
by CleverMouse
r2101+r2103 фиксят проблему?

Re: BOARD - вывод отладочной информации

Posted: Tue Aug 23, 2011 4:18 pm
by Mario
В моем случае задержка исчезла (я проделал так как написал yogev_ezra), но я в основном наблюдал задержку при запуске USB ядра.