реклама на сайте
подробности

 
 
> Старт c IAR+Sam7x
Dopler
сообщение Dec 24 2006, 23:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Здравствуйте.

Получил плату от Olimex с SAM7X256. Спаял wiggler. Установил IAR 4.41a и Keil. Так как примеры у атмела и Olimex для IAR начал разбираться с ним. Запустил пример олимекса, более менее разобрался, поудалял все, в главном цикле сделал вывод миандра на pb22. Вроде работало, виглер шил через H-JTAG, правда из RAM отладка не работала, работала только через FLASH. Никаких стартапов в пректе я не нашел. Базовый пример от Atmela я прошивать не стал, так как он инициализирует линии, которые на плате от олимекса используются для разных других целей.

Так вот, проблемы начались, когда я попытался создать совершенно пустой проект, откомпилировать и запустить в устройство (на С под железо раньше не писал). В связи с этим следующие вопросы:

1. Откуда запускается проект, с функции Main или откуда то еще?
2. Что за файлы .xcl (я понял, что это структура памяти для линковщика), как ими пользоваться, откуда брать и т.д.
3. Что за файлы mac для дебагера и можно ли без них (когда отключал, отладка не работала).
4. Если не сложно, то как по шагам сделать минимальный проект для отладки в RAM (как создать, какие файлы подключать, откуда брать, что прописать в настройках).

Вот листинг моей программы. Этот код вроде работает в проекте от Olimex, перенести его в свой пустой у меня не получилось.

Код
#include "at91sam7xc256.h"


//it's a simple delay
void Delay (unsigned long a) { while (--a!=0); }


int main()
{
   //Enable RESET
  AT91C_BASE_RSTC->RSTC_RCR = 0xA5000008;
  AT91C_BASE_RSTC->RSTC_RMR = 0xA5000001;
  Delay(1000);
  
  
  // Set Flash Waite sate - Flash Memory Controler
  // if MCK = 47923200 I have 50 Cycle for 1 usecond
  AT91C_BASE_MC->MC_FMR = ((AT91C_MC_FMCN)&(48 <<16)) | AT91C_MC_FWS_1FWS;

  // Watchdog Disable
  AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;

  // Set MCK at 47 923 200
  // 1 Enabling the Main Oscillator:
  // SCK = 1/32768 = 30.51 uSecond
  // Start up time = 8 * 6 / SCK = 56 * 30.51 = 1,46484375 ms
  AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 <<8) | AT91C_CKGR_MOSCEN ));

  // Wait the startup time
  while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));

  // 2 Checking the Main Oscillator Frequency (Optional)
  // 3 Setting PLL and divider:
  // - div by 5 Fin = 3,6864 =(18,432 / 5)
  // - Mul 25+1: Fout =    95,8464 =(3,6864 *26)
  // for 96 MHz the erroe is 0.16%
  // Field out NOT USED = 0
  // PLLCOUNT pll startup time estimate at : 0.844 ms
  // PLLCOUNT 28 = 0.000844 /(1/32768)
  AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x05) | (AT91C_CKGR_PLLCOUNT & (28<<8)) | (AT91C_CKGR_MUL & (25<<16)));

  // Wait the startup time
  while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK));
  while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

  // 4. Selection of Master Clock and Processor Clock
  // select the PLL clock divided by 2
  AT91C_BASE_PMC->PMC_MCKR =  AT91C_PMC_PRES_CLK_2;
  while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

  AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ;
  while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
  
  
  
  //enable the clock of the PIO
  AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
  //enable the clock of the PIO
  AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;


  // GPIO init
  AT91C_BASE_PIOA->PIO_ODR    = 0xffffffff;   // All as input
  AT91C_BASE_PIOB->PIO_ODR    = 0xffffffff;   // All as input
  AT91C_BASE_SYS->PIOA_PPUDR  = 0xffffffff;   // Disable Pull-up resistor
  AT91C_BASE_SYS->PIOB_PPUDR  = 0xffffffff;   // Disable Pull-up resistor

  AT91C_BASE_PIOB->PIO_OER    = 1 << 22;
  
  
  for (;;)
    {      
      unsigned int waiting_time;
      
      AT91C_BASE_PIOB->PIO_SODR    = 1 << 22;  
      for(waiting_time = 0; waiting_time < 2000; waiting_time++);
    
      AT91C_BASE_PIOB->PIO_CODR    = 1 << 22;  
      for(waiting_time = 0; waiting_time < 2000; waiting_time++);
    }
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Dec 25 2006, 15:55
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Dopler @ Dec 24 2006, 22:43) *
Здравствуйте.
4. Если не сложно, то как по шагам сделать минимальный проект для отладки в RAM (как создать, какие файлы подключать, откуда брать, что прописать в настройках).

1) Запускаем IAR, создаем новый workspace или используем текущий.

2) Project->Create new project, выбираем C -> main или C++ -> main по вкусу, жмем ОК, указываем имя проекта.

3) Идем Project -> Options -> General Options
3.1)вкладка Target
--- Ставим крыжик на Device, выбираем в списке тип процессора. Это заставит IAR правильно указывать компилятору/ассемблеру архитектуру (ARM7TDMI, ARM9E и т.д.), правильно выбрать библиотеку, указать симулятору подходящий файл описания sfr (.ddf).
--- Выбираем Processor Mode Arm Или Thumb

4) Project -> Options -> С/С++ Compiler
4.1)вкладка Language
--- В разделе Language галочка уже стоит где надо в зависимости от того, что мы выбрали в п.2. Можно переставиь ее на Automatic(extension based).
4.2)вкладка Optimization
--- Для начала оставляем Size Low или Size none, позволит легко отлаживаться. По мере возрастания опыта можно будет увеличить до максимума.
4.3)вкладка List
--- ставим галочку Output list file
--- Ставим галочку Assembler mnemonics

5) Project -> Options -> Assembler
5.1) Вкладка List
--- ставим галочку Output list file

6) Project -> Options -> Linker
6.1) Вкладка Output
--- Если делаем проект для RAM оставляем все как есть, если для Flash - ставим галочку Allow C-SPY-specific output file и на вкладке Extra output ставим галочки Generate Extra output file и выбираем Output Format -> simple-code
6.2) Вкладка List
--- ставим галочку Generate linker listing
6.3) Вкладка Config
Копируем из папки примеров компилятора в папку проекта подходящий .xcl
--- Link command file ставим галочку Override default, указываем $PROJ_DIR$\файл.xcl
7) Project -> Options -> Debugger
7.1) Вкладка Setup
--- Выбираем Driver (Simulator/J-Link/Macraigor и т.д.)
Копируем из папки примеров .mac в папку проекта
--- Ставим галочку Use Macro File, указываем $PROJ_DIR$\файл.mac
7.2) Если отлаживаемся в Flash: Вкладка Download
--- Если отлаживаемся в Flash, ставим галочки Verify download, Use flash loader(s)
--- Жмем Edit, в появившейся форме New..., в появившемся окне настроек ничего не трогая жмем OK., Жмем ОК в форме выбора загрузчиков.
8) Если используем Wiggler, Project -> Options -> Macraigor
--- Выбираем Wiggler в списке OCD interface device.

Остальное можно не трогать.

9) File->Save all.

Собственно все. Проект создан. На всякий случай прикладываю .xcl и .mac для AT91SAM7. В .xcl надо правильно указать макс. адреса ОЗУ и флеши для конкретного кристалла - сейчас там указан минимум который есть в любом SAM7.
Прикрепленные файлы
Прикрепленный файл  xcl_mac.zip ( 2.44 килобайт ) Кол-во скачиваний: 374
 


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Dopler
сообщение Dec 26 2006, 10:03
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Цитата(Сергей Борщ @ Dec 25 2006, 15:55) *


Спасибо, более-менее все работает, даже получилось создать проект без использования runtime библиотек, т.е. добавил весь необходимый минимальный код в проект. Буду теперь разбираться по шагам.

Всем большое спасибо.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dopler   Старт c IAR+Sam7x   Dec 24 2006, 23:43
- - skn   1. Старт начинается как правило с адреса 00, сегме...   Dec 25 2006, 01:07
|- - Dopler   Цитата(skn @ Dec 25 2006, 01:07) 1. Старт...   Dec 25 2006, 08:22
- - IV_K   если в проекте не указан cstartup.s90, то линкер в...   Dec 25 2006, 11:09
|- - Dopler   Цитата(IV_K @ Dec 25 2006, 11:09) если в ...   Dec 25 2006, 11:45
- - IV_K   1. lib\dl4tpainl8n.r79 и т.д. требуется при ...   Dec 25 2006, 11:53
|- - Dopler   Цитата(IV_K @ Dec 25 2006, 11:53) 1. lib...   Dec 25 2006, 13:15
- - IV_K   от примеров пойдут, потом перепишете и допишете чт...   Dec 25 2006, 13:34
- - SlavaCh   Сергей Борщ, спасибо за описание, я хоть и пишу со...   Dec 26 2006, 13:45
- - Сергей Борщ   Цитата(SlavaCh @ Dec 26 2006, 12:45) 1. К...   Dec 26 2006, 18:02
- - zltigo   Цитата(Сергей Борщ @ Dec 26 2006, 17:02) ...   Dec 26 2006, 18:20
|- - SlavaCh   Цитата(zltigo @ Dec 26 2006, 18:20) Цитат...   Dec 26 2006, 21:03
|- - Сергей Борщ   Цитата(SlavaCh @ Dec 26 2006, 20:03) Пока...   Dec 26 2006, 23:04
- - Dopler   Цитата(Сергей Борщ @ Dec 26 2006, 18:02) ...   Dec 26 2006, 20:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016