|
|
 |
Ответов
|
May 6 2006, 13:03
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Yura_K @ May 5 2006, 22:18)  Но у компиляторов не слишком мощная оптимизация и все равно приходится использовать asm-е вставки. Во-вторых, использование библиотек готовых функций (возможна и для asm-а, и для C). В-третьих, возникли мысли о некой прослойке (интерфейсе) между функц. узлами uC и программой, так чтобы написание как повторяющегося кода, так и нового свести к возможному минимуму. Также возможно использование некой RTOS. Ваши мысли по сабжу? Насчет возможностей оптимизации в компиляторах, я думаю, Вы несколько заблуждаетесь. Ручная оптимизация кода, сгенерированного компилятором, позволит сократить программу примерно на 10%, не более. Все зависит от того, как именно написана программа. Использование ассемблерных вставок практического эффекта не дает, поскольку эти вставки ограничивают возможности компилятора оптимизировать программу. Если все же требуется "выжать" из программы десяток байт или пяток микросекунд, то тогда лучше написать соответствующую функцию целиком на ассемблере и выделить ее в отдельный модуль. Насчет библиотек функций Вы правильно заметили. Именно использование библиотечных функций и дает возможность ускорить разработку программы. Возможно странслировать интерфейсные функции и также поместить их в библиотеку. Кстати, здесь возможности ассемблера (+ линкера) гораздо шире, чем у компилятора. Ассемблер позволяет определять глобальные символы на уровне порта или даже бита, без необходимости использования заголовочных файлов. Странслировав такой модуль один раз и поместив его в библиотеку, далее можно просто про него забыть. Единственно, что нужно будет потом сделать, это присвоить портам или битам конкретные значения, которые могут изменяться от проекта к проекту. Использование RTOS тоже способствует ускорению создания программ, поскольку программа разбивается на ряд задач, работающих под управлением такой RTOS. В этом случае добавление или изменение какой-то функции может рассматриваться как добавление еще одной задачи или модификация существующей, без переработки заново всей программы в целом. Только нужно помнить, что работа самой RTOS требует дополнительных ресурсов, как по времени, так и по памяти.
|
|
|
|
|
Jan 25 2012, 07:02
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(_Bill @ May 6 2006, 17:03)  Если все же требуется "выжать" из программы десяток байт или пяток микросекунд, то тогда лучше написать соответствующую функцию целиком на ассемблере Ускорение может быть достигнуто если этого не делать. Взять контроллер с большими возможностями, на котором этого не требуется для поставленной задачи. Отсюда: http://betterembsw.blogspot.com/2011/05/es...e-handouts.htmlЦитата For typical embedded hardware/software costs: * If production run is less than 1 MILLION units Resources should be no more than 80% full * If production run is less than 10K units Resources should be no more than 50% full Цитата Zero Is The Right Amount of Assembly Code С форума avrfreaks.net: Цитата The issue is when you start bumping up against ANY chip limitation (memory, speed, # I/Os, timers, etc). It gets more expensive to work to fit an application into the resources as you spend more time designing and coding against the limitations, as opposed to designing and coding against the requirements.
|
|
|
|
|
Jan 25 2012, 07:28
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(maksimp @ Jan 25 2012, 11:02)  Ускорение может быть достигнуто если этого не делать. Взять контроллер с большими возможностями, на котором этого не требуется для поставленной задачи. даже и не знаю, что можно возразить... с одной стороны, сколько себя помню, всегда шла речь об интенсивном использовании имеющихся ресурсов, т.е. максимального извлечения из них всего, что можно, а не экстенсивным, т.е. просто увеличением объема слабовыжатых ресурсов. это было всегда: от посевных площадей (всегда считали центнеры с га) до нефти и газа (в пользу идет все - от мазута до легчайшего CH4). с другой стороны, практика последних лет убеждает, что на самом деле все наоборот: вместо того, чтобы сделать что-то (с усилиями) на меньшем, правильнее сделать то же самое на бОльшем (но без усилий). правда, этот экстенсивный путь в основном прижился в электронике, благодаря чему последние годы производители просто из кожи вон лезут для того, чтобы хоть чем-то "нагрузить" разросшиеся непомерно возможности, например, возьмите ОС: 90% возможностей остались на уровне 20-летней давности, но их реализация обвешана 32-битной 3D-графикой... оборочки стали весить больше платья... извините за оффтоп - наболело...
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Jan 25 2012, 08:53
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(ARV @ Jan 25 2012, 09:28)  ... с одной стороны, сколько себя помню, всегда шла речь об интенсивном использовании имеющихся ресурсов, т.е. максимального извлечения из них всего, что можно, а не экстенсивным, т.е. просто увеличением объема слабовыжатых ресурсов. это было всегда И это перед кем же такие задачи ставятся? Не помню ни одного заказчика (мы здесь говорим об электронике), которому было бы не по барабану какие "ресурсы" имеет то или иное инженерское решение поставленной задачи. Это разработчики обычно изголяются по бедности, чтобы из минимума выжать максимум в надежде максимально сэкономить на комплектующих. Сейчас уже другие времена и 80% запас ресурсов никого не волнует. Сейчас основной параметр эффективности - это не мегагерцы, не мегабайты и не количество лишних ножек, это time to market, что бы там не говорили апологеты ассемблерных вставок.
|
|
|
|
Сообщений в этой теме
Yura_K Быстрая разработка программ для AVR May 5 2006, 19:18 haker_fox Цитата(Yura_K @ May 6 2006, 04:18) Возник... May 6 2006, 01:30 Andy Mozzhevilov Цитата(Yura_K @ May 6 2006, 01:18) Возник... May 6 2006, 07:18 Yura_K Цитата"выжать" из программы десяток байт... May 6 2006, 14:12 eci Цитата(Yura_K @ May 6 2006, 17:12) Цитата... May 11 2006, 00:10  haker_fox Цитата(eci @ May 11 2006, 09:10) Цитата(Y... May 11 2006, 01:53 *SERG Вообще не понимаю..........не оптимальный код........ May 11 2006, 02:18 haker_fox Цитата(*SERG @ May 11 2006, 11:18) Вообще... May 11 2006, 03:05  sK0T Цитата(haker_fox @ May 11 2006, 07:05) Мн... May 11 2006, 03:20   _Bill Цитата(sK0T @ May 11 2006, 06:20) Оптимал... May 11 2006, 08:43  skopus Цитата(haker_fox @ May 11 2006, 07:05) Мн... May 17 2006, 10:54   haker_fox Цитата(skopus @ May 17 2006, 19:54) Цитат... May 18 2006, 01:07    Kopa Цитата(haker_fox @ May 18 2006, 04:07) ..... May 18 2006, 07:01 Kopa Цитата(Yura_K @ May 5 2006, 22:18) Возник... May 11 2006, 03:48 Yura_K 2*SERG Привет взаимно!
В принципе я согласен п... May 11 2006, 17:07 _artem_ ИМХО, в больших (начиная с нескольких десятков КБ)... May 11 2006, 18:08 Yura_K Цитатаинтуитивное написание программы , убыстрение... May 13 2006, 22:00 _artem_ ЦитатаЦитата интуитивное написание программы , убы... May 13 2006, 22:45 Yura_K Спасибо за ссылку. May 14 2006, 11:20 beer_warrior Если знать особенности генерации кода компилятором... May 17 2006, 18:25 Kopa Тема данного топика интересна и возможно есть хоро... Jan 24 2012, 17:50 ASZ Зачастую пересмотр самого алгоритма работы дает на... Jan 25 2012, 03:55 _Pasha Тоже наболело, но в другой плоскости.
Проходит вре... Jan 25 2012, 07:52 maksimp Цитата(_Pasha @ Jan 25 2012, 11:52) мульт... Jan 25 2012, 08:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|