12.07.2015 Views

Взлом GSM - Xakep Online

Взлом GSM - Xakep Online

Взлом GSM - Xakep Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!