Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:4
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:8
Форум » starterkit.ru » Embedded Linux
U-boot и загрузка образа ядра. прошу подсказать.
Franky
Добавлено 02.09.2014 17:26 Сообщение: 11
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Цитата
Цитата

Сейчас знаю, что как минимум PLL настроена не правильно, где это настраивается не могу найти.


по кварцам настройки как понимаю тут

https://github.com/robutest/uclinux/blob/master/arch/arm/mach-stm32/clock.c#L258


попробую натсроить под свою плату. Но возможно ли впринципе из-за PLL такое зависание пристарте ядра?
Starting kernel....

где бы почитать про начальную загрузку. Что там делается...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 02.09.2014 17:33 Сообщение: 12
sasamy
4.77

Пункты: 63532
Регистрация: 14.08.2009
Цитата

Но возможно ли впринципе из-за PLL такое зависание пристарте ядра?


выствьте там правильное значение и узнаете :) вообще мусор должен быть хотя бы в uart-e..
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 02.09.2014 18:24 Редактировалось 02.09.2014 18:44 Сообщение: 13
sasamy
4.77

Пункты: 63532
Регистрация: 14.08.2009
Судя по этому логу ядро все же XIP - запускается прямо на флеше, так что в вашем случае надо писать адрес не DRAM а адрес в флеше, если судить по логу что заголовок виден адрес ядра ваш правильный

Цитата

Booting kernel from Legacy Image at 08040000 ...


соответственно в mkimage при сборке ядра надо указывать

Load Address: 0x08040040
Entry Point: 0x08040041

т.е. прибавляете 0x40 = 64 байта заголовок от mkimage

только вопрос - почему у вас ядро в флеше зашито по адресу

0x08040000

вы сами так решили сделать или это из конфига ядра ? по умолчанию адрес ядра по вашей ссылке

Цитата

Image Name: Linux-2.6.33-arm1
Created: Tue Sep 2 18:11:36 2014
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 738336 Bytes = 721.03 kB = 0.70 MB
Load Address: 08020040
Entry Point: 08020041


соответственно шить его надо по адресу

0x08020000

в флеше. Смотрите что у вас в конфиге ядра прописано, по умолчанию там

CONFIG_XIP_PHYS_ADDR=0x08020040
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 03.09.2014 10:05 Редактировалось 03.09.2014 10:13 Сообщение: 14
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Исправил конфиг ядра под мой размер SD-RAM и flash:

Код

CONFIG_DRAM_BASE=0xD0000000
CONFIG_DRAM_SIZE=0x02000000
CONFIG_FLASH_MEM_BASE=0x08000000
CONFIG_FLASH_SIZE=0x00100000

CONFIG_XIP_KERNEL=y
CONFIG_XIP_PHYS_ADDR=0x08020040




Исправил значение кварца в clock.c:

case PLATFORM_STM32_STM32429_DISCO:
hse_hz = 24000000;


рузультат:

Код

CPU : STM32F4 (Cortex-M4)
Freqs: SYSCLK=16MHz,HCLK=16MHz,PCLK1=16MHz,PCLK2=16MHz
Board: STM32F429-DISCOVERY Rev 1.A
DRAM: 32 MB
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial
Net: STM32_MAC
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 08020000 ...
Image Name: Linux-2.6.33-arm1
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 738336 Bytes = 721 kB
Load Address: 08020040
Entry Point: 08020041
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...


тишина...

не знаю что уже и думать...
в ядре ещё правил вот что:
Код

MACHINE_START(STM32, "STMicro STM32")
/*
* Physical address of the serial port used for the early
* kernel debugging (CONFIG_DEBUG_LL=y).
* This address is actually never used in the MMU-less kernel
* (since no mapping is needed to access this port),
* but let's keep these fields filled out for consistency.
*/
.phys_io = STM32_USART1_BASE,
.io_pg_offst = (IO_ADDRESS(STM32_USART1_BASE) >> 18) & 0xfffc,
.map_io = stm32_map_io,
.init_irq = stm32_init_irq,
.timer = &stm32_timer,
.init_machine = stm32_init,
MACHINE_END


изначально там было STM32_USART3_BASE. Я поменял на STM32_USART1_BASE f а сдвиги и маску оставил прежнюю. Это правомерно?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 03.09.2014 12:17 Редактировалось 03.09.2014 12:32 Сообщение: 15
sasamy
4.77

Пункты: 63532
Регистрация: 14.08.2009
Цитата

сдвиги и маску оставил прежнюю. Это правомерно?


Цитата

This address is actually never used in the MMU-less kernel
(since no mapping is needed to access this port),
but let's keep these fields filled out for consistency.


так что это без разницы. SDRAM у вас точно правильно настроена, проверяли в убуте mtest ? в убуте стек и куча в SRAM - там без разницы, а вот как ucLinux потом их инициализирует я не знаю.

Цитата

в файле борды и конфиге ядра выставлен USART1 (как в U-boot). DEBUG_LL и EARLY_PRINTK


надо еще в параметрах передаваемых ядру дописать

earlyprintk

чтобы появились отладочные сообщения на раннем этапе
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 03.09.2014 13:04 Редактировалось 03.09.2014 13:05 Сообщение: 16
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
спасибо вам за советы. сделал mtest.
выдаёт бесконечный список сообщений:

Pattern 00000000 Writing... Reading...
Mem error @ 0xD0000000: found 00100000, expected 00000000

Mem error @ 0xD0000004: found 00100001, expected 00000001

и так далее вниз
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 03.09.2014 13:13 Сообщение: 17
sasamy
4.77

Пункты: 63532
Регистрация: 14.08.2009
Цитата

выдаёт бесконечный список сообщений:


разбирайтесь с настройками SDRAM - она у вас не работает, без этого ucLinux работать не будет.
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 03.09.2014 16:00 Сообщение: 18
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Спасибо большое, буду расбиратсья с SDRAM. Но уж очень вывод mtest странный. Наблюдается постоянное смещение 00100000 в данных.
Может SDRAM чип бракованный?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux