|
как прошить AT91SAM7S256, на отладочной плате |
|
|
|
Oct 25 2009, 19:44
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Господа помогите!! Отладочную плату подключаю через юсб. Использую IAR. Как прошить контролер? Код #include "сдесь библиотека"
short unsigned int i;
void main (void) { DDRA = 255;-ошибка сдесь PORTA = 0; и сдесь
while(1) { if (PORTA == 255) PORTA = 0; else PORTA++;
for (i=0; i<10000; i++) { } } } на этапе конпиляции возникают ошибки. и как мне откомпелированную программу отправить на контролер через юсб?
Причина редактирования: Оформление цитаты исходника.
|
|
|
|
|
 |
Ответов
(1 - 99)
|
Oct 25 2009, 19:52
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 25 2009, 22:44)  на этапе конпиляции возникают ошибки.
DDRA = 255;-ошибка сдесь PORTA = 0; и сдесь Ну, попробуйте найти регистры с такими именами в "библиотеке". Еще раз: это не AVR!Цитата(alexan300 @ Oct 25 2009, 22:44)  и как мне откомпелированную программу отправить на контролер через юсб? При помощи SAM-BA.
|
|
|
|
|
Oct 25 2009, 20:26
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 25 2009, 23:21)  Даташит в принципе есть укороченый на англиском... На этой странице качаете: ARM7TDMI Technical Reference Manual (284 pages, updated 04/01) AT91SAM7S Series Preliminary (757 pages, revision I, updated 12/08) Без изучения этих документов браться за программирование - пустая трата времени.
|
|
|
|
|
Oct 25 2009, 21:19
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 25 2009, 23:40)  Хех) форум называется помошь начинающему.. Ну, если не терпится помигать светодиодом, возьмите Keil MDK - там есть проекты типа "Blinky" под все поддерживаемые платформы. Цитата(alexan300 @ Oct 25 2009, 23:40)  а там в пдфе помоему конструкция атомного реактора да еще и на англиском) а на русском Вам ничего не попадалось? На русском можно что-то посмотреть здесь. Но от чтения родной документации все равно никуда не деться.
|
|
|
|
|
Oct 28 2009, 21:28
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 29 2009, 00:16)  Прошу вас не отсылаите меня к даташитам...и к примерам на англииском. На русском даташит изучили? Цитата(alexan300 @ Oct 29 2009, 00:16)  Keil MDK что это за зверь?? Среда разработки.
|
|
|
|
|
Oct 28 2009, 21:38
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Oct 29 2009, 00:28)  На русском даташит изучили?
Среда разработки. меня больше интересует имено алгоритм компиляции и прошивки..как то есть ли необходимость замкнуть жампер на плате резет.что нужно выставить в яре..как выставить выходы на выход и как отправить туда 1 или 0.,я где то уже откопал. какое собщение должно появится в самбе в случае удачи.?
|
|
|
|
|
Oct 30 2009, 14:37
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Код #include "ioat91sam7s256.h"
AT91S_PIO * pPIO = AT91C_BASE_PIOA; #define OUT_MASK (1UL<<29)
unsigned long tt = 0; int main(void){ AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOA); pPIO->PIO_PER = OUT_MASK; pPIO->PIO_OER = OUT_MASK; pPIO->PIO_SODR = OUT_MASK; pPIO->PIO_CODR = (1UL<<29);
for(;;){ if(tt < 10000000){tt++;}else {tt=0;}
if(tt >5000000){pPIO->PIO_SODR = (1<<29);} else{pPIO->PIO_CODR = (1<<29);} }
return 0; }//end main помогите разобраться... приложил скрин экрана. http://fotki.yandex.ru/users/alexan300/view/133829?page=0если этих фоток мало то могу еще сделать только скажите какие?
|
|
|
|
|
Oct 30 2009, 23:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Скорее всего светодиодик зажигается у вас, когда на на выходе PA29 = "0". Тогда пишем: Код #include "ioat91sam7s256.h"
#define OUT_MASK (1UL<<29)
unsigned long tt = 0;
int main(void) { AT91S_PIO * pPIO = AT91C_BASE_PIOA; pPIO->PIO_PER = OUT_MASK; pPIO->PIO_OER = OUT_MASK; pPIO->PIO_CODR = OUT_MASK; while(1); } Компилируем, запускаем. Если светодиод горит - программа нормально стартанула и отработала, если нет - до main() дело не дошло. Тогда переносим эти 5 строк из main в startup файл, куда-нибудь, хоть бы даже в самое начало. Повторяем - смотрим. Если не горит, вы: 1. Вообще не туда пишите программу. 2. Не обеспечиваете запуск программы. Так постепенно можно понять, что работает, что нет. Когда все заработает в main - можно написать что-нибудь более существенное. Успехов
|
|
|
|
|
Oct 31 2009, 00:01
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 31 2009, 02:52)  вроде все прошивает, но МК как выдает на все ноги 1, горит светодиод который я переодически подключаю к земле и разным выходам. Загрузчик стирается? Самба после этого не подключается до следующего восстановления через TST? Цитата(alexan300 @ Oct 31 2009, 02:52)  если же я в самбе пытаюсь прочесть записанное то самба виснит и вылетает...предлагает отправить отчет о ошибке. Прочесть или сравнить? А так - да, софт весьма кривой.
|
|
|
|
|
Oct 31 2009, 00:50
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 31 2009, 03:07)  да, после "прошивки" что бы плата определилась в виндах приходится замыкать резет и после этого подключать.после этого снова определяется системои. Reset или TST? Цитата(alexan300 @ Oct 31 2009, 03:07)  нажимаю reseive file и вот..виснит( А кнопочку "Compare sent file with memory" нажать что-то мешает? И еще: таргет выбран правильно, или стоит NO_BOARD? В последнем случае самба будет только делать вид, что работает.
|
|
|
|
|
Oct 31 2009, 01:07
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
в таргете выставлен деваис Atmel AT91SAM7S256 замыкаю джампер тест. http://projects.org.ua/project/arm/AT91SAM...l#_Toc140292988вот по этои ссылке я вижу что светодиод подключается питание-вывод мк. а я подключаю земля - вывод мк , может это влиять??
|
|
|
|
|
Oct 31 2009, 20:10
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
aaarrr !!! спасибо большое помогло! конечно подобраться к 55 ноге не просто было, она выход на колодку не имеет. Код #include "ioat91sam7s256.h"
#define OUT_MASK (1UL<<8)
unsigned long tt = 0;
int main(void) { AT91S_PIO * pPIO = AT91C_BASE_PIOA; pPIO->PIO_PER = OUT_MASK; pPIO->PIO_OER = OUT_MASK; pPIO->PIO_CODR = OUT_MASK; while(1); } господа!! http://www.olimex.com/dev/pdf/sam7-p64.pdfответьте плз, я ж на РА8 1 подаю? и как в самбе указать загружаться МК из флешь? в примере я видел boot fron flash. у меня почему то в самбе подругому как то это называется(( МК прошивается уже.. ,проверял так.. start adres 0x100000 refrech и появляется код полсе прошивки.. затем удаляю все содержимое флеш памяти, кнопкои erese all flash и с этого адреса считываются нули..(ну или что там ) затем опять прописываю во флеш бин фаил, стартую с адреса 100000 и вуаля!! в памяти МК опять что то есть! фот только не понимаю какои мне скрипт надо выбрать, что бы при следующеи загрузке МК стартовал с адреса 10000 и выполнял мою программу??? хелп ми!!
Сообщение отредактировал alexan300 - Oct 31 2009, 20:29
|
|
|
|
|
Oct 31 2009, 21:28
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Oct 31 2009, 23:10)  ответьте плз, я ж на РА8 1 подаю? Нет, 0. Цитата(alexan300 @ Oct 31 2009, 23:10)  и как в самбе указать загружаться МК из флешь? Он и так всегда стартует из флеш.
|
|
|
|
|
Oct 31 2009, 22:03
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 1 2009, 00:28)  Нет, 0.
Он и так всегда стартует из флеш. стартует после закрытия самбы? а без закрытия можно? а как? после выкл и вкл питания на плате? можно кнопкои резет воспользоваться для этого?
|
|
|
|
|
Nov 1 2009, 08:01
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 1 2009, 01:12)  Стартует после сброса или выключения-включения питания. а бывает такое что программа записывается в память мк, но не стартует? на всех ногах PIO A , B 5 вольт.
|
|
|
|
|
Nov 2 2009, 17:03
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
CODE #include <intrinsics.h> #include "ioat91sam7s256.h" #include "system.h" #include "adc.h"
#define LONG 5000000 #define SHORT 1000000
//#define LONG 900000 //#define SHORT 100000 //MAIN POINTER AT91PS_PIO m_pPio = AT91C_BASE_PIOA; AT91PS_PMC m_pPMC = AT91C_BASE_PMC; AT91PS_USART m_pUSART = AT91C_BASE_US0; AT91PS_PDC m_pPDC = AT91C_BASE_PDC_US0; AT91PS_MC m_pMC = AT91C_BASE_MC; AT91PS_AIC m_pAic = AT91C_BASE_AIC; AT91PS_SYS m_pSys = AT91C_BASE_SYS; AT91PS_ADC m_pADC = AT91C_BASE_ADC; AT91PS_RSTC m_pRSTC = AT91C_BASE_RSTC;
//it's a simple delay void Delay (unsigned long a) { while (--a!=0); }
unsigned int i = 0;
int main() { __disable_interrupt();
// System init //InitFrec();
// Init perifery InitPeriphery();
//Enable RESET m_pRSTC->RSTC_RCR = 0xA5000008; m_pRSTC->RSTC_RMR = 0xA5000001;
//enable the clock of the PIO m_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA; Delay(100000);
// Configure led m_pPio->PIO_SODR = BIT8; // Set PA8 to HIGH -> led off m_pPio->PIO_OER = BIT8; // Configure PA8 as output
while(1) { m_pPio->PIO_CODR = BIT8; // Set PA8 to LOW -> led on Delay(80000); m_pPio->PIO_SODR = BIT8; // Set PA8 to HIGH -> led off Delay(80000); } } люди гляньте плз! может быть в коде логическая ошибка, вот МК и незапускается??
Причина редактирования: Уменьшение видимого размера цитаты исходника.
|
|
|
|
|
Nov 2 2009, 17:29
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Уберите это: Код //Enable RESET m_pRSTC->RSTC_RCR = 0xA5000008; m_pRSTC->RSTC_RMR = 0xA5000001; Вешалка же натуральная - сначала дернули внешний ресет, а затем тут же подключили его как источник собственного. Даже если просто взвести USRTEN, пока не кончился внешний сброс (бит NRSTL регистра RSTC_SR в нуле), процессор гарантированно не запустится.
|
|
|
|
|
Nov 2 2009, 17:55
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Если программа не запускается, надо: 1. Сделать ее максимально простой (минимум текста) 2. Четко локализовать, что работает, что нет.
Я вам привел пример минимальной программы, которая позволяет удостовериться в том, что программа стартовала и дошла до бесконечного цикла (в котором и остается). Вы должны, при этом четко понимать, что до вызова main() выполняется startup модуль, написанный на ассемблере. Соответственно, если не вызывается main() возможны варианты: 1. Не стартует startup модуль вообще. 2. Программа виснет где-то в промежутке до вызова main(). 3. Не происходит передача управления из startup'a в main.
Поколдовав немного, можно четко локализовать где что виснет, а затем покумекать по какой причине.
|
|
|
|
|
Nov 2 2009, 18:04
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 2 2009, 20:29)  Даже если просто взвести USRTEN, пока не кончился внешний сброс (бит NRSTL регистра RSTC_SR в нуле), процессор гарантированно не запустится. спасибо большое..но все равно не запускается(( хотя симуляция и компиляция без ошибок. Цитата(sergeeff @ Nov 2 2009, 20:55)  Поколдовав немного, можно четко локализовать где что виснет, а затем покумекать по какой причине. программа простая как 3 копеики, моргания 8 ноги. трудно локализовать что работает, ибо джатага я не имею пока( а без него внутресхемную отладку мне не сделать. имею только юсб, если старт идет с адреса 200000 то загружается внутренний загрузчик и плата определяется системои , как только я прописываю что то в адреса от 100000, то самба показывает что все записалось, и ошибок нет. при эмуляции в iar все шеколадно, программа доходит до бесконечного цикла и выполняет все задержки. но вот все в железе((((ноль!
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Nov 2 2009, 18:40
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(sergeeff @ Nov 2 2009, 21:31)  Первый вам вопрос - а что вы прописываете с адреса 100000? Вы туда пропишите те самые команды - зажечь led и закрутиться в бесконечном цикле. Если это не будет работать, значит вы туда не передаете управление. И бросьте вы ссылаться на всякие jtag'и. На заре появления микропроцессоров их в помине не было и ничего, отлаживали и без них. А программная эмуляция - она и есть эмуляция. ДА! если я правильно понял то управление передать можно нажатием однои из следующих кнопок : DISABLE BRAWN OUT DIREKTOR DISABLE BRAWN OUT RESET ENABLE BRAWN OUT DIREKTOR ENABLE BRAWN OUT RESET ENABLE FLASH ACSESS ERASE ALL FLASH Ну последений пункт ясен, обнулить. предпоследнии похож на запуск программы из флеш--его я использовал тоже что же за "коричнивые директоры как перевел мне переводчик, мне не ясно.. подскажите плз, при какие обстоятельствах надо задеиствовать эти кнопки ?? startup ээээ...а какое у него расширение?? в книге Редькина не нашел ничего про это.. там указано..для таго что бы перевести МК в выполнение программы из флеш, выберети пункт Bootfrom flash у меня нету одноименнои кнопки((
Сообщение отредактировал alexan300 - Nov 2 2009, 18:57
|
|
|
|
|
Nov 3 2009, 19:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Nov 2 2009, 21:40)  ДА! если я правильно понял то управление передать можно нажатием однои из следующих кнопок : DISABLE BRAWN OUT DIREKTOR ... Brown Out Detector. Ни одна из упомянутых кнопок управление никуда не передает. Цитата(alexan300 @ Nov 2 2009, 21:40)  в книге Редькина не нашел ничего про это.. там указано..для таго что бы перевести МК в выполнение программы из флеш, выберети пункт Bootfrom flash у меня нету одноименнои кнопки(( Несмотря на убожество книжки, там все же ясно было написано, что речь идет о SAM7 X. Цитата(alexan300 @ Nov 3 2009, 22:37)  ...как мне "сказать" МК что бы он выполял программу из флеш памяти? Никак. SAM7S всегда стартует из флеш. Точка. Цитата(alexan300 @ Nov 3 2009, 22:37)  и что такое старт ап? где он находится? Файл, содержащий низкоуровневую инициализацию. Вообще-то должен быть частью проекта. Называтся может *startup*.s* И вообще, у Олимекса же лежит на сайте пример "мигателя светодиодом" под вашу плату, почему бы не взять его за основу?
|
|
|
|
|
Nov 4 2009, 12:20
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Nov 4 2009, 14:43)  Подскажите а когда бинарником мк прошиваешь, есть необходимость стартап и библиотеки в один каталог пихать? Или же бин фаилу уже всеравно он необходимую инфу вписал в себя? Нет необходимости. Бинарнику уже ничем не поможешь. Цитата(alexan300 @ Nov 4 2009, 14:43)  И еще вопросик. Как стартап прилипить? Через инклуде? Но там все фаилы с h расширением. А зачем "липить" стартап к C-файлу, а? Он и знать о нем не должен. Стартап средствами линкера кладется в начало памяти. При запуске процессора осуществляет минимальную требуемую инициализацию (тактирование, память, стеки) и передает управление C-части. Даже не знаю, букварь бы какой почитали что ли. Четыре страницы мочало жуем и даже до светодиода не добрались.
|
|
|
|
|
Nov 4 2009, 12:33
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 4 2009, 15:20)  Даже не знаю, букварь бы какой почитали что ли. Четыре страницы мочало жуем и даже до светодиода не добрались. А в букваре Редькина эта часть вписана в главу относящуюся к джатагу, необходимость этих деиствий с программированием через юсб я не сопоставил) да и там не мнго другая версия iar рассматривется. Линкер говорите. Попробую.
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Nov 4 2009, 13:29
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(sergeeff @ Nov 4 2009, 15:48)  Каша у вас в голове полная. JTAG какое имеет отношение к получению bin-файла? Абсолютно никакого. это я понял!! Джатаг не имеет отношения!! Каши нет) глава где описывалось подключения стартапа была отнесена к джатагу!! поэтому я неанимательно смотрел ту часть. А так как раз про линкер и его установки описывалось!!
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Nov 4 2009, 16:55
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
УРА уважаемые ура! фаил бин, прикладеный в скаченом с саита олимекса, заставил моргать ногу, естествено я решил вникнуть глубже в вопросы програмирования мк и открыл полностью проект..попытался для начала его скомпелировать..выскачела ошибка со ссылкои на фаил Cstartup.s79..я его отклыл в блокноте и увидил, что упоминается там исключительно "Generic CStartup to AT91SAM7S64" я же использую 256 процессор. я так понимаю, что для компилятора и процессора это не одно и тоже? регистры там разные, память?? если я изменю все в фаиле с ......64, на .....256, это мне не поможет?да. и еще впрос.стартапа достаточно одного для мк, или же для каждои программы прошиваемои в мк, стартап необходимо переделывать?? или же все зависит от того, в какои участок памяти я записываю бин фаил? ..простите за делитанские вопросы)
|
|
|
|
|
Nov 4 2009, 17:20
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Nov 4 2009, 19:55)  выскачела ошибка со ссылкои на фаил Cstartup.s79 ... если я изменю все в фаиле с ......64, на .....256, это мне не поможет? Вы бы лучше сообщение об ошибке сразу процитировали, а то остается только гадать, в чем могло быть дело. Цитата(alexan300 @ Nov 4 2009, 19:55)  да. и еще впрос.стартапа достаточно одного для мк, или же для каждои программы прошиваемои в мк, стартап необходимо переделывать?? или же все зависит от того, в какои участок памяти я записываю бин фаил? Стартап - часть программы. Вопрос не понял, если честно.
|
|
|
|
|
Nov 4 2009, 17:56
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(alexan300 @ Nov 4 2009, 20:32)  переформулирую ранее заданый вопрос.. стартап универсален для одного типа мк., а для другого мк нужен другои стартап? Почитайте чужой опыт приручения прцессора ARM - http://microsin.ru/content/view/653/1/ - где-то на пункте 34 затрагивается тема startup. У меня программа скомпилированная для 64-го вполне работала в старших моделях - пока не заморачивайтесь. У вас ошбки не из-за этого. {offtopis on}Мне вот не понять, как можно столько времени бится головой об стену? У меня ножкой процессор начал махать где-то через пару часов после того, как я при наличии jtag программатра wiggler и спаянного на макетке просессора начал править под свои нужды startup, шедьший в примерах к yagarto (автор, в свою очередь, жестоко правил под себя соответствующий файл от NutOS). Уже потом я задавался вопросами - а правильно ли я программирую тактовый генератор и тому подобными вопросами (о чём я на этом форуме справшивал и мне конкретно помогли). Ну ведь готовые проекты есть, если не понятно что-то с настройками - оставьте изменение ключиков компилятора и опций проекта на тот момент, когда всё заработает! {offtopis off} Вспомнился баннер в песочнице - "бригада опытных телепатов ответит на все ваши вопросы". Вам ассемблер указал на номера строк. Что за инструкции в этих строках (и предшествующих) находится? Привели бы, не у всех IAR стоит.
Сообщение отредактировал Genadi Zawidowski - Nov 4 2009, 18:00
|
|
|
|
|
Nov 4 2009, 18:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Nov 4 2009, 20:32)  вот что пишит компилятор.. По всей видимости проект не предназначен для вашей версии ИАРа. Цитата(alexan300 @ Nov 4 2009, 20:32)  я думаю что фаил, на который компилятор ссылается предназнчен для ....64 проца. а у меня ...s256. Поверьте, на данном этапе это совершенно не важно. Отличаются они только обемами флеш и ОЗУ, любая программа для 64-го обязана работать на 256-м.
|
|
|
|
|
Nov 4 2009, 18:19
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
PROGRAM ?RESET ;- Begins a program module RSEG INTRAMEND_REMAP ;- Begins a relocatable segment RSEG ICODE:CODE (2) ;- Begins a relocatable segment ; corresponding address is 32-bit aligned PUBLIC __program_start CODE32 ;- Always ARM mode after reset ORG 0 ;- Sets the location counter ; corresponds to the RESET vector address ;------------------------------------------------------------------------------ ;- Exception vectors ;------------------------------------------------------------------------------ ;- These vectors can be read at address 0 or at RAM address вот на эти пункты ссылается... Цитата(Genadi Zawidowski @ Nov 4 2009, 20:56)  У меня программа скомпилированная для 64-го вполне работала в старших моделях - пока не заморачивайтесь. У вас ошбки не из-за этого. Я про это и пишу, что скаченный пример решил просто откомпелировать, и создать бин фаил для прошивки, сначало ничего не меняя...а мне ошибки..бин фаил приложеный в примере успешно все прошил. если бы бинарник успешно создался и прошил бы МК, то следующим шагом я начал б потихоньку что то менять, отслеживая возникающии ошибки, и имея увереность что все библиотеки у меня подключены а также есть рабочии стартап...
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Nov 4 2009, 19:21
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(Genadi Zawidowski @ Nov 4 2009, 21:45)  Есть предложение найти проект соответствующий версии компилятора, что у Вас есть. Или заставить среду создать проект под Ваш процессор, компилирующийся без ошибок (возможно, с пустой функцией main) и вбить в него обльно валяющиеся даже на этом форуме последовательности инициализации порта на вывод и мерцания светодиодом. Тут либо проект компилирующиися без ошибок и бесполезный так как нету стартапа, либо рабочии бинарник, но со стартапом не работающим в моеи среде)) последовательность инициализации порта может и валяется где то, но она сплош а асемблере. луше б эту пследовательность фаиликом отдельным к проекту вешать и не лазить в его нутро до лучших времен. Не подскажите, можно ли ИАРом этот стартап создать для моего процессора. РС. это мои первый опыт знакомства с МК.
|
|
|
|
|
Nov 4 2009, 20:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Не бывает проекта без startup'a! Поймите, наконец, что любой процессор должен быть настроен на работу + должны быть выполнены некоторые ритуальные действия, необходимые для работы собственно программы (принято для С/С++ что программа начинается в модуле main()). Масса молодых программистов развращена интегрированными средами и не хочет разобраться в порядке работы с компилятором, линкером и прочими, не очень сложными вещами. Могу сообщить вам страшный секрет - в MS Visual Studio и в Borland Builder'e тоже есть startup модули.
У вас сейчас проблема с ассемблерным файлом. Что так сложно посмотреть, что там IAR в разных версиях такого разного требует в синтаксисе ассемблерных модулей? Ведь действительно, примеров масса. Скорее всего надо будет поправить пару строк.
Кто вам сказал, что настройка аппаратных средств процессора может быть написана только на ассемблере? Я же вам давал ссылку на библиотеки Atmel'a - там примеры почти на все случаи жизни. Все на С, кроме некоторых вещей (таких, какие как раз программируются в startup'e) , которые не написать на языке высокого уровня. Читайте, изучайте. Никто за вас это не сделает.
P.S. А как настроить порт на вывод на С я уже несколько выше писал.
|
|
|
|
|
Nov 4 2009, 20:24
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Большое спасибо..попробывал.. программа на мк не запускается.. #define WORKMASK AT91C_PIO_PA8 замениел на 8.. по моему без стратапа ну никак(( компилируется нармально с одним предупреждением. бинарник выходит., в мк записывается, но не выполняется(( Цитата(sergeeff @ Nov 4 2009, 23:01)  Не бывает проекта без startup'a! Поймите, наконец, что любой процессор должен быть настроен на работу + должны быть выполнены некоторые ритуальные действия, необходимые для работы собственно программы (принято для С/С++ что программа начинается в модуле main()). Масса молодых программистов развращена интегрированными средами и не хочет разобраться в порядке работы с компилятором, линкером и прочими, не очень сложными вещами. так примеры то я смотрел и скачал с олимекса.. бинарник работает, но вот проект который этот бинарник создал у производителя, у меня ну никак не хочет компилироваться.. все верно проблемма в ассемблерном коде, туда и кивает компилятор..но лучше былаб проблемма в Си коде..больше шансов разобраться, а асемблер это лес густои ( RSEG INTRAMEND_REMAP ;- Begins a relocatable segment ORG 0 ;- Sets the location counter ну вот что он мне хочет этим сказать??
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Nov 4 2009, 20:40
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(Genadi Zawidowski @ Nov 4 2009, 23:25)  Одна маленькая тонкость - в этой программе отсутствует разрешение реагирования процессора на сигнал сброса - то есть, попробуйте выключить питание отладочной платы, а затем включить опять. Обычно это разрешение делается startup, но не всегда нужно (оно, конечно, удобно при отладке, но в реальной жизни может и не требоваться). я его и резетом сначала, потом вкл выкл питание...0 эмоций. что то тут явно не то.. ни один скачанный стартап не подошел.. Цитата(sergeeff @ Nov 4 2009, 23:26)  Уважаемый!
Умеете в своем IDE генерить map-файл? Этот файл генерит линкер и показывает адреса загрузки всех глобальных функций и переменных (довольно внятный текстовой файл). Когда создадите этот файл посмотрите адрес main(). Если этот адрес равен начальному адресу флеш памяти - значит действительно у вас пропущен startup модуль, или он не включен в список файлов линкера. вроде разобрался как их создавать..но не могу наити куда он их прячет) это оно?? main 0x00000081 0x58 Code Gb main.o [1] адрес в котороый записывается программа 0х100000 это судя по самбе..он же начальный адрес флеш. вот еще одно упоминание ?main 0x000001e0 Code Gb cmain.o [4] расширение фаила ...map?
Сообщение отредактировал alexan300 - Nov 4 2009, 21:05
|
|
|
|
|
Nov 4 2009, 21:01
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 4 2009, 23:55)  Вы ответы читаете? Версия у вас не та.
Учитывая тот факт, что вы только начинаете разбираться с МК, то лучше все же начать с готового примера, иначе эта тема растянется еще на десяток-другой страниц. Поэтому или найдите пример для вашей версии ИАР (какой, кстати?), или скачайте ИАР, пригодный для компиляции имеющегося примера. IAR Systems\Embedded Workbench 5.4 Evaluation вот такая версия..наверно не надо было скачивать самую последнию, на нее еще в рускоязычном интернете примеров не придумали много..
|
|
|
|
|
Nov 4 2009, 21:07
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 5 2009, 00:04)  Скачайте последнюю доступную 4.xx. С ней этот пример должен нормально собраться. http://www.iar.com/website1/1.0.1.0/102/1/там только 5.2.. не знаете часом где б наит 4хх версию??
|
|
|
|
|
Nov 5 2009, 20:30
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(sergeeff @ Nov 5 2009, 23:15)  Елы-палы. Да startup, он зависит от типа процессора, ну и может быть от специфической платы! Вам уже несколько примеров готовых проектов пригнали со startup'ами. А вы все туда же. Взять нужный startup, добавить в свой проект в своей версии IAR. Это что требует наличия докторской степени по информатике? Неужели не собразить, что делают 30-50 строк ассемберного текста в startup'e? Да вот елы палы! не один стартап не компилируется с программой! даже если я беру образец с рабочим бинарником (светодиод моргает у меня), то при открытии проекта во время компиляции выскакивают ошибки на стартап..я уже и комбинировал свои С код с различными стартапами, взятыми из разных источников, четко следил где находится этот фаил, дабы на него все пути указывали, что бы он сам рядшком лежал с маин и прочими фаилааи..но все равно ошибки при компиляции!! я даже версию другую ИАРа скачал, все одинаково. что они делают я понял..инициализируют процессор и передают управление во флеш программу. вон..щас вообще рекорд(((554 ошибки и почти все в стартапе((там и стро то столько нету вобщем не видать мне щастья... а кстати..какои стартап нужный???как это узнать?.....s79 или же ....c
Сообщение отредактировал alexan300 - Nov 5 2009, 20:34
|
|
|
|
|
Nov 5 2009, 20:40
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(alexan300 @ Nov 5 2009, 21:35)  Народ гляньте пожалуиста кто может..запускается проект, бинарник создает работающий? у меня создает, записывается в МК, но опять не выполняется.. Вышеназванную версию ИАРа пока качаю. стартапа там кстати нету. Я же сказал - не записывается в ПЗУ. Только грузится естественно без результата. Адрес для кода в линкере я поставил с 0 - это надо каким-нибудь "флэшером" прожигать. IAR не делает этого. А "стартап" неявно подключается - о его наличии говорит содержимое .map файла после завершения построения проекта. Бинарник работающий, не беспокойтесь. Попробуйте .hex с помощью какой-нибудь утилиты вроде тех, что идут вместе с jtag адаптером прошить - и посмотрите на вывод PA8. У меня с частотой около полугерца машет. Возмоте мой проект и забудьте пока про стартап - он есть! Ну не даёт iar к нему доступа - так для начинающего продукт (на мой взгляд после знакомства с тем, что я вчера скачал).
Сообщение отредактировал Genadi Zawidowski - Nov 5 2009, 20:43
|
|
|
|
|
Nov 5 2009, 20:47
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(Genadi Zawidowski @ Nov 5 2009, 23:40)  Бинарник работающий, не беспокойтесь. Попробуйте .hex с помощью какой-нибудь утилиты вроде тех, что идут вместе с jtag адаптером прошить - и посмотрите на вывод PA8. У меня с частотой около полугерца машет. ну нету у меня джатага..и утилиты соответсенно тоже..есть самба есть ИАР, есть юсб шнур и плата отладочная. на РА 8 как раз светодиод висит.. а что будет если я этот бинарник запишу в область памяти МК 0х0 EEPROM или же в SRAM 0x200000 ? последнии вопрос отменяется..попытки записи туда не удались и окончились зависанием.. Модератор (rezident). За систематическое нарушение п.3.4 Правил форума (излишнее цитирование) выношу Вам предупреждение. Пользуйтесь уже наконец встроенным редактором сообщений перед их отправкой! P.S. Личную почту хоть иногда нужно читать.
Причина редактирования: Излишнее цитирование.
|
|
|
|
|
Nov 5 2009, 21:05
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата а что будет если я этот бинарник запишу в область памяти МК 0х0 EEPROM или же в SRAM 0x200000 ? В область 0 - скорее всего ничего не произойдёт. Вернее, надо прочитать повнимательней про маппинг после сброса у at91sam7sXXX - может оно в ОЗУ направляется? А при просто записи в область ПЗУ ничего не происходит, его содержимое не меняется и всё остаётся как и прежде. Если код, предназначенный для работы с абсолютного адреса 0 загручить со смещением - не знаю, зависит от кодогенератора. Сейчас я не знаю ассемблера АРМ настолько (и не собираюсь его изучать пока), чтоб сказать точно что будет, но, скорее всего, код выполняться будет из-за используемой в основном относительной адресации. НО, адрес ОЗУ прописан начинающимся с 0x200000 - и код, скорее всего, если используется что-то в ОЗУ - будет испорчен. Для отладки в ОЗУ попробуйте самостоятельно выделть два непересекающихся участка в ОЗУ и скомпилировать программу под эту конфгурацию (например, модифицировать конфигурацию debug того проекта, что я выложил). Ещё, есть предопределённые места в адресном пространстве - например, таблица векторов прерываний - и их прото так не переместишь. Мой пример не использует прерывания.
Сообщение отредактировал Genadi Zawidowski - Nov 5 2009, 21:09
|
|
|
|
|
Nov 7 2009, 00:49
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 6 2009, 02:18)  2 Alexan300: Вот проект под IAR 5.4 со стартапом , блекджеком и шлюхами.
blink.rar ( 66.15 килобайт )
Кол-во скачиваний: 127Специально из-за вас ИАР поставил. Большое спасибо! проект открыл, все фаилы к проекту подключены. сначало сделал все как у вас, только в линкере изменил расширение фаила на бин. откомпелировал. debug и relase. получил в папке ехе бинарник. записал его в мк самбои.. проверил. все без ошибок. отключил юсб шнур..включил, реакции 0((затем также резетом, что конечно бесполезно но на всякии случаи затем полез в опции, заменил ARM7TDI на AT917SAM256..снова откомпилировал..опять 0.. записываю с 0х100000, вкладка флеш.. Нучто я еще мог пропустить!!!!???((
|
|
|
|
|
Nov 7 2009, 01:02
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Nov 7 2009, 03:49)  сначало сделал все как у вас, только в линкере изменил расширение фаила на бин. Оно и так было bin, что вы меняли? Цитата(alexan300 @ Nov 7 2009, 03:49)  Нучто я еще мог пропустить!!!!???(( Понятия не имею. Попробуйте записать готовый бинарник (debug\exe). Проект я честно проверил, правда записывал при помощи SAM-Prog, но разницы с Самбой никакой нет.
|
|
|
|
|
Nov 7 2009, 01:12
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alexan300 @ Nov 7 2009, 04:07)  blink.bin а было расширение ..out out и получающийся из него bin - две ОГРОМНЫЕ разницы. Цитата(alexan300 @ Nov 7 2009, 04:07)  сампрог он же не через юсб прописывает?? Через USB. Цитата(alexan300 @ Nov 7 2009, 04:07)  чесно говоря бинарника я что то не нашел после разахивирования..щас еше проверю. Тем не менне, он там есть.
|
|
|
|
|
Nov 7 2009, 06:17
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата заменил ARM7TDI на AT917SAM256 Это тоже пример "шаловливых ручек". Зачем? Крутите потом, когда разберетесь с загрузкой файлов - когда сможете контролировать результат. Цитата включил, реакции 0 Разнца между загрузкой в ОЗУ и программированием ПЗУ Вам понятна?
Сообщение отредактировал Genadi Zawidowski - Nov 7 2009, 06:20
|
|
|
|
|
Nov 7 2009, 09:53
|
Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 17-03-08
Пользователь №: 35 988

|
Цитата(aaarrr @ Nov 7 2009, 04:12)  out и получающийся из него bin - две ОГРОМНЫЕ разницы.
Через USB.
Тем не менне, он там есть. Так может я не так пытаюсь создать бин фаил? я в настройках линкера меняю разрешения фаила с out на bin..как написано в книге Редькина. бин бину рознь чтоли? Да в каталоге ехе я нашел бинарник,он успешно все прошивает..но если я пытаюсь на основании Ваших фаилов создать новый бинарник, то ничего не выходит. Как будто я что то ни так делаю) Цитата(Genadi Zawidowski @ Nov 7 2009, 09:17)  Это тоже пример "шаловливых ручек". Зачем? Крутите потом, когда разберетесь с загрузкой файлов - когда сможете контролировать результат.
Разнца между загрузкой в ОЗУ и программированием ПЗУ Вам понятна? Я же и пишу, что сначало ни чего не менял. это потом уже от без исходности Разница думаю более менее ясна."Правильный " бинарник то прописывается и выполняется) Да деиствительно ,бинарник получаемый из ...out, при изменение в закладке линкера output на разрешение bin не соответсвует тому что мне прислал aaarrr. и вразмерах в 10 раз больше. Подскажите пожалуйста, как мне настроить ИАР на создание бин фаила?
Сообщение отредактировал alexan300 - Nov 7 2009, 09:32
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|