Вопросы. Возможно ли построить технологию отладки программ для SDK 1.1, включающую загрузку программы в стенд и ее реальное выполнение, на базе программного обеспечения фирмы Keil ?
В частности, можно ли в качестве загрузчика использовать программу t167b ?
Можно ли написать bat-файл, который включает запуск Keil (Keil сделает HEX-файл) и программы t167b (загрузит HEX-файл в стенд) ?
Где найти подробную документацию на программу t167b, такую, чтобы точно понять ее идеологию и синтаксис команд (близкую по подробности документации фирмы Keil)?
NEW_M_A_N писал(а):Каким образом мне заставить ассемблер понимать эти символьные имена регистров? С dpp я разобрался... а вот с остальными доехать не могу. Подскажите.
В стенде SDK-1.1 взаимодействие с периферией осуществляется с помощью микросхемы ПЛИС MAX8064 (MAX8128), которая служит расширителем портов. Благодаря такой реализации стенд имеет 7 дополнительных регистров, отображаемых во внешнее адресное пространство контроллера.
Поскольку регистры-расширители отображены на начало 8-ой страницы внешней памяти стенда (адреса 080000H:080007H), то для доступа к ним необходимо переключиться на 8-ю страницу. Для переключения страниц памяти в ADuC812 предусмотрен регистр DPP, в который помещается номер текущей активной страницы. Далее необходимо определить адрес внутри страницы регистра-расширителя с которым предполагается работа(для этих целей следует воспользоваться указателем unsigned char xdata* pointer).
В синтаксисе C51 (компилятор SDCC) возможна следующая реализация описанного драйвера
#include "aduc812.h" //стандартный заголовочный файл ADuC812
#define MAXBASE 8 //номер страницы, в которую отображены порты-регистры ПЛИС
//определение соответствия принятых символьных обозначений и адресов
#define KB 0x0
#define DATA_IND 0x1
#define EXT_LO 0x2
#define EXT_HI 0x3
#define ENA 0x4
#define C_IND 0x6
#define SV 0x7
//функция-драйвер для записи информации в требуемый регистр-расширитель
//Вход: pointer - адрес порта-регистра (можно воспользоваться определёнными выше константами)
//Вход: val - записываемое значение
void write_max(unsigned char xdata* pointer, unsigned char val) {
unsigned char oldDPP=DPP;
DPP=MAXBASE;
*pointer=val;
DPP=oldDPP;
}
//функция-драйвер для чтения информации из требуемого регистра-расширителя
//Вход: pointer - адрес порта-регистра (можно воспользоваться определёнными выше константами)
//Выход: Считанный байт информации
unsigned char read_max(unsigned char xdata* pointer) {
unsigned char oldDPP=DPP, val=0;
DPP=MAXBASE;
val=*pointer;
DPP=oldDPP;
return val;
}
NEW_M_A_N писал(а):Ну C я слава богу тоже знаю. но мне кажется контроллеры программировать на таких тяжелых языках это изврат.=)) Не в обиду. Ладно. разберусь как нибудь...=) Спасибо и на этом. хоть адреса для макроопределений теперь знаю.=)
kluchev писал(а):NEW_M_A_N писал(а):Производительность современных микроконтроллеров довольно высока, их стоимость низка, а вот стоимость разработки ПО очень высока. Кроме того, сроки разработок сильно поджимают. Исходя из этого использование ассемблера для программирования - не оправданное ничем расточительство.
NEW_M_A_N писал(а):Of top: А ваш коллега что то не торопиться отвечать. По ходу мне придется херить все что в ПЛИС есть, а потом самому все востанавливать с необходимыми мне изменениями.
Соратник слонопотама писал(а):NEW_M_A_N писал(а):сначала неплохо бы проверить свою почту
NEW_M_A_N писал(а):Ну что касается производственных масштабов возможно.
SHR писал(а):Можно использовать компилятор SDCC
sdcc file.c -o file.hex --code-loc 0x2100 --xram-loc 0x6000 --stack-loc 0x80
hb166 file.hex file.bin
lfile load.m3p
make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Чаще всего это компиляция исходного кода в объектные файлы и последующая компоновка в исполняемые файлы или библиотеки.
Утилита использует специальные make-файлы, в которых указаны зависимости файлов друг от друга и правила для их удовлетворения. На основе информации о времени последнего изменения каждого файла make определяет и запускает необходимые программы.
9600 openchannel /dev/ttyS0
9600 openchannel com<номер com порта к которому подключен SDK>
В общем и целом если у вас есть трудности в понимании работы make, то можно обойтись без него. Можно заменить его .bat файлом для сборки проекта.
А какие команды .bat файл должен додержать?
С помьщью SDCC можно компилировать ассемблеровский код??
Babylon писал(а):Выложите пожалуйста кому не жалко для образца программы для СДК 1.1!!! Которая что нито выводит на ЖКИ или например светодиоды мигают!?
Не могу сам разобраться как это запрограммировать(((
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1