создании кода для процессора необходимо распределить его память. В семействах TMS320Cxxxx для этого существует так называемый механизм секций: все функции и данные размещаются в поименованных секциях, а сами секции размещаются в различных областях памяти. Существует стандартный набор секций, который должен быть определен всегда. Однако можно назначить дополнительные секции и разместить в них код функций и данные разработанного алгоритма.
Распределение памяти указывается в файле с расширением .cmd. Его можно создать самостоятельно по образцам из библиотеки готовых примеров или подключить готовый типовой .cmd-файл из библиотеки. При создании .cmd-файла в главном меню CCS выбирается раздел File, затем пункт New и подпункт Source File. В появившейся области редактора пишется код. Ниже приводится фрагмент библиотечного .cmd-файла F2808.cmd [3].
MEMORY
{
PAGE 0: /* Память программ*/
/* При распределении данных блоки памяти (RAM/FLASH/OTP) могут быть перемещены в страницу PAGE1 */
RAML0 : origin = 0x008000, length = 0x001000 /* блок L0 встроенного ОЗУ */
OTP : origin = 0x3D7800, length = 0x000400 /* встроенное однократно программируемое ПЗУ */
FLASHD : origin = 0x3E8000, length = 0x004000 /* встроенная FLASH */
FLASHC : origin = 0x3EC000, length = 0x004000 /* встроенная FLASH */
.
.
PAGE 1 : …
.
.
.
}
SECTIONS
{
/* Распределить области программы: */
.cinit : > FLASHA PAGE = 0
.pinit : > FLASHA, PAGE = 0
.text : > FLASHA PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHD,
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
LOAD_SIZE(_RamfuncsLoadSize),
PAGE = 0
.
.
.
}
В блоке MEMORY указаны имена областей памяти, их начальный адрес и длина. В блоке SECTIONS – имена секций и область памяти, где они расположены.Набранный файл необходимо сохранить, указав тип «.cmd» и имя, например, «standard». Затем файл необходимо подключить к проекту, так как автоматически этого не происходит.
Дальнейшая настройка проекта заключается в подключении внешних библиотек, необходимых для работы с функциями языка С. Подключение происходит так же, как и в предыдущих случаях. Необходимо только правильно указать тип файла и путь к нему.
2. ПОРТЫ ВВОДА/ВЫВОДА ПРОЦЕССОРОВ СЕМЕЙСТВА TMS320x28xx
2.1. Обзор основных функций
Каждая отдельная линия модуля может использоваться в качестве линии входа/выхода общего назначения или обслуживать в том же качестве (вход или выход) от одного до трех периферийных модулей. Множественность функций обеспечивается мультиплексированием внутренних линий на внешний вывод. Также существует возможность использования ряда линий в качестве входов источников внешних прерываний XINT1, XINT2, XNMI по программно определяемому “событию”. Все линии модуля GPIO имеют возможность программного подключения/отключения внутренних подтягивающих резисторов [4]. В заключение можно отметить, что линии могут быть настроены на выведение процессора из режимов пониженного энергопотребления HALT и STANDBY.
2.2. Конфигурирование портов ввода/вывода
Функции линий модуля GPIO, направление передачи, использование выводов в качестве входов внешних прерываний XINT1, XINT2, XNMI, подключение/отключение внутренних подтягивающих резисторов задаются с помощью ряда управляющих регистров (УР). Краткие сведения по УР модуля GPIO приводятся в Табл. 2.1 – 2.3. Все обозначения соответствуют принятым в технической документации
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.