Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » ARM
IAR: helloWorld из NAND
chechestor
Добавлено 08.07.2011 14:31
0
Сообщение: 1
chechestor
0

Пункты: 451
Регистрация: 07.04.2011
Добрый день.
Использую платку с процом AT91SAM9G45 + NAND + внешняя ОЗУ большая...
На IAR написал классную прожку, отладил ее в ddram через jtag... Теперь хочу залить это чудовище в NAND-флешку.
Сейчас на флешке хранится bootstrap + uboot + zlinux. Грузят по цепочке друг друга... Я хочу разместить свой код (назовем его условно helloworld) вместо uboot, чтобы при старте платки грузился bootstrap, потом он выцеплял мою прожку и помещал ее в оперативку...
Пробовал просто окомплилированную прожку (в режиме ddram) разместить по адресу, откуда bootstrap качает бинарник, но прога не пошла...
Пробовал предварительно откомпилить прогу под sram, но ругается, что прожка весит больше, чем в проце есть памяти sram...

Вообще, bootstrap берет данные с конкретного адреса флешки, кладет их в оперативу по определенному адресу, а потом джампится туда, как я понимаю...

Цитата
-- AT91bootstrap Project 3.0 --
-- SK-MAT91SAM9G45/M10
-- Compiled: Oct 30 2010 12:56:05 --
-I- Setting: MCK = 133MHz
-I- I cache enabled.
-I- Init DDRAM
-I- Init NAND Flash
-I- Nandflash ID is 0x9510DAEC
-I- Nandflash driver initialized
-I- Size of the whole device in bytes : 0x10000000
-I- Size in bytes of one single block of a device : 0x20000
-I- Number of blocks in the entire device : 0x800
-I- Size of the data area of a page in bytes : 0x800
-I- Number of pages in the entire device : 0x40
-I- Bus width : 8
-I- Copy "" (262144 bytes) from NAND 0x00020000 to 0x73f00000
-I- Jump to 0x73f00000



Подскажите, в какую сторону копать надо? Можт, надо компилить прогу под ddram, но указать где-то в настройках проекта, что прога лежит не с нулевого адреса?
Или надо компилить под sram, но что тогда делать с тем, что IAR отказывается собирать бинарник? можно ли просто так поменять в ICF-файле размер sram, и не вылезет ли это еще где боком?... о0

Спасибо за ответы...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.07.2011 17:15 Редактировалось 08.07.2011 18:49 Сообщение: 2
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Не знаю как в IAR, в gcc линкеру просто указываешь базовый адрес относительно которого он посчитает все метки и ложишь бинарник из загрузчика по этому адресу, например

#arm-none-eabi-ld -Ttext=0x71000000 -o hello.elf hello.o

ищите аналог в IAR - он там 100% должен быть, если у вас все метки относительно 0x0 адреса посчитаны то естественно работать не будет.

UPD я пропустил - так у вас говорите через jtag все работает ? тогда просто укажите в bootsrap правильный адрес по которому ваша программа должна лежать в ddr :
Цитата

Вообще, bootstrap берет данные с конкретного адреса флешки, кладет их в оперативу по определенному адресу, а потом джампится туда, как я понимаю

все правильно, адрес в RAM можно там указать любой - скорректируйте его.
Спуститься к концу Подняться к началу
Персональная информация
JedaY
Добавлено 10.07.2011 21:59 Сообщение: 3
JedaY
0

Пункты: 1031
Регистрация: 03.12.2009
Ключевой момент это вектора прерываний которые должны попасть в SRAM а после ремапа попадут в 0-й адрес.
Под ЖТАГ все работает т.к. стартовый скрипт ИАРа копирует векторы в нужное место. У меня рабочего проекта нет т.к. на этой плате линухом игрался.. Но точно работает пример с ucos операционкой. Там идея в том, что прога при старте сама прописует вектора прерываний в SRAM и делает ремап.
В ICF есть такая штука:
initialize by copy { section .vectors };
Вот этот скрипт в линковщие добавляет в код стартапа прошивки копирование векторов в нужное место...
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » ARM