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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> проблемы с настройкой модуля USB в AT91SAM7S256
coolzero
сообщение Oct 25 2007, 11:05
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Написано достаточно много , но есть строка Revision 2.0
Полагаю это относится к версии USB...
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Oct 25 2007, 11:20
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(coolzero @ Oct 25 2007, 14:23) *
Так точно , похоже на то .
Длину имен подрезал, стало получше, думал что совсем хорошо...
Но погонял и некоторая нестабильность в работе всё равно остаётся

Плата на экранированном столе? Может у вас помеха по земле\5вольтам всё выбивает.
Из компьютера на USB идёт плохо фильтрованное питание.
Go to the top of the page
 
+Quote Post
coolzero
сообщение Oct 25 2007, 11:37
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Плата на пластиковых пеньках , стола не касается .
Питание от USB напрямую не используется , но заведено через защитный диод в паралель напряжению 3.9 В , на вход преобразователя TPS73033, который формирует итоговые 3.3 используемын для питания проца .
Не знаю может ли оно влиять ?
Проблемка осталась , с длинными файлами : типа файл практически полность скопирован , а нет чего то для завершения не хватает ...
При последующем включении файл виден , т.е в каталоге есть , но содержимое его битое...
Все малоки убрал , сделал статические буфера . Длину FIFO увеличил в 2 раза на всякий случай ... пока тоже самое
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Oct 25 2007, 11:46
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(coolzero @ Oct 25 2007, 15:37) *
Плата на пластиковых пеньках , стола не касается .
Питание от USB напрямую не используется , но заведено через защитный диод в паралель напряжению 3.9 В , на вход преобразователя TPS73033, который формирует итоговые 3.3 используемын для питания проца .
Не знаю может ли оно влиять ?
Проблемка осталась , с длинными файлами : типа файл практически полность скопирован , а нет чего то для завершения не хватает ...
При последующем включении файл виден , т.е в каталоге есть , но содержимое его битое...
Все малоки убрал , сделал статические буфера . Длину FIFO увеличил в 2 раза на всякий случай ... пока тоже самое


Положите под плату лист текстолита соединённый с заземлением в розетке или в осциллоскопе.
Я не использовал BFSA, но в EFSL было кэширование записи - требовалось флушить файловую систему.
Проверьте можете ли вы писать/читать сектора не в начале флэши без ошибок.
Go to the top of the page
 
+Quote Post
coolzero
сообщение Oct 25 2007, 12:05
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Текстолита , увы , сейчас под рукой нет ...
Не совсем понял , что значит флушить ?
Насчёт чтения\записи - я в принципе и так не в начале флеши работаю : первые 2 страницы ( 1056 байт ) отвёл под свои внутренние нужды , при доступе к файловой системе просто к адресу добавляется смещение .
Уважаемый 4afc , а не поясните ли какую роль играют буффера выделяемые малоком ( FIFO, FW_FIFO, TB ) и какие могут быть критичны по размеру ( возможно переполнение ) ?
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Oct 25 2007, 12:33
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(coolzero @ Oct 25 2007, 16:05) *
Текстолита , увы , сейчас под рукой нет ...
Не совсем понял , что значит флушить ?
Насчёт чтения\записи - я в принципе и так не в начале флеши работаю : первые 2 страницы ( 1056 байт ) отвёл под свои внутренние нужды , при доступе к файловой системе просто к адресу добавляется смещение .
Уважаемый 4afc , а не поясните ли какую роль играют буффера выделяемые малоком ( FIFO, FW_FIFO, TB ) и какие могут быть критичны по размеру ( возможно переполнение ) ?

Просто односторонний текстолит проще чем метал. А втыкаемый паяльник вашим соседом или запускаемый за стеной холодильник могут добавить вам проблем.

Флушить - отписывать возможные буфера файловой системы на диск/флеш.

Вопрос не втом в каком адресе флеш памяти вы работаете, а в том насколько корректно вы умеете ходить по физическим секторам и пересчитывать кластеры FAT16 туда и обратно.
У вас таблица фат хоть меняется после записи файла? А сами сектора упомянутые в фат меняют своё содержимое?

Я заменял 4 буфера но их назначение для меня неизвесно т.к. протокол я не изучал, а тем более реализацию.

extern structTB MYMEM_fw_TB[FW_TB_NUM];//8*structTB=8*(12+64)=608 bytes
extern char MYMEM_data_buff[MAX_TRANSFER_SIZE]; //х*MAX_PACKET_SIZE
extern char MYMEM_fw_fifoId[FW_FIFO_SIZE];//512 bytes
extern UCHAR MYMEM_buff[FW_FIFO_SIZE];//512 bytes

