Я как новичок столкнулся со следующими проблемами:
1. Какое ПО лучше использовать;
2. Чем и КАК прошивать.
3. Создание проекта с нуля по шагам (например в IAR) было бы ОЧЕНЬ полезно;
4. Настройка файла StartUp.s, его подключение к проекту, я вот написал свой Startup (если нужно код выложу), но IAR его не воспринял из-за своего какого-то внутреннего компилятора ассемблера.
5. Куда лить прошивку - там с этими памятями вообще труба (запутался в конец), обязательно про REMAP.
6. Загрузка всяких BootStrap и U-Boot (и что это такое).
7. Проект дрыганья ногами (интересно, но чтобы дернуть ногой ARM-у оказывается нужно порядка 20 машинных циклов);
8. Настройка PLL;
9. MMU и с чем его едят, а также его настройка.
10 Далее Таймеры, прерывания, UART и т.д.
И Коды программ лучше писать для таких как я (дураков и чайников), например:
- Код: Выделить всё
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Функция задержки
//------------------------------------------------------------------------------
void wait(int delay)
{
for (int i = 0; i < delay; i++)
{;}
}
/* Главная функция программы */
int main(void)
{
AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймара
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOB); // Разрешение тактирования PIO A
AT91C_BASE_PIOB->PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB->PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB->PIO_OER = WORKMASK; // Установка вывада в качестве выходад
while(1)
{
AT91C_BASE_PIOB->PIO_SODR = WORKMASK; // Установка вывода в единицу
wait(0x10000); // Задержка
AT91C_BASE_PIOB->PIO_CODR = WORKMASK; // Сброс вывода в ноль
wait(0x10000); // Задержка
}
}
P.S. Я не слишком много написал? Просто наболело как-то=)))