Учебно-методическое пособие Томск 2007


Скачать 1.7 Mb.
Название Учебно-методическое пособие Томск 2007
страница 2/16
Тип Учебно-методическое пособие
rykovodstvo.ru > Руководство эксплуатация > Учебно-методическое пособие
1   2   3   4   5   6   7   8   9   ...   16

Внимание! В представленной системе содержатся ошибки различного характера (как минимум 3), которые не позволяют применить разработанную систему для управления реальным лифтом с гарантией обеспечения безопасности доставки груза. В качестве задания для самостоятельной работы предлагается выявить эти ошибки и предложить способы по их устранению, а также установить в данную систему ПИ-регулятор тока.


Рис.5

Разработка шаблона программного обеспечения
Ниже будет показано, каким образом с «нуля» можно собрать готовый проект в CCS. Проект при компиляции будет создавать программу, которая заставляет мигать светодиод, подключенный к пину процессора IOPF14. При этом будет показано, как собирать проект для загрузки в ОЗУ и флеш, без использования операционной системы реального времени DSP/BIOS. Создано на основе материала spra928f.pdf и spra958f.zip (исходные файлы), с сайта www.ti.com.

Необходимое оборудование – CCS версии 3.x c DSP/BIOS версии 5.20, плата eZdsp или другая с сигнальным процессором TMS320F2812.

Файлы и подкаталоги будут размещены в каталоге D:\template\ , к данному документу прилагается файл с архивом использованных файлов (полученный в результате выполнения данной инструкции).

Итак, создаем самый простой вариант шаблона – без использования операционной среды реального времени DSP|BIOS, с загрузкой в RAM. Для этого открываем CCS, создаем проект под названием RAM_nonBIOS. Предложенный CCS отдельный каталог для проекта следует удалить, так как большинство файлов для всех проектов будут едины:


Рис.6
Создаем каталоги src (для с-файлов), include (для h-файлов), cmd (для командных файлов распределения памяти), DSP281x_headers (для h-файлов периферии и системных устройств процессора).


Рис.7
Создаем новый исходный файл и сохраняем его в каталог src под именем main.c. Тип файла не выбирать, в названии сохраненного файла вводить имя с расширением. В файл вводим текст программы:

void main()

{

while(1);

}
Особенностью программирования встроенных систем на микроконтроллерах является необходимость распределения памяти программистом. При программировании DSP принято проводить распределение памяти за счет добавления двух
cmd-файлов :

  1. f2812_nonBIOS_ram.cmd – файл распределения памяти программ и памяти данных.

  2. DSP281x_Headers_nonBIOS.cmd – файл указания положения специальных регистров процессора (регистры управления периферией процессора, системные регистры и т.д.)


Помещаем файл f2812_nonBIOS_ram.cmd в каталог cmd. Он состоит из двух частей MEMORY и SECTIONS.

В разделе MEMORY показаны начальные адреса и емкость возможных для использования ресурсов памяти процессора. Карта памяти находится в файле sprs174n.pdf, глава 3.1. Memory map.

В разделе SECTIONS назначается соответствие между указанными ранее блоками памяти и секциями, сгенерированными компилятором при компилировании проекта.

Секции бывают следующие (согласно файлу spru514.pdf, глава 7):

Инициализируемые (с присваиванием начальных значений при загрузке в память):

.text – содержит исполняемый код и константы

.cinit и .pinit – содержит таблицы, в которых находятся значения начальной инициализации переменных (например, инициализируемых в программе как int a=5;)

.const - инициализация констант

.econst – инициализация констант (для языка С)


Рис.8
Неинициализируемые (без присваивания начальных значений при загрузке программы в память):

.bss – глобальные и статические переменные;

.ebss – глобальные и статические переменные (используются в языке C);

.stack – системный стек (для сохранения контекста процессора при вызове процедур);

.sysmem – для динамического выделения памяти, используется malloc-функцией;

.esysmem – для динамического выделения памяти, используется malloc-функцией .

Соответственно неинициализируемые секции нужно располагать в ОЗУ, а инициализируемые – в ОЗУ или ПЗУ.

Помещаем файл DSP281x_Headers_nonBIOS.cmd в каталог cmd. Он также состоит из двух частей: MEMORY и SECTIONS. В этом файле расписано расположение системных регистров и регистров управления периферией. Физическое расположение адресов, а также назначение регистров управления периферией расписано в следующих файлах (расширения pdf), см.таблицу 1:
Таблица 1

