Решил прикрутить к своей программе протокол x-modem и управление программой через hyperterminal. Взял за основу romboot от Atmel-a, который я уже сам компилировал с помощью gcc под линуксом (ubuntu). Программа к которой хочу прикрутить x-modem делалась в ИАР-е, поэтому создал проект в ИАР 5.11, добавил файлы romboot-а, поправил c_startup.s, asm-обработчик прерывания. Проект компилируется, но смущают восемь warning-ов на файл embedded_services.h на структуры в самом конце этого файла где написаны const. Ладно - под линуксом работало и здесь вроде бы тоже должно. Заливаю по X-modem-у в контроллер AT91RM9200. Не определяется флеш. Начинаю копать покомандно с выводом ошибок через printf:
Код
int main(void)
{
AT91PS_Buffer pXmBuffer;
AT91PS_SvcComm pSvcXmodem;
AT91S_SvcTempo svcUbootTempo; // Link to a AT91S_Tempo object
unsigned int AddressToDownload, SizeToDownload;
unsigned int DeviceAddress = 0;
volatile int i = 0;
char command = 0;
unsigned int crc1 = 0, crc2 = 0;
volatile int device;
int NbPage;
stdin = fopen(0, at91_dbgu_getc);
stdout = fopen(at91_dbgu_putc, 0);
pAT91 = AT91C_ROM_BOOT_ADDRESS;
// Tempo Initialisation
pAT91->OpenCtlTempo(&ctlTempo, (void *) &(pAT91->SYSTIMER_DESC));
//if (!pAT91->OpenCtlTempo(&ctlTempo, (void *) &(pAT91->SYSTIMER_DESC))) \
AT91F_DBGU_Printk("\n\rOpenCtlTempo(): OpenCtlTempo initialized\n\r"); //OK
ctlTempo.CtlTempoStart((void *) &(pAT91->SYSTIMER_DESC));
//if ((ctlTempo.CtlTempoStart((void *) &(pAT91->SYSTIMER_DESC)))== 2 ) \
AT91F_DBGU_Printk("\n\rCtlTempoStart returns 2\n\r"); //OK
// Attach the tempo to a tempo controler
//ctlTempo.CtlTempoCreate(&ctlTempo, &svcUbootTempo);
if ((ctlTempo.CtlTempoCreate(&ctlTempo, &svcUbootTempo)) == 1) AT91F_DBGU_Printk("\n\rthe software tempo wasn't created\n\r");\
else AT91F_DBGU_Printk("\n\rthe software tempo was created\n\r");
// svcUbootTempo.Start(&svcUbootTempo,100,0,NULL,NULL);
На ctlTempo.CtlTempoCreate(&ctlTempo, &svcUbootTempo) выводит ошибку.
Прошу поделиться опытом применения встроенного ПО контроллера. Чего не правильно уже понять не могу.
В приложении мой проект для ИАРа.
Так же не работает кроме SPI-флешки X-modem (имеется ввиду его реализация в бинарнике romboot-a: его функции: он не принимает бинарник).
Сообщение отредактировал Antokha - Mar 30 2011, 16:21