Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с подготовкой примеров для студентов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Виктория
Уважаемые форумчане! smile.gif

Мне необходимо показать студентам некоторые задачи и пути их решения на ассемблере и Си, для того чтобы сравнить, и в конечном счете продемонстрировать, что большую часть из них можно оптимально реализовать на Си. Требования к задачам - несколько строк текста (чтобы показать только приемы) в любом представлении - либо описание задачи, либо на asm, либо на Си. "Гадостей" не пишите blush.gif , тему открыла не для "Си vs Asm", а для подготовке к практическому занятию со студентами (через неделю). Книги по Embedded С, разумеется, посмотрю.

Так как многие форумчане сталкивались раньше в своих проектах с Intel 8086/8088/80C188/80C186, я думаю, что для них не составит труда вспомнить подобные примеры из своей практики. Мои студенты, к сожалению, знают пока только PC-ный ассемблер.

С уважением ко всем, Vic1 как преподаватель вуза.
upc2
В начале писалось на СИ , но потом потребовалось на ASM.
Об оптимальности вопрос не стоял.Была проблема в быстродействии.
greg
Цитата(Vic1 @ Oct 27 2005, 11:31)
Уважаемые форумчане!  smile.gif 

Мне необходимо показать студентам некоторые задачи и пути их решения на  ассемблере и Си, для того чтобы сравнить, и в конечном счете продемонстрировать, что большую часть из них можно оптимально реализовать на Си. Требования к задачам - несколько строк текста (чтобы показать только приемы) в любом представлении - либо описание задачи, либо на asm, либо на Си. "Гадостей" не пишите blush.gif , тему открыла не для "Си vs Asm", а для подготовке к практическому занятию со студентами (через неделю). Книги по Embedded С, разумеется, посмотрю.

Так как многие форумчане сталкивались раньше в своих проектах с Intel 8086/8088/80C188/80C186, я думаю, что для них не составит труда вспомнить подобные примеры из своей практики. Мои студенты, к сожалению, знают пока только PC-ный  ассемблер.

С уважением ко всем, Vic1 как преподаватель вуза.
*


В постперестроечное время издавалась книга, автор Джордейн, к сожалению у меня её нет, но я видел её в Inete, так что через поисковик найдёте. Там были примеры на языке высокого уровня (на C или Basic) и на ассемблере.
Виктория
Спасибо.
Из ответов поняла свою ошибку. Конечно же речь идет о примерах для встроенного ПО, без MS DOS, BIOS. (Поэтому Джордейн не пригодится).
Т.е. процессор 8086 или микроконтроллер 80С188 предполагается в составе некоторой целевой системы (или прибора).
Если профессионалы по Intel 80C188 не увидят мою просьбу, то может быть найдутся желающие привести примеры для других микроконтроллеров.
И еще, кто-нибудь может подскажет, какая из книг по Embedded C самая достойная? (по теме ветки)
spf
Цитата(Vic1 @ Oct 27 2005, 15:23)
И еще, кто-нибудь может подскажет, какая из книг по Embedded C самая достойная? (по теме ветки)
*


Кхм, думаю самая достойная это та которая идет в комплекте с компилятором "C" для применяемого контроллера. Т.к. все компиляторы для embedded МК имеют свои "тонкие" места, от которых зачастую все и зависит.

Цитата(Vic1 @ Oct 27 2005, 15:23)
... может быть найдутся желающие привести примеры для других микроконтроллеров.


Как вариант - http://www.fme.gsdc.de/pdf/an-900092-10-compileropt.pdf
Виктория
Похоже придется поиском по темам. Сегодня, вот ReAl "для неокрепших желудков" ( a14.gif ) в соседних ветках, надеюсь поиск поможет. blush.gif
TMX
Как делаю я:
прежде всего, по-моему, сам подход "а можно и на С" - некорректный, плодит ваххабитов, которые потом с пеной у рта будут доказывать, что код асм оптимальнее и т.п, (потому что для конкретных задач это действительно так).

1. предполагается, что студенты уже знакомы с асм, вызовом ф-ий, обработкой прерываний и т.п.
2. Задание - написать на асм ф-ю с параметрами, которая возвращает значение.
типа: int add (int, int) и т.п. список составьте сами.
3. Рассмотреть используемость (usability) такой функции в реальном проекте: какие регистры использует, как сохраняет/восстанавливает эти регистры, как передает параметры, как возвращает значение, как используется стек, сколько используется стеков и т.п. может передача параметров через системные переменные, программная реализация стека и т.п.
4. Сформулировать необходимость принятия единых правил написания функций и их вызова для асм.
5. Задание - сформулировать эти правила.
6. Задание - на основе этих правил написать по две функции - одну, использующую ф-ю товарища, другую, используемую ф-ей другого товарища.
7. Сформулировать необходимость принятия единых правил использования глобальных переменных в ОЗУ для асм.
8. Задание - сформулировать эти правила.
9. Задание - написать функции, использующие глобальные переменные, можно тоже по две.

10. Показать, что эти правила, в общем, не оптимальны.

11. Теперь можно и к С переходить smile.gif
или к Forth

хорошая книжка: "How the Pros Develop Embedded Software", из нее ясно, на что действительно стоит обращать внимание при обучении студентов
Виктория
Цитата(TMX @ Oct 27 2005, 17:32)
Как делаю я:
прежде всего, по-моему, сам подход "а можно и на С" - некорректный, плодит ваххабитов, которые потом с пеной у рта будут доказывать, что код асм оптимальнее и т.п, (потому что для конкретных задач это действительно так).

1. предполагается, что студенты уже знакомы с асм, вызовом ф-ий, обработкой прерываний и т.п.
2. Задание - написать на асм ф-ю с параметрами, которая возвращает значение.
типа: int add (int, int) и т.п. список составьте сами.
3. Рассмотреть используемость (usability) такой функции в реальном проекте: какие регистры использует, как сохраняет/восстанавливает эти регистры, как передает параметры, как возвращает значение, как используется стек, сколько используется стеков и т.п. может передача параметров через системные переменные, программная реализация стека и т.п.
4. Сформулировать необходимость принятия единых правил написания функций и их вызова для асм.
5. Задание - сформулировать эти правила.
6. Задание - на основе этих правил написать по две функции - одну, использующую ф-ю товарища, другую, используемую ф-ей другого товарища.
7. Сформулировать необходимость принятия единых правил использования глобальных переменных в ОЗУ для асм.
8. Задание - сформулировать эти правила.
9. Задание - написать функции, использующие глобальные переменные, можно тоже по две.

10. Показать, что эти правила, в общем, не оптимальны.

11. Теперь можно и к С переходить  smile.gif
*


Спасибо, хороший у Вас подход. Нечто подобное, но в отношении использования ОС РВ я тоже пытаюсь также показать. В общем идея хорошая, надо работать над собой. blush.gif
TMX
Самое лучшее, на мой взгляд, - дать всей группе задание на разработку какого-либо устройства.
Типа модуля сбора данных с передачей по УАРТ в текстовом виде. с простой индикацией и управлением от пары кнопок.
А дальше - по книжке, которую я указал.
Виктория
Цитата(TMX @ Oct 27 2005, 17:32)
хорошая книжка: "How the Pros Develop Embedded Software", из нее ясно, на что действительно стоит обращать внимание при обучении студентов
*


Спасибо smile.gif , благо эта книга у меня есть.

Цитата
Самое лучшее, на мой взгляд, - дать всей группе задание на разработку какого-либо устройства.
Типа модуля сбора данных с передачей по УАРТ в текстовом виде. с простой индикацией и управлением от пары кнопок.


