Ник:
Пароль:

Контакты

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-AT91SAM9260-SIMXXX
IAR проект - мигалка
Franky
Добавлено 20.10.2010 11:00
5
Сообщение: 1
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Необходимо чтобы в проекте была доступна вся SD-RAM начиная с адреса 0x20000000. Проект грузится изпод U-boot в адрес 0x20000000 и ему передаётся управление.

Единственнаое место где упоминается SD-RAM в проекте:

//------------------------------------------------------------------------------
/// Initialize and configure the SDRAM
//------------------------------------------------------------------------------
void BOARD_ConfigureSdram(unsigned char busWidth)
{
volatile unsigned int i;
static const Pin pinsSdram = PINS_SDRAM;
volatile unsigned int *pSdram = (unsigned int *) AT91C_EBI_SDRAM;
unsigned short sdrc_dbw = AT91C_SDRAMC_DBW_16_BITS;;
unsigned int tmp = 0;

busWidth = 16;

// Enable corresponding PIOs
PIO_Configure(&pinsSdram, 1);

// Enable EBI chip select for the SDRAM, VDDIOMSEL set: memories are 3.3V powered
tmp = READ(AT91C_BASE_MATRIX, MATRIX_EBI) | AT91C_MATRIX_CS1A_SDRAMC;
WRITE(AT91C_BASE_MATRIX, MATRIX_EBI, tmp);

// CFG Control Register
WRITE(AT91C_BASE_SDRAMC, SDRAMC_CR, AT91C_SDRAMC_NC_9
| AT91C_SDRAMC_NR_13
| AT91C_SDRAMC_CAS_2
| AT91C_SDRAMC_NB_4_BANKS
| sdrc_dbw
| AT91C_SDRAMC_TWR_2
| AT91C_SDRAMC_TRC_7
| AT91C_SDRAMC_TRP_2
| AT91C_SDRAMC_TRCD_2
| AT91C_SDRAMC_TRAS_5
| AT91C_SDRAMC_TXSR_8);

for (i = 0; i < 1000; i++);

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_NOP_CMD); // Perform NOP
pSdram[0] = 0x00000000;

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_PRCGALL_CMD); // Set PRCHG AL
pSdram[0] = 0x00000000; // Perform PRCHG

for (i = 0; i < 10000; i++);

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 1st CBR
pSdram[1] = 0x00000001; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 2 CBR
pSdram[2] = 0x00000002; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 3 CBR
pSdram[3] = 0x00000003; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 4 CBR
pSdram[4] = 0x00000004; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 5 CBR
pSdram[5] = 0x00000005; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 6 CBR
pSdram[6] = 0x00000006; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 7 CBR
pSdram[7] = 0x00000007; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_RFSH_CMD); // Set 8 CBR
pSdram[8] = 0x00000008; // Perform CBR

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_LMR_CMD); // Set LMR operation
pSdram[9] = 0xcafedede; // Perform LMR burst=1, lat=2

WRITE(AT91C_BASE_SDRAMC, SDRAMC_TR, (BOARD_MCK * 7) / 1000000); // Set Refresh Timer

WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_NORMAL_CMD); // Set Normal mode
pSdram[0] = 0x00000000; // Perform Normal mode
}


Эта функция определена в файле board memory.c и больше нигде не упоминается...

Я чайник полный, пока что. Но когда гружу проект через U-boot в SD-Ram, то мне пишет
Zero length ???
## Starting application at 0x20000000 ... и висит...

а должон выдавать в консоль сообщение об удачном старте....

а проект-то по сути простой (мигалка), но запустить что-то никак не получается...
Спуститься к концу Подняться к началу
Персональная информация
Valentinus
Добавлено 20.10.2010 12:57 Сообщение: 2
Valentinus
4

Пункты: 2138
Регистрация: 23.01.2010
Пол: Мужчина
полагаю проблема в неправильной компиляции приложения
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 20.10.2010 13:58 Редактировалось 20.10.2010 18:41 Сообщение: 3
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Некторорые утверждают, что возможно проблема из-за того, что в getting-started-project(который я запускаю) присутствуют модули инициализации SD-RAM и пр. перифирии, которые уже запущены с помощью U-boot... (мой U-boot из поставки с платой)
Действительно, впроекте есть папка board, где есть сишные файлы инициализации памяти и ядра, и есть папка peripherals, где сишные файлы описания перифирии...
______________________________

