Вопросы по программированию ARM

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Вопросы по программированию ARM

Сообщение Uklunok »

Здрасьте :) В общем, собрал отладочную плату для МК ATSAM3U4C. А вот разбираться с методами программирования для ARM лень, да и нет времени.
Использую IAR Embedded Workbench 5.5, прошиваю с помощью JTAG отладчика.
Собственно интересуют элементарные вопросы:
1). Как выставить лог "1" или "0" на линию ввода/вывода, например на 15 ножку.
2). Как используя условие ЕСЛИ ТО, записать: Если на 20 ноге лог "0", то подать на 15 ножку лог "1".
Короче хочу зажечь светодиод по нажатию кнопки.

Светодиод подключил так
Изображение

Раньше программировал АВР-ки (2 года назад) на ассемблере, так что кому не сложно хотелось бы вариант кода на ассемблере, а лучше ещё и на Си.
Понятно, что придётся использовать функции своего МК, но думаю в даташите найду. Мне главное общий шаблон для воркбэнча :))
Реклама
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по программированию ARM

Сообщение coredumped »

Uklunok писал(а):Здрасьте :) В общем, собрал отладочную плату для МК ATSAM3U4C. А вот разбираться с методами программирования для ARM лень, да и нет времени.
При таком подходе нужно действовать след. образом.
1. Разобрать отладочную плату.
2. Удалить с компа ИАР
3. Забыть об этом навсегда.

А если есть желание научиться, то без траты времени и сил - никак не обойтись. Начните с чтения даташитов и изучения примеров программ, коих у Атмела на сайте всегда было достаточно. Я конечно могу набросать вам такую программку, но вы один хрен ничего не поймете, тогда какой смысл?
PS: Под ARM на ассемблере обычно не пишут, в основном на С (но это не есть правило!) К тому-же все примеры на С, сл-но его и изучайте. Ассемблерный мнемокод (ARM-овский) тяжеловат для восприятия, но изучить его нужно, тк может сильно пригодиться при отладке.
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по программированию ARM

Сообщение ploop »

Ассемблерный мнемокод (ARM-овский) тяжеловат для восприятия, но изучить его нужно, тк может сильно пригодиться при отладке.
Код там ничуть не тяжеловат, тяжеловата архитектура, если писать на чистом асме. А вот отладка или ассемблеровские вставки выглядят вполне нормально.
Так что просто разграничить: рутину компилятору, а полёт фантазии можно и ручками.
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: Вопросы по программированию ARM

Сообщение Uklunok »

coredumped писал(а):
Uklunok писал(а):Здрасьте :) В общем, собрал отладочную плату для МК ATSAM3U4C. А вот разбираться с методами программирования для ARM лень, да и нет времени.
тогда какой смысл?
Это дипломный проект, точнее его часть. А изучать я это дело не хочу, т.к. мне это мягко сказать не по нраву. Да и зарабатывать на жизнь я себе этим точно не буду. 8)
Я конечно не настаиваю, поищу исходники, проекты. Просто вопрос стоял за то, что если у кого есть проект с подобным функционалом, то я бы не отказался :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по программированию ARM

Сообщение coredumped »

Вот аппноты http://www.atmel.com/products/microcont ... =documents
Возьмите любой готовый проект, например этот: "Using the Serial Peripheral Interface with AT91SAMxx Devices " - там какраз под ИАР, и используйте его как скелет.
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: Вопросы по программированию ARM

Сообщение Uklunok »

кТО может посоветовать, где можно почитать полный список ассемблерных команд для arm/. Желательно на русском описание, и с примерами :)
И вопросы:
Запись:

Код: Выделить всё

MOV R1,#99
почему максимальное число можно записать только 99? Регистры же 32-х разрядные, что делать если хочу записать число 32000?
Какая команда выдачи в порт I/O ? - Аналогичная в АВР

Код: Выделить всё

in r1, PINA
Вроде пока всё. Спасибо всем кто откликнулся :)
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Вопросы по программированию ARM

Сообщение ChipKiller »

Uklunok писал(а):...почему максимальное число можно записать только 99?
... это где Вас этому научили?
Uklunok писал(а):где можно почитать полный список ассемблерных команд для arm
... например здесь http://www.eng.auburn.edu/~nelson/cours ... syLang.pdf
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: Вопросы по программированию ARM

Сообщение Uklunok »

компилятор в IAR ругается

А вообще для 8086 записывал так:

Код: Выделить всё

lxi  b, EA60 
Для АТМЕГА16 так:

Код: Выделить всё

ldi a5,0b00010000
А как мне записать а IAR ДЛЯ ASM? Напимер в 16сист. число 48AF в регистр
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: Вопросы по программированию ARM

Сообщение Uklunok »

Дам 200руб тому, кто напишет программу для зажигания светодиода на 15 ножке (порт B). Нужно выставить ноль на эту линию.
Так то вроде понятно, что надо сделать:

Код: Выделить всё

1). Подключить тактовый сигнал к нужному порту I/O.
2). Выбрать частоту тактирования.
3). Настроить порт на вывод.
4). Установить линию порта на вывод. 
5). Записать данные в регистр.
И по идее должен загореться.
Проблема в том что информации катастрофически мало в интернете, есть только для STM32. Пытался поискать в даташите на свой МК функции аналогичные функциям в исходнике для STM32, но нихрена не вышло. В официальных проектах на SAM3U4C разобраться конечно же терпения не хватает :twisted:
Х.З. в общем, вот даташит http://www.atmel.com/products/microcont ... =documents
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: Вопросы по программированию ARM

Сообщение Uklunok »

Что, никто не хочет помочь? Или большинство заходят на форум поболтать ни о чём?
Нашёл исходник для Olimex STM32-P103 ARM Cortex M3 board:

Код: Выделить всё

;;; led-stm32.asm
;;; written by Frank Sergeant
;;;    frank@pygmy.utoh.org
;;;    http://pygmy.utoh.org/riscy
;;; This program is in the public domain.  See http://pygmy.utoh.org/riscy/cortex/ 
;;; for notes about the program and how to assemble, link, and burn to flash.

;;; Blink the LED on the Olimex STM32-P103 ARM Cortex M3 board.

;;; Directives
        .thumb                  ; (same as saying '.code 16')
        .syntax unified

;;; Equates
        .equ GPIOC_CRH,   0x40011004
        .equ GPIOC_ODR,   0x4001100C
        .equ RCC_APB2ENR, 0x40021018
        .equ STACKINIT,   0x20005000
        
        .equ LEDDELAY,    800000
        
.section .text
        .org 0

;;; Vectors
vectors:        
        .word STACKINIT         ; stack pointer value when stack is empty
        .word _start + 1        ; reset vector (manually adjust to odd for thumb)
        .word _nmi_handler + 1  ; 
        .word _hard_fault  + 1  ; 
        .word _memory_fault + 1 ; 
        .word _bus_fault + 1    ; 
        .word _usage_fault + 1  ; 

_start:

        ;; Enable the Port C peripheral clock by setting bit 4
        ldr r6, = RCC_APB2ENR
        mov r0, 0x10
        str r0, [r6]
        
        ;; Set the config and mode bits for Port C bit 12 so it will
        ;; be a push-pull output (up to 50 MHz) by setting bits 19-16
        ;; to '0011'.

        ldr r6, = GPIOC_CRH
        ldr r0, = 0x44434444
        str r0, [r6]

        ;; Load R2 and R3 with the "on" and "off" constants
        mov r2, 0              ; value to turn on LED
        mov r3, 0x1000         ; value to turn off LED

        ldr r6, = GPIOC_ODR    ;  point to Port C output data register
        
loop:
        str r2, [r6]           ; clear Port C, pin 12, turning on LED
        ldr r1, = LEDDELAY
delay1:
        subs r1, 1
        bne delay1
        
        str r3, [r6]           ; set Port C, pin 12, turning off LED
        ldr r1, = LEDDELAY
delay2:
        subs r1, 1
        bne delay2

        b loop                 ; continue forever

_dummy:                        ; if any int gets triggered, just hang in a loop
_nmi_handler:
_hard_fault:
_memory_fault:
_bus_fault:
_usage_fault:
        add r0, 1
        add r1, 1
        b _dummy
Может, кто подскажет в каких строках что заменить? :oops: :)
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по программированию ARM

Сообщение coredumped »

Я бы помог, но на ASM - это изврат, пиши на С - все получится. И с ИАР тоже как-то не сложилось. В основном народ Keil использует. Что же касается Atmel - есть простой способ, в лоб.
1. Скачать и установить ATmel Studio 6
2. Запустить и выбрать слева в панели "New Example Project from ASF"
3. В списке выберите любой проект под ваш SAM3 - в принципе, пофиг какой - все они с ядром Cortex M3
4. Соберите, запустите.
5. У вас уже готовый проект с инциализацией ARM - осталось только подправить в main() функционал. Куда уже проще?

PS: Читать нужно в разделе GPIO - это порты ввода-вывода. В ARM не так все просто, как AVR - команд по-больше понадобиться.
2
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: Вопросы по программированию ARM

Сообщение Uklunok »

coredumped, спасибо :)
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»