Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу получить нормальный bin или hex, чтобы залить через самбу
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Bulat
Контроллер at91sam7s256. Настройки линковщика я приложил к теме (трин скриншота). Т.е. в закладке extra output поставил формат выходного файла (output format) - raw-binary, в поле output file исправил ручками расширение файла на bin (было a79). Еще дополнительно в закладке extra options прописал опцию -O линкера - -Ointel-extended,(CODE)=.hex чтобы получить еще и выходной hex-файл. В итоге после попытки прошить полученный таким образом bin-файл через самбу (сообщения выданные самбой при прошивке смотри на 4-й приложенной картинке) контроллер не захотел работать, прога простейшая, так что скорее всего это из-за неправильно созданного линковщиком bin-файла. Пробовал перевести hex-файл с помощью hex2bin в bin-файл, hex2bin выдал сообщение об ошибке на 68 строчке, да и сам hex-файл весит 3 кБ, когда bin весит 33 кБ. Может я неправильно настроил линковщик?

P.S. А что должна писать самба, когда все нормально пишется в контроллер? То что написано на картинке samba.jpg (4-й приложенный файл).
Заранее благодарен!
neiron
Я обычно просто указывают собирать в raw-binary, потом это скармливаю самбе.
Бинарник зашиваешь во флешь , а потом там же в самбе делаешь установку бита - грузиться из флеша
(Boot from lash). Дальше перегружаешь проц.
Bulat
Цитата(neiron @ Nov 28 2007, 22:26) *
Я обычно просто указывают собирать в raw-binary, потом это скармливаю самбе.
Бинарник зашиваешь во флешь , а потом там же в самбе делаешь установку бита - грузиться из флеша
(Boot from lash). Дальше перегружаешь проц.

Так ведь самба принимает только bin-файлы. Как Вы получаете файл с расширением bin?
DASM
Простейшая прога 33 кбайт весит ? Выложите тогда весь проект сюда, что-ли.. Кстати SAM-BA не советую сильно, поищите в Сети SAM-PROG
Bulat
Мигание светодиодов:
Код
#include <stdio.h>
#include <ioat91sam7s256.h>
#include <ioks32c5000a.h>
#include <stdlib.h>

int d,c,e;
int i,j;
int nc;//counter the number of calls to RT
int rt;
int ct;//confirmation of transfer data to host


AT91PS_PMC pmc = AT91C_BASE_PMC;
AT91PS_SYS regs = AT91C_BASE_SYS; //Инициализация структуры AT91PS_SYS, в
                                   //которой содержатся адреса регистров
                                   //управления PIO. regs - идентификатор, кот.
                                   //опред. все регистры, чьи адреса определены
                                   //в структуре AT91PS_SYS.
AT91PS_PITC regs1 = AT91C_BASE_PITC; //Подключение адресов регистров инт. таймера PIT
AT91PS_SPI regsm = AT91C_BASE_SPI; // Подключение адресов регистров SPI
AT91PS_AIC regAIC = AT91C_BASE_AIC;
AT91PS_UDP regUDP = AT91C_BASE_UDP;
AT91PS_PIO regPIO = AT91C_BASE_PIOA;

