You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
phreakingПроцесс прошивкиОтладки для arm9: левая под str912fw44, правая под at91rm9200 (на ней линух)AT91PS_PIO m_pPio= AT91C_BASE_PIOA;int main(){//Init frequencyInitFrec();//Init ledsInitPeriphery();// loop foreverwhile(1){m_pPio->PIO_CODR= BIT18; //set reg to 0 (led2 on)m_pPio->PIO_SODR= BIT17; //set reg to 1 (led1 off)Delay(800000); //simple delaym_pPio->PIO_CODR= BIT17; //set reg to 0 (led1 on)m_pPio->PIO_SODR= BIT18; //set reg to 1 (led2 off)Delay(800000);//simple delay}}Для тех, кто знаком с Си, не составит труда понять принцип работы этогоприложения. Даже если некоторые строки и вызывают вопросы, то комментариидают представление об их назначении.Установка частоты тактирования процессора — вызов InitFrec(). Кодсамой функции находится в файле system.c. Детально разбирать его покане имеет смысла. Надо понять, как работает блок тактирования контроллера.Блок достаточно большой и приводить (или даже переводить) его описаниеиз даташита не будем. Вот краткое описание того, что делает эта функция:• Отключает watchdog. Это такой блок, который следит за тем, чтобыпроцессор не завис. Приложение должно не реже определенного интерваласбрасывать watchdog, иначе это расценивается как зависание илизацикливание процессора и подается сигнал сброса. В нашем примереwatchdog не используется и поэтому отключается. Но считается хорошимтоном использовать все заложенные возможности для повышения надежности.• Запуск кварцевого генератора (сам кварцты можешь найти на плате — металлическая«лодочка» с надписью 18.432). Кварц генерируетна частоте 18.432 МГц. Это далеко не предельнаячастота функционирования процессора.• Запуск PLL (ФАПЧ). Не вдаваясь в подробности,скажу, что на выходе PLL мы можем получить частоту кварцевогогенератора, умноженную и поделенную на любые целые коэффициенты(Fpll = Focs * M / D). Конкретно в этой программе числа подобраны так, чтобыполучить на выходе PLL-частоту примерно 96 МГц (почему — я объясню,когда мы начнем знакомиться с блоком USB)• После установления частоты PLL ядро переключается на тактированиеот PLL и включается деление на 2 (ядро теперь работает на частоте 48 МГц).Кстати, сразу после сброса ядро работает от встроенного в процессоргенератора с частотой 22-42 КГц.Далее идет настройка выводов процессора. Функция InitPeriphery():AT91PS_PIO p_pPio= AT91C_BASE_PIOA;AT91PS_PMC p_pPMC= AT91C_BASE_PMC;void InitPeriphery(void) {/**** LED BUTTONS ****///enable the clock of the PIOp_pPMC->PMC_PCER= 1 PIO_PER |= BIT17;//Enable PA17p_pPio->PIO_OER |= BIT17;//Configure in Outputp_pPio->PIO_SODR |= BIT17;//set reg to 1//LED 2//configure the PIO Lines.. corresponding to LED2p_pPio->PIO_PER |= BIT18;//Enable PA18p_pPio->PIO_OER |= BIT18;//Configure in Outputp_pPio->PIO_SODR |= BIT18;//set reg to 1}116xàêåð 07 /115/ 08