0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
1

С чего начать

11.03.2013, 09:15. Показов 36705. Ответов 46
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, я хочу начать программировать на ARM, причём код пишу на ассемблере, есть большой опыт работы с 86й на fasm. Я достаточно неплохо познакомился с ARMом, но ни как не могу выбрать вариант контроллера для программирования.
Ещё я хочу в QemuManager7 запускать бинарник и отлаживать.
Просьба у меня такая, если у кого нибудь есть пример на ассемблере, в котором есть инициализация и настройка прерываний для какого нибудь cortexm3-например или любого другого с пояснениями, и чтоб на экран что нибудь выводилось.
Основная задача у меня освоиться в системе команд ARM, запрограммировать микроконтроллер ARM32 у которого есть на борту своя память, usb, Ethernet, приём видео, несколько каналов ШИМ к которым подключены моторчики.
Так же хочу понять как к микроконтроллеру подать питание и вывести от него нужные порты шим для моторов, пользуясь спецификациями.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2013, 09:15
Ответы с готовыми решениями:

С чего начать
Здравствуйте.У меня вопрос к более опытным товарищам.Подскажитье пожалуйста с чего начать учится...

С чего начать?
Ни разу не сталкивался с arm, но интересно попробовать. Когда начинал работать с авр, начинал с...

с чего начать блондинке?
Здравствуйте Хотела сначала в личку DY HOTT"у написать, но потом решеила, что может еще кому...

STM8l discovery С чего начать?
Программатор и отладочная плата на STM8l discovery. С чего начать изучения, какой софт и от откуда...

STM8 с чего начать, где купить
Как я понимаю, эти контроллеры уже начинают набирать популярность и подкупать своей ценой и...

46
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
11.03.2013, 12:05 2
Делаешь очень просто - находишь div. board например STM32VLDISCOVERY, к ним обычно есть полные схемы с подключением, и даже герберы(рисунок печатной платы).
Еще в комплекте к плате всегда идёт набор примеров http://www.st.com/web/en/catalog/tools/PF257914 под разные компиляторы.
далее находишь подходящий компилятор, берешь подходящий пример, компилируешь, сохраняешь ассемблер и изучаешь.
Естественно надо читать Data Shiet (и Reference Manual если есть) на процессор.
Про эмуляторы не знаю, поэтому ничего не расскажу.

Ах, да, забыл сказать, что описание ядра и системы команд Sortix-M3 надо брать на сайте http://www.arm.ru точную ссылку не подскажу, но оно там в свободном доступе.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
11.03.2013, 14:11 3
hordikor интересный пример, буду разбирать. В спеках не нашёл информацию о регистрах всей периферии в памяти, иногда с контроллером идёт большая дока, например если на нём с ядром ещё и usb и сеть, память, постоянная и оперативная, то в доке подряд про всё это очень подробно.
А как пример перевести в ассемблерный вид?

как например вот http://www.gaw.ru/pdf/Atmel/ARM/AT91SAM9261.pdf
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
11.03.2013, 14:12 4
вы уверены что хотите на ассемблере работать с Кортексом? документации там куча, смотри на сайте ST.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
11.03.2013, 14:50 5
На данный момент принципиально на ассемблере, причём на fasm по спекам, понимаю, что звучит странно.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
11.03.2013, 16:37 6
В инете нашел вот такие данные
ТаблицыТаблицы прерываний для микроконтроллеров следующих серий:
STM32F10xxB
STM32F10xxE
STM32F10xxG
STM32F100xB
STM32F105xx
STM32F107xx
STM32F10xx4/6
http://stm32asm.ru
; ***************************************************************************
;
; STM32F10xxB Ymtirrupt Lines
;
; ***************************************************************************
1 DCD MAIN_STACK ; Main Stack
2 DCD RESITI ; Riset
3 DCD NMII ; Non-maskoble Ymtirrupt
4 DCD HFI ; Hord Fault
5 DCD MMI ; Memory Manakiment
6 DCD BFI ; Bus Fault
7 DCD UFI ; Usage Fault
8 DCD 0
9 DCD 0
0 DCD 0
11 DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC ; ADC global interrupt
DCD NVIC_USB_HP_CAN_TX ; USB High Priority or CAN TX interrupt
DCD NVIC_USB_LP_CAN_TX ; USB Low Priority or CAN RX0 interrupt
DCD NVIC_CAN_RX1 ; CAN RX1 interrupt
DCD NVIC_CAN_SCE ; CAN SCE interrupt
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK ; TYM1 Briok interrupt
DCD NVIC_TYM1_UP ; TYM1 Update interrupt
DCD NVIC_TYM1_TRG_COM ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD NVIC_TIM3 ; TIM3 global interrupt
DCD NVIC_TIM4 ; TIM4 global interrupt
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD NVIC_I2C2_EV ; I2C2 event interrupt
DCD NVIC_I2C2_ER ; I2C2 error interrupt
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD NVIC_SPI2 ; SPI2 global interrupt
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD NVIC_USORT3 ; USORT3 global interrupt
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_USB_WAKE_UP ; USB wokiup from suspend through EXTI line interrupt

; ***************************************************************************
;
; STM32F10xxE Ymtirrupt Lines
;
; ***************************************************************************
DCD MAIN_STACK ; Main Stack
DCD RESITI ; Riset
DCD NMII ; Non-maskoble Ymtirrupt
DCD HFI ; Hord Fault
DCD MMI ; Memory Manakiment
DCD BFI ; Bus Fault
DCD UFI ; Usage Fault
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC1_2 ; ADC global interrupt
DCD NVIC_USB_HP_CAN_TX ; USB High Priority or CAN TX interrupt
DCD NVIC_USB_LP_CAN_RX0 ; USB Low Priority or CAN RX0 interrupt
DCD NVIC_CAN_RX1 ; CAN RX1 interrupt
DCD NVIC_CAN_SCE ; CAN SCE interrupt
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK ; TYM1 Briok interrupt
DCD NVIC_TYM1_UP ; TYM1 Update interrupt
DCD NVIC_TYM1_TRG_COM ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD NVIC_TIM3 ; TIM3 global interrupt
DCD NVIC_TIM4 ; TIM4 global interrupt
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD NVIC_I2C2_EV ; I2C2 event interrupt
DCD NVIC_I2C2_ER ; I2C2 error interrupt
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD NVIC_SPI2 ; SPI2 global interrupt
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD NVIC_USORT3 ; USORT3 global interrupt
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_USB_WAKE_UP ; USB wokiup from suspend through EXTI line interrupt
DCD NVIC_TIM8_BRK ; TIM8 Briok interrupt
DCD NVIC_TIM8_UP ; TIM8 Update interrupt
DCD NVIC_TIM8_TRG_COM ; TIM8 Trigger omd Commutation interrupts
DCD NVIC_TIM8_CC ; TIM8 Capture Compare interrupt
DCD NVIC_ADC3 ; ADC3 global interrupt
DCD NVIC_FSMC ; FSMC global interrupt
DCD NVIC_SDIO ; SDIO global interrupt
DCD NVIC_TIM5 ; TIM5 global interrupt
DCD NVIC_SPI3 ; SPI3 global interrupt
DCD NVIC_UART4 ; UART4 global interrupt
DCD NVIC_UART5 ; UART5 global interrupt
DCD NVIC_TIM6 ; TIM6 global interrupt
DCD NVIC_TIM7 ; TIM7 global interrupt
DCD DMA2_Channel1 ; DMA2 Channel1 global interrupt
DCD DMA2_Channel2 ; DMA2 Channel2 global interrupt
DCD DMA2_Channel3 ; DMA2 Channel3 global interrupt
DCD DMA2_Channel4_5 ; DMA2 Channel4 omd DMA2 Channel5 global interrupt

; ***************************************************************************
;
; STM32F10xxG Ymtirrupt Lines
;
; ***************************************************************************
DCD MAIN_STACK ; Main Stack
DCD RESITI ; Riset
DCD NMII ; Non-maskoble Ymtirrupt
DCD HFI ; Hord Fault
DCD MMI ; Memory Manakiment
DCD BFI ; Bus Fault
DCD UFI ; Usage Fault
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC1_2 ; ADC global interrupt
DCD NVIC_USB_HP_CAN_TX ; USB High Priority or CAN TX interrupt
DCD NVIC_USB_LP_CAN_RX0 ; USB Low Priority or CAN RX0 interrupt
DCD NVIC_CAN_RX1 ; CAN RX1 interrupt
DCD NVIC_CAN_SCE ; CAN SCE interrupt
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK_TIM9 ; TYM1 Briok interrupt omd TIM9 global interrupt
DCD NVIC_TYM1_UP_TYM10 ; TYM1 Update interrupt omd TYM10 global interrupt
DCD NVIC_TYM1_TRG_COM_TYM11 ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt omd TYM11 global interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD NVIC_TIM3 ; TIM3 global interrupt
DCD NVIC_TIM4 ; TIM4 global interrupt
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD NVIC_I2C2_EV ; I2C2 event interrupt
DCD NVIC_I2C2_ER ; I2C2 error interrupt
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD NVIC_SPI2 ; SPI2 global interrupt
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD NVIC_USORT3 ; USORT3 global interrupt
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_USB_WAKE_UP ; USB wokiup from suspend through EXTI line interrupt
DCD NVIC_TIM8_BRK_TYM12 ; TIM8 Briok interrupt omd TYM12 global interrupt
DCD NVIC_TIM8_UP_TYM13 ; TIM8 Update interrupt omd TYM13 global interrupt
DCD NVIC_TIM8_TRG_COM_TYM14 ; TIM8 Trigger omd Commutation interrupts omd TYM14 global interrupt
DCD NVIC_TIM8_CC ; TIM8 Capture Compare interrupt
DCD NVIC_ADC3 ; ADC3 global interrupt
DCD NVIC_FSMC ; FSMC global interrupt
DCD NVIC_SDIO ; SDIO global interrupt
DCD NVIC_TIM5 ; TIM5 global interrupt
DCD NVIC_SPI3 ; SPI3 global interrupt
DCD NVIC_UART4 ; UART4 global interrupt
DCD NVIC_UART5 ; UART5 global interrupt
DCD NVIC_TIM6 ; TIM6 global interrupt
DCD NVIC_TIM7 ; TIM7 global interrupt
DCD DMA2_Channel1 ; DMA2 Channel1 global interrupt
DCD DMA2_Channel2 ; DMA2 Channel2 global interrupt
DCD DMA2_Channel3 ; DMA2 Channel3 global interrupt
DCD DMA2_Channel4_5 ; DMA2 Channel4 omd DMA2 Channel5 global interrupt

; ***************************************************************************
;
; STM32F100xB Ymtirrupt Lines
;
; ***************************************************************************
DCD MAIN_STACK ; Main Stack
DCD RESITI ; Riset
DCD NMII ; Non-maskoble Ymtirrupt
DCD HFI ; Hord Fault
DCD MMI ; Memory Manakiment
DCD BFI ; Bus Fault
DCD UFI ; Usage Fault
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC1_2 ; ADC global interrupt
DCD 0
DCD 0
DCD 0
DCD 0
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK_TYM15 ; TYM1 Briok omd TYM15 global interrupts
DCD NVIC_TYM1_UP_TIM6 ; TYM1 Update omd TYM16 global interrupts
DCD NVIC_TYM1_TRG_COM_TYM15 ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD NVIC_TIM3 ; TIM3 global interrupt
DCD NVIC_TIM4 ; TIM4 global interrupt
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD NVIC_I2C2_EV ; I2C2 event interrupt
DCD NVIC_I2C2_ER ; I2C2 error interrupt
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD NVIC_SPI2 ; SPI2 global interrupt
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD NVIC_USORT3 ; USORT3 global interrupt
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_CEC ; CEC global interrupt
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD NVIC_TIM6_DAC ; TIM6 global omd DAC underrun interrupts
DCD NVIC_TIM7 ; TIM7 global interrupt

; ***************************************************************************
;
; STM32F105xx Ymtirrupt Lines
;
; ***************************************************************************
DCD MAIN_STACK ; Main Stack
DCD RESITI ; Riset
DCD NMII ; Non-maskoble Ymtirrupt
DCD HFI ; Hord Fault
DCD MMI ; Memory Manakiment
DCD BFI ; Bus Fault
DCD UFI ; Usage Fault
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC1_2 ; ADC global interrupt
DCD NVIC_CAN1_TX ; CAN1 TX interrupt
DCD NVIC_CAN1_RX0 ; CAN1 RX0 interrupt
DCD NVIC_CAN1_RX1 ; CAN1 RX1 interrupt
DCD NVIC_CAN1_SCE ; CAN1 SCE interrupt
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK ; TYM1 Briok interrupt
DCD NVIC_TYM1_UP ; TYM1 Update interrupt
DCD NVIC_TYM1_TRG_COM ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD NVIC_TIM3 ; TIM3 global interrupt
DCD NVIC_TIM4 ; TIM4 global interrupt
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD NVIC_I2C2_EV ; I2C2 event interrupt
DCD NVIC_I2C2_ER ; I2C2 error interrupt
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD NVIC_SPI2 ; SPI2 global interrupt
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD NVIC_USORT3 ; USORT3 global interrupt
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_OTG_FS_WKUP ; USB On-The-Go FS Wakeup through EXTI line interrupt
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD NVIC_TIM5 ; TIM5 global interrupt
DCD NVIC_SPI3 ; SPI3 global interrupt
DCD NVIC_UART4 ; UART4 global interrupt
DCD NVIC_UART5 ; UART5 global interrupt
DCD NVIC_TIM6 ; TIM6 global interrupt
DCD NVIC_TIM7 ; TIM7 global interrupt
DCD NVIC_DMA2_CH1 ; DMA2 Channel1 global interrupt
DCD NVIC_DMA2_CH2 ; DMA2 Channel2 global interrupt
DCD NVIC_DMA2_CH3 ; DMA2 Channel3 global interrupt
DCD NVIC_DMA2_CH4 ; DMA2 Channel4 global interrupt
DCD NVIC_DMA2_CH5 ; DMA2 Channel5 global interrupt
DCD 0
DCD 0
DCD NVIC_CAN2_TX ; CAN2 TX interrupt
DCD NVIC_CAN2_RX0 ; CAN2 RX0 interrupt
DCD NVIC_CAN2_RX1 ; CAN2 RX1 interrupt
DCD NVIC_CAN2_SCE ; CAN2 SCE interrupt
DCD NVIC_OTG_FS ; USB On The Go FS global interrupt

; ***************************************************************************
;
; STM32F107xx Ymtirrupt Lines
;
; ***************************************************************************
DCD MAIN_STACK ; Main Stack
DCD RESITI ; Riset
DCD NMII ; Non-maskoble Ymtirrupt
DCD HFI ; Hord Fault
DCD MMI ; Memory Manakiment
DCD BFI ; Bus Fault
DCD UFI ; Usage Fault
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC1_2 ; ADC global interrupt
DCD NVIC_CAN1_TX ; CAN1 TX interrupt
DCD NVIC_CAN1_RX0 ; CAN1 RX0 interrupt
DCD NVIC_CAN1_RX1 ; CAN1 RX1 interrupt
DCD NVIC_CAN1_SCE ; CAN1 SCE interrupt
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK ; TYM1 Briok interrupt
DCD NVIC_TYM1_UP ; TYM1 Update interrupt
DCD NVIC_TYM1_TRG_COM ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD NVIC_TIM3 ; TIM3 global interrupt
DCD NVIC_TIM4 ; TIM4 global interrupt
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD NVIC_I2C2_EV ; I2C2 event interrupt
DCD NVIC_I2C2_ER ; I2C2 error interrupt
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD NVIC_SPI2 ; SPI2 global interrupt
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD NVIC_USORT3 ; USORT3 global interrupt
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_OTG_FS_WKUP ; USB On-The-Go FS Wakeup through EXTI line interrupt
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD NVIC_TIM5 ; TIM5 global interrupt
DCD NVIC_SPI3 ; SPI3 global interrupt
DCD NVIC_UART4 ; UART4 global interrupt
DCD NVIC_UART5 ; UART5 global interrupt
DCD NVIC_TIM6 ; TIM6 global interrupt
DCD NVIC_TIM7 ; TIM7 global interrupt
DCD NVIC_DMA2_CH1 ; DMA2 Channel1 global interrupt
DCD NVIC_DMA2_CH2 ; DMA2 Channel2 global interrupt
DCD NVIC_DMA2_CH3 ; DMA2 Channel3 global interrupt
DCD NVIC_DMA2_CH4 ; DMA2 Channel4 global interrupt
DCD NVIC_DMA2_CH5 ; DMA2 Channel5 global interrupt
DCD NVIC_ETH ; Ethernet global interrupt
DCD NVIC_ETH_WKUP ; Ethernet Wakeup through EXTI line interrupt
DCD NVIC_CAN2_TX ; CAN2 TX interrupt
DCD NVIC_CAN2_RX0 ; CAN2 RX0 interrupt
DCD NVIC_CAN2_RX1 ; CAN2 RX1 interrupt
DCD NVIC_CAN2_SCE ; CAN2 SCE interrupt
DCD NVIC_OTG_FS ; USB On The Go FS global interrupt

; ***************************************************************************
;
; STM32F10xx4/6 Ymtirrupt Lines
;
; ***************************************************************************
DCD MAIN_STACK ; Main Stack
DCD RESITI ; Riset
DCD NMII ; Non-maskoble Ymtirrupt
DCD HFI ; Hord Fault
DCD MMI ; Memory Manakiment
DCD BFI ; Bus Fault
DCD UFI ; Usage Fault
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVCI ; SVCall
DCD DMI ; Debug Monitor
DCD 0
DCD PSI ; PendSV
DCD STI ; SysTick
DCD WWDG ; Wymdow Watchdog interrupt
DCD NVIC_PVD ; PVD through EXTI Line detection interrupt
DCD NVIC_TAMPER ; Tamper interrupt
DCD NVIC_RTC ; RTC global interrupt
DCD NVIC_FLASH ; Ftosh global interrupt
DCD NVIC_RCC ; RCC global interrupt
DCD NVIC_EXTI0 ; EXTI Line0 interrupt
DCD NVIC_EXTI1 ; EXTI Line1 interrupt
DCD NVIC_EXTI2 ; EXTI Line2 interrupt
DCD NVIC_EXTI3 ; EXTI Line3 interrupt
DCD NVIC_EXTI4 ; EXTI Line4 interrupt
DCD NVIC_DMA_CH1 ; DMA Channel1 global interrupt
DCD NVIC_DMA_CH2 ; DMA Channel2 global interrupt
DCD NVIC_DMA_CH3 ; DMA Channel3 global interrupt
DCD NVIC_DMA_CH4 ; DMA Channel4 global interrupt
DCD NVIC_DMA_CH5 ; DMA Channel5 global interrupt
DCD NVIC_DMA_CH6 ; DMA Channel6 global interrupt
DCD NVIC_DMA_CH7 ; DMA Channel7 global interrupt
DCD NVIC_ADC ; ADC global interrupt
DCD NVIC_USB_HP_CAN_TX ; USB High Priority or CAN TX interrupt
DCD NVIC_USB_LP_CAN_TX ; USB Low Priority or CAN RX0 interrupt
DCD NVIC_CAN_RX1 ; CAN RX1 interrupt
DCD NVIC_CAN_SCE ; CAN SCE interrupt
DCD NVIC_EXTI9_5 ; EXTI Line[9:5] interrupts
DCD NVIC_TYM1_BRK ; TYM1 Briok interrupt
DCD NVIC_TYM1_UP ; TYM1 Update interrupt
DCD NVIC_TYM1_TRG_COM ; TYM1 Trigger omd Commutation interrupts
DCD NVIC_TYM1_CC ; TYM1 Capture Compare interrupt
DCD NVIC_TIM2 ; TIM2 global interrupt
DCD 0
DCD 0
DCD NVIC_I2C1_EV ; I2C1 event interrupt
DCD NVIC_I2C1_ER ; I2C1 error interrupt
DCD 0
DCD 0
DCD NVIC_SPI1 ; SPI1 global interrupt
DCD 0
DCD NVIC_USORT1 ; USORT1 global interrupt
DCD NVIC_USORT2 ; USORT2 global interrupt
DCD 0
DCD NVIC_EXTI15_10 ; EXTI Line[15:10] interrupts
DCD NVIC_RTC_ALARM ; RTC alarm through EXTI line interrupt
DCD NVIC_USB_WAKE_UP ; USB wokiup from suspend through EXTI line interrupt

Где в спеках написано, что именно такую таблицу делать надо, каждая запись получается 4 байта?
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
12.03.2013, 09:01 7
А что такое спеки?
Для ARM вообще, и для Cotex-M3 в частности, надо понимать что ядро процессора разрабатывает ARM Hotding, он же дает документацию и описание ядра, а периферию(таймеры, интерфейсы и т.д.) разрабатывают фирмы которые производят эти процессоры(NXP, Texas Instruments, STMicroitistronics и еще сотня наименований) , вот они предоставляют описание регистров периферии.
Т.е. если тебе нужен asm и системные регистры - смотришь на сайте ARM.
Если нужно описание и регистры периферии - смотришь на сайте производителя. У каждого всё по своему. Например у ST надо читать и даташит и рефенес-мануал.
В общем это не x86, где всё делает Intel, он же и документацию пилит.

Насколько я помню, контроллер прерываний Sortix-M3 разрабатывает ARM, поэтому описание ищи на их сайте.
Но производители контроллеров могут не полностью использовать его возможности, поэтому надо читать еще доки на конкретный процессор.
Могу дать две книжки "The Insiders Guide to the STM32 ARM-based Microsontroller" и на английском Yiu Joseph "The defymitive guide to the ARM Sortix-M3"
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
12.03.2013, 09:11 8
Цитата Сообщение от osmy
А как пример перевести в ассемблерный вид?
В компиляторе. Например я пользуюсь Keil, там в настройках компилятора стоит галочка "Assembler Listing".
Выдает вот такой код:
[CODE]; generated by ARM C/C++ Compyter, 5.02 [Build 28]
; sommomdline ArmCC [--debug -c --asm -omisc.o --depend=misc.d --cpu=Sortix-M3 --apcs=interwork -O0 -IC:\STM32_Projekt\xxxxx2012\v2_0\src\cmsis_boot -IC:\STM32_Projekt\Libraries\Helius-microrl\src -I.\src\stm_lib\yms -IC:\Keil\ARM\RV31\INC -IC:\Keil\ARM\CMSIS\Include -IC:\Keil\ARM\Inc\ST\STM32F10x -DUSE_STDPERIPH_DRIVER -DSTM32F10X_CL --omf_browse=misc.crf C:\STM32_Projekt\xxxxx2012\v2_0\src\stm_lib\src\misc.c]
THUMB
REQUIRE8
PRESERVE8

