реклама на сайте
подробности

 
 
> Объектные файлы...
Злодей
сообщение Jun 23 2009, 10:14
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



WinAVR

Ситуация: пишу тысячу строк кода, например для работы с device, отлаживаю, всё такое, потом отдаю коллеге. Тот должен подключть к своему проекту device.h, написать некоторые функции, зависящие от разводки платы или модификации МК: device_sendbyte(), device_getbyte() и вроде всё.
Код
//файл device.h для работы с device

extern void device_sendbyte( uint8_t byte ); //напиши сам
extern uint8_t device_getbyte( void ); //напиши сам

struct {
    char * name;
    //...
}

int device_some_action();
int device_another_action();


Вроде всё хорошо, но только человеку придётся добавлять в свой проект мои исходники, и они будут у него постоянно make clean -> make all, захламляя и без того неудобочитаемую консоль своими OMG! Warning!

Хочу на выходе что-то самодостаточное, полагаю должно называться device.o и быть объектным файлом.

Я вроде могу превратить исходник в объектный файл, но что потом? Глобальные переменные из модуля, они подружатся сами с init-секциями? А если в нём используется F_CPU, который неизвестен при компиляции модуля? Стоит ли заморачиваться, когда модуль на пару тысяч строк исходников? А как коллега это чудо продукт компиляции к своему проекту должен прикручивать?

Спасибо.

PS Использоваться должно только на atmega.

Сообщение отредактировал Злодей - Jun 23 2009, 10:18
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Goodefine
сообщение Jun 24 2009, 06:54
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Так не ругается, но почему ему вариант с индексом не нравится?
P.S.
В, общем, если заменить
Код
...segment_table[*(buffer+i)];

на
Код
...segment_table[buffer[i]];

то Warning исчезает... Хотя в любом Си учебнике написано, что *(buffer+i) <=> buffer[i] ...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 24 2009, 09:36
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Goodefine @ Jun 24 2009, 10:54) *
Хотя в любом Си учебнике написано, что *(buffer+i) <=> buffer[i] ...
Учебники как правило не обманываютsmile.gif
Так можно ускорить процедуру, убрав из цикла условие...
Код
#define MIN(a,b)  (((a)<(b))?(a):(b))

//=============================================================================
void hard_association(uint8_t* buffer, uint8_t len)
{
    uint8_t i = 0;
    uint8_t n = MIN(len,10);

    for (; i<n; i++)    buffer[i] = segment_table[ buffer[i] ];
    for (; i<len; i++)  buffer[i] = 0xBF;
}
И сбрасывать сторожевой таймер не надо в каждом цикле. У Вас ошибка в логике проектирования программы.
Обычно есть main_task и сторожевой таймер надо сбрасывать именно там (при хорошем стечении обстоятельств ОДИН раз во всей программе).
Есть правило: wdr() распологается в основном теле программы и его выдержка задаётся исходя из сложности этой программы.
Но таймаут 1 секунда - это как правило универсальное решение, за исключением особых случаев.
А лепить wdr() в каждом цикле - ошибка!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Злодей   Объектные файлы...   Jun 23 2009, 10:14
- - kurtis   Наверно как-то так http://www.nongnu.org/avr-libc/...   Jun 23 2009, 10:31
|- - demiurg_spb   Хорошо написанная программа должна штатно компилит...   Jun 23 2009, 13:51
- - Goodefine   А у меня один на ровном месте вылазит Код... f...   Jun 23 2009, 14:30
|- - zltigo   Цитата(Goodefine @ Jun 23 2009, 17:30) А ...   Jun 23 2009, 15:26
|- - dimka76   Цитата(Goodefine @ Jun 23 2009, 18:30) А ...   Jun 24 2009, 08:30
- - Злодей   Ребята, ну я же образно.   Jun 23 2009, 15:04
- - Goodefine   Цитата(zltigo @ Jun 23 2009, 18:26) ...чт...   Jun 24 2009, 06:31
- - XVR   Так тоже ругается? Кодvoid hard_association(uc...   Jun 24 2009, 06:46
|- - VladimirYU   Цитата(demiurg_spb @ Jun 24 2009, 13:36) ...   Jun 24 2009, 12:08
- - Goodefine   Цитата(demiurg_spb @ Jun 24 2009, 12:36) ...   Jun 24 2009, 10:10
|- - demiurg_spb   Цитата(Goodefine @ Jun 24 2009, 14:10) Не...   Jun 24 2009, 10:50
- - Goodefine   Цитата(demiurg_spb @ Jun 24 2009, 13:50) ...   Jun 24 2009, 11:51
- - Goodefine   Цитата(VladimirYU @ Jun 24 2009, 15:08) П...   Jun 24 2009, 12:20
- - demiurg_spb   Цитата(VladimirYU @ Jun 24 2009, 16:08) П...   Jun 24 2009, 12:48


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 09:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016