novlev 0 19 декабря, 2011 Опубликовано 19 декабря, 2011 (изменено) · Жалоба Доброе всем время суток, вот столкнулся с ситуацией - объявляю буфер в 16384 слов (unsigned short). В самом плавнике есть Data bank A SRAM и data bank B SRAM - всего 64 Кб, 4 по 16К. По умолчанию все настроены как SRAM. Ошибка выглядит следующим образом: [Error li1040] "C:\Program Files\Analog Devices\VisualDSP 5.0\Blackfin/ldf/adsp-BF518.ldf":557 Out of memory in output section 'bsz_L1_data_b' in processor 'p0' Total of 0x92d8 word(s) were not mapped. For more details, see 'linker_log.xml' in the output directory. [Error li1040] "C:\Program Files\Analog Devices\VisualDSP 5.0\Blackfin/ldf/adsp-BF518.ldf":620 Out of memory in output section 'bsz_L1_data_a' in processor 'p0' Total of 0x92d8 word(s) were not mapped. For more details, see 'linker_log.xml' in the output directory. Как линкер побороть, может кто сталкивался? Изменено 19 декабря, 2011 пользователем novlev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 19 декабря, 2011 Опубликовано 19 декабря, 2011 · Жалоба Как линкер побороть, может кто сталкивался? У вас там, по ходу, просто нет в памяти непрерывного места в 32К. В проце есть две области по 32К, и для того, чтобы ваш массив можно было разместить в памяти проца, хотя бы одна из областей должна быть полностью отдана под это. Если там хотя бы байт отдан по что-то другое, всё, ваш массив уже не поместится. Смотрите скрипт линкера (ldf файл), куда там что замаплено. Но, вообще-то, нехорошо такие объекты туда пихать, гибкости нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novlev 0 19 декабря, 2011 Опубликовано 19 декабря, 2011 (изменено) · Жалоба Угу, именно за место под солнцем и воевал, уменьшил стек и хеп (не знаю, можно ли их в MEM_L1_SCRATCH поместить), а дальше руками разместил: #pragma section("L1_data_b") unsigned short IsprL[15360]; #pragma section("L1_data_a") unsigned char UART0_BUFFER_RX[1038]; #pragma section("L1_data_a") unsigned char UART0_BUFFER_TX[1048]; #pragma section("L1_data_a") unsigned char UART1_BUFFER_RX[1038]; #pragma section("L1_data_a") unsigned char UART1_BUFFER_TX[1048]; Просто объемы изначально были меньшие, а теперь вот как обычно.. переиграли на лету. Продолжение приключений моих - не запускается программа((( #pragma section("L1_data_b") unsigned short ExtCh0[15360]; unsigned short *pExtCh0 = &ExtCh0[0]; больше ничего не добавлял. Изменено 19 декабря, 2011 пользователем novlev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 19 декабря, 2011 Опубликовано 19 декабря, 2011 · Жалоба Продолжение приключений моих - не запускается программа((( В железе не работает или линкер по-прежнему ругается? Посмотрите в мап файле, какие ещё сущности размещены в сегменте памяти, куда вы пытаетесь засунуть свой массив. Линкер рожает мап файл в формате xml (он об этом в сообщении об ошибке выдавал), этот файл можно сконвертить в html, для этого в VDSP есть утилитка (xml2html называется или как-то так). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novlev 0 19 декабря, 2011 Опубликовано 19 декабря, 2011 (изменено) · Жалоба Да сам линкер не ругается, говорит все гуд. мап я смотрел много раз, криминала вроде не увидел. Возникло подозрение что это может быть стартап код, который добавляет ДСПстудия. Как-то оно все диковинно. Если буфер меньше сделать - программа запускается в железяке, увы нет джетаг борды... Вот что еще заметил - сменил конфигурацию с дебаг на релиз, железяка заморгала, криво работает программа, но хоть как-то.... похоже линкер чего-то не договаривает... или я уже не знаю что думать. Изменено 19 декабря, 2011 пользователем novlev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 19 декабря, 2011 Опубликовано 19 декабря, 2011 · Жалоба Да сам линкер не ругается, говорит все гуд. мап я смотрел много раз, криминала вроде не увидел. Возникло подозрение что это может быть стартап код, который добавляет ДСПстудия. Как-то оно все диковинно. Если буфер меньше сделать - программа запускается в железяке, увы нет джетаг борды... Вот что еще заметил - сменил конфигурацию с дебаг на релиз, железяка заморгала, криво работает программа, но хоть как-то.... похоже линкер чего-то не договаривает... или я уже не знаю что думать. Тогда это сильно похоже на то, что стек наползает на используемую память (там что угодно может быть, но чаще всего возникает какое-нибудь из аппаратных исключений). Т.е. по факту памяти всё же не хватает. Увеличьте размер стека и погоняйте. Конечно, тут неплохо бы хоть какие-то отладочные средства. Память, граничащую со стеком забить каким-нибудь паттерном и смотреть, до какого адреса паттерн будет перезаписан - т.е. до куда стек реально достаёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novlev 0 19 декабря, 2011 Опубликовано 19 декабря, 2011 · Жалоба Да, уже была мысль переделать проект под отладочную борду и там смотреть. Заметил еще следующее (добавил стартам код, тот что автоматом добавляется) стартует программа с адреса ффа00000, щелкает режимы(супервизор мод и юзер мод, несколько обходных конструкций для ошибок ревизии кристала, совтовое прерывание на 15 эвент по ресету) и дальше на мейн мойн передает управление, но даже таймеры не запускаются.... пробовал сразу после старта на мейн управление передавать, та же история. Видимо я уже горячку порю))))) Как с этим стартап кодом надо обходится, он асмовский, я все на си сгородил. Может там нужно вызвать свою инициализацию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 20 декабря, 2011 Опубликовано 20 декабря, 2011 · Жалоба Да, уже была мысль переделать проект под отладочную борду и там смотреть. Заметил еще следующее (добавил стартам код, тот что автоматом добавляется) стартует программа с адреса ффа00000, щелкает режимы(супервизор мод и юзер мод, несколько обходных конструкций для ошибок ревизии кристала, совтовое прерывание на 15 эвент по ресету) и дальше на мейн мойн передает управление, но даже таймеры не запускаются.... пробовал сразу после старта на мейн управление передавать, та же история. Видимо я уже горячку порю))))) Как с этим стартап кодом надо обходится, он асмовский, я все на си сгородил. Может там нужно вызвать свою инициализацию? Я сразу свой стартап сделал (по мотивам, конечно, - выкинул лишнее, добавил нужное). Попробуйте пройти по шагам в симуляторе, посмотрите внимательно, что оно там делает. Как до main() доходит или не доходит. Если ошибка сугубо логическая и локализуется где-то в этом месте, то и на симуляторе сможете увидеть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novlev 0 20 декабря, 2011 Опубликовано 20 декабря, 2011 (изменено) · Жалоба Спасибо ,что помогаете. Тот же проект, даже частоты не перенастраивал, запустился сразу на борде, фонари замигали, т е таймеры запустились. При всех прочих равных на самопальной железяке не захотела, таймеры молчат. При меньшем буфере - запускаются(но надо 15360). Есть такой участок кода, что дсп студия докидывает - обработчик эксепшенсов, подозреваю туда уходит, как бы найти его в коде? Стек и хеп в настройках проекта выставил в 512 байт. В моей железяке мейн мой вообще не запускается(((. Уже жалею что с С связался.)) Изменено 20 декабря, 2011 пользователем novlev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novlev 0 20 декабря, 2011 Опубликовано 20 декабря, 2011 (изменено) · Жалоба Нашел глюк, загрузка через уарт не проходит, а если бинарник во флешу - то запускается. Непонятна пока причина. Может кто подскажет куда рыть? Т е если выставить с свойствах проекта загрузка через уарт (ASCII) - ничо не работает, если шить через дебаг агент бордовский(саму борду) или бинарник (тот же уарт, тока бинарник) во флешу - работает. Суть ошибки - загрузчик встроенный теперь не устраивает скорость общения (когда по уарт заливается прога), было 57600, пока сделал 9600. Изменено 20 декабря, 2011 пользователем novlev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться