LinuxForum.Fans
Тема

Cross-compiler for x51

Автор: Peter 9 сообщений 4052 просмотров
#140788

Здравствуйте!

Сам я никогда с 8051 дела не имел, но есть программа, которой лет 7
и автор в описании говорит, что для Linux требуется кросс-компилятор
фирмы Keil Software, http://www.keil.com/ , http://www.keil.com/c51/ca51kit.htm
и предупреждает, что он не относится к свободно доступным.
Я туда ещё не заходил, а с тех пор что-нибудь изменилось?

Пётр.

#140845

А вопрос-то в чем?

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

Кайловскикиая среда разработки платная, но до определенного объема кода (допустим, до 8 кБ -- насайте KEIL нужно уточнять) можно скачать evolution версию, которая бесплатна. Кроме того, в интеренете полно всяких бесплатных версий для 51-го ядра, которые работают как под DOS (ядро-то старое!), так и под Виндовз. По моему я даже что-то видел в репах Ubuntu.

Поскольку не очень известен компилятор, на который рассчитан Ваш исходный код, то Вам скорее всего понадобится его минимально адаптировать под тот, который Вы установите.

Прога-то большая у Вас? Мне кажется, что у Вас даже не Си-шный исходник, а ассемблерный. Проги для 51-го ядра писались преимущественно на ассемблере.

#140867

Я до кода ещё даже не добрался, но вроде бы на C.
Откуда тот человек тогда взял этот компилятор, я не знаю -
с этого сайта или откуда-то ещё.
Я даже ещё не понял, была у него среда или только
компилятор, кажется, компилятор.

Т.е. я хотел узнать, надо ли как-то получать компилятор
именно оттуда или теперь есть и свободные его варианты,
отдельно или в репозитариях.

Пётр.

#140894

Повторюсь.
Если Вам не удастся найти "тот самый" компилятор, который разработчик использовал при разработке ПО, то с минимальными переделками можно применить любой другой.
Мне сложно сказать какие именно переделки потребуются для Вашего случая, но я имел ввиду например такие:

-- код процедуры прерывания для AVR для компиялатора IAR выглядит так:

text

#pragma vector = TIMER0_OVF_vect
__interrupt void my_handler(void)
{
...
}

тот же код для avr-gcc -- так

text

ISR (TIMER0_OVF_vect)
{
...
}

а для CodeVision -- так

text

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
...
}

В среде Codevision) прерывания разрешаются командой

text
#asm("sei");

в IAR -- командой

text
__enable_interrupt();

в avr-gcc -- командой

text
sei();

Разумеется есть и другие отличия. Но весь си-шный код будет оставаться примерно тем-же самым. Так что все преодалимо. У Вас какой, кстати, МК? Точный тип уже знаете? Объем кода знаете? Если это разовая работа, то может проще найти среду, "пролечить" и забыть эту проблему? 51-е ядро уже почти не применяется.

#140903

Процессор - C8051F120.
Есть готовый прибор с ним, программу для которого надо
модифицировать, код при этом должен уменьшиться, т.к.
некоторые ветви программы отпадут.

Есть пакет mcu8051ide, я его ещё не смотрел.

Вообще там в каталоге с программой есть все, что требуется, в .т.ч.
и кросс-компилятор, но там ещё много такого, от чего я хотел бы
избавиться, там, кроме программы для микроконтроллера, строится
exe-файл для Windows, это делается с помощью tclkit, он опять же
внутри этого каталога со всем, что требуется для его создания,
а также 4 или 5 расширений tcl. Весь каталог с объектными модулями
занимает 522MB. Для Linux тоже создаётся файл для компьютера.

Т.е. мне бы пока разобраться с микропроцессором, а программу для
компьютера можно написать и на Qt. Программ на tcl я не делал, только
однажды поправил один скрипт на tcl/tk, но tclkit год или два назад
как-то построил, при этом пришлось редактировать скрипты, взятые с
сайта, т.к. с исходными не получалось. Не знаю, как сейчас.

Поэтому я и заинтересовался отдельным кросс-компилятором.

Пётр.

#140906

Ой, как все запущено...
Теперь я даже не знаю что и сказать.
Если автор еще доступен, то наверно лучше работать в тесном контакте с автором.
(Блин! Венда! Кошмар какой-то!)

#140908
zhevak написал:
Ой, как все запущено...
Теперь я даже не знаю что и сказать.
Если автор еще доступен, то наверно лучше работать в тесном контакте с автором.
(Блин! Венда! Кошмар какой-то!)

Нет, автор недоступен. Дело в том, что прибор работает совместно
с компьютером, передаёт в него данные измерений, а вся обработка
отображение на экране происходит на компьютере.

Пётр.

#141346

Если компилятор в дистрибутиве не удасться использовать, то как сказал zhevak, можно использовать любой свободный компилятор (в гугле сразу нашёл) просто переделав немного код.

Но, думаю, в любом случае придётся со всем этим разбираться, а вопросы задавать сперва в гугл.

#141354
SkaarjZR написал:
Если компилятор в дистрибутиве не удасться использовать, то как сказал zhevak, можно использовать любой свободный компилятор (в гугле сразу нашёл) просто переделав немного код.

Но, думаю, в любом случае придётся со всем этим разбираться, а вопросы задавать сперва в гугл.

Да, действительно. Кстати, пакет mcu8051ide требует sdcc, а я не знаю,
так ли он хорош, как компилятор от Keil Software. Для процессоров PIC
он хуже, чем от mplab, в частности, забирает себе 30 ячеек.

Благодарю всех за ответы.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.