//------------------------------------------------------------------------------
//Инициализация тактового генератора
void clock_ini()
{
  regs->PMC_MOR=0x201; //разрешение работы осн. такт. геннератора, уст. врем.
                      //зап. осн. такт. ген. (11/8=2)
  while(d==1) //Ожидаем установки бита MOSCS
  {
    c=regs->PMC_SR;
    c&=0x1;
    if(c==0x1) d=0;
  }  
  regs->PMC_PLLR=0xD423F0E; //DIV=14; MUL=73; число тактов SLCK (поле PLLCOUNT)- 11; USBDIV=2;
  while(d==1) //Ожидаем установки бита Lock (ФАПЧ зафиксирован?)
  {
    c=regs->PMC_SR;
    c&=0x4;
    if(c==0x4) d=0;
  }
  
  regs->PMC_MCKR=0x4; //Записываем поле PRES=1 - дел. частоты сигн. MAINCK - 2
  while(d==1) //Ожидаем установки бита MCKRDY рег. PMC_SR
  {
    c=regs->PMC_SR;
    c&=0x8;
    if(c==0x8) d=0;
  }
  regs->PMC_MCKR=0x7; //Записываем поле CSS=11 - источн. осн. синх. сигн. PLLCK
  while(d==1) //Ожидаем установки бита MCKRDY рег. PMC_SR
  {
    c=regs->PMC_SR;
    c&=0x8;
    if(c==0x8) d=0;
  }

  regs->PMC_SCER=0x481; //Разрешает подачу такт. сигн. PCK на проц., 48 МГц на
                        //USB и PCK2 на дешифраторы DD1
  regs->PMC_SCDR=~0x481;
  
  pmc->PMC_PCKR[2]=0xF;//Источник прогр. такт. сигнала - PLLCK, значение
                      //предделителя-8, т.е. вых. частота на выходе PA6-12 МГЦ.
                      //(исп. для тактирования DD1)
  while(d==1) //Ожидаем установки бита PCKRDY0 рег. PMC_SR
  {
    c=regs->PMC_SR;
    c&=0x100;
    if(c==0x100) d=0;
  }    
  regs->PMC_PCER=0xFFFFFFFF;//Разрешает подачу такт. сигн. на все периф. модули
  regs->PMC_PCDR=0xFFFFFFFF;
}

//Задержка 1 с
void Delay_1()
{
  for(int i=0; i<30303030; i++)
  {
    asm("NOP");
  }
}


//Инициализация PIO
void PIO_ini()
{
  regs->PIOA_PER = 0xFFFFFFFF;//Все порты настр. на исп. в качестве в\в
  regs->PIOA_PDR = ~0xFFFFFFFF;
  regs->PIOA_OER = 0x7; //PA0-2 настраиваются как выходные
  regs->PIOA_ODR = ~0x7;
  regPIO->PIO_PPUDR = 0x7; //Запрещение подтягивающих резисторов на портах PA0-2
  //(запрещение подтягивающих резисторов на используемых выводах для избежания большого тока)
  regPIO->PIO_PPUER = ~0x7;
  regs->PIOA_OWER = 0x7; //Разрешение вывода на линии PA0-2 из ODSR
  regs->PIOA_OWDR = ~0x7;
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void main()
{  
  clock_ini();
  PIO_ini();  
  
  unsigned int xxx=0;
  //последовательное зажигание светодиодов, подкл. к портам PA0-2.
  while(xxx<6)
  {
    Delay_1();
    switch (xxx)
    {
      case 0: regs->PIOA_ODSR = ~0x1;  break;
      case 1: regs->PIOA_ODSR = ~0x2;  break;
      case 2: regs->PIOA_ODSR = ~0x4;  break;
      case 3: regs->PIOA_ODSR = ~0x4;  break;
      case 4: regs->PIOA_ODSR = ~0x2;  break;
      case 5: regs->PIOA_ODSR = ~0x1;  break;
    }
    xxx++;
  }
}

И всетаки, может я линковщик неправильно настроил. Допустимо ручками менять расширение выходного файла на bin?
DASM
Я поэтому и просил весь ПРОЕКТ просил. Все файлы. Запаковать в rar и приаатачить
Кстати почему не хотите готовый пример из IAR попробовать (включив конфигурацию Flash Release) ?
Bulat
Цитата(DASM @ Nov 28 2007, 23:02) *
Я поэтому и просил весь ПРОЕКТ просил. Все файлы. Запаковать в rar и приаатачить
Кстати почему не хотите готовый пример из IAR попробовать (включив конфигурацию Flash Release) ?

Вот, прикрепляю весь проект.
DASM
В том виде, что Вы привели - проект вообще генерируют debug файл для отладчика. Покажите именно как Вы bin то получаете
Bulat
Цитата(DASM @ Nov 29 2007, 00:21) *
В том виде, что Вы привели - проект вообще генерируют debug файл для отладчика. Покажите именно как Вы bin то получаете

так я же приложил в самом первом сообщении настройки линковщика...
DASM
Тогда попробуйте что-то в таком роде
В Вашем изначальном варианте все это линковалось под 0x8000 адрес для какого-то дефолтного проца. xcl поищите в папке ИАР подходящий
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.