scherbakovpa 0 21 ноября, 2011 Опубликовано 21 ноября, 2011 · Жалоба Ломаю прошивку для TMS320C28xx под Code Composer Studio. Прошивка мне досталась "в наследство" от ушедшего сотрудника. Суть проблемы: На данный момент отведено под прошивку только три сектора памяти, а сама прошивка вылезла за пределы. Необходимо подцепить четвёртый сектор. Кто может внятно рассказать где и как это сделать? Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSergeyP 0 21 ноября, 2011 Опубликовано 21 ноября, 2011 · Жалоба Ломаю прошивку для TMS320C28xx под Code Composer Studio. Прошивка мне досталась "в наследство" от ушедшего сотрудника. Суть проблемы: На данный момент отведено под прошивку только три сектора памяти, а сама прошивка вылезла за пределы. Необходимо подцепить четвёртый сектор. Кто может внятно рассказать где и как это сделать? Заранее спасибо. У Вас исходники есть или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scherbakovpa 0 21 ноября, 2011 Опубликовано 21 ноября, 2011 (изменено) · Жалоба У Вас исходники есть или нет? Исходники в полном объёме. Их и дорабатываю. Правда пока не постиг полного дзена приходится консультироваться у гуру :) Нашел файл f2812.cmd Вроде интересубщее место тут: SECTIONS { /* Allocate program areas: */ .cinit : > FLASHB PAGE = 0 .pinit : > FLASHB, PAGE = 0 .text : > FLASHC PAGE = 0 codestart : > BEGIN PAGE = 0 ramfuncs : LOAD = FLASHC, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0 csmpasswds : > CSM_PWL PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 0 собственно текст ошибки: <Linking> >> error: can't allocate ramfuncs, size 00000360 (page 0) in FLASHC (avail: 00000331) >> error: errors in input - ./Debug/iss.out not built >> Compilation failure ---------------------------------------------------------------------------------------------- UPD: Всем спасибо, что выслушали. Внимательное прочтение всоего же сообщения выявило подсказку sm.gif Вроде всё заработало после переноса ramfuncs в сектор D Изменено 21 ноября, 2011 пользователем Spinch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба Всем доброго времени суток. Осваиваю TMS320F2808 всего пару недель, есть несколько вопросов по тактам и по реализации точных временных задержек. ЦСП установлен на планке, заводском контрольном модуле под DIMM100, отладочной плате кто-то приделал ноги, поэтому сделал свою, программирование и отладка в CCS4.1.3 через XDS100V2 USB JTAG, DSP/BIOSа нету. Тестовая небольшая программка моргает парой светодиодов в разных режимах. В ней реализована обычная программная задержка, прерывания все отключены. Частота кварца 20МГц, SYSCLKOUT проца 10МГц, выход внешнего такта 10/4=2.5МГЦ (точно измерено), то есть все по умолчанию. В автономке JTAG отключен, общая программа записана во флэш (конвейер отключен), но подпрограмма задержки при инициализации копируется один раз в RAM L0 и там выполняется все время (проверено дизассемблером). Подпрограмка задержки на С простая. ------------------------------------------------ void delay_loop(Uint32 tmp) { do{ tmp--;} while (tmp>0); } ----------------------------------------------- Соответствующий asm дизассемблера, цикл который крутится, от него в основном и зависит длительность задержки отрабатывает за 7 тактов, то есть по идеи за 0.7мкс на 10_МГц, цикл крутится 428571 раз (расчет 0.3сек) m1: movb acc,#1 (1 такт) subl *-sp[2],acc (1 такт) movl acc,*-sp[2] (1 такт) sbf m1, NEQ (4 такта) Но реально измеренная задержка больше расчетной на 30%, 0.4с вместо 0.3с. Почему? Выходит, что доступ к RAM L0 работает с циклами ожидания? хотя в даташите написано 0-wait? Либо какая-то команда выполняется больше, чем 1 такт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба Вы где эти задержки меряете? На GPIO? Ну тогда это у вас задержка GPIO. Ну не предназначен он для таких временных интервалов. Если уж пишете о %, то элементарно проверьте на больших величинах задержки. Если ошибка не пропорциональна величине задержки, а является константой - это явно из-за частоты работы GPIO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба Так я и измеряю на больших задержках на ножке порта, я в курсе, что порт не сможет отработать микросекунды. Но отработать несколько герц порт явно сможет. :) Вопрос в другом, почему проц не выполняет команды за те такты, что написаны в даташите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба А Вы учитываете сколько времени выполняется условный переход в конце цикла и время на перезагрузку конвеера при срабатывании перехода? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба Конечно учитываю, 4 цикла на условный переход sbf (метка), NEQ (4 такта) Конвейер выборки из флэш отключен, если вы про это, но так как программка работает из RAM, может быть так, что конвейер там свой и не отключается? В доках по этому поводу ничего не сказано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба Здраствуйте, подскажите как с нуля создать проект для TMS 28027 в CCSv4. А то примерами пеользуюсь, а с нуля создать не догоню как. Или совсем простенький проект (только свой) может у кого есть, где пинами дрыгать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба Ну вот я делал тестовый проект на F2808, загрузка с флэш, запись в RAM пользовательского кода, выход в GPIO. Только нужно поправить cmd-файл распределения памяти под свой ЦСП. Программа пока без прерываний, не разобрался с ними. Примерами не пользуюсь, а вытаскиваю из них нужный код, слишком много там лишнего мусора. По Piccolo есть интересные материалы для начинающих. Мой проект в CCS4 Led.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 14 декабря, 2011 Опубликовано 14 декабря, 2011 · Жалоба спасибо, но я не увидел функцию настройки генератора. И еще для меня ново увидеть goto (ну да ладно каждый пишит как умеет). Еще нету хидеров или вы всё в *.с файлы всунули? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 15 декабря, 2011 Опубликовано 15 декабря, 2011 · Жалоба Генератор я не настраивал, он работает на установках по умолчанию 10Мгц, половина частоты кварца, без синтезатора. Кстати в примерах как раз и делается много лишней работы по установке регистров значениями умолчанию. Зачем, если они после сброса и так находятся в этом состоянии. Файлы заголовков находятся в примерах DSP280x_common\include и DSP280x_headers\include. К ним нужно прописать путь в настройках CCS4 ( project/properties/C2000 compiler/include options/иконка add), тогда они появятся в директории Includes проекта. Оператор goto в данном случае делает банальный безусловный переход [sB (метка), UNC] можно и бесконечный for сделать, но в асме все равно будет тот же безусловный переход. Вообщем-то это моя первая программа на Си для контроллеров вообще, до этого на 51-ых и avr обходился ассемблером, так что за некоторую кривость програмки простите. Вообще заметил, что компилятор не воспринимает некоторые классические конструкции си, нельзя допустим объявлять переменную в цикле, например на такую конструкцию выдает ошибку, for(int i=0;i<10;i++). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 15 декабря, 2011 Опубликовано 15 декабря, 2011 · Жалоба Не компилиться, не находит "DSP280x_Device.h", что странно в свойствах проекта подключена директория с этим файлом и более того если проводником проекта пользоваться то открыть "DSP280x_Device.h" можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 15 декабря, 2011 Опубликовано 15 декабря, 2011 · Жалоба Так он и не должен так сразу компилится при копировании всего проекта, так как он рассчитан на F2808. Надо создать новый проект под ваш Piccolo 28027 контроллер и изменить следующее. 1. заменить хидеры в .с, кроме DSP280x_GlobalVariableDefs.c, его заменить своим из примеров, он не менялся. 2. DSP280x_CodeStartBranch.asm, в нем только отключается сторожевой таймер, думаю что его регистры в 28027 аналогичные. 3. DSP280x_Headers_nonBIOS.cmd заменить своим, не менялся 4. F2808.cmd по аналогии, обращая внимание на название областей, изменить свой, так как некоторых областей памяти в Piccolo нет. Разобрался таки с созданием и копированием таблицы прерываний PIE, кстати вот здесь есть кое-что по русски. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ELEKTROS 0 16 декабря, 2011 Опубликовано 16 декабря, 2011 · Жалоба Какая разница, компилиться должен и ваш, только его не зашить в F28027 нормально, тут дело в другом в чём то. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться