УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Модератор: kustarev

УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 25 янв 2012, 14:00

Добрый день.

Данная тема посвящена проведению учебно-исследовательской работы студентов и практики студентов кафедры ВТ 2-го курса 2011/12 уч. года
под руководством доц. Кустарёва Павла Валерьевича.

Материалы и ссылки по теме УИРС:

1)документация, примеры программирования и инструментальное программное обеспечение для стенда SDK-1.1:
http://embedded.ifmo.ru/index.php/support/sdk-11

С уважением,
Кустарев П.В.
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 25 янв 2012, 14:16

Добрый день.

Встреча со студентами будет проводиться в четверг 26.01.2012 в 16-00 в ауд.300 в здании ИТЦ НИУ ИТМО по адресу Биржевая линия В.О. д.14.

Как попасть: войти через главный вход (под большим козырьком, опирающимся на 2 столба) в здание. Проход поста охраны - по студенческим пропускам, по которым вы проходите в главное здание.
Если охранники спросят: "Куда идете" - говорите, что идете в лабораторию кафедры вычислительной техники на 3-й этаж.
Далее, после поста охраны, идете по первому этажу прямо вглубь здания, проходите мимо красивой старинной круговой лестницы, идете дальше по коридору 20 м., пока не упретесь в стену. Направо будет вход в столовую, но вы поворачиваете налево и через 5 метров будет широкая лестница. По ней поднимаетесь на 3-й этаж, справа будет дверь, рядом кнопка звонка. Вам туда. Нажимаете кнопку, прислушиваетесь, что сработала и слышна мелодия звонка. Если нет - нажимаете кнопку повторно. Если не открыли - нажимаете еще раз через полминуты. Не открыли - ждите здесь, на лестнице.
Когда откроют дверь, входите в лабораторию и ждите меня в первой комнате (лекционный класс). Если меня долго нет - входите во вторую комнату (компьютерный класс) и звоните мне по телефону (номер написан у телефона).

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

С уважением,
Кустарев П.В.
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение Serkhiomel » 28 янв 2012, 17:31

Здравствуйте, Павел Валерьевич.

Пишу Вам от имени студентов, которые по причине отъезда не могли присутствовать на вводном занятии. Мы приносим извинения за неявку. Ниже приведен минимальный список этих студентов (мы все к Вам записывались на первом занятии). Людей скорее всего больше, но я о них не знаю.
1. Савицкая Александра - 2100
2. Ильина Ксения - 2100
3. Кочетков Илья - 2100
4. Леготин Александр - 2105
5. Мелехин Сергей - 2105
...

Со слов присутствовавших на первом занятии очень сложно понять, что же все-таки нужно сделать и в каком объеме на второе занятие. Поэтому, если Вам не трудно, не могли бы Вы продублировать вкратце первое задание в этом форуме. Также мы хотели бы попросить Вас провести второе занятие после так называемых каникул (после 6 числа февраля, если это возможно), иначе мы его снова пропустим.

С уважением,
студент группы 2105
Мелехин Сергей.
Serkhiomel
 
Сообщения: 1
Зарегистрирован: 25 янв 2012, 19:01
Откуда: Север

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 30 янв 2012, 02:15

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

Пока никого из осенних списков не вычеркивал. То, что будут не все понимал и претензий не имею.
Однако в форуме дублировать 2 часа рассказа не буду.

Кратко по сути занятий:
- заниматься будем изучением устройства ЭВМ и программированием ЭВМ на уровне аппаратуры на примере
простейшей однокристальной ЭВМ (или иначе "микроконтроллер") ADuC812 семейства MCS-51 (или 8051 - как кто привык).
В качестве "испытательной базы" будем использовать учебный стенд SDK-1.1, используемый на нашей кафедре.

Про все это можно прочитать в документах здесь:
http://embedded.ifmo.ru/index.php/support/sdk-11

Программирование будет осуществляться на языке C, возможно использование ассемблера. Для разработки и отладки программ будем использовать инструментальное программное обеспечение (редактор, компилятор, симулятор/отладчик программ) C51 Development Tools фирмы Keil . Последнюю версию можно взять здесь https://www.keil.com/demo/eval/c51.htm . Она с ограничениями, но для Ваших задач пока хватит. На том же сайте найдете документацию и примеры программирования (правда все на английском, но без технического английского в области вычислительной техники никак).

Задача к следующему занятию:
1) Разобраться в первом приближении с устройством стенда SDK-1.1 и процессора (микроЭВМ, микроконтроллера) ADuC812, установленного в этом стенде. Задача не понять все (это невозможно так сразу), а начать задавать мне вопросы.
2) Скачать и установить Keil C51. Попытаться скомпилировать и отлаживать в симуляторы проект HELLO , прилагаемый в примерах. Т.е. потихоньку осваивать инструмент разработки программного обеспечения для микроконтроллеров MCS-51 (8051).
3) Попытаться разработать программу, которая сможет устанавливать различные логические уровни (а в физическом смысле - различные уровни напряжения) на ножках (портах) мироконтроллера ADuC812, а так же считывать значения уровней, установленных на этих портах извне. Таким образом процессор (который встроен в микроконтроллер) сможет управлять подключенными к нему устройствами (например, зажигать светодиоды) или считывать состояния сигналов подключенных к нему устройств (например, датчиков). Все это нужно скомпилировать и симулировать в инструментальной среде Keil C51.

Пока все.
Есть вопросы -пишите.

С уважением,
Кустарев П.В.

P.S. Ваши пожелания по времени следующей встречи учту.
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 10 фев 2012, 15:39

Добрый день всем.

К сожалению на этой неделе не получилось встретиться. Встретимся на следующей.

Сообщаю, что к руководству Вашим УИРС будут привлечены студенты-магистранты 5-го курса.
Они будут непосредственно контролировать Вашу практическую работу: у них навык практической деятельности свежее, чем у меня.
Кроме того, эти магистранты ведут реальные студенческие исследовательские и опытно-конструкторские работы, к которым вы,
если проявите себя, в перспективе сможете присоединиться.

Еще раз напоминаю: пока на прохождение практики/УИРС у меня ограничений нет. Жду всех желающих.

С уважением,
Кустарев П.В.

P.S. В понедельник лекцию будет вести Довгий П.С. - объяснит материал и ответит на вопросы по подготовке к Тесту №1 "Прикладная архитектура ЭВМ"
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 16 фев 2012, 11:32

Добрый день.

Очередная встреча по УИРС пройдет в среду 22.02.2012 с 13-20 до 15-40, в здании на Кронверкском 49 в аудитории 369A.
Занятие будем проводить совместно я и магистрант 5-го курса Андриенко Евгений.
Будем рассматривать ваши решения по управлению портами ввода-вывода микроконтроллера ADuC812 (MCS-51) - это Вам предлагалось на самостоятельную проработку. Поэтому прошу быть готовыми.
Ссылка на документацию - см. первое сообщение в теме.

Далее покажем, как выполняется загрузка и отладка программного обеспечения в учебном стенде SDK-1.1.

С уважением,
Кустарев П.В.
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 17 фев 2012, 21:34

Занятие будем проводить совместно я и магистрант 5-го курса Андриенко Евгений.

Отмечусь здесь на всякий случай.
Если возникнут какие-нибудь вопросы, то лучше писать мне письмо на E-mail: evg.andrienko гмыло-ком. Можно писать и сюда в личку, но я редко бываю на самом форуме ибо смотрю обновления на нем через RSS.

2kustarev
Павел Валерьевич, если мы будем показывать загрузку и отладку программ в SDK1.1 исключительно в "демонстрационных" целях ("смотрите, вот что вас ждет на 3 курсе!"), то я могу притащить свою старую программу - часы-будильник для SDK1.1. По-крайней мере это, как мне кажется, будет интереснее смотреть, чем простое мигание светодиодом...
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение Сухов Стас » 26 фев 2012, 10:03

Здравствуйте, Павел Валерьевич.

Я бы хотел обратиться к вам по поводу времени встреч по УИРСу. Дело в том, что у двоих студентов (в частности, Сухов С. и Колтавский А., гр 2105) английский по средам начинается в 14:20, а у остальных - в 11:00. Не могли бы вы как-нибудь изменить время встречи? Например, на более позднее время?

Прошу прощения за то, что это сообщение написано не своевременно.
С уважением,
студент группы 2105,
Сухов Станислав.
Сухов Стас
 
Сообщения: 1
Зарегистрирован: 08 фев 2012, 11:10

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 26 фев 2012, 13:40

Перенести встречу на более позднее время точно не получится - у меня с 15.50 две пары с Алиевым, которые лучше не пропускать...
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение Beomage » 26 фев 2012, 13:46

Здравствуйте, Павел Валерьевич.
К сожалению, мы с Вами не смогли встретиться в среду. Прошу записать меня следующих студентов на прохождение УИРСА и практики по Вашему направлению:
1. Чуглов Антон
2. Арфанян Мурад

С уважением,
студент группы 2105
Чуглов Антон.
Beomage
 
Сообщения: 1
Зарегистрирован: 26 фев 2012, 13:29

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 26 фев 2012, 14:12

На всякий случай продублирую здесь свои рекомендации по поводу литературы. Если кто-то еще не читал документацию на ADuC812 - самое время это сделать. Это поможет вам не только на УИРСе, но и на лабораторных по ОргЭВМ и пригодится на 3 и на 4 курсах, когда многие из вас будут заниматься программированием стендов SDK1.1 в рамках лабораторных по "Информационно-управляющим системам" и "Интерфейсам периферийных устройств". Думаю документов, которые выложены тут - http://embedded.ifmo.ru/index.php/support/sdk-11, в секции "Микроконтроллер ADuC812 (рус.)", будет достаточно.

Еще я настоятельно рекомендую изучать язык C. Он достаточно широко применяется в работе со стендом SDK1.1 и для программирования микроконтроллеров вообще. Необходимо изучать стандарт ANSI C, всякие Visual C здесь не нужны. С некоторыми отличиями C51, который применяется в MCS51, от ANSI C, думаю можно познакомиться по ходу работы...
Отличная книга по ANSI C от создателей языка - "Язык программирования C. Брайан Керниган, Деннис Ритчи". Читается за две недели неспешного пролистывания страниц. Если вы ее всю прочитаете и запомните - вы будете знать C. Эта книга есть на "Озоне" (http://www.ozon.ru/context/detail/id/2480925/), в доме Книги и вообще, она валяется на каждом углу в интернете. Отмечу, что необходимо именно второе издание! В первом вас ждет устаревший синтаксис, как минимум...
По части специфики написания программ под микроконтроллеры могу посоветовать, для начала, вот эти ссылки:
http://chipenable.ru/index.php/programming-c/60-how-to-use-cs-volatile-keyword.html
http://chipenable.ru/index.php/programming-c/68-c-test-the-0x10-best-questions-for-would-be-embedded-programmers.html
http://bsvi.ru/stil-ss-oformlenie/
http://bsvi.ru/wtf-volatile/
К сожалению, мне не известна какая-либо специализированная литература по данному предмету - я просто набивал шишки, спрашивал преподавателей и читал всю доступную мне информацию о С в embedded в интернете =).

В "странном" поведении портов ввода-вывода я разобрался - объяснение напишу чуть попозже, вечером. Тем же, кому не терпится познать истину, всячески рекомендую к прочтению материал по следующей ссылке: http://www.mikroe.com/eng/chapters/view/65/chapter-2-8051-microcontroller-architecture/#ch2.3
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 26 фев 2012, 22:31

Рассказываю, что там было с портами. В прошлую среду многие столкнулись с тем, что установить значение для порта P0 можно только один - первый раз, присваивания для второй и следующих попыток оказывали воздействие только на содержимое регистра порта, а на его ножки, если они меняли их состояние из 0 в 1 - нет.
С портом P1 было что-то то же самое, но это как раз таки нормально - ведь порт P1, как следует из документации, может работать только на вход, но не на выход.
Я немного поэкспериментировал дома - оказалось, что порты, начиная с P2 и далее, работают без подобных вывертов. То есть, код вида:
Код: Выделить всё
P2 = 0xbb;
P2 = 0xaa;

отрабатывает именно так, как и ожидается. Следовательно, между портом P0 и, например, портом P2 есть какая-то разница... И она действительно есть!

Вот примерно так (весьма и весьма схематично) выглядит внутреннее устройство порта P2, точнее той его части, что работает на выход:
P2_port.png
Строение порта P2
P2_port.png (14.22 Кб) Просмотров: 24478

Тот самый регистр, куда вы заносите байт операцией P2 = 0xbb - это "register (P2)". Его же содержимое отражается в верхней линейке чекбоксов (Reg) в окне, отображающем состояние порта P2 в симуляторе кейла.
Железная же ножка, которая торчит из корпуса микроконтроллера - на схеме это "Pin", квадратик с крестиком внутри. В симуляторе кейла ее состояние отражается в нижней линейке чекбоксов (Pin) в соответствующем окне. По понятным причинам, я не стал рисовать все восемь ножек, а нарисовал лишь одну, для бита #1.
Между ножкой и регистром есть схема сопряжения, нужная хотя бы для того, чтобы не сжечь к такой-то матери все внутренности микроконтроллера, если через ножку потечет слишком большой ток - сгорит лишь схема сопряжения, что не так страшно.

Теперь, о том, как все это работает. Для лучшего понимания, применю весьма близкую аналогию с водопроводом.
Представим, что GND - земля, "минус батарейки" - это канализация с черной дырой внутри, куда все неизбежно стекает. Провода - водопроводные трубы, по которым течет вода. VCC - питание, +5 вольт - это бак с водой на крыше небоскреба. Транзистор - это водопроводный вентиль. Резистор - сужение в трубе, предназначенное для того, чтобы вся вода не утекла сразу же в канализацию, унеся с собой детали от водопроводного вентиля, трубы и прочие штуки. Ну а ножка - ответвление от трубы, подключаемое к другой схеме.

Итак, что у нас происходит, когда мы записываем единицу в первый бит регистра? Вентиль закрыт. Вода из бака вытекает под напором из ответвления, наполняя собой трубы, подключенные к нему - иначе говоря, на ножке у нас логическая единица.
P2_port_1.png
P2 - логическая единица
P2_port_1.png (14.79 Кб) Просмотров: 24478

Если же мы вместо единицы, запишем ноль - вентиль открывается и вода из бака улетает сразу в канализацию, а ответвлению ничего не достается (у нас ведь черная дыра там, не забыли?). Более того, если в трубах, подключенных к ответвлению была какая-то вода, то она тоже сливается в канализацию. Это - логический ноль.
P2_port_0.png
P2 - логический ноль
P2_port_0.png (17.33 Кб) Просмотров: 24478


Перейдем же теперь к упомянутой особенности порта P0.
P0_port.png
Устройство порта P0
P0_port.png (9.13 Кб) Просмотров: 24478

Как видно, у него нет ни небоскреба с баком (VCC), ни тем более сужения в трубе после бака (pull up резистора). Все что мы можем здесь - это открыть транзистор и установить логический ноль на ножке. Если транзистор закрыт - у нас уже не будет состояния логической единицы! Небоскреба с баком нет, давления в системе нет, вода не заливается в ответвление, ни тем более (вентиль ведь закрыт) не высасывается из него в канализацию.
Иными словами, ножка просто "плавает в воздухе". В железе, состояние ножки будет зависеть от фазы луны и настроения императора Галактики Ская Фалькорра с планеты Дракия. На ножке может быть как ноль, так и единица, или же вообще некие случайные колебания напряжения...

Чтобы использовать такой порт для вывода, к нему таки подключают и питание (VCC), и ограничительный резистор, но делают это уже снаружи микросхемы. Преимущества - можно подобрать резистор, который сможет выдержать такие токи, от которых внутренний резистор давно бы помер, вместе с транзистором.
Но у нас в симуляторе кейла, есть только внутренности микроконтроллера, объяснить симулятору, что мы хотим еще и внешние pull-up резисторы, мы не можем (вроде бы). А с тем "огрызком" что у нас есть, все что мы можем - выставить логический ноль на пине и все...
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 01 мар 2012, 12:07

Добрый день.

1) Прошу студентов посещающих занятия УИРС (и заинтересованных в этом на будущее), но ранее не записанных у меня, прислать мне свои ФИО, номер группы, номер сот. телефона и email.

2) Если есть такие, кто решил выйти из данной группы УИРС в связи со сменой интересов, переходом в другую группу УИРС и иными обстоятельствами, также прошу уведомить меня, чтобы в будущем у нескольких преподавателей не получилось дублированной отчетности по студентам - участникам УИРС.

3) В связи с возникающими вопросами информирую, что по результатам УИРС, чтобы получить "зачет" нужно будет написать и защитить отчет по выполненной работе. Отчет будет приниматься индивидуально.

4) Прошу подумать, есть ли у кого интерес/склонность к работам в области электроники/схемотехники/конструирования печатных плат. Данная область достаточно специфическая, скорее смежная для Вашей специальности, поэтому заниматься ей могут лишь те из Вас, у кого есть реальный интерес. В случае освоения соответствующих технологий данные студенты могут привлекаться для работ в ВУЗе и в сторонних организациях.

С уважением,
Кустарев П.В.
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение dontspeaker » 04 мар 2012, 00:02

Здравствуйте, Павел Валерьевич!
Хотим уведомить Вас о выходе из группы УИРС. Спасибо за уделенное внимание.
С уважением, студ. Савицкая Александра (гр.2100) и студ. Кочетков Илья (гр.2100).
dontspeaker
 
Сообщения: 2
Зарегистрирован: 27 янв 2012, 00:50

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 07 мар 2012, 23:01

Выкладываю, как и обещал, презентацию с сегодняшнего занятия.
presentation.pdf
Прерывания. Таймеры.
(566.55 Кб) Скачиваний: 1035

Вот задание на следующее занятие. Необходимо написать программу, которая зажигает и гасит светодиод каждые 500 миллисекунд (500 мс горит, потом 500 мс не горит и так до бесконечности), используя рассмотренную сегодня функцию задержки на заданное количество миллисекунд. Для этого вам потребуется реализовать инициализацию таймера, поработать с подсистемой прерываний и сделать функцию, которая будет "засыпать" на заданное количество миллисекунд. Отмечу, что использовать функцию из моей презентации следует с осторожностью - она требует доработки в плане добавления отсутствующих критических секций.
Замечу, что программа должна будет работать под стендом SDK1.1, а не в симуляторе Keil'а! Пишите программу с учетом особенностей стенда SDK1.1. Опять таки, все это рассматривалось на сегодняшнем занятии.

Компилировать программу надо не в Keil'е, а при помощи компилятора sdcc и утилиты make. Возможно, будет проще, если вы возьмете готовый пример программы, например "Пример работы со светодиодными индикаторами" и измените его так, как вам будет нужно. Все это, вы можете найти по следующей ссылке: http://embedded.ifmo.ru/index.php/support/sdk-11
Операционная система для запуска всего этого добра - Windows. Те, кто использует Линукс, надеюсь сами без труда разберутся как все это запустить под ним.
Удачи! :twisted:
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение kustarev » 29 мар 2012, 10:02

Добрый день.

Информация для тех, с кем договаривался встретиться сегодня (29.03.12) на Биржевой. Я смогу приехать не раньше 15-30, поэтому прошу либо додойти к этому времени, либо подождать меня (можно прямо в ауд. 300)

С уважением,
Кустарев П.В.
kustarev
 
Сообщения: 339
Зарегистрирован: 23 дек 2008, 15:30

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 01 май 2012, 23:52

Выкладываю список заданий, которые необходимо сделать и оформить в виде отчета, чтобы получить зачет по УИРСу. Крайний срок сдачи отчета - конец мая 2012 года.
https://docs.google.com/spreadsheet/ccc ... EdCSW5OU3c
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Re: УИРС и практика 2-й курс 2012, рук. Кустарев П.В.

Сообщение h0rr0rr_drag0n » 04 май 2012, 12:21

На прошлом занятии возникли проблемы с выводом длинных строк через UART и выполнение части заданий, связанных с выводом ASCII графики, оказалось под угрозой. Спешу всех успокоить - мой драйвер в этом не виноват). Проблема крылась несколько в иной области...
Дело в том, что согласно используемым вами Makefile'ам sdcc компилирует вашу программу с ключом --stack-auto. Данный ключ заставляет компилятор помещать все автоматические переменные, к коим относится и наша длинная строка, в стек, который по умолчанию расположен во внутренней памяти ADuC812. А как вы должны знать из курсов Скорубского - размер этого стека увы слишком мал для размещения в нем по-настоящему длинных строк. Модификатор xdata увы не спасает ситуацию - ваша переменная все равно будет размещена в стеке:
Код: Выделить всё
unsigned char foo() {
   xdata unsigned char i;
   bit bvar;
   data at 0x31 unsigned char j;
   ...
}


In the above example the variable i will be allocated in the external ram, bvar in bit addressable space and j in internal ram. When compiled with --stack-auto or when a function is declared as reentrant this should only be done for static variables.

(документация по sdcc - "SDCC Compiler User Guide, rev 1.123", стр. 33)

Потому тестовая программа для вывода длинных строк выводила всякий мусор - условие *str == '\0' не выполнялось никогда, поскольку конец строки внезапно не влезал в стек и uart_printchar() выводил "мусорные" символы либо бесконечно, либо пока ему случайно не встретится '\0' в какой-нибудь ячейке памяти.

Есть два основных выхода из этого положения. Первый - объявлять большие массивы и строки с модификаторами static xdata. И второй - удалить из опций для sdcc ключ --stack-auto (переменные CFLAGS и LDFLAGS в вашем Makefile).

Удачи! :)
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб


Вернуться в УИРС

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron