Посмотрел по форуму и понял, что не все в теме, как и что компилировать и что и для чего нужно.
Сам тоже начал разбираться с самого начала. Если что не правильно, то поправьте.
Итак, что и как делать в Linux (Ubuntu 12.10):
Устанавливаем следующие пакеты:
sudo apt-get install avr-libc gcc-avr avrdude binutils-avr arduino (этот пакет установит оболочку Arduino и подтянет еще нужные пакеты) geany (удобный редактор, который позволяет компилировать в графической оболочке)
Открываем Geany и создаем проект:
В созданную папку "/home/figaro/Projekte/MegaD-328/" копируем все содержимое архива с прошивкой:
ls -al /home/figaro/Projekte/MegaD-328/
insgesamt 180
drwx------ 2 figaro figaro 4096 Dez 31 17:11 .
drwx------ 3 figaro figaro 4096 Dez 29 22:05 ..
-rw-rw-r-- 1 figaro figaro 13732 M?r 20 2012 enc28j60.c
-rw-rw-r-- 1 figaro figaro 10019 Feb 25 2012 enc28j60.h
-rw-rw-r-- 1 figaro figaro 59014 Apr 14 2012 ip_arp_udp_tcp.c
-rw-rw-r-- 1 figaro figaro 10675 M?r 22 2012 ip_arp_udp_tcp.h
-rw-rw-r-- 1 figaro figaro 1528 Feb 29 2012 ip_config.h
-rw-rw-r-- 1 figaro figaro 38033 Dez 30 23:20 main.c
-rw-rw-r-- 1 figaro figaro 2333 Dez 29 22:34 Makefile
-rw-rw-r-- 1 figaro figaro 3210 Feb 25 2012 net.h
-rw-rw-r-- 1 figaro figaro 149 Feb 12 2011 timeout.h
-rw-rw-r-- 1 figaro figaro 6447 Jan 4 2012 websrv_help_functions.c
-rw-rw-r-- 1 figaro figaro 813 Jan 4 2012 websrv_help_functions.h
В файле "Makefile" описаны правила компиляции.
1-й раз нам нужно в Geany открыть файл "main.c":
Потом в меню выбрать "Erstellen" (создать) и выбрать "Make":
И в нашей дирректории видим следующие файлы:
ls -al /home/figaro/Projekte/MegaD-328/
insgesamt 488
drwx------ 2 figaro figaro 4096 Dez 31 17:17 .
drwx------ 3 figaro figaro 4096 Dez 29 22:05 ..
-rw-rw-r-- 1 figaro figaro 13732 M?r 20 2012 enc28j60.c
-rw-rw-r-- 1 figaro figaro 10019 Feb 25 2012 enc28j60.h
-rw-rw-r-- 1 figaro figaro 12472 Dez 31 17:17 enc28j60.o
-rw-rw-r-- 1 figaro figaro 59014 Apr 14 2012 ip_arp_udp_tcp.c
-rw-rw-r-- 1 figaro figaro 10675 M?r 22 2012 ip_arp_udp_tcp.h
-rw-rw-r-- 1 figaro figaro 32996 Dez 31 17:17 ip_arp_udp_tcp.o
-rw-rw-r-- 1 figaro figaro 1528 Feb 29 2012 ip_config.h
-rw-rw-r-- 1 figaro figaro 37207 Dez 31 17:17 main.c
-rw-rw-r-- 1 figaro figaro 51096 Dez 31 17:17 main.o
-rw-rw-r-- 1 figaro figaro 2333 Dez 29 22:34 Makefile
-rw-rw-r-- 1 figaro figaro 2330 Apr 14 2012 Makefile~
-rwxrwxr-x 1 figaro figaro 83372 Dez 31 17:17 megad-328.elf
-rw-rw-r-- 1 figaro figaro 51105 Dez 31 17:17 megad-328.hex
-rw-rw-r-- 1 figaro figaro 55058 Dez 31 17:17 megad-328.map
-rw-rw-r-- 1 figaro figaro 3210 Feb 25 2012 net.h
-rw-rw-r-- 1 figaro figaro 149 Feb 12 2011 timeout.h
-rw-rw-r-- 1 figaro figaro 6447 Jan 4 2012 websrv_help_functions.c
-rw-rw-r-- 1 figaro figaro 813 Jan 4 2012 websrv_help_functions.h
-rw-rw-r-- 1 figaro figaro 9280 Dez 31 17:17 websrv_help_functions.o
Файл "megad-328.hex" прошиваем в Микроконтроллер.
Если все делать из консоли, то:
cd /home/figaro/Projekte/MegaD-328/
/home/figaro/Projekte/MegaD-328/$ make all
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c main.c
In file included from main.c:17:0:
ip_arp_udp_tcp.h:46:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
In file included from main.c:17:0:
ip_arp_udp_tcp.h:138:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.h:153:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.h:153:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c ip_arp_udp_tcp.c
ip_arp_udp_tcp.c:69:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:71:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:409:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:650:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:1257:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:1275:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:1275:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c enc28j60.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c websrv_help_functions.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -o megad-328.elf -Wl,-Map,megad-328.map main.o ip_arp_udp_tcp.o enc28j60.o websrv_help_functions.o
avr-objcopy -R .eeprom -O ihex megad-328.elf megad-328.hex
avr-size megad-328.elf
text data bss dec hex filename
17974 903 1007 19884 4dac megad-328.elf
Expl.: data=initialized data, bss=uninitialized data, text=code
figaro001
Сообщения: 3
Зарегистрирован: 12 янв 2012, 16:36
Что мне не понятно:
1. Мой скомпилированный файл "megad-328.hex" весит 51105 байт при компиляции в 32-битном Linux - тот же размер, при компиляции в Windows - 53519 байт.
Как у Автора получилось - 44285 байт - не понимаю!
2. Еще непонятна взаимосвязь размера "HEX" и реального размера памяти микроконтроллера. Как эти 40-50 Кбайт влазят в микроконтроллер. И как по размеру "HEX" понять, влезет ли он в микроконтроллер???