Кстати несмоьря на то что MAX_TRANSFER_SIZE у меня равен 4096, WinXP1 читает с меня блоками по 64к. А ранее я вроде умудрялся ограничиватьразмеры запросов.

Сообщение отредактировал _4afc_ - Oct 25 2007, 12:36
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 25 2007, 12:45
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Какой размер сектора Вы используете? Хотя у AT45 размер сектора 264 байта, я использую лишь 256 первых. При этом обьединяю два сосених сектора в "честный" 512-байтный сектор.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
coolzero
сообщение Oct 25 2007, 13:08
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Таблица ФАТ и соответствующие сектора меняются
Насчёт того корректно ли хожу по физическим адресам , думаю что да , сбоев не замечал , но кто его знает... надо углублённо проверять .
Насчёт флага RXSUSP , а не может он мешать ?
Пару раз заметил при отсутствии копирования , что маска прерываний сброшена в состояние по умолчанию , пару раз прервание по конечной точке на выход запрещено...
странно как то

Я использую AT45DB16, там размер страницы 528 байт ,
правда есть какой-то режим с 512 байтами , но что я с ним не разобрался , не захотела флешка так работать
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 25 2007, 13:22
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(coolzero @ Oct 25 2007, 17:08) *
правда есть какой-то режим с 512 байтами , но что я с ним не разобрался , не захотела флешка так работать


Кажется этот режим задается 1 раз. Так что, если у Вас 528, то все.

Просто я советую попробовать "забить" на эти 16 байт и на низком уровне считывать/записывать сектора по 512 байт. Это все же ближе Винде.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
coolzero
сообщение Oct 25 2007, 13:38
Сообщение #40


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Надо попробовать
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Oct 25 2007, 14:48
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Dron_Gus @ Oct 25 2007, 16:45) *
Какой размер сектора Вы используете? Хотя у AT45 размер сектора 264 байта, я использую лишь 256 первых. При этом обьединяю два сосених сектора в "честный" 512-байтный сектор.

В одном проекте у меня устройство ёмкостью 8 секторов 512 байт, после каждого чтения данные в них меняются на новые.
В другом я заполняю SD карту файлами, которые доступны для чтения по USB. Сектора 512 байт.
Заполнение EFSL. Чтение чистый MSD без файловой системы - какой сектор винда хочет - такой и получает.
А вот у других сотрудников которые использовали другие файловые системы - были проблемы с вычислением из номера кластера в FAT16/FAT32 в физический номер сектора.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 25 2007, 14:55
Сообщение #42


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



2 _4afc_, что-то наверное уже поздно... "ниасилил" осознать. smile.gif

Я тоже использую чистый масс-сторадж. И PowerPack FS "внутри". И то и то использует одни и те же функции чтения/записи сектора. Глюков пока нет. Если не считать, что винда и "встроенная" ФС форматируют по-разному. Разный свободный обьем получается. ИМХО, глюк PowerPack FS.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Oct 26 2007, 11:17
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Dron_Gus @ Oct 25 2007, 18:55) *
Я тоже использую чистый масс-сторадж. И PowerPack FS "внутри". И то и то использует одни и те же функции чтения/записи сектора. Глюков пока нет. Если не считать, что винда и "встроенная" ФС форматируют по-разному. Разный свободный обьем получается. ИМХО, глюк PowerPack FS.


Больший объём у меня получался пока я просто умножал на длину FAT таблицы - а надо её считывать и просмотреть значения внутри неё - получается 1:1 свободный объём. Правда собственных функций форматирования я не писал.
Go to the top of the page
 
+Quote Post
coolzero
сообщение Oct 26 2007, 12:09
Сообщение #44


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Погонял свой девайс , мнение такое сложилось - косячно работает связка ARM-AT45 , там три команды есть непрерывного чтения основной памяти , у меня нормально работает только 0xE8 ,да и то на частоте AT91C_SPI_SCBR&(2<<8) ...
делаю частоту ниже AT91C_SPI_SCBR&(4<<8) - всё начинаются траблы
тут сегодня топик появился - у чела практически те же проблемы - при считовании больших массивов данных АТ45db161 сбоит...
не подскажут ли уважаемые форумчане , кто работает с данной датафлешкой , какиме настройки по SPI ?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 26 2007, 12:45
Сообщение #45


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Код


/*
typedef struct _AT45_Device{
  int buflen;
  int pages;
  int blocks;
  char pagebits;
  char sign;
  const char * name;
}AT45_Device;
*/
#define AT45_Types  8
const AT45_Device AT45_Type[AT45_Types]=
  {
    { 264, 4096,  512,  9,  0,   "Unknown"},
    { 264,  512,   64,  9,  3, "AT45DB011"}, // 1  Mbit
    { 264, 1024,  128,  9,  5, "AT45DB021"}, // 2  Mbit
    { 264, 2048,  256,  9,  7, "AT45DB041"}, // 4  Mbit
    { 264, 4096,  512,  9,  9, "AT45DB081"}, // 8  Mbit
    { 528, 4096,  512, 10, 11, "AT45DB161"}, // 16 Mbit
    { 528, 8192, 1024, 10, 13, "AT45DB128"}, // 32 Mbit
    {1056, 8196, 1024, 11, 15, "AT45DB642"}  // 64 Mbit
  };



FS_AT45_InitSPI(void)
  {
  AT91PS_SPI pSPI = AT91C_BASE_SPI0;

  // enable peripheral clock for SPI
  AT91F_PMC_EnablePeriphClock (AT91C_BASE_PMC, (1 << AT91C_ID_SPI0));

  // SPI enable and reset
  if (!(pSPI->SPI_CR & AT91C_SPI_SPIEN))
    {
    pSPI->SPI_CR = AT91C_SPI_SWRST;
    pSPI->SPI_CR = AT91C_SPI_SPIDIS;
    pSPI->SPI_CR = AT91C_SPI_SPIEN;
    }
  // SPI mode: master, fixed periph. sel., FDIV=0, fault detection disabled
  pSPI->SPI_MR  = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS;

  // set chip-select-register
  // SPI mode 0: 8 bits per transfer, CPOL=0, ClockPhase=0, DLYBCT = 0
  //pSPI->SPI_CSR[AT45_SPI_CSRNum] = /*AT91C_SPI_CPOL |*/ AT91C_SPI_NCPHA | AT91C_SPI_BITS_8 | AT91C_SPI_CSAAT | (0xFF << 8);

  // SPI mode 3: 8 bits per transfer, CPOL=1, ClockPhase=1, DLYBCT = 0
  pSPI->SPI_CSR[AT45_SPI_CSRNum] = AT91C_SPI_CPOL | /*AT91C_SPI_NCPHA |*/ AT91C_SPI_BITS_8 | 0x0F << 8;
//  pSPI->SPI_CR = AT91C_SPI_SPIEN;

//  if(pSPI->SPI_SR & AT91C_SPI_SPIENS)
//    printf("SPI initialized...\n");
  }

  

// Read DataFlash status register
__ramfunc char FS_AT45_ReadStatus(U8 Unit)
  {
  char s;
  FS_AT45_DisableCS(Unit);
  FS_AT45_EnableCS(Unit);
  FS_AT45_RW(StatusReg);
  s = FS_AT45_RW(0xFF);
  FS_AT45_DisableCS(Unit);
  return s;
  }

int FS_AT45_InitDev(U8 Unit)
  {
  char result;
  int i;

  result = FS_AT45_ReadStatus(Unit);
//  printf("AT45 status %X\r\n", result);
  AT45_Devs[Unit] = &(AT45_Type[0]);
  for (i = AT45_Types; i >= 0; i--)
    if (((result >> 2) & 0x0F) == AT45_Type[i].sign)
      break;
  AT45_Devs[Unit] = &AT45_Type[i];
  if (i != 0)
    return 0;
  else
    return 1;
  }



int FS_AT45_InitDevice(U8 Unit)  // Called from AddDevice. Usually the first call to the driver
  {
  int result, i;
  char prev_dev;

  FS_AT45_InitPIO();
  FS_AT45_InitSPI();
  FS_AT45_DisableCS(Unit);
  prev_dev = FS_AT45_Select(AT45_SPI_CSRMask);
  FS_AT45_SetSpeed(AT45_MIN_SPEED);  //slow during init
  for(i=0;i<41;i++)
    FS_AT45_RW(0xFF);
  FS_AT45_SetSpeed(AT45_MAX_SPEED);
  result = FS_AT45_InitDev(Unit);
  //DataAbort will be detected if we use printf here! FS bag?
/*  if (result != 0)
    {
    printf("Error init AT45 devise No %d\n\r", Unit);
    }
  else
    {
    printf("Found %s\n\r", AT45_Devs[Unit]->name);
    }*/
  FS_AT45_Select(prev_dev);
  return result;
  }


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post

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

 


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


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