В то же время другие разработчики утверждают что такой простой проект запускается через U-boot без проблем и доработок....

Непонятно кому верить.

______________________________

при компиляции в IAR 5.50 выходит 10 варнингов
8 такимх:

Remark[Pe068]: integer conversion resulted in a change of sign (путь к файлу ***.с)

и 2 таких:

Warning[Pe068]: integer conversion resulted in a change of sign
(путь к файлу ***.c)

может в этом проблема?

Я брал готовый бинарник, утверждалось что он рабочий, - тот же результат.
Я гружу проект в DataFlash по адресу 0х38000 через SAM-BA
указываю в командной строке U-boot адрес где лежит приложение, его размер, а та же адрес куда положить и откуда начать выполнение.
И тоже самое всё:

Zero length ???
## Starting application at 0x20000000 ... и висит...
Спуститься к концу Подняться к началу
Персональная информация
Valentinus
Добавлено 22.10.2010 10:00 Сообщение: 4
Valentinus
4

Пункты: 2138
Регистрация: 23.01.2010
Пол: Мужчина
у меня SAM9XE, поэтому прилагаю пример для него. это стандартный getteng-started, я там работу с светодиодами не правил, главное что он в консоль выдает сообщение о своем успешном запуске, т.е. можно убедиться что он правильно скомпилирован, и отсюда можно танцевать дальше.

грузить файл .bin через u-boot. стопоришь загрузку
tftp 0x20000000 at91sam9xe128_sdram.bin
go 0x20000000

если выдает сообщение типа:
-- Getting Started Project #############
такая-то плата
-- Compiled: тогда-то во столько-то

то значит все ок, копай дальше.
Attachment file: uploads/forum/forum-vs1U94UCDV-887.zip
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 22.10.2010 18:17 Сообщение: 5
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Да. Я тоже решил что загрузка в консоли будет залогом успеха!

Valentinus, спасибо вам огромное!
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 23.10.2010 14:08 Редактировалось 23.10.2010 14:36 Сообщение: 6
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Цитата
у меня SAM9XE, поэтому прилагаю пример для него. это стандартный getteng-started, я там работу с светодиодами не правил, главное что он в консоль выдает сообщение о своем успешном запуске, т.е. можно убедиться что он правильно скомпилирован, и отсюда можно танцевать дальше.

грузить файл .bin через u-boot. стопоришь загрузку
tftp 0x20000000 at91sam9xe128_sdram.bin
go 0x20000000

если выдает сообщение типа:
-- Getting Started Project #############
такая-то плата
-- Compiled: тогда-то во столько-то

то значит все ок, копай дальше.
Attachment file: uploads/forum/forum-vs1U94UCDV-887.zip


Смотрю ваш проект. У вас файл board.h сконфигурирован под 18Mhz кварц...

#define BOARD_MAINOSC 18432000

разве у вас плата не с 12Mhz кварцем?

Неудивительно что у меня опять в консоли:

Zero length ???
## Starting application at 0x20000000 ...

Я загружаю бинарник проекта командами U-boot
U-Boot> setenv bootcmd ‘cp.b 0xC0038000 0x20000000 <размер проги>; go 0x20000000’; saveenv;

где 0xC0038000 - адрес программы в DataFlash
Спуститься к концу Подняться к началу
Персональная информация
Valentinus
Добавлено 23.10.2010 14:49 Сообщение: 7
Valentinus
4

Пункты: 2138
Регистрация: 23.01.2010
Пол: Мужчина
я частоту кварца вообще не смотрел и не менял наверное. я же говорю - это стандартная демка атмела, которая у меня заработала "сходу".

мой многолетний опыт программирования научил меня тому что не стоит пытаться сразу реализовать все задачу целиком - лучше разбить ее на отдельные этапы и передвигаться к следующему только после успешного выполнения предыдущего.


вы попробуйте сначала загрузить программу по tftp и успешно выполнить, потом будете прошивать .
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX