Отговори на тема  [ 18 мнения ]  Отиди на страница 1, 2  Следваща
RQ: Помощ за първа проба на C-проект на AVR Studio-4 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение RQ: Помощ за първа проба на C-проект на AVR Studio-4
За първи път пробвам C с AVR Studio 4 (ползвам май последното 4.18, билд 716)

Опитвам се да компилирам сорса на един програматор (AVR/89S съвместим с AVR910)

Указал съм файла main.c като единствен в сорса (пробвах разни варианти :))
Струва ми се доста тъпо в полето за съобщения да пише само това, по-долу и не виждам никаква интерактивна възможност за повече иноформация:
(разгледах и makefile - и то е в приложения rar, но не разбрах нищо :))

MAKE Version 5.2 Copyright (c) 1987, 1998 Inprise Corp.
Error Makefile 80: Command syntax error
*** 1 errors during make ***
Build failed with 1 errors and 0 warnings...
MAKE Version 5.2 Copyright (c) 1987, 1998 Inprise Corp.
Error Makefile 71: Command syntax error
*** 1 errors during make ***
Build failed with 1 errors and 0 warnings...


Прилагам и проекта - моля, помогнете да му пусна компилирането на това :), благодаря!


Прикачени файлове:
Коментар на файл: Първи опит :)
avr910.rar [55.13 KiB]
203 пъти


Последна промяна NikB на Чет Мар 10, 2011 10:12 pm, променена общо 1 път

Вто Фев 08, 2011 4:52 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение 
WinAVR инсталира ли?
Гледам че, мейк командата ти е борландска, а не би трябвало. Не съм 100% сигурен дали ще работи с нея, но за по - сигурно си използвай тази която ти идва с WinAVR-a (или ако си изтеглил toolchain-a от сайта на атмел).


Вто Фев 08, 2011 5:45 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
michev написа:
WinAVR инсталира ли?
Благодаря много - с това инсталиране поне се стига до нормално съобщения за грешки (10 грешки и 2 предупреждения).
:)
Повечето са от рода:
../usbdrv.h:315: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned'
Вероятно проектът е за друг комполатор или за друга версия. Може би не разпознава kлючовата дума "extern" или очаква друг синтаксис? (следващия фрагмент са 314, 315 и 316 ред от usbdrv.h)
Код:
#if USB_CFG_EXTERNAL_CONFIG_DESCRIPTOR_LENGH
extern PROGMEM UCHAR usbDescrConfig[];
#endif


ПП
Пише, че е компилирано с IAR v.4.10B


Сря Фев 09, 2011 1:12 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
нито съм по AVR-тата, нито съм им пипал някога средата, но PROGMEM би трябвало да означава, че масива usbDescrConfig[] се намира в флаша, ще рече - само за четене. И то е така по неговия смисъл в структурата на USB комуникацията - това само се докладва на хоста. Странното е, че сефре го виждам записано по този начин. w/e може би и твоя компилатор го среща тепърва? На първо време опитай се да разбереш какво означава тази дума в средата, с която е компилирано в оригинал (IAR v.4.10B) и в последствие виж каква е ключовата дума в AVR Studio-4. А това AVR Studio-4 случайно да ползва Гнус отдолу?
колкото до extern - не може да не се подържа, ще е светотатство :)

Едит: какво ще кажеш да пробваш да заместиш PROGMEM с const на всякъде където го има, като там където върви в комплект с extern просто да го премахнеш, компилатора ще се усети какво да направи? Би трябвало да познае const и да го сложи във флаша пак.


Сря Фев 09, 2011 1:50 am
Профил WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение 
Не четох кода, но мой съвет е, при много грешки в процеса на компилиране, закоментирваш кода, докато всичко се компилира. След като се компилира всичко, по малко махаш коментарите , докато не оправиш всички грешки.


Сря Фев 09, 2011 4:41 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Окт 03, 2007 3:39 pm
Мнения: 311
Мнение 
PROGMEM ти е проблема, не намира дефиниция на нещо такова :>
Изрови какво е то и подозирам, че ще решиш проблема :>

_________________
In God we trust. All others must submit an X.509 Certificate


Сря Фев 09, 2011 5:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение 
PROGMEM "проблема" се решава като си инклуднеш -
Код:
#include <avr/pgmspace.h>

Следващият проблем който ще лъсне е "__delay_cycles" - решение:
Код:
#include <avr/delay.h>
#define __delay_cycles(n) _delay_loop_2((n) / 4)

Обаче след това, проблемът се превръща в още 1 тон проблемчета ;) - една торба статични функции, които не са декларирани в началото на файла като статични и съотвено gcc-то се сърди.

Успех


Сря Фев 09, 2011 9:39 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
michev написа:
PROGMEM ...
Успех

Благодаря!
Това се оправи :) вече дава по-разбираеми грешки :):

1. Например, ако в някой файл прототипът на някоя функция е декларирана в началото на файла без "static", а по-нататък, там, където е тялото й, е декларирана като static, компилатора посочва две грешки:
а. ../avr910.c:594: error: static declaration of 'GetDevCodes' follows non-static declaration
б. ../avr910.c:196: error: previous declaration of 'GetDevCodes' was here
(оправям го, като слагам static и на първата декларация.
Това двойно деклариране за четливост ли се прави или заради forwarding ли или защо?)
(ПП така, с грешки, имаше декларирани близо 30 функции)

и

2. В асемблерските проекти, в списъка на сорс файловете се указва един като entry. В проекта на C няма такова нещо. Какъв е критерия за определяне на входната точка в програмата? Името на файла main.c или търси функция main(void)?


Последна промяна NikB на Чет Фев 10, 2011 1:02 pm, променена общо 2 пъти



Чет Фев 10, 2011 12:41 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение 
Функция -
Код:
int main()
, името на файла не е от значение. Можеш и преди мейн-а да сложиш твой код, но за целта ще трябва да RTFM :)


Чет Фев 10, 2011 12:58 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
И 3. Не открива референциите, декларирани в asm файлове, дори и файлът да е добавен в ПРОЕКТА в секцията за сорс файлове (в IDE дървото на сорс файловете) Вероятно не знам как да укажа на проекта, че е вмъкнат asm файл (когато трябва да добавя "c" файл е достатъчно да го добавя в дървото на сорс файловете в проекта)
(Ще си чета книгите :) :))


Чет Фев 10, 2011 1:03 pm
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
AVR Studio, WinAVR:

Каква може да е причината за грешка:
"../USBDRVASM.s:88: Error: number must be positive and less than 64"
на ред със съдържание:
in x1,SREG ;1
в .s файл вмъкнат в "C" проект?


Нед Фев 13, 2011 8:50 pm
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение 
по спомен инструкция IN е за вход-изход и работи с регистри до адрес 63...


Пон Фев 14, 2011 3:06 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Благодаря, точно такова изглежда.
Тоя сорс е писан за IAR и, вероятно в него се компилира вярно (но аз няма как да проверя :)).
И къде ли е ключа за бараката? За WinAVR или някой хедър файл е различен (нeправилно указан), или някоя директива или условно компилиране са объркани. Ще имам проблем с търсенето, но съм се заял с тоя проект и ще видя до къде ще я докарам :)

Впрочем, докато стигна до тук, в няколко хедър файла се наложи да сложа условно компилиране, защото се цитираха и в "C" и в "S" файлове, а хедър файловете, вмъкнати в "S" (asm) даваха грешки на директива "typedef" (асемблера не ги разпознава): по препоръка от гугъл :), добавих конструкция от рода:
#ifndef __ASSEMBLER__
typedef ...
...
#endif


Пон Фев 14, 2011 10:04 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение 
Ники написа:
по спомен инструкция IN е за вход-изход и работи с регистри до адрес 63...

Прав си - работи с адреси от 0 до 63 включително, само дето SREG e = 63 , т.е си е на коректен адрес.
Понеже компилатора не реве SREG да е недефиниран, то значи е дефиниран някъде, но не сочи на правилн адрес.

NikB, не знам защо толкоз се тормозиш с този проект да го подкараш с gcc..
Ако толкова много държиш на тоя тип програматори, отиди ей тук, изтегли си кода и си свиркай с уста :) (тесван е и се компилира с WinAVR, че даже и работи..)


Пон Фев 14, 2011 4:53 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Aбе мисля, че това е същото (това, което препоръчваш ползва ATMega8-16, а не успях да му намеря DIP корпус :), за да го спретнат колегите).
Впрочем, програматорът не е проблем - тука ползвам някакъв.
Просто се опитвам да свикна с C и WinAVR средата (но, като цяло AVR Studio-то за сега е доста дразнещо, поне за мен :))


Пон Фев 14, 2011 5:12 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни