Atmega32U4 atmel studio: Atmel Studio [АмпСрка / Π’ΠΈΠΊΠΈ]

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ МК AVR Π½Π° языкС assembler Π² срСдС Linux / Π₯Π°Π±Ρ€


Ни для ΠΊΠΎΠ³ΠΎ Π½Π΅ сСкрСт, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ сСмСйства AVR ΠΏΡ€ΠΎΡ‡Π½ΠΎ вошли Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… ΠΏΠΎΠ΄Π΅Π»ΠΎΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡƒΠΆΠ΅ нСсколько Π»Π΅Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ массовоС (

Π½Π° Π³Ρ€Π°Π½ΠΈ эпидСмии)

ΡƒΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° Arduino, построСнными Π½Π° Π±Π°Π·Π΅ всС Ρ‚Π΅Ρ… ΠΆΠ΅ AVR. НС Π±ΡƒΠ΄Ρƒ ΡΡƒΠ΄ΠΈΡ‚ΡŒ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ это ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΈΠ±ΠΎ статСй Π½Π° эту Ρ‚Π΅ΠΌΡƒ Π½Π° рСсурсС Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ достаточно. Π₯ΠΎΡ‡Ρƒ ΡƒΠ±Π΅Ρ€Π΅Ρ‡ΡŒ ΠΈ ΠΌΠΎΠ΅Π³ΠΎ читатСля ΠΎΡ‚ споров Π½Π° Ρ‚Π΅ΠΌΡƒ Β«Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Arduino ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ это ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΒ». Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π΅ ΠΎΠ± этом.

Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ для любого Β«Π°Ρ€Π΄ΡƒΠΈΠ½ΡŒΡ‰ΠΈΠΊΠ°Β» (ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ) наступаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ³Π΄Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Arduino Π΅ΠΌΡƒ становится тСсно ΠΈ ΠΎΠ½ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ Π° Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ происходит ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ. И ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° всС Π΅Π³ΠΎ вопросы ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ курса Β«AVR. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ курс» ΠΎΡ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ DIHALT. Если Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ OS Windows, Ρ‚ΠΎ ΠΈ нСдостатка Π² инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, достаточно бСсплатной Atmel Studio, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ всС вопросы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО для МК AVR.

Π₯ΠΎΡ‚ΡŒ я ΠΈ Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ПО ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня, вопросы Β«ΠΆΠ΅Π»Π΅Π·Π°Β» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² нашСй ΠΊΠΎΠ½Ρ‚ΠΎΡ€Π΅ дСлаСтся Π½Π° Π±Π°Π·Π΅ AVR с Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΏΠΎΡ€ стали ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ мСня ΠΎΡ‡Π΅Π½ΡŒ остро. Π’ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх аспСктах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО для МК. И Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я являюсь ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Ρ†Π΅ΠΌ использования Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ OS Π½Π° Π±Π°Π·Π΅ ядра Linux, мСня заинтСрСсовал вопрос, Π° ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ Π² линуксах: ΠΌΠΎΠΆΠ½ΠΎ/нСльзя Π»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ПО, Π·Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² кристалл с Ρ‚Π΅ΠΌ ΠΆΠ΅ (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅) ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ удобства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ доступСн Π² Windows. Π’Π΅Ρ… ΠΊΠΎΠ³ΠΎ Ρ‚ΠΎΠΆΠ΅ интСрСсуСт этот вопрос, ΠΈ Π² особСнности Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ Ρ‚Π΅ΠΌΠ° поста каТСтся Π½Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ, ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.


Π§Ρ‚ΠΎ касаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° C/C++, Π² срСдС линукс с этим особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π½Π΅Ρ‚, Π² Π²ΠΈΠ΄Ρƒ ΠΎΠ±Ρ‰Π΅ΠΉ ориСнтированности этой систСмы Π½Π° использованиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка ΠΈ наличия достойного Π½Π°Π±ΠΎΡ€Π° инструмСнтария. Однако, Ρ‚ΠΎΡ‚ ΠΆΠ΅ DIHALT, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для МК Π½Π΅ΠΎΡ‚Π΄Π΅Π»ΠΈΠΌΠΎ ΠΎΡ‚ знания ассСмблСра, Π² Ρ‡Π΅ΠΌ я с Π½ΠΈΠΌ ΡΠΎΠ³Π»Π°ΡˆΡƒΡΡŒ, Π² Π²ΠΈΠ΄Ρƒ логичности Π΅Π³ΠΎ тСзисов, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Β«Π£Ρ‡Π΅Π±Π½ΠΎΠΌ курсС» ΠΈ собствСнного (ΠΏΡƒΡΡ‚ΡŒ нСбольшого) ΠΎΠΏΡ‹Ρ‚Π° систСмной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ x86.

Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ тСзисом, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ асма AVR Π½Π°ΠΌ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ ΡƒΠΉΡ‚ΠΈ ΠΈ сидим ΠΌΡ‹ ΠΏΠΎΠ΄ линуксом, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ дистрибутив Arch Linux, поэтому Π² своСм повСствовании Π±ΡƒΠ΄Ρƒ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° Π΅Π³ΠΎ экосистСму.


Π‘Ρ€Π°Π·Ρƒ скаТу, Ρ‡Ρ‚ΠΎ связку Atmel Studio + wine я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ. НС люблю я wine (Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ ΠΏΠΎ нСобходимости). ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… срСдствах, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго компиляторов, ΠΎΠ±Π·ΠΎΡ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² сСти ΠΈ Π»ΠΈΡ‡Π½Ρ‹Π΅ ковырялки Π΄Π°Π»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ Π½Π° Ρ‚Ρ€ΠΈΡƒΠΌΠ²ΠΈΡ€Π°Ρ‚ gavrasm, avra ΠΈ avr-as. Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΌ критСриям: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° синтаксиса ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Atmel ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΏΠΎ шагам Π² эмуляторС. ПослСднСС для мСня Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Π° Π² плоскости курса @DIHAL Ρ‚Π°ΠΊ прям Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для понимания процСсса Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠžΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ синтаксиса с компиляторами ΠΎΡ‚ Atmel Π΄Π°Π΅Ρ‚, ΠΎΠΏΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈ с ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, лишь Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Atmel Studio ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² линуксах, Ρ‡Ρ‚ΠΎ вСсьма ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ прСимущСство, ΠΈΠ±ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ avr-as сущСствуСт ΠΈ ΠΏΠΎΠ΄ Windows. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ ΠΎΠ±Π·ΠΎΡ€ пСрСчислСнной Ρ‚Ρ€ΠΎΠΈΡ†Ρ‹.

gavrasm ΠΈ avra


ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ синтаксис Atmel. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ нашСлся Π² AUR ΠΈ устанавливаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

$ yaourt -S gavrasm


Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊ ΠΆΠ΅ доступСн Π² AUR

$ yaourt -S avra


ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΈΠ΄Π°

test.S

;---- ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ устройство
        .device atmega16
;---- Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…
        .dseg
;---- Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°
        .cseg
        .org 0x0000
        ldi r16, 10
M1:
        inc r16
        rjmp M1
;---- Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚ EEPROM
        .eseg


БобираСтся ΠΎΠ±ΠΎΠΈΠΌΠΈ компиляторами сразу Π² *.hex ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²ΠΎΠ·ΠΌΡƒΡ‰Π°Ρ‚ΡŒ Π±Π»Π°Π³ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π΄ΠΎΠ½ΠΎΠ² Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ портянками, ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ компиляции ΠΏΠΎΠ΄ спойлСры

Π’Ρ‹Ρ…Π»ΠΎΠΏ gavrasm

$ gavrasm test.S
+------------------------------------------------------------+
| gavrasm gerd's AVR assembler Version 3.5 (C)2015 by DG4FAC |
+------------------------------------------------------------+
Compiling Source file: test.S
-------
Pass:        1
14 lines done.
Pass 1 ok.
-------
Pass:        2
14 lines done.
3 words code, 0 words constants, total=3 =  0.0%
No warnings!
Compilation completed, no errors. Bye, bye ...
$ ls -l
ΠΈΡ‚ΠΎΠ³ΠΎ 12
-rw-rw----+ 1 maisvendoo users  52 июл 29 15:46 test.hex
-rw-rw----+ 1 maisvendoo users 741 июл 29 15:46 test.lst
-rw-rw----+ 1 maisvendoo users  92 июл 29 15:46 test.S

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ hex-Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ
:020000020000FC

:060000000AE00395FECFAB

:00000001FF


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° листинга

gavrasm Gerd's AVR assembler version 3. 5 (C)2015 by DG4FAC

----------------------------------------------------------

Source file: test.S

Hex file: test.hex

Eeprom file: test.eep

Compiled: 29.07.2017, 15:46:38

Pass: 2

1: .device atmega16

2:

3: .dseg

4:

5: .cseg

6: .org 0x0000

7:

8: 000000 E00A ldi r16, 10

9: M1:

10: 000001 9503 inc r16

11: 000002 CFFE rjmp M1

12:

13: .eseg

14:

Program : 3 words.

Constants : 0 words.

Total program memory: 3 words.

Eeprom space : 0 bytes.

Data segment : 0 bytes.

Compilation completed, no errors.

Compilation endet 29.07.2017, 15:46:38

Π’Ρ‹Ρ…Π»ΠΎΠΏ avra

$ avra -l test.lst test.S 
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010.  Check out README file for more info
   AVRA is an open source assembler for Atmel AVR microcontroller family
   It can be used as a replacement of 'AVRASM32.EXE' the original assembler
   shipped with AVR Studio. We do not guarantee full compatibility for avra.
   AVRA comes with NO WARRANTY, to the extent permitted by law.
   You may redistribute copies of avra under the terms
   of the GNU General Public License.
   For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0002, Length = 0x0003
Assembly complete with no errors.
Segment usage:
   Code      :         3 words (6 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes
$ ls -l
ΠΈΡ‚ΠΎΠ³ΠΎ 16
-rw-rw----+ 1 maisvendoo users 92 июл 29 15:46 test.S
-rw-rw----+ 1 maisvendoo users  0 июл 29 15:55 test.S.cof
-rw-rw----+ 1 maisvendoo users 13 июл 29 15:55 test.S.eep.hex
-rw-rw----+ 1 maisvendoo users 55 июл 29 15:55 test.S.hex
-rw-rw----+ 1 maisvendoo users 61 июл 29 15:55 test. S.obj


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ hex-Ρ„Π°ΠΉΠ»Π°
:020000020000FC

:060000000AE00395FECFAB

:00000001FF


Листинг гСнСрируСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΌ -l ΠΏΡ€ΠΈ сборкС
$ cat test.lst

AVRA Ver. 1.3.0 test.S Sat Jul 29 16:02:05 2017

.device atmega16

.dseg

.cseg

.org 0x0000

C:000000 e00a ldi r16, 10

M1:

C:000001 9503 inc r16

C:000002 cffe rjmp M1

.eseg

Segment usage:

Code : 3 words (6 bytes)

Data : 0 bytes

EEPROM : 0 bytes

Assembly completed with no errors.


Анализируя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ:

  1. ГСнСрируСтся Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Intel HEX, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ сразу для ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π² МК
  2. Бинтаксис совмСстим с Atmel


ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π² синтаксисС avra Π΅ΡΡ‚ΡŒ отличия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

        . device atmel16


Π΄Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° МК, скрывая ΠΎΡ‚ программиста явноС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π½Π° *.inc Ρ„Π°ΠΉΠ» ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. БущСствуСт ΠΈ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… нюансов, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π² Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΠ±Π·ΠΎΡ€Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Valber’Π° Π½Π° русском языкС. Об особСнностях gavrasm ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

Оба рассмотрСнных компилятора ΠΈΠΌΠ΅ΡŽΡ‚ сущСствСнный Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ нСдостаток β€” ΠΎΠ½ΠΈ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π₯отя Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ avra такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ заявлСна

Debugging support AVRA creates a coff file everytime the assembly was sucessful. This file allows AVR Studio or any coff compatible debugger to simulate or emulate the program.


Π½ΠΎ *.cof Ρ„Π°ΠΉΠ» Π² Π²Ρ‹Ρ…Π»ΠΎΠΏΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ оказываСтся пустым. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΠΎ шагам, остро Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡ‚ этих (ΠΊ слову довольно старых Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²) ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ³ΡƒΡ‡Π΅ΠΌΡƒ компилятору ΠΈΠ· сСмСйства GNU

avr-as


Установка этого инструмСнтария доступна ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² любого достаточно популярного дистрибутива. Π’ случаС с Arch Linux

$ sudo pacman -S avr-gcc avr-libc avr-binutils


GNU assembler (gas) являСтся бэкэндом ΠΊ компилятору gcc ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ явно Π½Π΅ вызываСтся. Бвязано это с ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ *nix систСм, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° C/C++, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ассСмблСру отводится Ρ€ΠΎΠ»ΡŒ младшСго нСлюбимого сына. ВмСстС с Ρ‚Π΅ΠΌ это обСспСчиваСт Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ассСмблСрного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C/C++ Ρ‡Ρ‚ΠΎ, Ρ€Π΅Π΄ΠΊΠΎ, Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… x86/x86_64 синтаксис Β«Π³Π½ΡƒΡ‚ΠΎΠ³ΠΎΒ» ассСмблСра (AT&T) Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ принятой Intel-Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ (хотя Π½Π° gas ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½Ρ‚Π΅Π»-синтаксис, компилятор Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ). Π§Π΅Π³ΠΎ стоит ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΈΠ½Ρ‚Π΅Π»-Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ порядок ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ AVR gas Π½Π΅ ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Atmel Π² части оформлСния ΠΊΠΎΠΌΠ°Π½Π΄ β€” порядок ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ здСсь ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

ldi r16, 10


Π² gas для AVR выглядит ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ макросы ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора, ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Atmel. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²Ρ‹ΡˆΠ΅ тСстовая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

test.S

#include	"/usr/avr/include/avr/io.h"	
/* БСкция Π΄Π°Π½Π½Ρ‹Ρ… */
	.data
/* БСкция ΠΊΠΎΠ΄Π° */
	.section .text
	.org 0x0000
/* Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ avr-gcc вмСсто avr-as */
	.global main
main:
	ldi r16, 10
M1:
	inc r16
	rjmp M1


Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· исходника сСкция ΠΊΠΎΠ΄Π° опрСдСляСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ прСдпроцСссора .section .text (Π°Π½Π°Π»ΠΎΠ³ .cseg). Аналогом .dseg слуТит .data. ЕдинствСнноС, Ρ‡Π΅Π³ΠΎ я ΠΏΠΎΠΊΠ° Π½Π΅ понял ΠΈ Π½Π΅ ΡƒΠ·Ρ€Π΅Π» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ опрСдСляСтся содСрТимоС EEPROM (Π°Π½Π°Π»ΠΎΠ³ .eseg). НадСюсь срСди Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ найдСтся Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ Π³ΡƒΡ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚ мСня Π½Π° ΠΎΡ‚Π²Π΅Ρ‚. Новичкам ΠΆΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΌΠ½Π΅, ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΠΎΠΊΡƒΡ€ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Ρ‚ΡƒΡ‚ ΠΈ Π²ΠΎΡ‚ здСсь для уяснСния спСцифики использования gas для AVR.

ΠœΡ‹ ΠΆΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ собСрСм hex-Ρ„Π°ΠΉΠ», ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ МК. Команда:

$ avr-as -mmcu=atmega16 -o test.o test. S


Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (Π² нашСм случаС ATMega 16). Π”Π°Π»Π΅Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» прСобразуСтся Π² hex

$ avr-objcopy -O ihex test.o test.hex


ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ hex-Ρ„Π°ΠΉΠ» Π²ΠΈΠ΄Π°

test.hex
:060000000AE00395FECFAB

:00000001FF


Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ Π½Π° Π³Π»Π°Π²Π½Ρ‹ΠΉ вопрос ΠΈ Π½Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ прСимущСство gas ΠΏΠΎ возмоТности ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ пошаговой ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Для этого ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго


Π’ линуксах Π½Π΅Ρ‚ достойной Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ GDB. Для Π΅Π³ΠΎ использования ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ МК AVR ставим фронтэнд

$ sudo pacman -S avr-gdb


Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСм комплСксом ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ, ΠΏΡƒΠ³Π°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²: ΠΏΡ€ΠΈ справСдливо заявлСнной тСрмоядСрной ΠΌΠΎΡ‰ΠΈ ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния Π΅Π³ΠΎ довольно высок. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ боятся gdb ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π²Π΅Π»ΠΈΡ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΈ ΠΌΠΎΠ³ΡƒΡ‡Π΅Π³ΠΎ ΠΈ, ΠΊ соТалСнию, Π½Ρ‹Π½Π΅ ΠΏΠΎΠΊΠΎΠΉΠ½ΠΎΠ³ΠΎ (зСмля Ρ‚Π΅Π±Π΅ ΠΏΡƒΡ…ΠΎΠΌ, ΠœΡ‹Ρ‰ΡŠΡ…!) Николая Π›ΠΈΡ…Π°Ρ‡Π΅Π²Π° aka ΠšΡ€ΠΈΡ ΠšΠ°ΡΠΏΠ΅Ρ€ΡΠΊΠΈ Β«ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ ΠΈ Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ GDBΒ».

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для использования gdb β€” ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, сгСнСрировав ELF-ΠΎΠ±Ρ€Π°Π·, содСрТащий ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ символы

$ avr-as -mmcu=atmega16 -g --gstabs -o test.o test.S


ΠšΠ»ΡŽΡ‡ΠΈ -g ΠΈ —gstabs Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ соотвСтствСнно ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ символы ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² gdb. ΠšΠΎΠΌΠΏΠΎΠ½ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ELF

$ avr-ld -m avr4 -o test.elf test.o


ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ нашСго тСста. Из Π½Π΅Π³ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ hex-Ρ„Π°ΠΉΠ»

$ avr-objcopy -j .text -j .data -O ihex test.elf test.hex


явно указывая ΠΊΠ»ΡŽΡ‡Π΅ΠΌ -j Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ сСкции, ΠΊΠ»ΡŽΡ‡Π΅ΠΌ -O ihex Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° (intel HEX). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС:

test.hex
:060000000AE00395FECFAB

:00000001FF


ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² эмулятор ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ доступныС возмоТности ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.


Π­Ρ‚ΠΎΡ‚ вопрос слоТнСС ΠΏΡ€ΠΎΡ‡ΠΈΡ…. Мною Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π΄Π²Π° достойных ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°: simavr, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… рСпозиториях Π°Ρ€Ρ‡Π° ΠΈ устанавливаСмый простым:

$ sudo pacman -S simavr


ΠΈ Π±ΠΎΠ»Π΅Π΅ популярный симулятор simulavr, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½ Π΄Π°ΠΆΠ΅ Π² AUR, ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ основная масса ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„Ρ‹ Π² сСти ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ Π½Π΅ΠΌ. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· исходников с Ρ†Π΅Π»ΡŒΡŽ создания PKGBUILD для AUR Ρƒ мСня Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΎ, хотя я ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Π» всС Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ±ΠΈΡ‚ΡŒ звСрский ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒ, скачав DEB-ΠΏΠ°ΠΊΠ΅Ρ‚ для Debian, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ для Π°Ρ€Ρ‡Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ debtap.

 $ debtap simulavr_0.1.2.2-7+b2_amd64.deb


ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ‡-ΠΏΠ°ΠΊΠ΅Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒΡΡ Π² систСму.

ВСрсия эта довольно дрСвняя, Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅Π»ΠΈΠ· (судя ΠΏΠΎ Π΄Π°Ρ‚Π΅ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ) ΡƒΡˆΠ΅Π» довольно Π΄Π°Π»Π΅ΠΊΠΎ.

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся simavr, Ρ‚ΠΎ ΠΎΠ½ ставится Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ большСС число МК, Π½ΠΎ Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π² консоль сообщСния ΠΎ ΠΊΡ€ΡΡˆΠ΅ эмулятора ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с этим ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ. Π’ΡƒΡ‚ я снова Π°ΠΏΠ΅Π»Π»ΠΈΡ€ΡƒΡŽ ΠΊ ΡΠ²Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π² вопросС Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽ Π½Π° подсказку.

Пока ΠΆΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒΠ½ΠΎ поставлСнный simulavr


Π˜Ρ‚Π°ΠΊ, сначала ΠΎΡ‚Π»Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ…Π°Ρ€Π΄ΠΊΠΎΡ€Π½ΠΎ β€” ΠΈΠ· консоли запустим эмулятор

$ simulavr -d atmega16 -c 8000000 -g -P simulavr-disp


запускаСм эмулятор ATMega 16 (ΠΊΠ»ΡŽΡ‡ -d) Π½Π° частотС 8 ΠœΠ“Ρ† (ΠΊΠ»ΡŽΡ‡ -с) с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ красивого просмотра рСгистров ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (опция -P, которая ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· сСти Π² свСТайшСй вСрсии эмулятора ΡƒΠ±Ρ€Π°Π½Π°). Π’ΠΈΠ΄ΠΈΠΌ окошко Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° с содСрТимым рСгистров ΠΈ памяти

наблюдаСм Π² консоли запуска сообщСниС

Waiting on port 1212 for gdb client to connect...


ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эмулятор ΠΆΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 1212 (ΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ запускС ΠΊΠ»ΡŽΡ‡Π΅ΠΌ -p). Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΉ консоли стартуСм ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ:

$ avr-gdb -q -tui


ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΡƒΠ±Π΅Ρ€Π΅Ρ‚ пафосный Π²Ρ‹Ρ…Π»ΠΎΠΏ gdb ΠΏΡ€ΠΈ запускС, вторая Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ просмотр исходников Π² процСссС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΌΠ½ΠΎΠΉ для наглядности (Π½Π° Π΄Π΅Π»Π΅ эта опция Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Π° ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½). Π’ консоли ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠŸΠΎΠ΄Π»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ эмулятору

(gdb) target remote:1212


Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ELF-ΠΎΠ±Ρ€Π°Π· Π² эмулятор (Π΄Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ Π° Π½Π΅ hex, Π½Π° Ρ‡Π΅ΠΌ я обТСгся Π² самом Π½Π°Ρ‡Π°Π»Π΅) d ‘vekznjh

(gdb) load test.elf


Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ символы:

(gdb) file test.elf


ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ² Β«yesΒ» Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ вопрос, получая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ:

Π§Ρ‚ΠΎ ΠΆΠ΅, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ наш исходник ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄. Π”Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ next

(gdb) n


ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π±ΠΎΠ΄Ρ€ΠΎ пСрСмСстился ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ.

ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнившССся состояниС рСгистров ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΊΠ°ΠΊ Π² консоли эмулятора

Ρ‚Π°ΠΊ ΠΈ Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°:

(gdb) info registers
.
.
.
r16            0xa      10
.
.
.
SREG           0x0      0
SP             0x0      0x0 <main>
PC2            0x2      2
pc             0x2      0x2 <M1>


Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°ΠΌ доступСн вСсь Π±ΠΎΠ³Π°Ρ‚Π΅ΠΉΡˆΠΈΠΉ инструмСнтарий, прСдоставляСмый ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ gdb. Однако,

Ρ‡Ρ‚ΠΎ линуксоиду Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‚ΠΎ виндузятнику ΡΠΌΠ΅Ρ€Ρ‚ΡŒ

мСня ΡƒΠΏΡ€Π΅ΠΊΠ½ΡƒΡ‚ ΠΌΠΎΠ» Β«Ρ‡ΡƒΠ²Π°ΠΊ, Π² Atmel Studio Π΅ΡΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ исходников, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ хоткСями ΠΈ просмотром Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ€Π°Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ графичСским способом» ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π°Π²Ρ‹, поэтому попытаСмся хотя Π±Ρ‹ частично Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ друТСствСнности ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, совмСстив Π΅Ρ‘ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ


IDE Eclipse извСстна Π΄Π°Π²Π½ΠΎ. Π—Π° врСмя своСго сущСствования ΠΎΠ½Π° ΠΏΡ€ΠΎΡ‡Π½ΠΎ ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π°ΡΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… областях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Β«Ρ‚ΡƒΠΏΠΎ всё», благодаря ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΡ… Π΅Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ своС врСмя я восторгался Π΅ΠΉ, Π½ΠΎ врСмя это ΠΏΡ€ΠΎΡˆΠ»ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Π΄Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ масса ΠΌΠ΅Π»ΠΊΠΈΡ… нюансов, Ρ€Π°Π·Π΄ΡƒΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² нСдостатки (Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Π» для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ C/C++ QtCreator Π² силу спСцифики Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎ Ρ‡Π΅ΠΌ Π½Π΅ ТалСю).

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π½Π°ΠΌΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ½Π° Π²ΠΏΠΎΠ»Π½Π΅ удовлСтворяСт Π΅Ρ‘ трСбованиям. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с AVR Π² Eclipse потрСбуСтся установка ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²

ΠΈ, Π΄Π°Π±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я ΠΎΡ‚ΡΡ‹Π»Π°ΡŽ читатСля ΠΊ поиску, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ установка ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΊ Eclipse описываСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. Π’Π°ΠΆΠ½Ρ‹ΠΌ здСсь прСдставляСтся настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎ Ρ‡Π΅ΠΌ я расскаТу ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Eclipse ΠΏΠΎ своСй сути ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, поэтому для создания ассСмблСрного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Makefile, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ напишСм для нашСго тСста. Π’ΠΎΡ‚ ΠΎΠ½

Makefile

# Π”Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
DEVICE = atmega16
TARGET = test
OBJECTS = $(TARGET).o
ELF = $(TARGET).elf
HEX = $(TARGET).hex
# Π—Π°Π΄Π°Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° компиляции
COMPILE = avr-as -mmcu=$(DEVICE) -g --gstabs
# Главная Ρ†Π΅Π»ΡŒ - HEX-Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ
all:	hex
# ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ сборки ΠΎΠ±ΡŠΠ΅ΠΊΡ€Π½Ρ‹Ρ… ΠΌΠΎΠ»ΡƒΠ»Π΅ΠΉ: Π±Π΅Ρ€ΡƒΡ‚ΡŒΡΡ всС исходники 
# с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ *.S ΠΈ компилятся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ *.o
.S.o:
           $(COMPILE) -c $< -o $@
	
# ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ очитски - удаляСм всС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ сборки
clean:
           rm -f $(HEX) $(ELF) $(OBJECTS)
	
# Компоновка всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² ELF
elf:   $(OBJECTS)
        avr-ld -m avr4 -o $(ELF) $(OBJECTS)
# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ELF Π² HEX
hex: elf
        avr-objcopy -j .text -j .data -O ihex $(ELF) $(HEX)


Написав этот опус ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Eclipse ΠΈ создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ File -> New -> Project, выбирая ΡΠΈΡˆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° основС Makefile

ΠΆΠΌΠ΅ΠΌ Next, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ выбирая располоТСниС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с исходниками ΠΈ Makefile

Π¨Π»Π΅ΠΏΠ°Π΅ΠΌ Finish ΠΈ Π²ΠΈΠ΄ΠΈΠΌ наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΎ всСй красС

ИдСм Π² мСню Project -> Build all ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ:

19:34:51 **** Build of configuration Default for project test ****
make all 
avr-as -mmcu=atmega16 -g --gstabs -c test. S -o test.o
avr-ld -m avr4 -o test.elf test.o
avr-objcopy -j .text -j .data -O ihex test.elf test.hex
19:34:51 Build Finished (took 128ms)


Π’Π΅ΠΏΠ΅Ρ€ΡŒ настроим запуск эмулятора, ΠΊΠ°ΠΊ внСшнСго инструмСнта ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° зайдя Π² Run -> External Tools, создав Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ с настройками ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ скринам

Π’ΡƒΡ‚ ΠΌΡ‹ сообщаСм срСдС, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эмулятор с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, помСстив ΠΏΡƒΠ½ΠΊΡ‚ запуска Π² мСню Run β†’ External Tools.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ настройки, ΠΈΠ΄Π΅ΠΌ Π² мСню Run β†’ External Tools β†’ atmega16 ΠΈ наблюдаСм запуск эмулятора:

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ настроим ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ИдСм Π² мСню Run β†’ Debug Configuratuions ΠΈ настраиваСм Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· GDB.

Π½Π΅ забывая ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ соСдинСния с сСрвСром симуляции:

ΠΈ ΡƒΠΊΠ°Π·Π°Π², ΠΊΠ°ΠΊΠΈΠ΅ дСйствия слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ запускС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ:

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ставим Π³Π°Π»ΠΊΠΈ Π½Π° Load image ΠΈ Load Symbols β€” это позволяСт ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ Π² эмулятор ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ символы. Π‘Ρ‚Π°Π²ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ M1.

Π–ΠΌΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ Apply ΠΈ Debug и… вуаля!

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΡΠ»ΡƒΡˆΠ½ΠΎ стал Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ останова. ДоступСн просмотр Π΄Π°ΠΌΠΏΠ° памяти ΠΈ содСрТимого рСгистров. Π–ΠΌΠ΅ΠΌ F5 (ΠΈΠ»ΠΈ F6) ΠΈ трассируСм наш ΠΊΠΎΠ΄ ΠΏΠΎ шагам.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ…ΠΎΡ‚ΡŒ Π΄ΠΎ посинСния Ρ‚Ρ€Π°ΡΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ значСния рСгистров ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, снова Ρ‚Ρ€Π°ΡΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ процСссом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.


Π§Ρ‚ΠΎ Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Ρ„ΠΈΠ½Π°Π»Π΅? Π― ΡƒΠΆΠ΅ тысячу Ρ€Π°Π· Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΌΠΎΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° рСсурсах Ρ…Π°Π±Ρ€ ΠΈ гиктаймс β€” ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° ΠΈ Ρ€ΡƒΠΏΠΎΡ€ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ мнСния. РСшСна Π·Π°Π΄Π°Ρ‡Π° β€” организация Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² AVR Π² срСдС Linux. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ β€” ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ гуглСния ΠΈ сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½Π½Ρ‹Ρ… сСтСвых источников. ЦСль Π΅Ρ‘ β€” Π½Π°Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π½Π° поиск Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΎΠ½Π° лишь ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΈΡ… собствСнных ΠΊΠΎΠΏΠ°Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° подСлится собранной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ заинтСрСсованных людСй ΠΊ интСрСсной ΠΌΠ½Π΅ Ρ‚Π΅ΠΌΠ΅.

Π’ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Ρ‡Π΅ΠΌ Π½Π΅ сказано, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ Ρ‡Π΅Ρ€Π΅Π· avrdude, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ (sic!) Π΅ΡΡ‚ΡŒ кроссплатформСнная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ для сСмСйства AVR. Если Ρƒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, Π° Ρƒ мСня Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ рассмотрим ΠΈ Π΅Ρ‘, ΠΏΠΎΠΌΠΈΠ³Π°Π΅ΠΌ свСтодиодами, пошлСм слово Β«ΠΆΠΎΠΏΠ°Β» Β«ΡΡ‡Π°ΡΡ‚ΡŒΠ΅Β» Ρ‡Π΅Ρ€Π΅Π· USART ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π΅ΠΌΠ° нСисчСрпаСма ΠΈ достойна продолТСния. ВрСмя ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚.

А ΠΏΠΎΠΊΠ°, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ ΠΌΠΎΠ΅Π³ΠΎ читатСля Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ надСюсь Π½Π° Π½ΠΎΠ²ΡƒΡŽ встрСчу!

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с AVR Studio 4 (ΡƒΡ€ΠΎΠΊ 1)

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с AVR Studio 4 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ само собой Π΅Ρ‘ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Если ΠΎΠ½Π° ΡƒΠΆΠ΅ установлСна, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот шаг.

Установка:
создаСшь ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ c:/avr/ – Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄ΡƒΡ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
создаСшь ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ c:/works/ – Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄ΡƒΡ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π²ΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π±Ρ‹Π»ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π½ΠΈΠΌΠΈ.

Π”Π°Π»ΡŒΡˆΠ΅, ΠΊΠ°Ρ‡Π°Π΅ΡˆΡŒ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡˆΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ c:/avr/
WinVR
AVRStudio4_SP3

Π•ΡΡ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ AVRStudio5 Π½ΠΎ ΠΈ AVRStudio4 ΠΏΠΎΠΊΠ° Π²ΠΏΠΎΠ»Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚.

Вся Ρ€Π°Π±ΠΎΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² AVRStudio4, WinAVR Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ AVR-GCC (Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π‘ΠΈ)
НО! ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π½Π°Π΄ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ WinAVR , ΠΈΠ½Π°Ρ‡Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° AVR-GCC Π½Π΅ подцСпится.

Π”Π°Π»ΡŒΡˆΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΡˆΡŒ AVRStudio4 ΠΈ создаСшь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π’ΡƒΡ‚ Π΄ΡƒΠΌΠ°ΡŽ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΡˆΡŒΡΡ.
AVR-GCC для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π‘ΠΈ
Atmel Avr Assembler соотвСтствСнно для ассСмблСра.

ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с МК Π»ΡƒΡ‡ΡˆΠ΅ с нуля. А это Π·Π½Π°Ρ‡ΠΈΡ‚ с АссСмблСра, Π·Π½Π°Ρ‡ΠΈΡ‚ создаСшь Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Atmel AVR Assembler.

ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Atmega8.

дальшС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ симулятор. Π²Ρ‹Π±ΠΈΡ€Π°ΠΉ: AVR Simulator -> Amega8

Π½Ρƒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠΈΠΌΠ°ΠΉ Ρ„ΠΈΠ½ΠΈΡˆΡŒ.

ΠΊΠΎΠ³Π΄Π° создастся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±ΡƒΠ΄Π΅Ρ‚ большой, Π±Π΅Π»Ρ‹ΠΉ, чистый лист. Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄.

Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎ содСрТимоС этого листа

β€œΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈβ€ – это тСкст, пропускаСмый компилятором, ΠΏΡ€ΠΈ компиляции.
ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ коммСнтария Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΎΡΡ‚ΡŒ спСц символ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ символом ; β€œΡ‚ΠΎΡ‡ΠΊΠ° с запятой”, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ β€œΠ΄Π°Π±Π» ΡΡˆΠ΅Ρˆβ€ (//),
Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²


/*
* ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΈ(многострочный), 
* ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для 
* ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΡ†ΠΈΠΈ 
* ΠΎΠ± исходном ΠΊΠΎΠ΄Π΅, Ρ‚.Π΅.
* Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ‚. Π΄.
*/

NOP  // Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пояснСния назначСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΠ»ΠΈ куска ΠΊΠΎΠ΄Π°
SLEEP ; Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ‚ΠΎΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для пояснСния (для Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ) Π² ΠΊΠΎΠ΄Π΅

ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строчкС. Ρ‚.Π΅. ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° – ΠΎΠ΄Π½Π° строчка.
допустим Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с двумя β€œΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈβ€, с ΠΎΠ΄Π½ΠΈΠΌ, ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ‡Π΅Π³ΠΎ


MOV R16, R17 ; Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
INC R16      ; ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
SEI          ; Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π‘ этим всС ясно. дальшС слоТнСС. КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1, 2 ΠΈΠ»ΠΈ 3 Π±Π°ΠΉΡ‚Π°.


MOV R16, R17 ; Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π°
INC R16      ; Π΄Π²Π° Π±Π°ΠΉΡ‚Π°
SEI          ; ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚

Π’ΠΈΠ΄ΠΈΡ‚Π΅ связь Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ?

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° свой ассСмблСр, хотя ΠΌΠ½ΠΈΠΌΠΎΠ½ΠΈΠΊΠ° Ρƒ Π½ΠΈΡ… ΠΏΠΎΡ…ΠΎΠΆΠ°, Ρ‚.Π΅. ΠΊΠΎΠΌΠ°Π½Π΄Π° MOV Ρƒ ΠΌΠΊ ΠΎΠ΄Π½ΠΎΠΉ сСрии Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² машинном ΠΊΠΎΠ΄Π΅ допустим 0x12 Π° Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ 0x55.
Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈ компиляции, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π½Π°ΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору, для ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠΊ Ρƒ нас ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.
это Π²ΠΎΠΎΠ±Ρ‰Π΅ выбираСтся ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
По этому ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Atmega8.

Но ΠΈ Ρ‚ΡƒΡ‚ Π½Π΅ всС. для облСгчСния нашСй ΠΆΠΈΠ·Π½ΠΈ, Π² AVRStudio4 Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ констант, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ β€œΠœΠ°ΠΊΡ€ΠΎΠ°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€β€.

Для Ρ‚ΠΎΠ³, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΈΡ… ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π° Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строчку


.include "m8def.inc"
// ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ .include, ΠΌΡ‹ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» m8def.inc
;ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ станСт Π»Π΅Π³Ρ‡Π΅ ;)

Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°, ставится Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, объясню Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅. Но Π° ΠΏΠΎΠΊΠ°, Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ Ρ‚Π°ΠΊ:


RJMP RESET		 ; Reset Handler
		RETI;	RJMP EXT_INT0	 ; IRQ0 Handler
		RETI;	RJMP EXT_INT1	 ; IRQ1 Handler
		RETI;	RJMP TIM2_COMP	 ; Timer2 Compare Handler
		RETI;	RJMP TIM2_OVF	 ; Timer2 Overflow Handler
		RETI;	RJMP TIM1_CAPT	 ; Timer1 Capture Handler
		RETI;	RJMP TIM1_COMPA	 ; Timer1 CompareA Handler
		RETI;	RJMP TIM1_COMPB	 ; Timer1 CompareB Handler
		RETI;	RJMP TIM1_OVF	 ; Timer1 Overflow Handler
		RETI;	RJMP TIM0_OVF	 ; Timer0 Overflow Handler
		RETI;	RJMP SPI_STC	 ; SPI Transfer Complete Handler
		RETI;	RJMP USART_RXC	 ; USART RX Complete Handler
		RETI;	RJMP USART_UDRE	 ; UDR Empty Handler
		RETI;	RJMP USART_TXC	 ; USART TX Complete Handler
		RETI;	RJMP ADC		 ; ADC Conversion Complete Handler
		RETI;	RJMP EE_RDY		 ; EEPROM Ready Handler
		RETI;	RJMP ANA_COMP	 ; Analog Comparator Handler
		RETI;	RJMP TWSI		 ; Two-wire Serial Interface Handler
		RETI;	RJMP SPM_RDY	 ; Store Program Memory Ready Handler

ПослС этого ΠΈΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ сам ΠΊΠΎΠ΄


RESTART: ; ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
MAIN: NOP  ; ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°
RJMP MAIN

Но Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° (Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π΅ ΠΎΠ΄Π½Π°, Π° ΠΌΠ½ΠΎΠ³ΠΎ) особСнностСй.

Для удобства написания ΠΊΠΎΠ΄Π°, для Π΅Π³ΠΎ понятности ΠΈ для облСгчСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Π½Π°ΠΌ ΠΏΠΎΠ΄Π°Ρ€ΠΈΠ»ΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ выглядят? β€œRESET:” ΠΈ β€œMAIN:” это ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹, Π² ΠΈΡ… ΠΈΠΌΠ΅Π½Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π»ΡŽΠ±Ρ‹Π΅ символы латинского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹. ΠœΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, допустим β€œNOP”.
Как ΠΊ Π½ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚? Допустим ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ RJMP.

Π’Π°ΠΊ ΠΆΠ΅, ΠΈΠ· ΠœΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ(ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ), ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, ΠΌΡ‹ вСрнСмся Ρ‚ΡƒΠ΄Π°, ΠΎΡ‚ ΠΊΡƒΠ΄Π° Π΅Ρ‘ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ. Для Π²Ρ‹Π·ΠΎΠ²Π° Π΅Ρ‘, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€œRCALL (ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°)”, Π° Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈΠ· ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹(ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹), Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ β€œRET”. Π£ нас Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:


RESTART: 
MAIN: NOP
RCALL PPP1 ; Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
RJMP MAIN

PPP1: NOP
RET  ; Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° β€œRCALL”, ΠΏΡ€ΠΈ Π΅Ρ‘ Π²Ρ‹Π·ΠΎΠ²Π΅, адрСс ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ мСста Π΅Ρ‘ Π²Ρ‹Π·Π²Π°Π»ΠΈ, помСщаСтся Π² Π‘Π’Π•Πš, Π° ΠΏΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€œRET”, извлСкаСтся ΠΈΠ· рСгистра β€œΡΡ‚Π΅ΠΊβ€. Π‘Π’Π•Πš Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎ Π±Ρ‹ Π½Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нашим ΠΌΠΊ, Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Ρ‚.ΠΊ. ΠΌΠΊ, это устройство ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅, Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств. Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ УБАПП, ШИМ, ЦАП, АЦП ΠΈ Ρ‚.Π΄. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΊ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ β€œΡΡ‚Π΅ΠΊΠ°β€. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ послС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° β€œRESET:”.


LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

Если Π±Ρ‹ ΠΌΡ‹ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ .include β€œm8def.inc” Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:


LDI R16,0x04
OUT SPH,R16
LDI R16,0x5f
OUT SPL,R16

Π Π°Π·Π½ΠΈΡ†Π° сущСствСнная, Π½Π° ΠΌΠΎΠΉ взгляд.

Π‘Π’Π•Πš, это ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°: (послСдний вошСдший, Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ).
Магазинного Ρ‚ΠΈΠΏΠ° – это Π½Π΅ супСрмаркСт, Π° Ρ€ΠΎΠΆΠΎΠΊ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°. надСюсь всС прСдставили ΠΊΠ°ΠΊ Π² Π½Π΅Π³ΠΎ Π·Π°Ρ€ΡΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ€ΠΎΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ Ρ‚ΡƒΠ΄Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ.
НуТно ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ памяти Π‘Π’Π•Πš, Ρ‚.ΠΊ. любая Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ошибка Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ срыву стСка. Π­Ρ‚ΠΎ Π½Π° ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ваТная Ρ‚Π΅ΠΌΠ°, Ρ‡Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ Π΅ΠΉ Ρ†Π΅Π»ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ ΠΈ Π½Π°ΠΏΠΈΡˆΡƒ Π΅Ρ‘ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρƒ нас получился Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:


.include "m8def.inc"

		RJMP RESET		 ; Reset Handler
		RETI;	RJMP EXT_INT0	 ; IRQ0 Handler
		RETI;	RJMP EXT_INT1	 ; IRQ1 Handler
		RETI;	RJMP TIM2_COMP	 ; Timer2 Compare Handler
		RETI;	RJMP TIM2_OVF	 ; Timer2 Overflow Handler
		RETI;	RJMP TIM1_CAPT	 ; Timer1 Capture Handler
		RETI;	RJMP TIM1_COMPA	 ; Timer1 CompareA Handler
		RETI;	RJMP TIM1_COMPB	 ; Timer1 CompareB Handler
		RETI;	RJMP TIM1_OVF	 ; Timer1 Overflow Handler
		RETI;	RJMP TIM0_OVF	 ; Timer0 Overflow Handler
		RETI;	RJMP SPI_STC	 ; SPI Transfer Complete Handler
		RETI;	RJMP USART_RXC	 ; USART RX Complete Handler
		RETI;	RJMP USART_UDRE	 ; UDR Empty Handler
		RETI;	RJMP USART_TXC	 ; USART TX Complete Handler
		RETI;	RJMP ADC		 ; ADC Conversion Complete Handler
		RETI;	RJMP EE_RDY		 ; EEPROM Ready Handler
		RETI;	RJMP ANA_COMP	 ; Analog Comparator Handler
		RETI;	RJMP TWSI		 ; Two-wire Serial Interface Handler
		RETI;	RJMP SPM_RDY	 ; Store Program Memory Ready Handler

RESET:	LDI R16,HIGH(RAMEND)
		OUT SPH,R16
		LDI R16,LOW(RAMEND)
		OUT SPL,R16
		RGMP RESET

MAIN: NOP  ; ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°
RJMP MAIN

На Π΄Π°Π½Π½ΠΎΠΌ этапС, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ ΠΏΠΎ ΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ Ρƒ нас Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксичСскиС ошибки Π² ΠΊΠΎΠ΄Π΅.

Для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ процСсса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ эмулятору частоту, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ МК, это дСлаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС компиляции ΠΈ запуска ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ,
Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°Π½Π΅Π»ΠΈ мСню β€œBuild”, раскрываСм Π΅Ρ‘ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ β€œBuild and Run”, послС Ρ‡Π΅Π³ΠΎ, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΆΠ΅Π»Ρ‚ΡƒΡŽ стрСлочку Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² нашСм листингС ΠΊΠΎΠ΄Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ Π² ΠΏΠ°Π½Π΅Π»ΠΈ мСню β€œDebug” ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ β€œAVR Simulator Options”, открываСтся Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:

Π’ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ МК ΠΈ Π΅Π³ΠΎ частоту, Ρ‚Π°ΠΊ ΠΆΠ΅, Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ с ΠΏΡ€Π°Π²Π°, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ нашСм МК: Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ частоту, ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ памяти(EEPROM, RAM, FLASH). Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚ Π½Π° Atmega8, Π½Π° страницС 203 (ΠΎΠ±Ρ‰ΠΈΠΉ список рСгистров) ΠΈ 205 (ΠΎΠ±Ρ‰ΠΈΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄) ΠΈ приступай ΠΊ написанию своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
И Π·Π°ΠΏΠΎΠΌΠ½ΠΈ, Π½Π΅ бойся ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с симулятором, ΠΎΠ½ ΠΎΡ‚ этого Π½Π΅ сломаСтся!

Π—Π°ΠΏΠΈΡΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ΅ AVR Studio 4 с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ AVR, AVR Studio 4. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ссылку.

atmel-studio Β· Π’Π΅ΠΌΡ‹ GitHub Β· GitHub

Π’ΠΎΡ‚
146 ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²
соотвСтствуСт этой Ρ‚Π΅ΠΌΠ΅.

..

Π’Π΅ΠΌΠ½Ρ‹ΠΉ сСктор
/

АВР

Π—Π²Π΅Π·Π΄Π°
62

Ρ‚Π°ΠΌΠ°Π»ΡŒΠ΄Ρ€Π΅Π³
/

evilmass_at90usbkey2

Бпонсор

Π—Π²Π΅Π·Π΄Π°
29

hannahvsawiuk
/

3-Ρ„Π°Π·Π½Ρ‹ΠΉ ШИМ

Π—Π²Π΅Π·Π΄Π°
21

НСомСр
/

ΠΠ’Π Πš

Π—Π²Π΅Π·Π΄Π°
8

Ρ‚Π΅Π°Ρ€ΠΈΠ΄
/

atmega32u4-usb-сСрийный

Бпонсор

Π—Π²Π΅Π·Π΄Π°
7

Ρ†Π°ΠΉ
/

смысл2ΠΊΠ°Π½_ΠΊΠΎΠ΄

Π—Π²Π΅Π·Π΄Π°
6

Ρ‚Π°ΠΌΠ°Π»ΡŒΠ΄Ρ€Π΅Π³
/

lufa-sdcard-mass-storageΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°-fatfs-AT90USBKEY2

Бпонсор

Π—Π²Π΅Π·Π΄Π°
6

Π“ΠΎΠ΄ΠΆΠΈΠΌΠΌΠΈΠΏΠΈ
/

LoRa-GPIO

Π—Π²Π΅Π·Π΄Π°
5

Ρ‚Π΅Π°Ρ€ΠΈΠ΄
/

Arduino-USB-сСрийный

Бпонсор

Π—Π²Π΅Π·Π΄Π°
4

bebenlebricolo
/

CMakeAS7

Π—Π²Π΅Π·Π΄Π°
4

ΠΏΠ΅Π½Ρ‚Ρ€32
/

Π’Π΅Ρ€ΠΌΠΎΠΌΠ΅Ρ‚Ρ€

Π—Π²Π΅Π·Π΄Π°
4

EWouters
/

ΠΏΠΈΠ΄ΠΆΠΈΠ»ΠΈΠ±

Π—Π²Π΅Π·Π΄Π°
4

Ρ€Π°Π·Π½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹
/

pi4-Ρ‚ΡƒΡ€Π±ΠΎ-энкабулятор

Π—Π²Π΅Π·Π΄Π°
4

Ρ€ΠΎΡ…Π°Π½Π²Π΅Ρ€ΠΌΠ°94
/

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Ρ€Ρ‚ΠΎΠ»Π΅Ρ‚

Π—Π²Π΅Π·Π΄Π°
3

сык-яман
/

ΡƒΠΌΠ½Ρ‹ΠΉ

Π—Π²Π΅Π·Π΄Π°
3

ΠΏΠ΅Π½Ρ‚Ρ€32
/

Π‘Π΅Ρ€Π²ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ

Π—Π²Π΅Π·Π΄Π°
3

Дэйвпруитт
/

samd_tutorials

Π—Π²Π΅Π·Π΄Π°
3

ΠœΠΎΡ…Π°ΠΌΠ΅Π΄Π“ΠΎΡ€Π°Π±Π°
/

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒ с PID

Π—Π²Π΅Π·Π΄Π°
3

Ρ„Π°Ρ€ΠΊΡƒ
/

Π‘Π°ΠΉΠΌΠΎΠ½-Π“Π΅ΠΉΠΌ

Π—Π²Π΅Π·Π΄Π°
3

ΠΏΠ΅Π½Ρ‚Ρ€32
/

Π—Π°ΠΊΠΎΠ½ Ома

Π—Π²Π΅Π·Π΄Π°
3

Π£Π»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ эту страницу

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ описаниС, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ссылки Π½Π°
atmel-studio
страницу Ρ‚Π΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΉ.

ΠšΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ эту Ρ‚Π΅ΠΌΡƒ Π² свой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с
atmel-studio
Ρ‚Π΅ΠΌΡƒ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Ρ†Π΅Π»Π΅Π²ΡƒΡŽ страницу рСпозитория ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ «ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠ°ΠΌΠΈ».

Π£Π·Π½Π°Ρ‚ΡŒ большС

ΠŸΠ»Π°Ρ‚Π° модуля ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° USB 2.0 AVR ATmega32U4

β„– Π·Π°ΠΊΠ°Π·Π°: ΠΊΡ€ΠΎΡˆΠΊΠ°32u4-1.0
НаличиС: Π½Π° складС

Π¦Π΅Π½Π°:Β  12,90 Π΅Π²Ρ€ΠΎ

Π²ΠΊΠ». Π±Π΅Π· НДБ доставка

Частота кристалла
8,0000 ΠœΠ“Ρ†16,0000 ΠœΠ“Ρ†

ΡˆΡ‚.

Π•ΡΡ‚ΡŒ вопросы ΠΏΠΎ этому ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ?

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ нашим Skype-Ρ‡Π°Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ свой вопрос ΠΈ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π² ΠΏΠΎΠ»Π΅ Π½ΠΈΠΆΠ΅.

Crumb32U4 V1.0 с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ USB 2.0

ОписаниС

Crumb32U4 V1.0 β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ/малСнький (всСго 41 x 18 ΠΌΠΌ!) ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ATmega32U4 со встроСнным высокоскоростным/низкоскоростным ΠΏΠΎΡ€Ρ‚ΠΎΠΌ USB 2. 0. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ устройства. ВсС сигналы ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° доступны Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Ρ‹Ρ… Ρ€Π°Π·ΡŠΠ΅ΠΌΠ°Ρ…. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ кристалл XTAL Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ загруТСнная ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ прилоТСния для ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ USB HID. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊ USB (ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ распознан ΠΊΠ°ΠΊ USB-ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… USB-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ²) ΠΈ посмотритС тСкстовоС сообщСниС, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π΅ ΠΎΡ‚ модуля Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅! ΠŸΡ€ΠΈΠΌΠ΅Ρ€ основан Π½Π° послСднСй вСрсии LUFA Leight Weight USB Framework для AVR ΠΈ доступСн для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ здСсь .

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ поставки: 9 ΡˆΡ‚.0080

ΠœΠΎΠ΄ΡƒΠ»ΡŒ поставляСтся Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ собранных ΡˆΡ‚Ρ‹Ρ€Π΅Π²Ρ‹Ρ… Ρ€Π°Π·ΡŠΠ΅ΠΌΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ всСх Ρ€Π°Π·Π½Ρ‹Π΅ прСдпочтСния ΠΈΠ»ΠΈ трСбования. ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ соСдинитСля с подходящим Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΡˆΡ‚Ρ‹Ρ€Π΅Π²Ρ‹Ρ… Ρ€Π°Π·ΡŠΠ΅ΠΌΠΎΠ² ΠΈ Ρ€ΠΎΠ·Π΅Ρ‚ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠšΡ€ΠΈΡΡ‚Π°Π»Π» ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ собран, подробности см. Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ листС.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ листкС.

ВСхничСскиС Π΄Π°Π½Π½Ρ‹Π΅

  • ATmega32U4 (32k Flash, 2.5k SRAM, 1k EEPROM)
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹: 1xUSART, SPI, I2C/TWI, 26x IO Pins
  • ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства: 1x 8-Π±ΠΈΡ‚Π½Ρ‹ΠΉ / 2x 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ / 1x 10-Π±ΠΈΡ‚Π½Ρ‹ΠΉ (64 ΠœΠ“Ρ†, высокоскоростной) Ρ‚Π°ΠΉΠΌΠ΅Ρ€ с ШИМ/Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ/сравнСниСм, 12 ΠΊΠ°Π½Π°Π»ΠΎΠ². 10-Π±ΠΈΡ‚Π½Ρ‹ΠΉ АЦП, Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€, стороТСвой Ρ‚Π°ΠΉΠΌΠ΅Ρ€, ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ напряТСния, спящий Ρ€Π΅ΠΆΠΈΠΌ/Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ питания
  • 6-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Ρ‹ΠΉ интСрфСйс ISP со стандартной распиновкой
  • выбираСмая частота кристалла XTAL
  • Π Π°Π·ΡŠΠ΅ΠΌΡ‹: 2x 16-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Ρ‹Ρ… со всСми сигналами процСссора, 1x 6-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Ρ‹ΠΉ ISP, mini USB-B (5 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²)
  • 2,54 ΠΌΠΌ (1/10 дюйма) сСтка ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²
  • Π Π°Π·ΠΌΠ΅Ρ€: 40,64 ΠΌΠΌ x 17,78 ΠΌΠΌ

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

  • Infosheet
  • Schematic Diagram
  • ATmega16U4/32U4 Datasheet
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ исходного ΠΊΠΎΠ΄Π° Π½Π° основС LUFA
  • Atmel Studio 7 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Toolchain + Software Framework)
  • CodeVisionAVR C Compiler
  • 90 004 Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅:

    Power-S-501 V1.

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *