Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512
repairman (Guest)
Добавлено 13.01.2009 11:18 Редактировалось 13.01.2009 11:18 Сообщение: 11
repairman (Guest)

Патч в привычном (унифицированном -u) формате
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 13.01.2009 12:04 Редактировалось 13.01.2009 12:04 Сообщение: 12
repairman (Guest)

Bootstrap v1.6, собран с:

#define IMG_ADDRESS 0x8400
#define IMG_SIZE 0x32000
#define JUMP_ADDR 0x23F00000

Решает вопрос с выравниванием по границе блока dataflash. (не забудьте, что uboot для этого должен лежать ПО ДРУГОМУ адресу (0x8400) в dataflash...)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 13.01.2009 г. в 14:30:18
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 13.01.2009 13:22 Редактировалось 13.01.2009 13:22 Сообщение: 13
repairman (Guest)

Для желающих собрать Bootstrap самостоятельно:

Исходники Bootstrap v1.11

Патч к нему, применительно к SK:
Код

diff -ru Bootstrap-v1.11/board/at91sam9260ek/at91sam9260ek.c Bootstrap-v1.11_SK/board/at91sam9260ek/at91sam9260ek.c
--- Bootstrap-v1.11/board/at91sam9260ek/at91sam9260ek.c 2008-09-26 19:20:02.000000000 +0400
+++ Bootstrap-v1.11_SK/board/at91sam9260ek/at91sam9260ek.c 2009-01-13 22:02:19.000000000 +0300
@@ -120,7 +120,7 @@
AT91C_SDRAMC_NR_13 |
AT91C_SDRAMC_CAS_2 |
AT91C_SDRAMC_NB_4_BANKS |
- AT91C_SDRAMC_DBW_32_BITS |
+ AT91C_SDRAMC_DBW_16_BITS |
AT91C_SDRAMC_TWR_2 |
AT91C_SDRAMC_TRC_7 |
AT91C_SDRAMC_TRP_2 |
@@ -166,8 +166,8 @@
/* Configure the SDRAMC PIO controller to output PCK0 */
/* pio_setup(sdramc_pio); */

- writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_ASR(0));
- writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_PDR(0));
+ writel(0x00000000, AT91C_BASE_PIOC + PIO_ASR(0));
+ writel(0x00000000, AT91C_BASE_PIOC + PIO_PDR(0));

}
#endif /* CFG_SDRAM */
diff -ru Bootstrap-v1.11/board/at91sam9260ek/dataflash/at91sam9260ek.h Bootstrap-v1.11_SK/board/at91sam9260ek/dataflash/at91sam9260ek.h
--- Bootstrap-v1.11/board/at91sam9260ek/dataflash/at91sam9260ek.h 2008-12-04 14:18:35.000000000 +0300
+++ Bootstrap-v1.11_SK/board/at91sam9260ek/dataflash/at91sam9260ek.h 2009-01-13 22:03:57.000000000 +0300
@@ -40,11 +40,11 @@
/* and MCK is switched on the main oscillator. */
/* PLL initialization is done later in the hw_init() function */
/* ******************************************************************* */
-#define MASTER_CLOCK (198656000/2)
+#define MASTER_CLOCK (200000000/2)
#define PLL_LOCK_TIMEOUT 1000000

-#define PLLA_SETTINGS 0x2060BF09
-#define PLLB_SETTINGS 0x10483F0E
+#define PLLA_SETTINGS 0x2031BF03
+#define PLLB_SETTINGS 0x10073F01

/* Switch MCK on PLLA output PCK = PLLA = 2 * MCK */
#define MCKR_SETTINGS (AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2)
@@ -71,7 +71,7 @@
/* BootStrap Settings */
/* */
/* ******************************************************************* */
-#define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS0 */
+#define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */

#define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */
#define IMG_SIZE 0x33900 /* Image Size in DataFlash */
@@ -82,7 +82,7 @@
/* ******************************************************************* */
/* Application Settings */
/* ******************************************************************* */
-#undef CFG_DEBUG
+#define CFG_DEBUG
#define CFG_DATAFLASH
#define CFG_SDRAM
#define CFG_HW_INIT
diff -ru Bootstrap-v1.11/driver/sdramc.c Bootstrap-v1.11_SK/driver/sdramc.c
--- Bootstrap-v1.11/driver/sdramc.c 2008-09-26 19:20:02.000000000 +0400
+++ Bootstrap-v1.11_SK/driver/sdramc.c 2009-01-13 22:04:57.000000000 +0300
@@ -61,7 +61,8 @@

/* CFG Control Register */
write_sdramc(SDRAMC_CR, sdramc_cr);
-
+ write_sdramc(SDRAMC_HSR, 1);
+
/* Set MDR Register */
write_sdramc(SDRAMC_MDR, (low_power & 0x01));



Проверено, работает с UBoot 1.2.0

Кстати, кто-нибудь может объяснить ЭТО:
Код

write_sdramc(SDRAMC_HSR, 1);

Официально, согласно datasheet, никаких HSR в контроллере SDRAM НЕТ... Без него не работает, а разумного объяснения я не нашел...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 13.01.2009 г. в 22:19:07
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 13.01.2009 17:53 Редактировалось 13.01.2009 17:53 Сообщение: 14
starterkit (Guest)

Код
write_sdramc(SDRAMC_HSR, 1);
Это очень важная установка, судя по коментарию, добавляет такт в каких то из транзакций со SDRAM, без нее на ~50% процессоров Linux не станет работать с включеными кешами.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 17.01.2009 10:21 Редактировалось 17.01.2009 10:21 Сообщение: 15
sasamy (Guest)

Цитата
#define JUMP_ADDR 0x23F00000

Решает вопрос с выравниванием по границе блока dataflash.


2repairman - у тебя на плате какой объем ram ? Такое ощущение что 64М :) Потому что на стандартном стартерките предел 0х22000000... Но вопрос у меня не в этом - когда ты копируешь образ ядра

cp uImage /dev/mtd3
у тебя потом все нормально загружается ? У меня u-boot 1.3.4 пишет ошибку crc, хотя заголовок образа определяется правильно - похоже какой-то глюк u-boot... Если потом загрузить по ymodem тот же самый образ ядра - все ок...
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 17.01.2009 20:16 Редактировалось 17.01.2009 20:16 Сообщение: 16
sasamy (Guest)

Еще вспомнил - если просто записать bootstrap на dataflash то ничего не заработает. Так вот там надо по смещению 0х14 (20 dec) от начала файла записать размер этого бинарника в байтах (4 байта). Например у меня сразу после компиляции там F8 0D 20 00 (размер файла 3576 байт = 0x0DF8 в представлении LE это будет F8 0D 00 00, тоесть в моем случае 20 я заменил на 00). Не помню говорили об этом на форуме или нет - я раньше полььзовался в самбе готовым скриптом и не знал что он делает, сейчас пришлось узнать - скрипт сначала правит файл прошивки, вписывая туда размер этого файла а потом копирует его в датафлеш.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 18.01.2009 г. в 15:11:50
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 18.01.2009 00:29 Редактировалось 18.01.2009 00:29 Сообщение: 17
repairman (Guest)

Цитата
2repairman - у тебя на плате какой объем ram ? Такое ощущение что 64М :) Потому что на стандартном стартерките предел 0х22000000... Но вопрос у меня не в этом - когда ты копируешь образ ядра


Да, #define JUMP_ADDR 0x23F00000 - ошибка, но НЕ приводящая ни к каким последствиям... "заворачивание" адресного пространства заставляет писать в физические 0x21F00000... а там с ОЗУ все в порядке...

Для очистки совести хорошо исправить... однако НИЧТО не изменится в работе лоадера....

Цитата
cp uImage /dev/mtd3
у тебя потом все нормально загружается ? У меня u-boot 1.3.4 пишет ошибку crc, хотя заголовок образа определяется правильно - похоже какой-то глюк u-boot... Если потом загрузить по ymodem тот же самый образ ядра - все ок...


Я провел десяток опытов, около половины закончились обломом... причины не понял (проскакивала где-то фраза про выравнивание длины образа под блоки MTD... не вникал...), теоретическая возможность использования доказана, с реализацией буду заниматься, когда дойдет до нее дело...

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 18.01.2009 г. в 00:33:23
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 18.01.2009 00:44 Редактировалось 18.01.2009 00:44 Сообщение: 18
sasamy (Guest)

Что я заметил - если загрузить имидж ядра по ymodem (сначала я смог заставить работать только его, сейчас работает и tftp на u-b 1.3.4) и потом скопировать на dataflash с указанием точного размера имиджа то все потом заработает ok, но если не указать точный размер то получаю ошибку crc...
Спуститься к концу Подняться к началу
suvorus (Guest)
Добавлено 13.04.2009 12:34 Редактировалось 13.04.2009 12:34 Сообщение: 19
suvorus (Guest)

провёл 10 опытов. выполнял:
flashcp -v kernel /dev/mtd0
образ ядра выровнял:
dd if=zImage of=kernel bs=128k conv=sync
все десять раз полёт нормальный
заливал полученный файл и с помощью sam-ba - тоже без вопросов грузится.
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512