Jump to content

    
Sign in to follow this  
chechestor

ARM9: bootstarp + NAND HalloWorld

Recommended Posts

Добрый день.

Использую платку с процом 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

 

Спасибо за ответы...

Share this post


Link to post
Share on other sites
Я хочу разместить свой код (назовем его условно helloworld) вместо uboot, чтобы при старте платки грузился bootstrap, потом он выцеплял мою прожку и помещал ее в оперативку...

 

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

 

Подскажите, в какую сторону копать надо? Можт, надо компилить прогу под ddram, но указать где-то в настройках проекта, что прога лежит не с нулевого адреса?

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

 

Внимательно посмотрите, что и зачем делает U-boot. Вы хотите работать без ядра ОС, тогда ВСЯ инициализация периферии и т.д. на Вашей совести.

 

Поиском по форуму пройдитесь, похожие вопросы уже поднимались и методы решения обсуждались.

Share this post


Link to post
Share on other sites
Chestor, компилировать программу надо с того адреса куда её загрузчик копирует. В твоём случае с 0x73f00000 (у тебя точно там DDRAM?). Прошивать образ в NAND и говорить загрузчику откуда и куда его копировать. Плюс к этому, надо в low_level_init твоей программы таблицу векторов прерываний скопировать на своё место.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this