DmitriyX 0 6 июля, 2007 Опубликовано 6 июля, 2007 · Жалоба Процессор TMS320DM642. Имеется буфер, состоящий из 64 ячеек по 256 Кб. Размещается в некэшируемой внешней памяти. Регулярно идет помещение объектов в буфер и доставание их оттуда. Приблизительно через час после начала работы в какой-то момент времени функция BUF_alloc возвращает неадеквадное значение (не 0 и не адрес свободного буфера). Через watch смотрел состояние буфера, вроде бы значения там адеквадные. Каким образом и что могло привести к подобному поведению? Подробности: Фрагмент кода: QUE_Elem *p= (QUE_Elem *) BUF_alloc( m_phBUF ); в какой-то момент возвращает значение 0x0033525B или 0x0035525B (зависание поймано два раза). такого адреса в конфигурации dspbios нет. Он находится между внутренней и внешней памятью. Конфигурация DSPBIOS: bios.MEM.create("MONRAM"); bios.MEM.instance("MONRAM").base = 0x00030000; bios.MEM.instance("MONRAM").len = 0x00010000; bios.MEM.instance("IRAM").len = 0x00030000; bios.MEM.instance("IRAM").createHeap = 1; bios.MEM.instance("IRAM").heapSize = 0x00004000; bios.MEM.create("CEXTDRAM"); bios.MEM.instance("CEXTDRAM").base = 0x80000000; bios.MEM.instance("CEXTDRAM").len = 0x01000000; bios.MEM.instance("CEXTDRAM").createHeap = 0; bios.MEM.instance("CEXTDRAM").space = "data"; bios.MEM.instance("CEXTDRAM").comment = "кэшируемая внешняя память"; bios.MEM.create("UEXTDRAM"); bios.MEM.instance("UEXTDRAM").base = bios.MEM.instance("CEXTDRAM").base + bios.MEM.instance("CEXTDRAM").len; bios.MEM.instance("UEXTDRAM").len = 0x06800000; bios.MEM.instance("UEXTDRAM").createHeap = 0; bios.MEM.instance("UEXTDRAM").space = "code/data"; bios.MEM.instance("UEXTDRAM").comment = "некэшируемая внешняя память"; bios.BUF.create("BUF_SendResults"); bios.BUF.instance("BUF_SendResults").size = 65536*4 + 16; bios.BUF.instance("BUF_SendResults").bufCount = 64; bios.BUF.instance("BUF_SendResults").align = 4; bios.BUF.instance("BUF_SendResults").comment = "IFG Send Results"; bios.BUF.instance("BUF_SendResults").bufSeg = prog.get("UEXTDRAM"); Map-файл: name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- IRAM 00000000 00030000 0002f4e8 00000b18 RWIX MONRAM 00030000 00010000 00008000 00008000 RWIX CEXTDRAM 80000000 01000000 004fccf0 00b03310 RWIX UEXTDRAM 81000000 06800000 06000800 007ff800 RWIX .BUF_SendResults$data * 0 86000000 01000400 UNINITIALIZED 0002f284 _BUF_Registrar 0002f25c _BUF_SendResults 00022680 _BUF_alloc 81000000 _g_aRegDataLarge 86000000 BUF_SendResults$databeg 87000400 TSK_myLoop$stack Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться