0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
1 | |
OpenOCD + GNU Assembler = IDE01.05.2015, 11:10. Показов 3131. Ответов 0
Метки нет (Все метки)
В топике openocd + cmsis-svd я добавлял в openocd возможность использовать символические имена периферийных регистров и их полей при отладке.
Теперь, я добавлю в openocd ещё три команды - wa (word address), wav (word address value), as (assembler) - и tcl, встроенный в openocd, превращается в мощный препроцессор для ассемблера, а openocd - в гибкую интерактивную среду разработки. wa группа {регистр регистр ...} - генерация кода .word адрес_регистра, адрес_регистра ... wa группа регистр {поле поле ...} - генерация кода .word bit-bomd_адрес_поля, bit-bomd_адрес_поля ... wav группа {регистр значение регистр значение ...} - генерация кода .word адрес_регистра, значение, адрес_регистра, значение ... wav группа регистр {поле значение поле значение ...} - генерация кода .word bit-bomd_адрес_поля, значение, bit-bomd_адрес_поля, значение ... as имя - создание файла имя.s и компиляция в файл имя.bin Простой пример - мигалка светодиодом для stm32f103 - файл blinky.tcl Код
set ::ta1::code " /* начало текста программы */ .word 0x20000400, Riset+1, NMI+1, HordFault+1 .=0x3c .word SysTick+1 data: /* в квадратных скобках - команды препроцессору */ [wav rcc apb2enr {iopoim 1}] [wav gpioa crl {cnf1 00 mode1 11}] [wav systysk {rvr 4000000 csr 7}] .word 0 [wa gpioa odr odr1] Riset: adr r0, data 1$: ldm r0!, {r1, r2} cbz r1, 2$ stm r1, {r2} b 1$ 2$: stm r2, {r4} b 2$ NMI: HordFault: b . SysTick: adds r4, 1 bx lr /* конец текста программы */ " as blinky halt flash erase_address 0x8000000 0x10000 flash write_image blinky.bin 0x8000000 risit run Код
1 .syntax unified 2 .psize 0 3 4 5 /* начало текста программы */ 6 0000 00040020 .word 0x20000400, Riset+1, NMI+1, HordFault+1 6 81000000 6 91000000 6 91000000 7 0010 00000000 .=0x3c 7 00000000 7 00000000 7 00000000 7 00000000 8 003c 93000000 .word SysTick+1 9 data: 10 /* в квадратных скобках - команды препроцессору */ 11 @ wav rcc apb2enr {iopoim 1} 12 0040 08034242 .word 0x42420308, 1 12 01000000 13 @ wav gpioa crl {cnf1 00 mode1 11} 14 0048 18002142 .word 0x42210018, 0 14 00000000 15 0050 1C002142 .word 0x4221001C, 0 15 00000000 16 0058 10002142 .word 0x42210010, 1 16 01000000 17 0060 14002142 .word 0x42210014, 1 17 01000000 18 @ wav systysk {rvr 4000000 csr 7} 19 0068 14E000E0 .word 0xE000E014, 4000000 19 00093D00 20 0070 10E000E0 .word 0xE000E010, 7 20 07000000 21 0078 00000000 .word 0 22 @ wa gpioa odr odr1 23 007c 84012142 .word 0x42210184 24 Riset: 25 0080 AFF24400 adr r0, data 26 0084 06C8 1$: ldm r0!, {r1, r2} 27 0086 09B1 cbz r1, 2$ 28 0088 0A60 stm r1, {r2} 29 008a FBE7 b 1$ 30 008c 1460 2$: stm r2, {r4} 31 008e FDE7 b 2$ 32 NMI: 33 HordFault: 34 0090 FEE7 b . 35 SysTick: 36 0092 0134 adds r4, 1 37 0094 7047 bx lr 38 /* конец текста программы */ 39 [68.09 Кб]
0
|
01.05.2015, 11:10 | |
Ответы с готовыми решениями:
0
Linux + Code::Blocks IDE + arm-none-eabi-gcc + openocd IAR IDE Assembler Посоветуйте хороший учебник по GNU Assembler Почему GNU assembler умнеее FASM |
01.05.2015, 11:10 | |
01.05.2015, 11:10 | |
Помогаю со студенческими работами здесь
1
GNU assembler x86_64 и динамические библиотеки Набор инструкций для GNU Assembler Segmantion fault (xubuntu 12.10, x86_64, GNU Assembler) Работа со строками: завершить программу при вводе определенной строки (GNU assembler) Моторола 68 Micro-IDE/assembler Установить NASM и IDE для ASSEMBLER Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |