плата MSC1211 - посоветуйте free С компилятор
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
плата MSC1211 - посоветуйте free С компилятор
А может кто-нибудь посоветовать такой компилятор для Вин95/98/етс(это процессор 8051)? А то у тех компиляторов, которые на СД вместе с платой ограничение 4К.
,,, ^. .^ ,,,
-
- Уже с Приветом
- Posts: 2846
- Joined: 28 Jun 2000 09:01
- Location: Milwaukee, WI
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
-
- Уже с Приветом
- Posts: 5034
- Joined: 11 Jan 2003 07:50
- Location: ROV -> ICN -> LED -> ICN -> YYZ -> SFO -> ?
idle0 wrote:как насчет gcc?
Гм?! А что, уже появился порт gcc для 8051??? Быстрый поиск по гуглу ничего не дал.
ЗЫ: да и на http://gcc.gnu.org/ ничего про это нет (да и для 8086 тоже)
-
- Уже с Приветом
- Posts: 5034
- Joined: 11 Jan 2003 07:50
- Location: ROV -> ICN -> LED -> ICN -> YYZ -> SFO -> ?
Re: плата MSC1211 - посоветуйте free С компилятор
dot wrote:А может кто-нибудь посоветовать такой компилятор для Вин95/98/етс(это процессор 8051)? А то у тех компиляторов, которые на СД вместе с платой ограничение 4К.
Посмотрите здесь http://www.lawicel.com/e_links_8051.htm
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
А вот еще вопрос, наверно к тем, кто занимается embedded programming. В документации по sdcc написано буквально так:
примеры я вроде нашла, но не для моей карты - не для MSC. Поиск по интернету, пока ничего не дал.
Меня интересует вот какой вопрос - вообще-то карта будет общаться через серийный порт с VB-программой. Т.е. использовать функцию getkey/putkey - и если их придется тоже переопределять - то достаточно просто прочитать документацию и писать/читать в тот регистр, который указан в manual как регистр для обмена через RS232 порт(ну, и проверять - пришли новые данные или нет еще)? Или здесь есть какие-то подводные камни, и алгоритм д.б. сложнее?
В-общем, буду благодарна если кто расскажет, какой обычно алгоритм используется в таких случаях?
As usual on embedded systems you have to provide your own getchar() and putchar() routines. SDCC does not know whether the system connects to a serial line with or without handshake, LCD, keyboard or other device. You'll find examples for serial routines f.e. in sdcc/device/lib.
примеры я вроде нашла, но не для моей карты - не для MSC. Поиск по интернету, пока ничего не дал.
Меня интересует вот какой вопрос - вообще-то карта будет общаться через серийный порт с VB-программой. Т.е. использовать функцию getkey/putkey - и если их придется тоже переопределять - то достаточно просто прочитать документацию и писать/читать в тот регистр, который указан в manual как регистр для обмена через RS232 порт(ну, и проверять - пришли новые данные или нет еще)? Или здесь есть какие-то подводные камни, и алгоритм д.б. сложнее?
В-общем, буду благодарна если кто расскажет, какой обычно алгоритм используется в таких случаях?
,,, ^. .^ ,,,
-
- Уже с Приветом
- Posts: 7728
- Joined: 10 Jan 1999 10:01
- Location: OH->TX->MI->MA->VA->FL->...
У Вас само устройство работает в качестве терминала для проги на VB или наоборот, PC выступает в роли терминала для 8051-based устройства? Сколько клавиш надо обрабатывать?
Я заимствовал код из юниксовых примеров и переделывал его под эмбедед платформы, с буферами и прочими фичами. Не знаю, как в Вашем случае, а у меня просто переопределялась функция низкого уровня в библиотеке, которая уже была встроена в набор putchar/getchar/fprint и т.д. Платформа была Мотороловская...
Я заимствовал код из юниксовых примеров и переделывал его под эмбедед платформы, с буферами и прочими фичами. Не знаю, как в Вашем случае, а у меня просто переопределялась функция низкого уровня в библиотеке, которая уже была встроена в набор putchar/getchar/fprint и т.д. Платформа была Мотороловская...
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
Sanych wrote:У Вас само устройство работает в качестве терминала для проги на VB или наоборот, PC выступает в роли терминала для 8051-based устройства? Сколько клавиш надо обрабатывать?
Я заимствовал код из юниксовых примеров и переделывал его под эмбедед платформы, с буферами и прочими фичами. Не знаю, как в Вашем случае, а у меня просто переопределялась функция низкого уровня в библиотеке, которая уже была встроена в набор putchar/getchar/fprint и т.д. Платформа была Мотороловская...
так, а можно более подробно, а то я все-же чайник, на С лет 6-7 не писала... Ничего про терминалы не поняла...
Там ситуация такая - есть 2 части - на С написанная программа(в процессе разработки), которая грузится в плату MSC - скажем, сервер. И к ней VB(еще конь не валялся) - клиент(?), который 1) собственно файл в плату загружает и потом в зависимости от ввода пользователя передает команды через RS232 на плату. Т.е. по идее, события клавиатуры и мыши обрабатываются VB-программой, но для стадии дебага - все равно пока принтф нужен пока.
Сколько клавиш - ну, пока десять набралось. Потом может быть и больше. Есть у меня Keil-компилятор, но у него что ассемблер, что С использует немного другой синтаксис, и исходников этих функций нет.
Примеры из Юникса... В sdcc вроде как printf, vprintf и прочие функции определены, надо только getchar/putchar переопределить. Я вроде нашла пример putchar функции, но он на ассемблере и собственно, код этот просто пишет соотв. keycode в регистр (насколько я поняла).
,,, ^. .^ ,,,
-
- Уже с Приветом
- Posts: 5034
- Joined: 11 Jan 2003 07:50
- Location: ROV -> ICN -> LED -> ICN -> YYZ -> SFO -> ?
Дело в том, что на ваш вопрос сложно ответить однозначно не зная формат команд которые будут использоваться для общения с платой и типа UART на плате.
Если все общение будет заключаться в достаточно редкой посылке однобайтной команды, то, ИМХО, городить буфферизацию и обработку прерываний совершенно излишне. putch() должен просто запихнуть байт в Tx регистр UARTа (предварительно подождав освобождения регистра), getch() - просто ждет выставления флага готовности в регистре контроля и затем читает байт из Rx регистра. (в принципе для реализации printf() больше и не нужно).
Если же нужен более-менее надежный прием/передача (например, вы отсылаете в плату буффер данных), то уже нужно делать буфферизацию, цепляться к прерыванию и особенно желательно делать контроль потока (если UART не поддерживает HW flow control, то делать программно XON/XOFF контроль).
Если все общение будет заключаться в достаточно редкой посылке однобайтной команды, то, ИМХО, городить буфферизацию и обработку прерываний совершенно излишне. putch() должен просто запихнуть байт в Tx регистр UARTа (предварительно подождав освобождения регистра), getch() - просто ждет выставления флага готовности в регистре контроля и затем читает байт из Rx регистра. (в принципе для реализации printf() больше и не нужно).
Если же нужен более-менее надежный прием/передача (например, вы отсылаете в плату буффер данных), то уже нужно делать буфферизацию, цепляться к прерыванию и особенно желательно делать контроль потока (если UART не поддерживает HW flow control, то делать программно XON/XOFF контроль).