SPRU051

TMS320F28x Serial Communication Interface (SCI) Peripheral Reference Guide

SPRU712

TMS320F28x Serial Communication Interface (SCI) Peripheral Reference Guide

SPRU716

TMS320x280x Analog to Digital Converter (ADC) Module Reference Guide

SPRU721

TMS320x280x DSP Inter-Integrated Circuit (I2C) Module Reference Guide

SPRU722

TMS320x280x DSP Boot ROM Reference Guide

SPRU790

TMS320x280x Enhanced Quadrature Encoder Pulse (eQEP) Module Reference Guide

SPRU791

TMS320x280x Enhanced Pulse Width Modulator (ePWM) Module Reference Guide

SPRU807

TMS320x280x Enhanced Capture (eCAP) Module Reference Guide

SPRU059

TMS320F28x Serial Peripheral Interface (SPI) Peripheral Reference Guide

SPRU074

TMS320F28x Enhanced Controller Area Network (eCAN) Peripheral Reference Guide

SPRU060

TMS320F28x Analog-to-Digital Converter (ADC) Peripheral Reference Guide

SPRU095

TMS320F28x Boot ROM Peripheral Reference Guide

SPRU065

TMS320F28x Event Manager (EV) Peripheral Reference Guide

SPRU067

TMS320F28x External Interface (XINTF) Peripheral Reference Guide


Периферийные регистры объединены в структуры по функциональному принципу (менеджер событий, АЦП, SCI и т.д.).

Например, регистры управления аналого-цифровым преобразователем (согласно файлу DSP281x_Adc.h) объединены в структуру ADC_REGS (справа в комментариях подписаны назначения регистров):
struct ADC_REGS {

union ADCTRL1_REG ADCTRL1; // ADC Control 1

union ADCTRL2_REG ADCTRL2; // ADC Control 2

union ADCMAXCONV_REG ADCMAXCONV;

// Max conversions

union ADCCHSELSEQ1_REG ADCCHSELSEQ1;

// Channel select sequencing control 1

union ADCCHSELSEQ2_REG ADCCHSELSEQ2;

// Channel select sequencing control 2

union ADCCHSELSEQ3_REG ADCCHSELSEQ3;

// Channel select sequencing control 3

union ADCCHSELSEQ4_REG ADCCHSELSEQ4;

// Channel select sequencing control 4

union ADCASEQSR_REG ADCASEQSR;

// Autosequence status register

Uint16 ADCRESULT0; // Conversion Result Buffer 0

Uint16 ADCRESULT1; // Conversion Result Buffer 1

Uint16 ADCRESULT2; // Conversion Result Buffer 2

Uint16 ADCRESULT3; // Conversion Result Buffer 3

Uint16 ADCRESULT4; // Conversion Result Buffer 4

Uint16 ADCRESULT5; // Conversion Result Buffer 5

Uint16 ADCRESULT6; // Conversion Result Buffer 6

Uint16 ADCRESULT7; // Conversion Result Buffer 7

Uint16 ADCRESULT8; // Conversion Result Buffer 8

Uint16 ADCRESULT9; // Conversion Result Buffer 9

Uint16 ADCRESULT10; // Conversion Result Buffer 10

Uint16 ADCRESULT11; // Conversion Result Buffer 11

Uint16 ADCRESULT12; // Conversion Result Buffer 12

Uint16 ADCRESULT13; // Conversion Result Buffer 13

Uint16 ADCRESULT14; // Conversion Result Buffer 14

Uint16 ADCRESULT15; // Conversion Result Buffer 15

union ADCTRL3_REG ADCTRL3; // ADC Control 3

union ADCST_REG ADCST; // ADC Status Register

};
Соответственно, каждый такой регистр структуры раскладывается в подструктуру, например:

struct ADCTRL1_BITS { // bits description

Uint16 rsvd1:4; // 3:0 reserved

Uint16 SEQ_CASC:1; // 4 Cascaded sequencer mode

Uint16 SEQ_OVRD:1; // 5 Sequencer override

Uint16 CONT_RUN:1; // 6 Continuous run

Uint16 CPS:1; // 7 ADC core clock pre-scalar

Uint16 ACQ_PS:4; // 11:8 Acquisition window size

Uint16 SUSMOD:2; // 13:12 Emulation suspend mode

Uint16 RESET:1; // 14 ADC reset

Uint16 rsvd2:1; // 15 reserved

};

Таким образом, для возможности обращения к регистру либо целиком как к 16-разрядному значению, либо “побитно” вводится тип объединения union (один и тот же физический адрес расписывается либо как число, либо как отдельные биты):

union ADCTRL1_REG {

Uint16 all;

struct ADCTRL1_BITS bit;

};

К каждому периферийному устройству существует свой заголовочный файл, который необходимо скопировать в папку include (см.рис.9).


Рис.9
Для того чтобы каждый раз не подключать все указанные заголовочные файлы, они все подключаются в файле DSP281x_Device.h.

Реальные экземпляры таких типов объявлены в файле DSP281x_GlobalVariableDefs.c (в котором подключен файл DSP281x_Device.h), при этом файл обеспечивает стыковку между адресами, объявленными в командном файле периферийных регистров, и именами, по которым следует обращаться к этим адресам. Такая стыковка обеспечивается за счет директивы #pragma:
#ifdef __cplusplus

#pragma DATA_SECTION("AdcRegsFile")

#else

#pragma DATA_SECTION(AdcRegs,"AdcRegsFile");

#endif

volatile struct ADC_REGS AdcRegs;
Здесь:

AdcRegsFile – имя секции в командном файле, которая располагается в области памяти ADC.

Обращение к конкретному биту следует делать как:

AdcRegs.ADCTRL1.bit.CONT_RUN = 1.

CCS оснащен системой подсказки полей структур – при наборе имени переменной и постановки знака «.» происходит контекстное открытие меню с полями структуры. Раскрытие контекстного меню может происходить с задержкой 1-10 секунд (особенность CCS), иногда CCS не может найти поля структуры (даже если они реально объявлены), в таком случае он пишет в статусной строке (внизу окна) сообщение «No members found».
Примечание: ключевое слов volatile указывает на то, что данная переменная по своему жестко заданному адресу может быть изменена извне. Это препятствует смещению адреса переменной при запуске режимов оптимизации работы компилятора.
Копируем файл DSP281x_GlobalVariableDefs.c в каталог src.

Добавляем в проект файлы DSP281x_GlobalVariableDefs.c, main.c. Добавляем в проект файлы DSP281x_Headers_nonBIOS.cmd и f2812_nonBIOS_ram.cmd.

В опциях окна Build Options необходимо выставить параметры настройки компоновщика согласно рисунку (поля Output Module, Include Libraries, Stack Size, см.рис.10).

В обязательном порядке необходимбо добавить путь “..\include” в Preprocessor (найти опцию в окне).


Рис.10
Подключение библиотеки rts2800_ml.lib (см.рис.10, нижнее поле) необходимо для определения точки запуска программы – нулевого прерывания (прерывания после RESET или подачи питания) _c_int00 – специальной метки в программе.

Для работы процессора необходимо сконфигурировать все системные и необходимые периферийные регистры.

Для конфигурации системных регистров (частота деления кварца, подача частоты на периферийные устройства и т.д.) копируем SysCtrl.c в каталог src и подключаем его в проект.

Добавляем вызов InitSysCtrl(); в код программы (самое начало), а также ссылку на внешнее объявление extern void InitSysCtrl(void);
Существует возможность выполнять определенную часть кода не из флеш-памяти, а из ОЗУ для увеличения быстродействия выполнения критических процедур (быстродействие программы в ОЗУ может быть увеличено в 2 раза, так как максимальная тактовая частота при работе из флеш-памяти не превышает 75 Мгц).

Для этого применяется секция secureRamFuncs, находящаяся во флеш, но при старте программы перегружающаяся в ОЗУ памяти программ, соответственно необходимо указать начальный загрузочный адрес, конечный, адрес точки входа в критическую процедуру.
Добавляем в main.c ссылку на внешнее объявление

//---------------------------------------------------------------------------

// Global symbols defined in the linker command file

//

extern Uint16 secureRamFuncs_loadstart;

extern Uint16 secureRamFuncs_loadend;

extern Uint16 secureRamFuncs_runstart;
а в текст программы :

// Section secureRamFuncs contains user defined code that runs from CSM secured RAM

memcpy( &secureRamFuncs_runstart,

&secureRamFuncs_loadstart,

&secureRamFuncs_loadend –

&secureRamFuncs_loadstart

);
/*** Initialize the FLASH ***/

InitFlash(); // Initialize the

//FLASH (FILE: SysCtrl.c)
Процедура memcpy (memory copy) осуществляет копирование по адресу &secureRamFuncs_runstart кода с адреса &secureRamFuncs_loadstart длиной &secureRamFuncs_loadend - &secureRamFuncs_loadstart (значок & - признак адреса переменной ).

Связь с реальными адресами находится в командном файле распределения памяти f2812_nonBIOS_ram.cmd:
secureRamFuncs : LOAD = H0SARAM, PAGE = 0

/* Used by InitFlash() in SysCtrl.c */

RUN = L0SARAM, PAGE = 0

LOAD_START(_secureRamFuncs_loadstart),

LOAD_END(_secureRamFuncs_loadend),

RUN_START(_secureRamFuncs_runstart)
Как видим, загрузка некоторой части кода происходит в H0SARAM, а выполнение в L0SARAM.

В случае наличия внешней памяти необходимо сконфигурировать интерфейс внешней памяти. Для этого добавляем в код инициализации вызов InitXintf(). Сама процедура находится в файле Xintf.c – копируем этот файл в каталог src и добавляем его в проект.
1   2   3   4   5   6   7   8   9   ...   16

Похожие:

Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие Рекомендовано методической комиссией...
Методы молекулярной диагностики: Учебно-методическое пособие. Авторы: А. Д. Перенков, Д. В. Новиков, С. Г. Фомина, Л. Б. Луковникова,...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие Елабуга 2016 ббк 74. 58 Учебно-методическое...
Методическое пособие предназначено для студентов 1 курса высших учебных заведений неязыковых специальностей
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие по клинической фармакологии Оренбург, 2007
Учебно-методическое пособие предназначено для самостоятельной работы студентов медицинских вузов, обучающихся по специальности «Лечебное...
Учебно-методическое пособие Томск 2007 icon Методическое пособие Саратов 2008 г. Организация комплексной системы...
Методическое пособие предназначено для руководителей и преподавателей- организаторов обж образовательных учреждений
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие
...
Учебно-методическое пособие Томск 2007 icon Организация и технология документационного обеспечения управления учебно-методическое пособие
...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие «Учебные игры и ситуационные задачи в...
Учебные игры и ситуационные задачи в гинекологии: Учебно-ме­то­ди­чес­кое пособие / Под ред. А. А. Радионченко. – Томск: Сибгму,...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие Казань 2010 Печатается по рекомендации...
Учебно-методическое пособие по курсу «Организационное поведение» /Д. М. Сафина. – Казань: Казанский (Приволжский) федеральный университет;...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие. Новосибирск, 2006
Учебно-методическое пособие предназначено инструкторам детско-юношеского и спортивного туризма с целью повышения уровня знаний и...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие к лабораторным занятиям по курсу «Основы кристаллооптики»
Практическое руководство по работе с поляризационным микроскопом для исследования петрографических объектов: Учебно-методическое...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие организация инженерной защиты населения
Учебно-методическое пособие разработано применительно к Программе обучения слушателей на курсах гражданской защиты Копейского городского...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие Санкт-Петербург 2007 Автор: Черемисов...
Учебно-методическое пособие предназначено для подготовки руководящего состава, специалистов гочс и пб, руководителей служб, аварийно-спасательных...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие для студентов пм. 04.(07.) «Выполнение...
Учебно-методическое пособие составлено в соответствии с требованиями Федерального Государственного образовательного стандарта по...
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие санкт-Петербург 2009г. Автор: Г. П. Подвигин...
Учебно-методическое пособие предназначено для должностных лиц, специалистов го и рсчс организаций
Учебно-методическое пособие Томск 2007 icon Учебно-методическое пособие Кемерово 2015 г. Согласовано: кроо «памск»
Учебно-методическое пособие предназначено для студентов стоматологического факультета, гигиенистов стоматологических со средним медицинским...
Учебно-методическое пособие Томск 2007 icon Федеральное государственное образовательное учреждение Высшего профессионального...
Вакуумный практикум: Учебно-методическое пособие.  Ростов-на-Дону, 2008.  55с

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск