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

 
 
> ARM, забегая вперёд...
Zelepuk
сообщение Nov 11 2010, 13:58
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Есть цель: научится писать простые приложения (управление ЖК, использование АЦП, вывод через UART строки) для ARM (at91SAM9260 в частности)

Знания: базовые навыки Си-программировния.

В связи с отсутствием "разжёванной" информации для ARM, я начал практиковаться с AVR (ну для этих то инфы просто море!!!!)

Есть первые результаты. По сути ничего сложного.

Но!

Объясните чем отличается программа на AVR от программы для ARM.

Вот для AVR ожно расписать так:

Выставляем нужные биты в регистры -> используя интринсики разрешаем прерывания -> и вперёд в главный цикл ногами дрыгать!!!!

А в ARM как?
Насколько я понял нужно учесть кучу параметров, так как ARM стартует на низкой частоте, да ещё и внешнюю SD-RAM инициализировать надо и... да мало ли чего ещё.

Кто-нибудь может просто по шагам расписать принцип дрыгания ногами для ARM. Нужно учесть что прога лежит в Dataflash, потом должна запускаться из внешней SD-RAM. Ну Частота тактовая должна быть нормальная (Мегагерцы). Может я чего упустил....

Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Dec 7 2010, 10:18
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Код
        MODULE  ?cstartup

       ;; Forward declaration of sections.
        SECTION PROGRAM_DATA:CODE
        SECTION IRQ_STACK:DATA:NOROOT(3)
        SECTION FIQ_STACK:DATA:NOROOT(3)
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        PUBLIC  __vector
        PUBLIC  __vector_0x14
        PUBLIC  __iar_program_start
        EXTERN  Undefined_Handler
        EXTERN  SWI_Handler
        EXTERN  Prefetch_Handler
        EXTERN  Abort_Handler
        EXTERN  IRQ_Handler
        EXTERN  FIQ_Handler

        ARM

__vector:
       ; All default exception handlers (except reset) are
       ; defined as weak symbol definitions.
       ; If a handler is defined by the application it will take precedence.

;      ldr     PC,Reset_Addr          ; To allow remap, a relative branch is required !
    B       __iar_program_start
        ldr     PC,Undefined_Addr      ; Undefined instructions
        ldr     PC,SWI_Addr            ; Software interrupt (SWI/SVC)
        ldr     PC,Prefetch_Addr       ; Prefetch abort
        ldr     PC,Abort_Addr          ; Data abort
__vector_0x14:
        DCD     SFE(PROGRAM_DATA)      ; End address of all const and text sections.

;       ldr     PC,IRQ_Addr            ; IRQ
        ldr     PC, [PC,# -0xF20]       ;AIC direct
        ldr     PC,FIQ_Addr            ; FIQ

        DATA

Reset_Addr:     DCD   __iar_program_start
Undefined_Addr: DCD   Undefined_Handler
SWI_Addr:       DCD   SWI_Handler
Prefetch_Addr:  DCD   Prefetch_Handler
Abort_Addr:     DCD   Abort_Handler
IRQ_Addr:       DCD   IRQ_Handler
FIQ_Addr:       DCD   FIQ_Handler

__vector_end:

; --------------------------------------------------
; ?cstartup -- low-level system initialization code.
;
; After a reser execution starts here, the mode is ARM, supervisor
; with interrupts disabled.
;


        SECTION .text:CODE:NOROOT(2)

        EXTERN  ?main
        REQUIRE __vector

        ARM

__iar_program_start:

/**********************************************************************
* ?CSTARTUP
*
* Execution starts here.
* After a reset, the mode is ARM, Supervisor, interrupts disabled.
*/
?cstartup:

        mvn     r0, #0xFF        ;remap here
        bic     r0,r0, #0x1100
        mov     r1, #0x03
            str     r1, [r0, #+0]
        
        mrc     p15, 0, r0, c1, c0,0               ; read cp15 control register (cp15 r1) r0
        ldr     r3, =0xC0001085                    ; Disable Cache, Disable MMU
        ldr     r4, =0x40005004                    ; Round Robin replacement 0x40004000
        bic     r0, r0, r3
        orr     r0, r0, r4
        mcr     p15, 0, r0, c1, c0,0               ; write cp15 control register (cp15 r1)
;--------------------------------------------------------------------------------
    

;--------------------------------------------------------------------------------
; Initialize the stack pointers.
       ;; Set up the interrupt stack pointer.

        msr     cpsr_c,#0xd2           ; Change mode to IRQ mode, FIQ and IRQ disabled
        ldr     sp, =SFE(IRQ_STACK)    ; End of IRQ_STACK
        bic     sp,sp,#0x7             ; Make sure SP is aligned on 8 byte boundary
    
       ;; Set up the fast interrupt stack pointer.

        msr     cpsr_c,#0xd1           ; Change mode to FIQ mode, FIQ and IRQ disabled
        ldr     sp, =SFE(FIQ_STACK)    ; End of FIQ_STACK
        bic     sp,sp,#0x7             ; Make sure SP is aligned on 8 byte boundary

       ;; Set up the normal stack pointer.

        msr     cpsr_c,#0xdf           ; Change mode to SYS mode, FIQ and IRQ disabled
   ;     msr     cpsr_c, #0xd3
         ldr     sp, =SFE(CSTACK)       ; End of CSTACK
         bic     sp,sp,#0x7             ; Make sure SP is aligned on 8 byte boundary

        ;msr     cpsr_c,#0xd2

; Jump to startup code in library
        ldr     r0,=?main
        bx      r0

        LTORG
        END

; ***** EOF **********************************************************


Это работающее. Обработчики прерываний IRQ берутся прямо из AIC.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   ARM   Nov 11 2010, 13:58
- - DRUID3   Цитата(Zelepuk @ Nov 11 2010, 15:58) А в ...   Nov 11 2010, 17:31
|- - Zelepuk   Цитата(DRUID3 @ Nov 11 2010, 20:31) ...   Nov 12 2010, 05:18
|- - DRUID3   Цитата(Zelepuk @ Nov 12 2010, 07:18) бред...   Nov 12 2010, 15:13
|- - Zelepuk   Цитата(DRUID3 @ Nov 12 2010, 18:13) Я кон...   Nov 12 2010, 15:52
- - AlexandrY   Цитата(Zelepuk @ Nov 11 2010, 15:58) Кто-...   Nov 11 2010, 18:46
- - DpInRock   АРМ - это всего лишь система команд. Архитектура п...   Nov 11 2010, 22:52
- - Сега   Помойму сейчас уже нет разницы под что писать. Тем...   Nov 12 2010, 08:31
|- - AlexandrY   Цитата(Сега @ Nov 12 2010, 10:31) Помойму...   Nov 12 2010, 19:10
|- - Stas-   Цитата(AlexandrY @ Nov 13 2010, 01:10) По...   Nov 15 2010, 07:44
|- - demiurg_spb   MSP430, AVR32, DSPIC... но всё это сильно в сторон...   Nov 15 2010, 08:58
|- - Lmx2315   ..посмотрите в сторону STM32 ..сам я не программи...   Nov 15 2010, 08:59
|- - MrYuran   Цитата(Lmx2315 @ Nov 15 2010, 11:59) ..са...   Nov 15 2010, 09:17
- - DpInRock   Что за ерунда. Рекомендую. Поизучайте какой-нибудь...   Nov 15 2010, 10:35
|- - MrYuran   Цитата(DpInRock @ Nov 15 2010, 13:35) А в...   Nov 15 2010, 10:58
- - radistka   возвращаясь к первому сообщению, кто-нибудь может ...   Nov 15 2010, 12:22
- - DpInRock   1. Главу Boot Program пересказывать не имеет смысл...   Nov 15 2010, 14:56
- - Zelepuk   Сложновато-сложновато, всё равно(( Например подё...   Nov 15 2010, 17:33
|- - SII   Цитата(Zelepuk @ Nov 15 2010, 20:33) Слож...   Nov 17 2010, 18:18
|- - Zelepuk   Цитата(SII @ Nov 17 2010, 21:18) В общем-...   Nov 18 2010, 10:12
||- - tturist   Я тут сильно извиняюсь... По моему скромному мнени...   Nov 19 2010, 14:45
||- - sergeeff   Цитата(tturist @ Nov 19 2010, 17:45) Я ту...   Nov 19 2010, 17:48
||- - TigerSHARC   Цитата(tturist @ Nov 19 2010, 17:45) Я ту...   Nov 20 2010, 11:55
|- - muravei   Цитата(SII @ Nov 17 2010, 21:18) 2. Сброс...   Dec 9 2010, 10:03
- - radistka   Boot Program читан, FlashLoaderGuide перечитан, в...   Nov 15 2010, 18:20
|- - Zelepuk   Цитата(radistka @ Nov 15 2010, 21:20) Boo...   Nov 15 2010, 18:40
- - DpInRock   Если читан и перечитан, то какие могут быть ...   Nov 15 2010, 20:20
- - andrewlekar   В пункте 3 следует читать: 3. После чего грузим в ...   Nov 16 2010, 05:30
- - radistka   ну черт знает, так и делаю, но когда в SDRAMном пр...   Nov 16 2010, 06:08
|- - sergeeff   Цитата(radistka @ Nov 16 2010, 10:08) ну ...   Nov 16 2010, 16:24
- - DpInRock   Кэт, программка может виснуть по сотне причин. Ту...   Nov 16 2010, 06:17
|- - dimka76   Цитата(DpInRock @ Nov 16 2010, 09:17) (В ...   Nov 16 2010, 13:57
- - DpInRock   ЦитатаВ примерах это делается для организации влож...   Nov 16 2010, 14:30
- - DpInRock   Вообще, лучше проверять местонахождение программы ...   Nov 16 2010, 22:23
|- - sergeeff   Цитата(DpInRock @ Nov 17 2010, 02:23) Ибо...   Nov 17 2010, 07:15
- - DpInRock   Прочитайте раздел даташита о последовательности де...   Nov 17 2010, 11:22
- - sergeeff   Ну взяла бы уважаемая радистка и сделала в своей п...   Nov 17 2010, 14:08
- - esaulenka   tturist, тренируйте фантазию У нас есть железка ...   Nov 19 2010, 17:03
- - DpInRock   Цитатаа с вопроса "какую операционную систему...   Nov 19 2010, 19:35
- - sergeeff   ЦитатаА если вам захотелось АРМ9 с ММУ залудить - ...   Nov 20 2010, 13:52
- - NIKOLASIUS   Доброго времени суток! Может быть кто-нибудь с...   Nov 22 2010, 09:07
- - radistka   Значит так, стала запускаться моя программа с помо...   Nov 24 2010, 06:54
|- - sergeeff   Цитата(radistka @ Nov 24 2010, 09:54) Зна...   Nov 24 2010, 07:33
- - radistka   спрашиваю, потому что не понимаю, что в него еще н...   Nov 24 2010, 09:02
|- - sergeeff   Цитата(radistka @ Nov 24 2010, 12:02) спр...   Nov 24 2010, 16:47
- - DpInRock   Все функции __ramfunc перекачиваются в SRAM в проц...   Nov 24 2010, 18:27
|- - sergeeff   Цитата(DpInRock @ Nov 24 2010, 21:27) Все...   Nov 25 2010, 09:55
|- - toweroff   Цитата(sergeeff @ Nov 25 2010, 12:55) В п...   Nov 30 2010, 10:34
- - ZED   Прошу прощения, может вы мне ответите на вопрос, к...   Nov 30 2010, 07:36
- - radistka   sergeeff, попробовала копировать свой нестандартны...   Dec 1 2010, 06:24
|- - _4afc_   Цитата(radistka @ Dec 1 2010, 09:24) я во...   Dec 6 2010, 16:05
|- - sergeeff   Цитата(radistka @ Dec 1 2010, 09:24) serg...   Dec 6 2010, 16:25
|- - radistka   Цитата(sergeeff @ Dec 6 2010, 19:25) Вы м...   Dec 7 2010, 08:25
|- - sergeeff   Цитата(radistka @ Dec 7 2010, 11:25) да, ...   Dec 7 2010, 09:21
- - diglook   Извините может не в тему В моем проекте IAR рань...   Dec 6 2010, 17:12
- - DpInRock   Осталось только сформулировать по-русски. "ПР...   Dec 7 2010, 08:49
|- - radistka   Цитата(DpInRock @ Dec 7 2010, 11:49) Прог...   Dec 7 2010, 12:12
|- - sergeeff   Цитата(radistka @ Dec 7 2010, 15:12) и вс...   Dec 7 2010, 13:43
|- - Zelepuk   Цитата(sergeeff @ Dec 7 2010, 16:43) У ме...   Dec 9 2010, 05:35
|- - sergeeff   Цитата(Zelepuk @ Dec 9 2010, 08:35) Видат...   Dec 9 2010, 12:25
|- - Zelepuk   Цитата(sergeeff @ Dec 9 2010, 15:25) Важн...   Dec 9 2010, 13:37
- - sergeeff   Чтобы это было совсем рабочим, не мешало бы: 1. З...   Dec 7 2010, 10:36
|- - DpInRock   Цитата(sergeeff @ Dec 7 2010, 13:36) Чтоб...   Dec 7 2010, 12:51
- - adc   Подскажите пожалуйста где найти(его надо писать ил...   Dec 7 2010, 11:06
- - adc   пост58 Подтолкните пожалуйста.. ну не едут лыжи и ...   Dec 7 2010, 12:59


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 00:47
Рейтинг@Mail.ru


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