Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Программисты, помогите с портированием!

Непрочитано 27.10.2010, 20:50  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Программисты, помогите с портированием!

Собрал себе Simple SD Audio Player по проекту Чана (проша от 11.10.2010). Не без помощи товарищей с этого форума, довел его до вполне автономного существования. Развел печатку, протравил, собрал, запустил.
Возникла необходимость девайс повторить, и как всегда ATtiny85 в наших магазинах кончилась. Взял 45ю, тем паче Чаном было написано что даже на 25 могет работать. Вот тут и началось...
При первой компиляции под 45:
Код:
AVR Memory Usage
----------------
Device: attiny45
Program:    6428 bytes (156.9% Full)
(.text + .data + .bootloader)
Data:        358 bytes (139.8% Full)
(.data + .bss + .noinit)
Build succeeded with 0 Warnings...
Начал пляски с бубном и отключение всего что можно в Хедерах. Благо Чаном было предусмотрена возможность отключения фенечек по директивам препроцессора. Оставил так:
Код:
#define	_USE_READ	1	/* 1:Enable pf_read() */
#define	_USE_DIR	0	/* 1:Enable pf_opendir() and pf_readdir() */
#define	_USE_LSEEK	0	/* 1:Enable pf_lseek() */
#define	_USE_WRITE	0	/* 1:Enable pf_write() */
#define _FS_FAT12	0	/* 1:Enable FAT12 support */
#define _FS_FAT32	0	/* 1:Enable FAT32 support */
Полезли ошибки с обращениями в "отключенные" функции. Закомментил.
Всеравно много оказалось. Начал ручками еще кое-что вырезать, насколько знания в Си позволяют. Вырезал все функции работы с папками и FAT32.
Уменьшил размер буфера с 256 до 128 чтоб в оперативу влазило. И все использующие его функции.
В общем стало влезать. Но играть не хочет. Идут щелчки, похожие на кряканье и все. Железо проверил с 85 все норм.

Помогите кто может, два дня уже воюю, а победить никак не могу.
Видимо что-то где-то с указателями или ссылками пропустил (с ними у меня туго, особенно с механизмами ихней передачи и пр.) или закомментил что-то важное.
Думаю, не я один будут очень благодарен. Пока искал инфу, попадилсь другие форумы с теми же траблами.

З.Ы. И еще прикол, даже уменьшенная проша почему не запускается в Студийном пошаговом дебагере, пишет:
Код:
The contents of the objectfile exceeds the maximum program memory of the device
Вложения:
Тип файла: zip sd8psrc.zip (43.5 Кб, 59 просмотров)
Реклама:
DimanVIP вне форума  
Непрочитано 27.10.2010, 21:19  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Сообщение от DimanVIP Посмотреть сообщение
Помогите
1. Используйте самый свежий компилятор GCC, он генерирует заметно более оптимальный код. Брать здесь http://www.atmel.no/beta_ware/, конкретно AVR Toolchain Installer for use with AVR Studio. Это продолжение замороженного проекта WinAVR

2. Используйте такие опции компилятора gcc:
-Os -fexpensive-optimizations -fshort-enums -fpack-struct -funsigned-char -funsigned-bitfields -fwhole-program -mrelax -ffunction-sections -fdata-sections

3. Используйте такие опции линковки:

3.а. Если линковщик вызывается напрямую:
--gc-sections -O1 -mrelax

3.б. Если линковщик вызывается косвенно через gcc:
-Wl,--gc-sections -Wl,-O1 -mrelax

Удачи!
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Сказали "Спасибо" alexgap
DimanVIP (28.10.2010)
Непрочитано 27.10.2010, 21:49  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Обязательно попробую.
Сейчас опции компилятора берутся из внешнего файла, созданного самим Чаном. Единственно в нем правлю камень на 45.
Делаю в Студии так: Edit current configuration option -› Use external makeFile -› Makefile_mo
Еще заметил пару очень странностей для меня:
1. В студии жму Ctrl + F7, вылазиет окошко: что 3 файлы были модифицированы, ребуилд прожект? -› жму ОК -› вылазиет окошко: что 3 файлы были модифицированы..... и так до бесконечности. Пока Нет не нажмешь.
2. Вырезал в main.c функцию delay500, теперь пошаговый дебаг начинается с середины main. Шо за нах? До этого как и положено начиналось с начала.
Пробовал просто комментить, всеравно курсор пошаговой отладки после монтирования FS вылезает на эти закоменченные строки и ходит по ним. Пятой точкой чую, что одних знаний Си тут будет мало.
DimanVIP вне форума  
Непрочитано 27.10.2010, 21:54  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Сообщение от DimanVIP Посмотреть сообщение
Вырезал в main.c функцию delay500, теперь пошаговый дебаг начинается с середины main. Шо за нах? До этого как и положено начиналось с начала.
Скорее всего проект скомпилирован с включенными оптимизациями, отсюда и косяки у дебаггера.

Мой вам совет - возьмите ту прошивку, которая у вас уже работала, скомпилируйте ее для тини45 тем компилятором и с теми опциями, которые я вам советовал выше. Плюс поправьте размер буфера чтобы ОЗУ у вас хватало.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 27.10.2010, 22:31  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Взял старый проект. Он изначально меньше нового.
Ручками подправил MakeFile. Получается вот что:
Код:
rm -rf *.o sd8p_mo.elf *.eps *.bak *.a
rm -rf *.lst *.map 
rm -rf sd8p_mo.hex
avr-gcc -gdwarf-2 -Wall -Os -mcall-prologues -fexpensive-optimizations -fshort-enums -fpack-struct -funsigned-char -funsigned-bitfields -mrelax -ffunction-sections -fdata-sections -mmcu=attiny45 -DF_CPU=16000000UL -DSTEREO=0   -c -o main.o main.c
avr-gcc -gdwarf-2 -Wall -Os -mcall-prologues -fexpensive-optimizations -fshort-enums -fpack-struct -funsigned-char -funsigned-bitfields -mrelax -ffunction-sections -fdata-sections -mmcu=attiny45 -DF_CPU=16000000UL -DSTEREO=0   -c -o pff.o pff.c
avr-gcc -gdwarf-2 -Wall -Os -mcall-prologues -fexpensive-optimizations -fshort-enums -fpack-struct -funsigned-char -funsigned-bitfields -mrelax -ffunction-sections -fdata-sections -mmcu=attiny45 -DF_CPU=16000000UL -DSTEREO=0   -c -o mmc.o mmc.c
avr-gcc -c -mmcu=attiny45 -I. -x assembler-with-cpp -Wa,-adhlns=asmfunc.lst,-gstabs -DF_CPU=16000000UL -DSTEREO=0 asmfunc.S -o asmfunc.o
avr-gcc -gdwarf-2 -Wall -Os -mcall-prologues -fexpensive-optimizations -fshort-enums -fpack-struct -funsigned-char -funsigned-bitfields -mrelax -ffunction-sections -fdata-sections -mmcu=attiny45 -DF_CPU=16000000UL -DSTEREO=0 -Wl,--gc-sections -Wl,-O1 -mrel
ax,-Map,sd8p_mo.map -o sd8p_mo.elf main.o pff.o mmc.o asmfunc.o 

avr-objdump -h -S sd8p_mo.elf › sd8p_mo.lst
avr-objcopy -j .text -j .data -O ihex sd8p_mo.elf sd8p_mo.hex
avr-size -C --mcu=attiny45 sd8p_mo.elf
AVR Memory Usage
----------------
Device: attiny45

Program:    5060 bytes (123.5% Full)
(.text + .data + .bootloader)

Data:        362 bytes (141.4% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...
Так должно быть? Или что-то где-то сменить? Извиняюсь конечно за глупые вопросы, но с этим компилятором работаю впервые. Обычно все пишу в IARe.
Некоторые директивы позволили уменьшить размер Хекса байт на 360. Если юзать директиву -fwhole-program, то вылазит туева куча ошибок.

Попробую отдельно с этой проше поколдавать. Может чаво и получится.
DimanVIP вне форума  
Непрочитано 27.10.2010, 23:02  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Сообщение от DimanVIP Посмотреть сообщение
Program: 5060 bytes (123.5% Full)
На 23 процента больше чем надо... Пробовали новый компилятор, или это результаты на том, который у вас уже стоял?

Из командной строки avr-gcc --version

И выложите сюда пожалуйста рабочие исх. прошивки, которую вы компилируете
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.

Последний раз редактировалось alexgap; 27.10.2010 в 23:08.
alexgap вне форума  
Непрочитано 27.10.2010, 23:34  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

avr-gcc (AVR_Toolchain_3.0_149) 4.4.3
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Перегрузить забыл комп.
Сейчас компилю старую прошу, получается так:
Код:
AVR Memory Usage
----------------
Device: attiny45
Program:    4020 bytes (98.1% Full)
(.text + .data + .bootloader)
Data:        218 bytes (85.2% Full)
(.data + .bss + .noinit)
Build succeeded with 0 Warnings...
Вроде даже что-то пытается изобразить в звуке. Всмысле щелчки вроде отличаются.
Во вложении старая проша 'оригинал', и старая проша 'моя'.
Вложения:
Тип файла: zip flash_player_old.zip (228.0 Кб, 58 просмотров)
DimanVIP вне форума  
Непрочитано 28.10.2010, 00:52  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Сообщение от DimanVIP Посмотреть сообщение
Вроде даже что-то пытается изобразить в звуке. Всмысле щелчки вроде отличаются.
Вы забыли в асм файле asmfunc.S поправить длину очереди. Вот смотрите (выделено жирным):

Код:
...
3:	ldiw	r27,r26, Buff		;X = Buff + R25++
	add	r26, r25		;
	adc	r27, r0			;
	inc	r25			;/
	sbic	_SFR_IO_ADDR(GPIOR0), 4	;if 16bit, skip low byte
	rcall	rcv_spi			;/
4:	lds	r24, FifoCt		;wait while FIFO full
	cpi	r24, 255		;
	brcc	4b			;/
...
Нужно 255 заменить на 149 (у вас длинна FIFO сейчас 150).
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Сказали "Спасибо" alexgap
DimanVIP (28.10.2010)
Непрочитано 28.10.2010, 14:08  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Изменил - не помогло. Проверил фьюзы, некоторые сбились. Подправил - не помогло.
Заодно возник вопрос, может их как-нить попробовать подправить?
Ставлю так:
Low: 11100001
││││└┴┴┴── CKSEL[3:0] Clock source selection
││└┴── SUT[1:0] Startup time selection
│└── CKOUT (0:Output system clock on the CLKO pin)
└── CKDIV8 Clock division ratio (1:1/1, 0:1/

High:11-11101
│││││└┴┴── BODLEVEL[2:0] (111:Off, 110:1.8, 101:2.7, 100:4.3, 011:2.3, 010:2.2, 001:1.9, 000:2)
││││└── EESAVE (Retain EEPROM at chip erase 1:No, 0:Yes)
│││└── WDTON (1:WDT normal, 0:WDT always on)
││└── SPIEN (1isable ISP, 0:Enable ISP) *Available only HVS mode
│└── DWEN (On-Chip Debugging via RESET pin 1isable, 0:Enable)
└── RSTDISBL (RESET pin 1:Enable, 0isable(PORT))

Ext: -------1
└── SELFPRGEN *Refer to data sheet

Звук значительно меняется от размера буфера.
При отсутствующей флешке, идут просто одиночные щелчки с интервалом в примерно 1 с. Как и должно быть.
При буфере 150 идет "длинная очередь" щелчков.
При буфере 128 идут более редкие щелчки в перемешку с пищанием.
Кому интересно могу записать.
Значит флешку он все-таки видит, а косячит либо при чтении (скорей всего), либо уже при воспроизведении.
DimanVIP вне форума  
Непрочитано 28.10.2010, 14:32  
ttss
Заблокирован
 
Регистрация: 26.10.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
ttss на пути к лучшему
По умолчанию Re: Программисты, помогите с портированием!

Чудэсна! А разве длина буфера не должна быть кратна формату данных? Или пишем что попало?
ttss вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ помогите с UPS Sweex 1000 VA alexomega Ремонт оргтехники 5 06.09.2010 21:27
Помогите прошить STC 89C58RD suse Микроконтроллеры, АЦП, память и т.д 0 05.08.2010 12:44
Помогите определить параметры отечественных транзисторов pulsarv Информация по радиокомпонентам 0 23.05.2010 17:31
Помогите найти схемы Toshiba Satellite A300-1ec и Toshiba Satellite A300d Alex-Alpha Поиск схем. Делимся схемами 1 11.03.2010 22:09
Помогите Сделать Курсовую Работу vintez Электроника - это просто 36 12.01.2010 23:49


Часовой пояс GMT +4, время: 11:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.