Нечто подобное уже провела (ПО целевой системы в виде измерительного прибора с семисегментной индикацией, клавиатурой). УАРТ забыла включить, но к тому же у меня и студентов мало (9 всего). Целью такого занятия было знакомство со спецификой программирования встроенных систем. Совсем не ожидала реакции студентов, что "на ассемблере лучше". Оказывается это надо было предусмотреть excl.gif

Известны всем еще и другие проблемы обучения - базовая подготовка слабовата, часов мало, а хочется донести до них побольше и как-то задеть (чтобы обратили внимание на предмет обсуждения и запомнили). В общем то - это была одна из причин создания темы.
TMX
По поводу интереса студентов - это действительно проблема.

Как называется специальность?
Сколько часов в неделю курс?
Вы ведете все занятия или часть (семинары, например)?
Виктория
To TMX
1. специальность 220400 "Программное обеспечение вычислительной техники и автоматизированных систем"
(специализация "Автоматизированные системы научных исследований (АСНИ)")
2. курсы "Программное обеспечение микропроцессорных систем",
"Программное обеспечение систем сбора информации" (36 и 52 аудиторных часа, соответственно, разделили на 2 семестра).
3. надеюсь весной на помощника для проведения лабораторных занятий.

Базовая подготовка слабовата - ощущается. На младших курсах - в каком-то виде организация ЭВМ и электроника (наверно, только цифровая), программирование по верхам. У нас на кафедре - датчики и устройства нормализации, системы сбора информации и микропроцессорные системы и все!
TMX
так это довольно много - и подготовка вполне себе ничего.
И то что группа небольшая - тоже хорошо.
Просто надо дать конкретное задание - лучше всего, разработка новой лабораторной работы или оборудования для нее:
1. Кафедре польза
2. Вам - опыт руководства проектом
3. Студентам - опыт участия в групповой разработке.
Виктория
To TMX
Цитата
так это довольно много - и подготовка вполне себе ничего.
И то что группа небольшая - тоже хорошо.
Просто надо дать конкретное задание - лучше всего, разработка новой лабораторной работы или оборудования для нее


Так ведь из этих часов половина - это лекции. А рассказать - и ПО для МПС, и ОС РВ, и веяния новых технологий (типа SCADA, PLC). С заданием - сложности. Студенты с 3-го курса распределены по научным руководителем для выполнения УИРС по конкретной теме (перерастающей в ДП). Такой уж у нашей кафедры подход. И у меня таких с каждого курса по 1-2, их то я могу хоть чем озадачить (себе на голову blush.gif), но донести специфику курса нужно до всех.

Это, наверно, длинный разговор (и постепенный уход от темы). Если интересно продолжить, обращайтесь лично.
one_man_show
Уважаемая Vic1!
Сожалею, что с опозданием увидел тему. У меня есть несколько сотен примеров на Си для контроллеров х86 (www.tern.com).
Пишу с КПК, поэтому сейчас выложить не могу, пожалуйста, киньте напоминалку через РМ, обязательно вышлю. Могу помочь с железом для лабораторок.
Удачи
Виктория
Большое спасибо! На следующий учебный год пригодятся. Отправила PM.
one_man_show
Уважаемая Vic1!

Посылаю архив примеров для всех контроллеров Терн, они разложены по папкам с именами самих контроллеров. Там может быть очень много ненужных Вам, но предлагаю самой разобраться, что нужно, а что нет smile.gif
Контроллеры Терн не имеют OS и BIOS, думаю это то, что Вам нужно. Все тонкости аппаратной части контроллеров описываются в библиотеках, если они нужны, могу тоже выложить. Компилировать можно с помощью Борланд С 3.1 - 5.0 или Парадигм 5.0. Последний заточен под встраиваемые приложения.
Кроме того, если нужны схемы, готов выложить, но они усечены, МК на них нет, есть только его шина и вся периферия.
Контроллеры можно заказать в Москве в ОАО "Родник Софт" (095)113-7001, возможно и в Вашем регионе есть дилеры.
С этими контроллерами работаю много лет, готов помочь чем смогу smile.gif

Удачи!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.