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

 
 
 
Reply to this topicStart new topic
> U-Boot, ликбез
bureau
сообщение Feb 1 2014, 18:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 625
Регистрация: 22-02-07
Пользователь №: 25 593



В u-boot есть такая переменная как bootargs. в значении которой имеется МАС адрес -- smsc95xx.macaddr=B8:27:EB:7B:45:B3
Но если поискать этот МАС адрес в исходниках из которого компилится загрузчик, то его там нет... При том что, если переназначить переменную bootargs таким образом что бы она не содержала МАС адрес, то загрузка ядра происходит при совсем другом МАС адресе...

Может кто подскажет где в исходниках прописывается этот МАС адрес (в include/configs/board.h -- нет)?

Так же пробовал поискать остальные значения переменной bootargs, которые она имеет после загрузки загрузчика -- большинство не нашел... sad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2014, 18:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



bootargs передается ядру при старте, так что её содержимое к u-boot'у отношения не имеет.
Go to the top of the page
 
+Quote Post
bureau
сообщение Feb 1 2014, 19:03
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 625
Регистрация: 22-02-07
Пользователь №: 25 593



А с какого места она передается? От загрузчика 1-й ступени?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2014, 19:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Так Вы о том, откуда берется содержимое этой переменной? Есть варианты:
- из CONFIG_BOOTARGS в u-boot'овском хидере платы
- прописывается пользователем вручную
- создается вместе с прочим окружением u-boot'а отдельной утилитой (удобно при производстве)
Go to the top of the page
 
+Quote Post
bureau
сообщение Feb 1 2014, 19:53
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 625
Регистрация: 22-02-07
Пользователь №: 25 593



Цитата(aaarrr @ Feb 1 2014, 21:17) *
- создается вместе с прочим окружением u-boot'а отдельной утилитой (удобно при производстве)

А можно что-нибудь поподробней про "отдельной утилитой (удобно при производстве)" ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2014, 20:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(bureau @ Feb 1 2014, 23:53) *
А можно что-нибудь поподробней про "отдельной утилитой (удобно при производстве)" ?

Например. Только надо проверить на совместимость с той версией u-boot'а, что собираетесь использовать.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Feb 3 2014, 12:24
Сообщение #7


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

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



Цитата(bureau @ Feb 1 2014, 21:15) *
В u-boot есть такая переменная как bootargs. в значении которой имеется МАС адрес -- smsc95xx.macaddr=B8:27:EB:7B:45:B3
Но если поискать этот МАС адрес в исходниках из которого компилится загрузчик, то его там нет... При том что, если переназначить переменную bootargs таким образом что бы она не содержала МАС адрес, то загрузка ядра происходит при совсем другом МАС адресе...

Может кто подскажет где в исходниках прописывается этот МАС адрес (в include/configs/board.h -- нет)?

Так же пробовал поискать остальные значения переменной bootargs, которые она имеет после загрузки загрузчика -- большинство не нашел... sad.gif


Я пока искал где нашел, что есть множество мест в бут лоадере где вроде записывается, но для моей системы это был файл: drivers/net/mxc_fec.c.
https://github.com/bandwidthcrunch/u-boot-g...s/net/mxc_fec.c

Вот эта функция записывает МАК адрес
Код
static int fec_set_hwaddr(struct eth_device *dev)
{
        uchar *mac = dev->enetaddr;
        struct fec_info_s *info = dev->priv;
        volatile fec_t *fecp = (fec_t *)(info->iobase);

        writel(0, &fecp->iaur);
        writel(0, &fecp->ialr);
        writel(0, &fecp->gaur);
        writel(0, &fecp->galr);

        /*
         * Set physical address
         */
        writel((mac[0] << 24) + (mac[1] << 16) + (mac[2] << 8) + mac[3],
                        &fecp->palr);
        writel((mac[4] << 24) + (mac[5] << 16) + 0x8808, &fecp->paur);

        return 0;
}


Я полагаю, что при разных условиях используются разные механизмы.

