ΠΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²Π°Π»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ BIOS ? ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΠΠ°ΠΌ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΠΎΠ²Π΅Π·Π»ΠΎ... ΠΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ BIOS, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΏΡΠΎΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΌ ΡΠ΅Π±Ρ ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ»ΠΎΡ
ΠΎ (Π΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π»ΡΠ΄ΠΈ, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΌΡ Ρ ΠΠ°ΠΌΠΈ), Π½ΡΠΆΠ½ΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΠΎΡΠΊΡΡΡΠΈΡΡ ΠΏΠ°ΡΡ ΡΡΡΡΠΏΠΎΠ², ΡΠ½ΡΡΡ ΠΊΡΡΡΠΊΡ, Π²ΡΡΡΠ½ΡΡΡ ΠΌΠΈΠΊΡΠΎΡΡ
Π΅ΠΌΡ BIOS, Π½Π°ΠΉΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΡΠΎΡ, ΠΠ ΠΠ¨ΠΠ’Π¬, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠ°ΡΡ ΡΠ°Π· ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡΠ΄ΠΎΠ±Π½Π΅Π΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Microchip Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ/Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΊΠΈ ΡΠ²ΠΎΠ΅ΠΉ Flash-ΠΏΠ°ΠΌΡΡΠΈ (ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°), ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Bootloader'ΠΎΠ² - ΡΡΠΎ Π±ΡΠ» Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² - ΠΊΡΠΎ ΠΊΠ°ΠΊ Π½Π΅ ΠΎΠ½ Π»ΡΡΡΠ΅ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ½ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ
ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ. ΠΠ° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ°ΠΊΠΈΡ
Bootloader'ΠΎΠ² ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ AN1310, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° Π»ΠΈΠ½Π΅ΠΉΠΊΡ PIC16 / PIC18 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ UART Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. Π‘ΠΊΠ°ΡΠ°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΠ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°ΠΉΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ AN1310:
-
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΎΠ±ΡΡΠΌ Flash ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° - Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΌΠ΅Π½Π΅Π΅ 450 ΡΠ»ΠΎΠ²
-
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
UART ΠΌΠ΅ΠΆΠ΄Ρ ΠΠ (host) ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ
-
Π¨ΠΈΡΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ 1,200 ΠΠ±ΠΈΡ/Ρ - 3 MΠ±ΠΈΡ/Ρ
-
ΠΡΠΎΡΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 16-Π±ΠΈΡ CRC
-
ΠΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Flash ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΡΠ΅ΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ (Incremental Bootloading) - ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
-
MΠΈΠ½ΠΈΠΌΡΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² - ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π²ΡΠ΅Π³ΠΎ ΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ
-
ΠΠ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΠ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ΅ - ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π‘ / Π‘++ Qt SDK, Π΅ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ
Π¨Π°Π³ ΠΏΠ΅ΡΠ²ΡΠΉ - ΡΡ
Π΅ΠΌΠΎΡΠ΅Ρ
Π½ΠΈΠΊΠ°
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΡΡ Π΄Π²Π΅ ΡΡ
Π΅ΠΌΡ. ΠΠ»Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΈΠΊΡΠΎΡΡ
Π΅ΠΌΠ° MAX3232:
ΠΡΠ»ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ MAX3232, ΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²Π²Π΅ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ MOSFET ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡ:
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΡΡ
Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ / ΡΠ΄Π΅ΡΠ΅Π²ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π½ΠΈΠΊ USB-to-serial (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° PL2303 ΠΈΠ»ΠΈ FT232BM). Π£ΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΡ Ρ PL2303 - 3.3V ΠΈ Π΅ΡΠ»ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
3 ... 3.3V, MAX3232 Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π·ΠΈΡΡΠΎΡ Ρ Vdd Π½Π° RX, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Bootloader'Π° ΠΏΡΠΈ ΠΎΡΠΊΠ»ΡΡΡΠ½Π½ΠΎΠΌ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π½ΠΈΠΊΠ΅ USB-to-serial. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΈΠ³Π½Π°Π»Π° RTS (ΡΠΌ. ΡΡ
Π΅ΠΌΡ), ΡΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ±ΡΠΎΡΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (RESET), Π° ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΠ²/Π²ΠΊΠ»ΡΡΠΈΠ² ΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ. Π ΡΠ»ΡΡΠ°Π΅Π΅ Ρ USB-to-serial ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ RX, TX ΠΈ GND, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΄ΠΎΠ±Π½Π΅ΠΉ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΡΡΡΠ½ΡΡ.
Π¨Π°Π³ Π²ΡΠΎΡΠΎΠΉ - ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
ΠΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ AN1310 ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ *.exe ΡΠ°ΠΉΠ», ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° ΠΠ‘ Windows (ΠΊΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Wine ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ ΡΠ°ΠΌ, Π½ΠΎ ΠΠ°Ρ ΠΏΠΎΠΊΠΎΡΠ½ΡΠΉ ΡΠ»ΡΠ³Π° ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»). ΠΠ΅ΠΏΡΠΈΡΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Windows ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Bootloader'Π° - Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ MPasm / MPLAB, ΡΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ
Π΅ΠΊΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Bootloader Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ Π² ΠΏΡΠΎΡΠΈΡ ΠΊΡΠΈΡΡΠ°Π»Π»Π΅, ΠΎΠ± ΠΠ‘ Windows ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π·Π°Π±ΡΡΡ.
CΠΊΠ°ΡΠ°Π½Π½ΡΠΉ Ρ ΡΠ°ΠΉΡΠ° Microchip ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ Serial Bootloader AN1310 v1.05r.exe ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π° ΠΠ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΡΠ΄Π°:
C:\Microchip Solutions\Serial Bootloader AN1310 vX.XX\PICxx Bootloader\
-
ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ - MPasm, Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ MPLAB IDE
-
Π ΠΌΠ΅Π½Ρ Configure -> Select Deviceβ¦ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ PIC18F46K22)
-
Π ΠΌΠ΅Π½Ρ Configure -> Configuration Bitsβ¦.
Watchdog Timer |
βDisabledβ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ |
Extended Instruction Set Enable bit |
βDisabledβ |
Oscillator Selection bits |
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°ΠΊΡΠΎΠ²Π°Ρ ΡΠ°ΡΡΠΎΡΠ°, ΡΠ΅ΠΌ Π²ΡΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π°Ρ ΡΠΊΠΎΡΠΎΡΡΡ UART |
Fail-Safe Clock Monitor Enable bit |
βEnabledβ, Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ |
Low-Voltage Program (LVP) |
βDisabledβ, Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ |
Table Read-Protect |
βDisabledβ, Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ |
-
Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΡΠΈΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΡΠΎΡΠΎΠΌ )))
Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ bootconfig.inc. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PIC18F46K22 ΠΈΠΌΠ΅Π΅Ρ Π½Π° Π±ΠΎΡΡΡ Π΄Π²Π° USART ΠΌΠΎΠ΄ΡΠ»Ρ, Π° Bootloader ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ. Π ΡΡΠΎΠΌ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠ°Π±ΠΎΡΡ Bootloader'Π°:
-
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Ρ
Π΅ΠΊΡ Bootloader'Π° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ Flash-ΠΏΠ°ΠΌΡΡΠΈ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌΠ° ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, Ρ.Π΅. ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅Ρ ΡΠ°Π±ΠΎΡΠ° Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π±Π΅Π· Bootloader'Π°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - ΡΡΠ°ΡΡΠΎΠΊ Π·Π°Π½ΡΡΠΎΠΉ Flash-ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HI-TECH Π‘ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ --ROM=default,-F800-FBFF
. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Bootloader'Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ - Π² ΡΠ»ΡΡΠ°Π΅ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ±ΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Π½ΠΈΠ΅) Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΡΡΡΡ - Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΡΠΎΡ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΡΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ ΠΊΠΎΠ½Π΅Ρ Flash-ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΡΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ (GOTO), ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0000h, Π·Π°ΡΠΈΡΠΈΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΊΠΎΡΠ½ΡΠ²ΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ (0008h, 0018h) ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ - Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ°ΡΡ Flash-ΠΏΠ°ΠΌΡΡΡ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ.
-
Π ΡΡΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Bootloader'Π°, Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΠ½ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ ΠΊΠ°ΠΊ REMAPPED. ΠΠ½ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ Flash-ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ°ΠΌ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡ
ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: 0008h => 0808h, 0018h => 0818h. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ(ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ GOTO) Π·Π°Π΄Π΅ΡΠΆΠΊΡ Π² ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Ρ Π²ΡΠ΅Ρ
ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Flash ΠΈΠΌΠ΅Π΅Ρ boot-Π±Π»ΠΎΠΊ, ΠΎΠ±ΡΡΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π΄ΡΡΠ³ΠΈΡ
- ΠΎΠ½ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° Bootloader'Ρ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΡΡΡΡΡ Flash-ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΈ Bootloader'ΠΎΠΌ. ΠΠΎ-Π²ΡΠΎΡΡΡ
, Π²Π΅ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Bootloader'Π° ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΈΡΡΠΎ Π½Π΅ cΠΌΠΎΠΆΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΡΡ.
Π§ΡΠΎΠ±Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ REMAPPED Bootloader, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² bootconfig.inc ΡΠΊΠ°Π·Π°ΡΡ #define BOOTLOADER_ADDRESS 0
. Π’Π°ΠΊΠΆΠ΅, ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠ° boot-Π±Π»ΠΎΠΊΠ°, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΡΠ΄Π° Bootloader Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠ²: AppVector 0x800
, AppHighIntVector 0x808
ΠΈ AppLowIntVector 0x818
. ΠΠ±ΠΎ Π²ΡΡΠΌ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ HI-TECH Π‘ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²ΠΎΡ ΡΠ°ΠΊ: --RUNTIME=default,+download --CODEOFFSET=800 --ROM=default,-0-7FF
bootconfig.inc
; Copyright (c) 2002-2011, Microchip Technology Inc.
;
; Microchip licenses this software to you solely for use with Microchip
; products. The software is owned by Microchip and its licensors, and
; is protected under applicable copyright laws. All rights reserved.
;
; SOFTWARE IS PROVIDED "AS IS." MICROCHIP EXPRESSLY DISCLAIMS ANY
; WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT
; NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
; FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL
; MICROCHIP BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR
; CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, HARM TO YOUR
; EQUIPMENT, COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY
; OR SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED
; TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION,
; OR OTHER SIMILAR COSTS.
;
; To the fullest extent allowed by law, Microchip and its licensors
; liability shall not exceed the amount of fees, if any, that you
; have paid directly to Microchip to use this software.
;
; MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE
; OF THESE TERMS.
; Enable this to work around timing bug found in some PIC18Fxx20's
;#define TBLWT_BUG
; If you don't have an RS232 transceiver, you might want this option
;#define INVERT_UART
; Sets OSCCON<IRCF2:IRCF0> for maximum INTOSC frequency (8MHz)
#define USE_MAX_INTOSC
; Sets OSCTUNE.PLLEN bit at start up for frequency multiplication.
#define USE_PLL
; RB0 = 1 required to enable MAX3221 TX output on PICDEM LCD 2 demo board
;#define PICDEM_LCD2
; enable software boot block write protection
#define USE_SOFTBOOTWP
; enable software config words write protection
;#define USE_SOFTCONFIGWP
; Autobaud will be used by default.
; To save code space or to force a specific baud rate to be used,
; you can optionally define a BAUDRG value instead.
; Most PIC18's support BRG16 mode and use the
; following equation:
; BAUDRG = Fosc / (4 * Baud Rate) - 1
;
; Old PIC18's without BRG16 mode need this equation instead:
; BAUDRG = Fosc / (16 * Baud Rate) - 1
;
; Examples:
;#define BAUDRG .51 ; 19.2Kbps from 4MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .103 ; 115.2Kbps from 48MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .85 ; 115.2Kbps from 40MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .68 ; 115.2Kbps from 32MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .16 ; 115.2Kbps from 8MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .11 ; 1Mbps from 48MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .9 ; 1Mbps from 40MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .4 ; 2Mbps from 40MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .3 ; 3Mbps from 48MHz (BRG16 = 1, BRGH = 1)
;#define BAUDRG .12 ; 19.2Kbps from 4MHz (BRG16 = 0, BRGH = 1)
;#define BAUDRG .10 ; 115.2Kbps from 19.6608MHz (BRG16 = 0, BRGH = 1)
; Bootloader must start at the beginning of a FLASH Erase Block.
; If unspecified, bootloader will automatically be located at the
; end of program memory address space.
; bootloader at beginning, application start/ISR vectors
; require remapping
#define BOOTLOADER_ADDRESS 0
; useful for running under debugger
; (debug executive wants to reside at the end of memory space too)
;#define BOOTLOADER_ADDRESS END_FLASH - (ERASE_FLASH_BLOCKSIZE * 20)
; use on J parts to locate inside flash config erase block
;#define BOOTLOADER_ADDRESS (END_FLASH - ERASE_FLASH_BLOCKSIZE)
#ifdef BOOTLOADER_ADDRESS
#if BOOTLOADER_ADDRESS == 0
; For Bootloader located at program memory address 0,
; the application firmware must provide remapped reset
; and interrupt vectors outside of the Boot Block. The following
; #defines tell the bootloader firmware where application
; entry points are to be expected:
; application start up code should be located here.
#define AppVector 0x800
; application high priority interrupt should be located here
#define AppHighIntVector 0x808
; application low priority interrupt should be located here
#define AppLowIntVector 0x818
#endif
#endif
; Define UART pins and registers.
; Modify the following lines if you want to use a different UART module.
;
; Note: If your UART's RX pin happens to be multiplexed with analog
; ANx input functionality, you may need to edit the
; "preprocess.inc" DigitalInput macro. Code there needs to
; enable the digital input buffer (refer to ADC chapter
; of your device's datasheet).
;
#define UARTNUM 2
#if UARTNUM == 1
#define UxSPBRG SPBRG
#define UxSPBRGH SPBRGH
#define UxRCSTA RCSTA
#define UxTXSTA TXSTA
#define UxRCREG RCREG
#define UxTXREG TXREG
#define UxPIR PIR1
#define UxRCIF RCIF
#define UxTXIF TXIF
#define UxBAUDCON BAUDCON
; RX on RC7 is used by default for most PIC18's.
; #define RXPORT PORTC
; #define RXPIN .7
; #define RXPORT PORTB ; PIC18F14K50: RX on RB5/AN11
; #define RXPIN .5
; RX/AN11 multiplexed -- must enable digital input buffer
; #define RXANSEL ANSELH
; ANSELH<3> controls AN11 digital input buffer
; #define RXAN .3
#endif
#if UARTNUM == 2
#define UxSPBRG SPBRG2
#define UxSPBRGH SPBRGH2
#define UxRCSTA RCSTA2
#define UxTXSTA TXSTA2
#define UxRCREG RCREG2
#define UxTXREG TXREG2
#define UxPIR PIR3
#define UxRCIF RC2IF
#define UxTXIF TX2IF
#define UxBAUDCON BAUDCON2
; RG2 is default RX2 pin for some high pin count PIC18's.
; #define RXPORT PORTG
; #define RXPIN .2
; RX2 pin PPS'ed to RD4/RP21 on PIC18F46J11 for example.
#define RXPORT PORTD
#define RXPIN .7
; On PICs where RX is multiplexed with ANx analog inputs,
#define RXANSEL ANSELD
; the digital input buffer needs to be enabled via ANSELx SFRs
#define RXAN .7
; devices that use PPS to remap UART2 pins will need these
; lines defined:
; PPS code for TX2/CK2 output function
; #define PPS_UTX .5
; #define PPS_UTX_PIN RPOR23 ; UART TX assigned to RP23 pin
; #define PPS_URX_PIN .21 ; UART RX assigned to RP21 pin
; PPS register for RX2/CK2 input function
; #define PPS_URX RPINR16
#endif
; If you get linker errors complaining
; "can not fit the absolute section," you might want to
; increase BOOTLOADERSIZE below or set the
; BOOTLOADER_ADDRESS above to a smaller address number.
; Because we need to know the total size of the
; bootloader before the assembler has finished compiling
; the source code, we have to estimate the final bootloader
; size and provide it here as BOOTLOADERSIZE. This number
; is in bytes (twice the instruction word count).
;
; If you see the bootloader is reserving more FLASH memory
; than it really needs (you'll see a bunch of FFFF/NOP
; instructions at the end of the bootloader memory region),
; you can try reducing BOOTLOADERSIZE.
#define BOOTLOADERSIZE .708
#define MAJOR_VERSION .1 ; Bootloader Firmware Version
#define MINOR_VERSION .5
Π¨Π°Π³ ΡΡΠ΅ΡΠΈΠΉ - Π·Π°ΠΏΡΡΠΊ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Bootloader'ΠΎΠΌ
ΠΡΠ°ΠΊ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π²Π° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°: ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ΅ΠΆΠΈΠΌ Bootloader'Π°. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅ Reset, Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Bootloader'Π° ΠΏΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ. Π Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ° Bootloader'Π° Π³ΠΎΠ²ΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ:
-
OΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ
-
ΠΡΠ»ΠΈ Π½Π° Π²Ρ
ΠΎΠ΄Π΅ RX Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π½ΠΎΠ»Ρ (Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ
RS-232 ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ βBreak")
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Bootloader, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ: ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΊ ΠΠ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π½ΠΎΠ»Ρ Π½Π° RX, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠ½ΠΎΠΏΠΎΡΠΊΠΈ , ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ RESET (Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ - Π²ΠΊΠ»ΡΡΠΈΡΡ/Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΈΡΠ°Π½ΠΈΠ΅). Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΊ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΠ
ΠΠ Π΄Π»Ρ ΠΠ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ncΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ
, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π² QTCreator, Π° Π΄Π»Ρ Windows ΡΠΆΠ΅ Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ .exe ΡΠ°ΠΉΠ». ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² Linux ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π½ΠΈΠΊ Π½Π° PL2303, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
~$ sudo modprobe -r pl2303
~$ sudo modprobe pl2303
ΠΡΠ»ΠΈ Π² Linux ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Bootloader'ΠΎΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ USB-to-serial ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π½ΠΈΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ /dev/ttyUSB0
), ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡ
-ΠΏΠΎΠ΄ root'a Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π»Π΅ΡΠ΅Π½ΠΈΡ OpenSUSE 12.1 - ΠΏΠΎΠ»Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π½Π° USB-to-serial ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π³ΡΡΠΏΠΏΠ° dialout, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π½Π΅Ρ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΡΡΠΏΠΈΠ»ΠΈ Π² ΡΠΈΠ»Ρ, ΠΠΠ―ΠΠΠ’ΠΠΠ¬ΠΠ ΠΏΠ΅ΡΠ΅Π»ΠΎΠ³ΠΈΠ½ΠΈΡΡΡΡ:
oleg@linux-ubuc:~> ls -l /dev/ttyUSB?
crw-rw---- 1 root dialout 188, 0 ΠΌΠ°ΡΡΠ° 1 10:13 /dev/ttyUSB0
oleg@linux-ubuc:~> sudo /usr/sbin/groupmod -A $USER dialout
Π Ubuntu 12.04 Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ: sudo adduser $USER dialout
ΠΠ° ΡΡΠΎΠΌ Π²ΡΡ, Π½Π°Π΄ΡΠΆΠ½ΡΡ
Π΄Π΅Π²Π°ΠΉΡΠΎΠ² ΠΠ°ΠΌ !
ΠΠ° Π²ΡΡΠΊΠΈΠΉ ΠΏΠΎΠΆΠ°ΡΠ½ΡΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ ΡΡΡ.
There are comments.