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

 
 
> SDCC, каково мнение
speccy1983
сообщение May 15 2008, 17:45
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 28
Регистрация: 24-08-06
Из: Екаеринбург
Пользователь №: 19 801



Порылся на форуме, но ничего подходящего не нашел. А вопрос такой. Работаю на Silabs`овских контроллерах. Решил прикрутить к SiLabs IDE бесплатный SDCC. Какие могут быть подводные камни при работе с проектами, созданными в кейле? Тупо открываю готовый проект, но вываливается куча ошибок. Например, не нравится
sbit RS = P2^4;
Говрит error 2: Initializer element is not constant. В кейле компилится нормально. В самом деле я даже не знаю с чего начать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mrcashe
сообщение May 15 2008, 18:39
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 21-07-06
Из: Владивосток
Пользователь №: 18 987



Ну, странный вопрос: откуда начАть? Конечно, RTFM (Read The Fucking Manual) & STFW (Search The Fucking WEB). Если погуглить чуток, то можно найти:
http://sdcc.sourceforge.net/doc/
Документация не шибко объёмная, можно пару часов потратить и понять, что:
Цитата
sbit RS = P2^4;


в SDCC выглядит как:

Цитата
__sbit __at (0xA4) RS;


А ещё лучше:
Цитата
#include <C8051F340.h>
#define RS P2_4


Вообще говоря, Keil C более навороченный и менее стандартный, нежели SDCC. Поэтому, если нет особых причин, зачем пересаживаться? Писать исходный код, способный компилироваться на двух разных компиляторах - задача нетривиальная даже для больших компьютеров, не говоря о полукривых компиляторах для MCS-51.
Достаточно сложно создать исходник, способный компилиться на обоих этих компиляторах. Особенно, если есть ассемблерные вставки. Тут эти компиляторы вообще не совместимы, даже по протоколу передачи параметров из Си в ассемблер и обратно.
Сам я давно использую SDCC, потому что работаю на Linux. Хотя Keil тоже работает под эмулятором винды. На мой взгляд, SDCC более предсказуем и корректен, но Keil способен сгенерить более оптимальный код.
Так с чего начать? Прочесть доки и понять, чем отличаются компиляторы в плане исходного кода. В основном, это объявления SFR и битовых адресов, области памяти, указатели. Стараться не делать ассемблерных вставок, а если делать, то только при помощи встроенного ассемблера (он у обоих есть) и окружать конструкциями типа:
Цитата
#ifdef SDCC
...код для SDCC...
#else
...код для Keil...
#endif

Удачи.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:29
Рейтинг@Mail.ru


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