У вас этот файл компилируется? Если да, то поищем здесь.
https://github.com/bandwidthcrunch/u-boot-g.../davinci_emac.c

Сообщение отредактировал Tarbal - Feb 3 2014, 12:28
Go to the top of the page
 
+Quote Post
bureau
сообщение Feb 3 2014, 22:01
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 625
Регистрация: 22-02-07
Пользователь №: 25 593



Цитата(Tarbal @ Feb 3 2014, 14:24) *
У вас этот файл компилируется?

Вопрос конечно интересный... Взял на рассмотрение... Спасибо за инфу!

А есть ли какой способ сразу выделить те файлы которые участвуют в компиляции?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 3 2014, 22:06
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(bureau @ Feb 4 2014, 02:01) *
А есть ли какой способ сразу выделить те файлы которые участвуют в компиляции?

Так следы остаются в виде объектных файлов.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Feb 4 2014, 12:33
Сообщение #10


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

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



Цитата(aaarrr @ Feb 4 2014, 01:06) *
Так следы остаются в виде объектных файлов.


Ищите файлы типа *.о после компиляции.
Go to the top of the page
 
+Quote Post
Alex_Zel
сообщение Jun 26 2014, 08:13
Сообщение #11





Группа: Новичок
Сообщений: 1
Регистрация: 26-06-14
Пользователь №: 82 074



Добрый день.В поиске нашел только эту тему про u-boot,поэтому спрошу тут.
Не мог бы кто-нибудь подсказать,где именно в u-boot надо прописывать конфигурацию своего железа?Т.е. что и на каком адресе сидит.сконфигурировал рабочий загрузчик для платы Freescale P2020RDB в BSP-пакете от Freescale (который на основе u-boot).Но при конфигурировании скрыты адреса,все происходит автоматически под конкретную плату.Пробовал изменить адреса в С-файлах u-boot (для I2C),но в сборке они не изменились.Есть ли какое-либо пособие по сборке u-boot?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jun 26 2014, 11:07
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Alex_Zel @ Jun 26 2014, 12:13) *
Есть ли какое-либо пособие по сборке u-boot?

в корне исходников вашего u-boot почитайте файл readme
заодно посмотрите каталог doc
ну и тут:
http://denx.de/en/Software/WebHome
полезно покопаться..
Go to the top of the page
 
+Quote Post
shamrel
сообщение Sep 30 2014, 03:06
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 132
Регистрация: 10-10-07
Из: Новосибирск
Пользователь №: 31 229



Доброго Здоровья! Не стал плодить тему, тем более, что название текущей как нельзя лучше подходит к сути вопроса.
Как в исходниках u-boot грамотно активировать вывод сообщений, типа: pr_debug, debug, pr_warning?
Пробовал в ./include/configd/custom_board.h добавлять соответствующие флаги, например:

#define DEBUG (1)
#define CONFIG_MTD_DEBUG (1)
#define CONFIG_MTD_DEBUG_VERBOSE (7)

эффекта не возымело.
Как включить отладку? Можно ли включить отладку только для определенного модуля? С виду, все для этого есть, а вот руки кривоваты.


--------------------
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 30 2014, 21:47
Сообщение #14


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

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



Цитата(shamrel @ Sep 30 2014, 07:06) *
Доброго Здоровья! Не стал плодить тему, тем более, что название текущей как нельзя лучше подходит к сути вопроса.
Как в исходниках u-boot грамотно активировать вывод сообщений, типа: pr_debug, debug, pr_warning?
Пробовал в ./include/configd/custom_board.h добавлять соответствующие флаги, например:

#define DEBUG (1)
#define CONFIG_MTD_DEBUG (1)
#define CONFIG_MTD_DEBUG_VERBOSE (7)

эффекта не возымело.
Как включить отладку? Можно ли включить отладку только для определенного модуля? С виду, все для этого есть, а вот руки кривоваты.


Найдите определение pr_debug, debug, pr_warning (это #define pr_debug......), там будет условная компиляции. Посмотрите какое условие и получите ответ.
Go to the top of the page
 
+Quote Post

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

 


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


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