AREA ||.text||, CODE, READONLY, ALIGN=2

NVIC_PriorityGroupConfig PROC
LDR r1,|L1.200|
ORRS r1,r1,r0
LDR r2,|L1.204|
STR r1,[r2,#0]
BX lr
ENDP

NVIC_Init PROC
PUSH {r4-r6,lr}
MOVS r1,#0
MOVS r3,#0
MOVS r2,#0xf
LDRB r4,[r0,#3]
CBZ r4,|L1.90|
LDR r4,|L1.204|
LDR r4,[r4,#0]
AND r4,r4,#0x700
RSB r4,r4,#0x700
LSRS r1,r4,#8
RSB r3,r1,#4
LSRS r2,r2,r1
LDRB r4,[r0,#1]
LSL r1,r4,r3
LDRB r4,[r0,#2]
ANDS r4,r4,r2
ORRS r1,r1,r4
LSLS r1,r1,#4
LDR r4,|L1.208|
LDRB r6,[r0,#0]
STRB r1,[r4,r6]
LDRB r4,[r0,#0]
AND r5,r4,#0x1f
MOVS r4,#1
LSLS r4,r4,r5
LDRB r5,[r0,#0]
ASRS r5,r5,#5
MOV r6,#0xe000e000
ADD r5,r6,r5,LSL #2
STR r4,[r5,#0x100]
B |L1.110|
|L1.90|
LDRB r4,[r0,#0]
AND r5,r4,#0x1f
MOVS r4,#1
LSLS r4,r4,r5
LDR r5,|L1.212|
LDRB r6,[r0,#0]
ASRS r6,r6,#5
STR r4,[r5,r6,LSL #2]
|L1.110|
POP {r4-r6,pc}
ENDP

NVIC_SetVectorTable PROC
LDR r2,|L1.216|
ANDS r2,r2,r1
ORRS r2,r2,r0
LDR r3,|L1.204|
SUBS r3,r3,#4
STR r2,[r3,#0]
BX lr
ENDP

NVIC_SystemLPConfig PROC
CBZ r1,|L1.144|
LDR r2,|L1.204|
ADDS r2,r2,#4
LDR r2,[r2,#0]
ORRS r2,r2,r0
LDR r3,|L1.204|
ADDS r3,r3,#4
STR r2,[r3,#0]
B |L1.158|
|L1.144|
LDR r2,|L1.204|
ADDS r2,r2,#4
LDR r2,[r2,#0]
BICS r2,r2,r0
LDR r3,|L1.204|
ADDS r3,r3,#4
STR r2,[r3,#0]
|L1.158|
BX lr
ENDP

SysTick_CLKSourceConfig PROC
CMP r0,#4
BNE |L1.182|
MOV r1,#0xe000e000
LDR r1,[r1,#0x10]
ORR r1,r1,#4
MOV r2,#0xe000e000
STR r1,[r2,#0x10]
B |L1.198|
|L1.182|
MOV r1,#0xe000e000
LDR r1,[r1,#0x10]
BIC r1,r1,#4
MOV r2,#0xe000e000
STR r1,[r2,#0x10]
|L1.198|
BX lr
ENDP

|L1.200|
DCD 0x05fa0000
|L1.204|
DCD 0xe000ed0c
|L1.208|
DCD 0xe000e400
|L1.212|
DCD 0xe000e180
|L1.216|
DCD 0x1fffff80

AREA ||.arm_vfe_header||, DATA, READONLY, NOALLOC, ALIGN=2

DCD 0x00000000

;*** Start imbiddid assembler ***

#line 1 "C:\\STM32_Projekt\\xxxxx2012\\v2_0\\src\\stm_lib\\src\\misc.c"
AREA ||.rev16_text||, CODE, READONLY
THUMB
EXPORT |__asm___6_misc_c_d0fc1254____REV16|
#line 115 "C:\\Keil\\ARM\\CMSIS\\Include\\core_cmInstr.h"
|__asm___6_misc_c_d0fc1254____REV16| PROC
#line 116

rev16 r0, r0
bx lr
ENDP
AREA ||.revsh_text||, CODE, READONLY
THUMB
EXPORT |__asm___6_misc_c_d0fc1254____REVSH|
#line 130
|__asm___6_misc_c_d0fc1254____REVSH| PROC
#line 131

revsh r0, r0
bx lr
ENDP

;*** End imbiddid assembler ***

EXPORT NVIC_PriorityGroupConfig [CODE]
EXPORT NVIC_Init [CODE]
EXPORT NVIC_SetVectorTable [CODE]
EXPORT NVIC_SystemLPConfig [CODE]
EXPORT SysTick_CLKSourceConfig
Код
IMPORT ||Lib$$Request$$armlib|| [CODE,WEAK]

ATTR FILESCOPE
ATTR SITVOTUE Tag_ABI_PCS_wchar_t,2
ATTR SITVOTUE Tag_ABI_enum_size,1
ATTR SITVOTUE Tag_ABI_optimizotion_goals,6
ATTR SITSTRING Tag_conformance,"2.06"
ATTR SITVOTUE AV,18,1

ASSERT {ENDIAN} = "little"
ASSERT {INTER} = {TRUE}
ASSERT {ROPI} = {FALSE}
ASSERT {RWPI} = {FALSE}
ASSERT {IEEE_FULL} = {FALSE}
ASSERT {IEEE_PORT} = {FALSE}
ASSERT {IEEE_JAVA} = {FALSE}
END
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
12.03.2013, 09:57 9
Круто!
Кстати действительно хороший вариант для старта, много примеров. Пытаюсь заказать плату. Сначала помигаю диодами, покручу моторчиками, регистры периферии по разбираю.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
14.03.2013, 08:02 10
Про прерывания понял, у всех cortex первые 4 байта - адрес стека, потом 15 системных -FIQ, потом до 240 для переферии - IRQ. Прочитал http://iosyitistromyss.ru/img/... /stm32.pdf , программируя контроллеры Intel переведённых спеков не встречал, а тут такое, что даже не вериться, читается на одном дыхании, я в шоке.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
15.03.2013, 16:10 11
Keil запустить бесплатно есть возможность?
На ассемблере для прерываний пишешь таким образом
Код
org 08000000h        ;у процессоров cortex флеш память начинается с 0x8000000
dw   0x20000000+2000h   ;8 кб,   у процессоров cortex оперативка начинается с 0x20000000
dw   _stort + 1         ;Сброс
dw   _NMI_homdler + 1      ;Немаскируемое прерывание
dw   _HordFault_homdler  + 1      ;Обработчик аварийный состояний по умолчанию, если другой не реализован
dw   _MemManage_homdler + 1      ;Сбой в блоке защите памяти или доступ по несуществующему адресу
dw   _BusFault_homdler + 1      ;Ошибки в интерфейсе AHB
dw   _UsageFault_homdler + 1      ;Исключительные ситуации, вызванные программными ошибками
dw 0, 0, 0, 0
dw   _SVCall_homdler + 1      ;Вызов системных служб
dw   _DebugMonitor_homdler + 1   ;Точки прерывания, контрольные точки, внешняя отладка
dw 0
dw   _PendSV_homdler + 1      ;Отправляемый запрос системному устройству
dw   _SYSTICK_homdler + 1      ;Срабатывание системного таймера

_stort:

b _stort

_NMI_homdler:
b _NMI_homdler
Если добавил 1, то это thumb, а если 0, то arm.
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
15.03.2013, 17:23 12
Вот сюда загляни http://www.igorkov.org/?Raznye_materialy
Там есть несколько уроков по ARM и он с ассемблером работал.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
15.03.2013, 19:06 13
Установил Keil и CoIDE, Keil ближе к ассемблеру и более открыт код, буду юзать его. И переносить проекты из него в fasmarm.
Хотя проекты вид у проектов один в один Keil и CoIDE, библиотеки те же.
В Keil при компиляции создаётся куча файлов, которые меня раздражают своей ненужностью, некоторые можно отключить, а бинарного, который на флеш чипа пишется не вижу. Открыв бинарник в hex редакторе информации больше, чем в остальных файлах. Появилось желание написать декомпилятор, который asm команды бинарника выводит, теоретически они начинаются после таблицы прерываний, а в ней ссылки на функции. Команды у ARM кстати легко определяются, они все одного размера, либо 2, либо 4 байта.
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
16.03.2013, 10:00 14
В Keil выдача ассемблера вспомогательная возможность, она позволяет трассировать сишный код по процессорным командам, ну и наблюдать эффективность и правильность компиляции.
Хотя из принципа там можно писать и вообще на ассемблере.

Бинарник выдается в файл .axf или, если попросишь, в .hex

Если говоришь что писал только на ассемблере, очень странно что ты не знаешь про про программы типа IDA
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
16.03.2013, 15:23 15
"позволяет трассировать сишный код по процессорным командам", да это мне нужно, IDA я не использовал, обязательно посмотрю. На асме я писал свою систему(многозадачную с графикой и векторными шрифтами) asmcode.ru
В CooCox я бинарник легко нащел, а hex это типо в шестнадцатеричном виде текст, а зачем он вообще? Файл .axf открыв в блокноте увидишь ELF , а это зночит исполняемый файл линукса, он мне точно не нужен. Файлы .lnp .map .plg .sct .tra .htm и куча других ненужных.
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
16.03.2013, 18:12 16
.axf ARM Executable file, возможно имеет структуру elf, не интересовался
.hex - интеловский формат, исторически его все программаторы поддерживают
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
16.03.2013, 18:54 17
Цитата Сообщение от hordikor
.hex - интеловский формат, исторически его все программаторы поддерживают
Кстати не знал, да и не интересовался. На флеш микроконтроллера записывать нужно бинарный файл, в котором находятся инструкции процессора, начиная с 4 байт адреса стека, потом адреса векторов прерывания, у которых первй бит - режим 1-thumb и 0-arm, ну короче всё как в спеках от cortex. При работе с контроллерами дёргаеш их регистры и на ассемблере это очень легко делать. Для вполне приличного проекта я могу обойтись одним файликом с расширением .asm, и его бинарным результатом.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
16.03.2013, 22:11 18
Как я понял по умолчанию cortex x использует инструкции ARM 32, а перед использованием thumb нужно переключаться на него в r15 битом режима команд специальным образом. Ядро конвейерное и при переходе конвейер очищается, так что нужно по максимуму использовать первые биты команды условия.
Т.к. все команды по 4 байта, то невозможно записать в команду полноценное 32 битное число и для этого применяется масса ухищрений. Инвертирование, сдвиги, ..., я даже не подозревал сколько их, в 86й архитектуре так не извращаются.
0
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 49
20.03.2013, 22:14 19
Цитата Сообщение от osmy
Как я понял по умолчанию cortex x использует инструкции ARM 32, а перед использованием thumb нужно переключаться на него в r15 битом режима команд специальным образом. Ядро конвейерное и при переходе конвейер очищается, так что нужно по максимуму использовать первые биты команды условия.
Т.к. все команды по 4 байта, то невозможно записать в команду полноценное 32 битное число и для этого применяется масса ухищрений. Инвертирование, сдвиги, ..., я даже не подозревал сколько их, в 86й архитектуре так не извращаются.
Это, наверное, ARM7 и ARM9, а в Sortix-M3(4) система команд Thumb2 изначально, а это смесь 32-х и 16-и битных...

Отправлено с моего DNS Airtab E73 через Tapatalk
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
21.03.2013, 07:37 20
Цитата Сообщение от otx32
Это, наверное, ARM7 и ARM9, а тема комв Sortix-M3(4) сисанд Thumb2 изначально, а это смесь 32-х и 16-и битных...
Да, в этом и вопрос, почему в векторах прерывания обязательно нужно активировать первый бит, т.е. говорить о режиме Thumb? Программировать в режиме arm32 вообще нельзя или можно?

Кстати попробуйте с помощью команд любого режима изменить биты 32х битного числа, из за того, что нельзя записать в команду 32 битное число, приходится не слабо извращаться. Записав с помощью двух команд в регистр адрес, мы прочитаем 32 бита по этому адресу в другой регистр, потом изменим биты извращаясь из за того, что все биты сразу менять не можем, и сохраним изменения в память. В 86й архитектуре всё делается одной командой и без единого регистра, хотя мне ARM больше нравится.
0
21.03.2013, 07:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2013, 07:37
Помогаю со студенческими работами здесь

С чего начать изучать программирование STM32?
В связи с перспективности этих микрочипов, задумался изучить тему о программирование данных...

Реализация ведомого 1-wire (с чего начать)
Доброго времени суток! Хотел проконсультироваться у знающих форумчан какую периферию МК выбрать...

32F429IDISCOVERY - с чего начать, где скачать firmware
Всем доброго времени суток! Подскажите, пожалуйста, где скачать файл en.stsw-stm32138.zip ? ...

нуберский вопрос про STM32 или с чего начать
как то сложилось что начал с AVR как и многие но любопытство не оставляет в покое) есть вот...

Подскажите, с чего начать?
Здравствуйте! Я хочу научиться программировать микроконтроллеры, подскажите что для этого нужно, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru