ЗАО «ЗЭО»

Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: Shkiper от 26 Апреля, 2012, 15:20:57

Название: Проблема с U-Boot
Отправлено: Shkiper от 26 Апреля, 2012, 15:20:57
День добрый.
Есть Теон про 2 рев 3. На нем залито ядро. КФС грузится с IDE. Все загружается и стартует. Появилась необходимость перезалить ядро, но я не могу попасть в U-boot. При старте должно быть приглашение в U-boot, но его нет. Вместо это сразу начинается загрузка ядра.
Я поискал на форуме и не нашел решение.
1. Как мне попасть в U-boot в таком случае?
2. Где хранятся переменные U-boot и как их очистить не заходя в U-boot?
Название: Re: Проблема с U-Boot
Отправлено: asv от 26 Апреля, 2012, 17:15:54
У вас нет перемычки на X15 выводы 1-2?
Название: Re: Проблема с U-Boot
Отправлено: asv от 26 Апреля, 2012, 17:19:53
Адрес переменных в U-Boot 2010.09 задаётся в include/configs/tion.h
CONFIG_ENV_ADDR, размер CONFIG_ENV_SECT_SIZE,
резервная копия CONFIG_ENV_ADDR_REDUND
Название: Re: Проблема с U-Boot
Отправлено: Shkiper от 27 Апреля, 2012, 08:55:15
Х15 у нас используется как входы из АЦП. Выдернул шлейф и все заработало. Хотя на некоторых экземплярах и при воткнутом шлейфе с U-boot можно работать через КОМ-порт.
Большое спасибо.
Название: Re: Проблема с U-Boot
Отправлено: asv от 27 Апреля, 2012, 10:45:51
> на некоторых экземплярах и при воткнутом шлейфе с U-boot можно работать через КОМ-порт.

Видимо там U-Boot 1.3.3

С отключением консоли для U-Boot 2010.09 сделано так:

1. В U-Boot добавлен функционал gpio (cmd_gpio.c из mainstream)

2. В U-Boot отключается вывод на консоль используя флаг GD_FLG_DISABLE_CONSOLE
если выводы COL0 и COL1 замкнуты вместе.

3. В U-Boot используется hush и gpio для опроса COL0 и COL1 (опять)
для явного изменения
переменных передаваемых ядру в cmdline.

bootcmd=run if_service_mode; setenv bootargs ${bootargs} ${rootargs}
${videoargs}; bootm ${kern_fladdr}
if_service_mode=gpio c 24; if gpio i 25; then setenv bootargs
${bootargs_noconsole}; else setenv bootargs ${bootargs_console}; fi;
gpio i 24
bootargs_noconsole=
bootargs_console=console=ttyAM0,57600n8
videoargs=video=ep93xxfb:vout=1,vmode=16
rootargs=root=/dev/mtdblock2 rootfstype=jffs2 ro

gpio 24 -- COL0 в документации
gpio 25 -- COL1

Далее для отключения консоли в ядре и пользовательском окружении:

4. В ядре убрана early printk (в этом ярде ещё не было такого в конфигрурации).

5. В /etc/inintab заменена строка ttyAM0 на null с вызовом скрипта
/etc/console.sh в котором
по значению console= из /proc/cmdline запускается /bin/sh, или не запускается.