Цитата(aaarrr @ Sep 30 2007, 00:31)

UPD:
Посмотрел мануал - дурак я, оказывается. В случае ldmia sp!, {r0}^, это самое "^" не значит ничего, т.к. r0 не банкируется, а без PC в списке восстановление CPSR не происходит. Так что "^" можно просто убрать.
А людям, пишущим, такой код с такими глубокомысленными комментариями следует выдернуть руки из жопы, да.
Теперь работает. Кроме удаления "^" ещё:
"PRESERVE8" перед "AREA reset, CODE, READONLY" (выравниваем по 8 байт, иначе вызвать сишную функцию не выйдет)
дописать неопределившийся при линковке символ куда-нибудь в startup.s:
EXPORT __user_initial_stackheap
__user_initial_stackheap
BX LR ; (просто тупой возврат, так как не знаю что тут делать)
И ещё - снята галка Use MicroLIB, и Code Generation в ARM-Mode
От так вот.
Вроде пошло..
Теперь проблема с DBGU.. Не пишет в него.. Читаю хайпер терминалом на писи. В классическом исполнении, с прошивкой во Flash всё нормально, DBGU_printf("Hello, xPloid!\n\r"); отрабатывает )
Так понимаю что-то не проинициализировано при старте с ROM SAM-BA в периферии, что не ндаёт поднимать DBGU..
Из инициализации у меня только:
void DBGU_Init()
{
AT91F_DBGU_CfgPIO();
AT91F_US_Configure(
(AT91PS_USART)AT91C_BASE_DBGU,
AT91B_MASTER_CLOCK,
AT91C_US_ASYNC_MODE,
115200,
0 );
AT91F_US_EnableTx((AT91PS_USART)AT91C_BASE_DBGU);
AT91F_US_EnableRx((AT91PS_USART)AT91C_BASE_DBGU);
}
Может что-то вроде включения клоков на PIO требуется?
Типа AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91D_ID_PIO_LED); для светодиодов EK.
спустя 3 мин..
да, добавил в инициализацию AT91F_DBGU_CfgPMC(); не помогло..
Сообщение отредактировал SantaQAWSED - Sep 29 2007, 20:56