Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Free soft для ембеддера

Непрочитано 16.07.2013, 23:40  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Сообщение от dosikus Посмотреть сообщение
eddy, Вариант могу предложить . ITX мать и корпус . ...
Или ноут , у меня ASUS совершенно холодный и тихий , когда кодю.
Не пойдет: а куда я там 4 жестких диска запихаю? А если еще пару-тройку прикупить захочу??? Ноут есть, но это же не компьютер: экран малюсенький (всего-то 17''), клавиатуру надо подключать…

Сообщение от Flopix Посмотреть сообщение
eddy, что то перемудрили с конструкцией БП. И что он действительно сильно греется?
Пока нагрузки мало, греется слабо. Если добавить еще штук 5 жестких дисков, или сделать "апгрейд", будет греться сильней, наверное. Хотя, думаю, что не потянет он "апгрейданутую" систему: там нужно будет уже киловатта на полтора.
Реклама:
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 16.07.2013, 23:52  
Flopix
Гражданин KAZUS.RUN
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: Free soft для ембеддера

eddy, да какой 1,5 квт. Накопители потребляют немного. Обычно мощные БП более чем на 500Вт на домашние ПК ставят только в случае если используется мощная видеокарта и не одна ну илши многопроцессорная (не путать с многоядерная) система на серверной мамке. А так потребление обычно не превышает 150-250 Вт даже с очень мощным и жрущим процессором.
Flopix вне форума  
Непрочитано 04.08.2013, 15:39  
grand1987
Прохожий
 
Регистрация: 05.02.2009
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
grand1987 на пути к лучшему
По умолчанию Re: Free soft для ембеддера

http://mcuoneclipse.com/2013/08/03/d...t-for-eclipse/
.. посмотрите на этом сайте, много интересного по эклипсу и разным тулчайнам
grand1987 вне форума  
Непрочитано 09.06.2014, 10:04  
optical illusion
Прописка
 
Регистрация: 17.08.2013
Сообщений: 282
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
optical illusion на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Привет.

Пробую пользовать компилятор SDCC.
Сейчас уткнулся в проблему на работает нормальная такая структура типа union.
Например, описываю в виде: __xdata union f {uchar t[4]; ulong ul;} g;
Обращаюсь к ней как положено (по разному пробовал) - в результате аброкадабра.
В доке про union ничего не нашел.
Где почитать про это или как надо правильно описать этот union в SDCC?
optical illusion вне форума  
Непрочитано 09.06.2014, 10:27  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Сообщение от optical illusion Посмотреть сообщение
Обращаюсь к ней как положено (по разному пробовал) - в результате аброкадабра
А что в ассемблерном листинге?
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 09.06.2014, 10:30  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,398
Сказал спасибо: 85
Сказали Спасибо 678 раз(а) в 396 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Сообщение от optical illusion Посмотреть сообщение
Сейчас уткнулся в проблему на работает нормальная такая структура типа union.
Например, описываю в виде: __xdata union f {uchar t[4]; ulong ul;} g;
В SDCC не силен, но предположу, что нужно включить побайтное выравнивание.
Типа #pragma pack(1) (или __packed, как в Keil).
pambaru вне форума  
Непрочитано 09.06.2014, 10:44  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Сообщение от optical illusion Посмотреть сообщение
Привет.

Например, описываю в виде: __xdata union f {uchar t[4]; ulong ul;} g;
Обращаюсь к ней как положено (по разному пробовал) - в результате аброкадабра.
1) union есть union в любом компиляторе. Так как это конструкция языка си. А вот ваши uchar и ulong к языку не имеют отношения.
Или приведите как вы их объявляете или используйте стандартные определения.
Я бы рекомендовал подключить, фактически ставшую стандартной, stdint и использовать типы uint8_t и uint32_t.
2) union не гарантирует порядок следования. В связи с этим конструкции на базе него, не будут гарантировано переносимыми. Надо иметь это ввиду. В частности 32 битное число может располагаться младшим либо старшим байтом вперёд. Иногда это указывается в компиляторе.
3) union в данном случае можно вообще не использовать. Я, например, не использую. Вполне подходит обычная конструкция, например:

__xdata uint8_t t[4];
uint32_t res;

t[0] = t[2] = t[3] = 0;
t[1] = 5;
res = *(uint32_t *)t; // Обратились к массиву t как к 32-ух битному числу
// значение res будет 0x500
// ну и наоборот
res += 0x10000; // res будет 0x10500
*(uint32_t *)t = res;
// в t будет { 0x00, 0x05, 0x01, 0x00}
SasaVitebsk вне форума  
Непрочитано 09.06.2014, 10:49  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Сообщение от pambaru Посмотреть сообщение
В SDCC не силен, но предположу, что нужно включить побайтное выравнивание.
Для приведенного примера это ничего не изменит.
Выравнивание имеет смысл только в структурах c разными типами данных. Да и то, для 8-ми битных процессоров, как правило, по умолчанию выравнивание осуществляется на байт.
SasaVitebsk вне форума  
Непрочитано 09.06.2014, 10:55  
optical illusion
Прописка
 
Регистрация: 17.08.2013
Сообщений: 282
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
optical illusion на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Программка написана на Кейле, она абсолютно рабочая. Пытаюсь ее перетащить в SDCC.
Типы данных описаны правильно.
union используется в подпрограмме - смысл в том что 4 байта складываются в переменную типа long. Как только я заменяю эту операцию на другой алгоритм сразу все работает. Дело в том, что данные во время вызова union портятся - они не то что бы стабильно одинаковые, они с каждым вызовом очень разные - от 0 до максимума изменяются. Если бы задом наперед - это не проблема. Вопрос в принципе как правильно описать union в SDCC.
Union описана как глобальная структура. Пробовал ее в подпрограмме описать тоже не работает.

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

Последний раз редактировалось optical illusion; 09.06.2014 в 10:58.
optical illusion вне форума  
Непрочитано 09.06.2014, 11:48  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Free soft для ембеддера

Сообщение от optical illusion Посмотреть сообщение
Программка написана на Кейле, она абсолютно рабочая.
Была бы абсолютно рабочая, то абсолютно работала бы. Бывают такие ошибки, которые проявляются даже от компиляции к компиляции. Механизм прост. Вы некоректно написали программу, и при оптимизации возникает неожидаемое поведение результирующего кода. Оптимизация работает таким образом, что в зависимости от конструкции может измениться. То есть, например, вы добавили одну строку в начале текста, компилятор при оптимизации сработал немного не так и у вас появилась ошибка в середине проги. Надо понимать, что ошибка не появилась, а проявилась. А заложена она была с момента написания. Этот же механизм работает и при переносе с компилятора на компилятор. Другой компилятор сгенерит другой код и абсолютно иными методами будет оптимизировать. Но правильно написанная программа будет работать идентично. Разница может быть лишь в размере и скорости.
Цитата:
Пытаюсь ее перетащить в SDCC.
Типы данных описаны правильно.
union используется в подпрограмме - смысл в том что 4 байта складываются в переменную типа long.
Смысл мне очевиден. Я вам привёл конструкцию, которая полностью заменяет вашу.
Цитата:
Как только я заменяю эту операцию на другой алгоритм сразу все работает. Дело в том, что данные во время вызова union портятся - они не то что бы стабильно одинаковые, они с каждым вызовом очень разные - от 0 до максимума изменяются.
Вы даже не понимаете какую глупость вы пишете. НИКАКОЙ union НЕ ВЫЗЫВАЕТСЯ!!!! Это просто указание компилятору, что переменные под разными именами расположены по одному адресу. Как я вам уже описал, здесь, при переносе может быть лишь одна ошибка. Если один компилятор располагает long младшим байтом вперёд, а другой старшим. Порядок следования может определяться настройками компилятора. Хотя судя по вашему описанию Ошибка находится совершенно в другом месте. Например в прерывании либо какая то другая прога портит данные. Насколько я понимаю будут меняться обе переменные.
Цитата:
Если бы задом наперед - это не проблема. Вопрос в принципе как правильно описать union в SDCC.
Union описана как глобальная структура. Пробовал ее в подпрограмме описать тоже не работает.
Ещё раз обращаю ваше внимание. union это базовая конструкция языка. Она ВСЕМИ компиляторами обрабатывается ИДЕНТИЧНО. Нет правильного или неправильного описания. Никто вам не ответит на вопрос правлиьно описать как глобальную переменную или как локальную. Это зависит от вашей программы в целом!!! Если переменная используется ТОЛЬКО в подпрограмме, то она локальная. Если необходимо чтобы её значение не менялось от вызова к вызову, то надо объявить её static. Если данная переменная используется в нескольких процедурах, то она должна быть глобальной, и в процедурах вы должны обеспечить видимость данной переменной.
====
Всё это глобальные вопросы знания языка. Совсем не компилятора. Вы просто не знаете основ языка программирования. Вам надо срочно брать книгу и читать.
SasaVitebsk вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Апгрейд и комплектующие для ноутбуков mikesmith Барахолка электронных компонентов 28 17.05.2023 23:25
Книги dosikus Электронная библиотека 11242 29.12.2015 23:45
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49


Часовой пояс GMT +4, время: 20:53.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.