реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AT91RM9200 ST interrupt, как заставить его работать?
vvj
сообщение Sep 27 2005, 09:21
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 46
Регистрация: 20-01-05
Пользователь №: 2 090



захотел воспользоваться embedded srvc'ом для XModem'а
сделал как в loder'е для UBoot'а:
/* Init of ROM services structure */
pAT91 = AT91C_ROM_BOOT_ADDRESS;
/* Tempo Initialization */
pAT91->OpenCtlTempo(&ctlTempo, (void *) &(pAT91->SYSTIMER_DESC));
ctlTempo.CtlTempoStart((void *) &(pAT91->SYSTIMER_DESC));
/* Xmodem Initialization */
pXmBuffer = pAT91->OpenSBuffer(&sXmBuffer);
pSvcXmodem = pAT91->OpenSvcXmodem(&svcXmodem, (AT91PS_USART)AT91C_BASE_DBGU, &ctlTempo);
pAT91->OpenPipe(&xmodemPipe, pSvcXmodem, pXmBuffer);
/* System Timer initialization */
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, /* AIC base address */
AT91C_ID_SYS, /* System peripheral ID */
AT91C_AIC_PRIOR_HIGHEST, /* Max priority */
AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, /* Level sensitive */
(void(*)())AT91F_ST_HANDLER); // (!)так объявлен этот аргумент(указатель на обработчик) в lib_AT91RM9200.h

/* Enable ST interrupt */
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
AT91F_DBGU_Printk(CLRSCREEN);
AT91F_DBGU_Printk("n\r"LOADER_VERSION" ("__DATE__ " - " __TIME__ ")\n\n\r");
AT91F_DBGU_Printk("XMODEM: Download U-BOOT\n\r");
xmodemPipe.Read(&xmodemPipe, (char *)AT91C_UBOOT_BASE_ADDRESS, AT91C_UBOOT_MAXSIZE, AT91F_XmodemProtocol, 0);
while(XmodemComplete !=1);
AT91F_DBGU_Printk("\n\rU-Boot downloaded successfully\n\r");
пример для MULTI2000 и прерыванию там назначается функция AT91F_ST_ASM_HANDLER - завёрнутая в ассемблер AT91F_ST_HANDLER,
а я пока просто перед декларацией AT91F_ST_HANDLER поставил __irq __arm.
XModem 'C' не шлёт,и вообще я посмотрел обработчик не вызывается...
регистр AT91C_ST_CRTR обновляется (раз в две секунды)
Следовательно прерывание с таймера отсутствует?
Go to the top of the page
 
+Quote Post
dch
сообщение Sep 27 2005, 13:08
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(vvj @ Sep 27 2005, 12:21)
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);

Еще прерывания I&F надо разрешить. может делаться в стартовом коде, написанном на ассемблере.
В u-boot прерывания вообще запрещены. Вся работа идет по опросу.
Go to the top of the page
 
+Quote Post
vvj
сообщение Sep 27 2005, 14:02
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 46
Регистрация: 20-01-05
Пользователь №: 2 090



Цитата(dch @ Sep 27 2005, 16:08)
Еще прерывания I&F надо разрешить. может делаться в стартовом коде, написанном на ассемблере.

Я конечно разберусь, но буду чувствовать себя уверенней, если увижу заветную строчку в Вашем исполнении rolleyes.gif
Go to the top of the page
 
+Quote Post
dch
сообщение Sep 27 2005, 15:23
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Перед переходом на C-ый код:
#define ARM_MODE_SYS 0x1F /* system mode */
#define F_BIT 0x40 /* FIQ bit */
/* enable only IRQ's and not FIQ's */
msr cpsr_c, #(ARM_MODE_SYS | F_BIT)
Если же хотитесь остаться в SYS mode.

Нормальная утилита загрузки образа череp Xмодем и записи в параллельную flash, DataFlash:


http://www.ucrouter.ru/download\AT91RM9200-29lv160d.tgz

Строчки взяты из:
AT91RM9200-29lv160d\gnu\cstartup_gnu_ram

В утилите есть, нужные Вам startup код, загрузка через x модем, поддержка GCC.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Sep 27 2005, 18:53
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Кропаю тут мегалоадер с выбором варианта загрузки через DBGU, другие USART и очень хотелось бы с USB. XModem через DBGU запустил. Прикрутил к проекту атмеловский BasicUSB - теперь в системе появляется модем с COM-портом, к которому могу подключиться терминалом. А как теперь XModem через USB пустить. В даташите написано, что можно, а вот как что-то не очень.
Go to the top of the page
 
+Quote Post
dch
сообщение Sep 29 2005, 13:26
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(VladislavS @ Sep 27 2005, 21:53)
что можно

c ftp взять утилиту заргузки, запускаему на хосте. Все должно работать.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Sep 29 2005, 14:16
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Через его родной BootLoader по протоколу DFU не проблема - загружается. Я хотел XModem через USB пропустить.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016