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

 
 
 
Reply to this topicStart new topic
> Работа с Samsung OneNAND DDP
Hexxx
сообщение Oct 9 2007, 12:58
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 29-03-06
Пользователь №: 15 592



Пытаюсь читать 2*512Mb OneNAND флэшку. Вот таким образом:

Код
void ONLD_Read(unsigned long nDev,
              unsigned long LogicalSector, //Physical block number
              unsigned long nScts,
              unsigned char * pMBuf,
              unsigned char * pSBuf,
              unsigned long nFlag)
{

  unsigned long * pONLDMBuf;
  unsigned long BlockAddress=LogicalSector>>8;
  

  /* INT Stat Reg Clear */
  ONLD_REG_INT(ONENAND_BASE) = (unsigned short)INT_CLEAR;
  
  //Disable ECC
  ONLD_REG_ECC_STAT(ONENAND_BASE) = (unsigned short)0;

  /* Block Number Set 9 bits with Flash Block Address */
  ONLD_REG_START_ADDR1(ONENAND_BASE) = (unsigned short)((BlockAddress & 0x1FF) | ((BlockAddress << 6) & 0x8000));
  
  ONLD_REG_START_ADDR2(ONENAND_BASE) = (unsigned short)0x8000;
    
  /* Sector Number Set 0-1 bits for Flash Sector Address, 2-7 for Flash Page Address */
  ONLD_REG_START_ADDR8(ONENAND_BASE) = (unsigned short)(LogicalSector & 0xFF);
  
  /* Start Buffer Selection */
  ONLD_REG_START_BUF(ONENAND_BASE) = 0x800 | 0x01; //one sector without buffer switching

  // Select buffer for operation
  ONLD_REG_START_ADDR2(ONENAND_BASE) = ((BlockAddress << 6) & 0x8000); //always 0 to use only first buffer
  
  //Disable ECC
  ONLD_REG_SYS_CONF1(ONENAND_BASE) |= CONF1_ECC_OFF;

  //Start Reading
  ONLD_REG_CMD(ONENAND_BASE) = (unsigned short)ONLD_CMD_READ_PAGE;

  //Wait for Read to complete
  while (GET_ONLD_INT_STAT(ONENAND_BASE, PEND_READ) != (unsigned short)PEND_READ)
  {
    OAM_Idle();
  }


  //Read Data
  pONLDMBuf = (unsigned long*)ONLD_DT_MB00_ADDR(ONENAND_BASE);

  _ReadMain(pMBuf, pONLDMBuf, nScts);

}


Оно вроде как и читатет информацию, но читает только половину: если читаю сектора с 20000 по 40000 на самом деле вычитываются сектора 0 - 20000. Не могу добраться до вторых 512 Мб. Кто-нить имел дело с OneNand?
Go to the top of the page
 
+Quote Post
Hexxx
сообщение Oct 10 2007, 09:25
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 29-03-06
Пользователь №: 15 592



Немножко подробностей. Это у меня MCP чип: NOR + 2 * Onenand + UtRAM.
Посидел-посмотрел что реально вычитывается. Оказывается, что этот код читает кусок NOR! 07.gif
Как такое может быть??? Я ведь читаю из буфера OneNand, его адрес не изменен, а туда попадают данные из NOR. wacko.gif
Go to the top of the page
 
+Quote Post

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

 


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


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