|
|
  |
U-Boot, ликбез |
|
|
|
Feb 1 2014, 18:15
|

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

|
В u-boot есть такая переменная как bootargs. в значении которой имеется МАС адрес -- smsc95xx.macaddr=B8:27:EB:7B:45:B3 Но если поискать этот МАС адрес в исходниках из которого компилится загрузчик, то его там нет... При том что, если переназначить переменную bootargs таким образом что бы она не содержала МАС адрес, то загрузка ядра происходит при совсем другом МАС адресе... Может кто подскажет где в исходниках прописывается этот МАС адрес (в include/configs/board.h -- нет)? Так же пробовал поискать остальные значения переменной bootargs, которые она имеет после загрузки загрузчика -- большинство не нашел...
|
|
|
|
|
Feb 3 2014, 12:24
|
Профессионал
    
Группа: Свой
Сообщений: 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, которые она имеет после загрузки загрузчика -- большинство не нашел...  Я пока искал где нашел, что есть множество мест в бут лоадере где вроде записывается, но для моей системы это был файл: 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
|
|
|
|
|
Jun 26 2014, 08:13
|
Группа: Новичок
Сообщений: 1
Регистрация: 26-06-14
Пользователь №: 82 074

|
Добрый день.В поиске нашел только эту тему про u-boot,поэтому спрошу тут. Не мог бы кто-нибудь подсказать,где именно в u-boot надо прописывать конфигурацию своего железа?Т.е. что и на каком адресе сидит.сконфигурировал рабочий загрузчик для платы Freescale P2020RDB в BSP-пакете от Freescale (который на основе u-boot).Но при конфигурировании скрыты адреса,все происходит автоматически под конкретную плату.Пробовал изменить адреса в С-файлах u-boot (для I2C),но в сборке они не изменились.Есть ли какое-либо пособие по сборке u-boot?
|
|
|
|
|
Jun 26 2014, 11:07
|
Знающий
   
Группа: Участник
Сообщений: 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полезно покопаться..
|
|
|
|
|
Sep 30 2014, 21:47
|
Профессионал
    
Группа: Свой
Сообщений: 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......), там будет условная компиляции. Посмотрите какое условие и получите ответ.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|