Цитата
In addition to this memory, it can also access the 8kB of general purpose SRAM and the memory on the external memory bus (applies only for the LPC2378 and LPC24xx family)
Запустил eCos на LPC2478, в eCos родной EMAC драйвер использует у меня для передачи пакетов, внешнюю SRAM память, при передачи наблюдается
Underrun ошибка, если поиграться с инициализацией SRAM, то получается добиться улучшения картины, но все равно, передача хоть и идет, но очень медленно. Плата используется starterkit.ru MLPC2478. Шина памяти инититься так:
Код
volatile cyg_uint32 regval;
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMC_CTRL, CYGARC_HAL_LPC24XX_REG_EMC_CTRL_EN);
hal_lpc_set_power(CYNUM_HAL_LPC24XX_PCONP_EMC, 1);
HAL_WRITE_UINT32(PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL8, 0x55555555);
HAL_READ_UINT32( PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL9, regval);
regval &= 0xCFCCFFC0;
HAL_WRITE_UINT32(PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL9, (regval | 0x10110015));
HAL_READ_UINT32( PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL6, regval);
regval &= 0xFFFF0000;
HAL_WRITE_UINT32(PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL6, ( regval | 0x00005555 ));
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_WAITW_EN0, 0x00);
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_WAITO_EN0, 0x00);
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_WAITRD0, 0x01);
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_WAITPAGE0, 0x00);
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_WAITWR0, 0x00);
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_WAITTURN0, 0x00);
HAL_WRITE_UINT32(EMC_BASE + CYGARC_HAL_LPC24XX_REG_EMCS_CONFIG0, 0x00000000);
Если вести передачу из Ethernet RAM то ни каких проблем нет, но хочется все-таки разобраться с работой из SRAM.