Отговори на тема  [ 56 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща
ACORN микро ядро за AVR ATMega MCU in Assembler 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Мар 19, 2007 10:15 am
Мнения: 26
Мнение 8 bit
Незнам дали идва края на 8 бит процесори но знам че те могат и вършат страхотна работа.
Обмислям създаването на кластърна операциона система базирана на 8 битови процесори.
Смятам че ако се групират 8 бит процесори в логически операциони еденици може да се получи нещо евтино и мощно.
Необходим е обаче инструментариум чрез който ще се улесни разработката на такива приложения.


Сря Юни 15, 2011 2:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Ми другите популярни 8 битови са тия от Моторола (Freescale сега). Те и по-приличат
на AVR май като архитектура (по-скоро е обратното де). HCS12 гледам живеят още,
11 е история (макар жива), 08 и те са живи. Power са голямото, към което си струва
да се ходи от техническа гледна точка (която предполагам те интересува, инак нямаше
да пишеш на асемблер).

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Юни 15, 2011 3:33 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Мар 19, 2007 10:15 am
Мнения: 26
Мнение 
Благодаря,
Да интересува ме единствено и само асемблер.
Синхронизиращите алгоритми се възползват от силата на специфичните инструкции.
Пример:
Read-Modify-Write - атомична операция
Read-Skip(jump) - атомична операция
Тук Ц/Ц++ сериозно отстъпва.
Не се сърдете ако обиждам с мнението си.


Сря Юни 15, 2011 3:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Не друго ама такива дето като теб пишат основно на асемблер са вече като динозаврите ;)
Едно е да напишеш частта изискваща бързодействие на асемблер и основно на C всичко останало,друго е да копаш само на асемблер.
И сега като си я нашляпал само на асемблер целия труд е непортируем и безполезен ако искаш да минеш на някакъв друг. Пък и да ползваш OS за процесор от типа на AVR е малко безмислно. Може с някои от по големите им процесори ама цените им са прекалено дебели за да си струва да се залагат за нещо голямо.

АVR е цар за дребна автоматика и други дребни приложения. В този сектор и ще си остане.

За по големи неща е глупаво да се залага на нещо което не е 32 бита и не е с единно адресно пространство.


Сря Юни 15, 2011 3:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: 8 bit
denim написа:
Обмислям създаването на кластърна операциона система базирана на 8 битови процесори.
Смятам че ако се групират 8 бит процесори в логически операциони еденици може да се получи нещо евтино и мощно.


Виж, не си прави илюзии че с групиране на 8-бит ще докараш производителност на АРМ. Примерно LPC3130 дето е АРМ9 на 180/270MHz при цена 2-3$ при това с набор от периферии и RAM дето на 8-бит ще видиш само през крив макарон.

Ако искаш да се занимаваш с клъстърна обработка много по-добре ще е да е го правиш на куртекс примерно, където това е заложено в архитектурата и има не малко "мултикур" чипове. Или поне можеш за обща култура да ги разучиш. Все пак добре е да знаеш какво правят другите

Цитат:
Тук Ц/Ц++ сериозно отстъпва.


При *някои* АВР компилатори може и да е така ;-)

Иначе въпросът не е до "сърдене". Разни хора, разни мнения. Моето е, че това което правиш има повече хляб на нови платформи, отколкото на старите 8-бит. Това че работиш на асемблер не е проблем, особено ако пишеш добър код. Аз също ползвам кърнел писан на асемблер. За всичко останало разбира се ползвам С/С++.


Сря Юни 15, 2011 4:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
denim написа:
Благодаря,
Да интересува ме единствено и само асемблер.
Синхронизиращите алгоритми се възползват от силата на специфичните инструкции.
Пример:
Read-Modify-Write - атомична операция
Read-Skip(jump) - атомична операция
Тук Ц/Ц++ сериозно отстъпва.
Не се сърдете ако обиждам с мнението си.


Това са най-дребните предимства от писането на асемблер. Малко хора го правят просто
защото малко хора го умеят истински. Разбира се има значение _какъв_ асемблер, тоя
за 8 битовите ще си остане въздребен за едрите работи. Най-едрия 8-бита асемблер,
който съм виждал, е за 6809 - и преди около 20 години пишех доста на него.

Голямото предимство от писането на свестен асемблер (самия език като семантика) е
в богатството на семантиката, липсата на безсмислено тежки конструкции дето масата
програмисти основното им време отива в това как да уйдисат на езика от високо ниво
а не как да си свършат работа, и липсата на нужда от преводач - с езиците от високо
ниво човек си остава на ниво еквивалентно на нивото "разговорник" ползвайки чужд
език (което не им пречи да блъскат пишейки цели романи, романи като романи
писани ползвайки разговорник :D ).
Всички приказки за това как някакъв код се местел лесно от платформа на друга
и т.н. са неверни, не е по-лесно на език от високо ниво отколкото от такъв на
ниско (правил съм го за 68k -> power). А колко от кода писан на високо ниво си
струва да бъде въобще пренасян е тема, дето хич няма и да я почвам :D :D :D .

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Юни 15, 2011 5:50 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
tqi, както казах всеки има право на собствено мнение...

В твоя случай обаче трябва дебело да се подчертае, че става въпрос за изцяло лично мнение. Няма нито университети, нито сериозни фирми дето биха си позволили да кажат подобно нещо ;-)


Сря Юни 15, 2011 6:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
tgi написа:
Всички приказки за това как някакъв код се местел лесно от платформа на друга
и т.н. са неверни, не е по-лесно на език от високо ниво отколкото от такъв на
ниско (правил съм го за 68k -> power). А колко от кода писан на високо ниво си
струва да бъде въобще пренасян е тема, дето хич няма и да я почвам :D :D :D .


Вземи слез от небето най накрая. Не ти приляга да пишеш такива глупости. Вземи малко попрограмирай на C,ама не да напишеш 20 реда и да кажеш ами то C-то много неудобно нещо. Понавлезни,понаправи няколко проекта да хванеш малко как стават нещата и тогава ще можеш наистина да даваш по обосновани оценки за език на високо ниво.
Ако не го направиш,просто е добре да осъзнаеш че не можеш да имаш обективно мнение по темата и да не правиш коментари. Това което си постигнал си е дълбане в някаква твоя си посока и няма нищо общо с реалността валидна за останалите хора Wink


Сря Юни 15, 2011 6:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение 
Някъде бях чел проучване на IBM - един програмист може да "произведе" стотина реда качествен код на ден. Въпросът е какво се постига със 100 реда asm или толкова на hll :D. За портване към друга архитектура е ясно - много по-лесно е, когато се ползва hll.


Сря Юни 15, 2011 7:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Никола, време за губене със C нямам. На времето съм загубил достатъчно (може би половин
година) с Паскал, та знам за какво става дума. Сега ако почнеш да ми разправяш колко
е голяма разликата между едното и другото и как не я разбирам няма и да се разхиля
а просто ще го игнорирам.
Оставям резултатите ми да говорят. Знам, че е нетривиално това, което правя и приказвам.
Който може да разбере за какво става дума - разбрал. Който не да си се гордее с принадлежността
към масовата общност и да си повтаря това, което всички повтарят. Почти всички хора
правят така.
Впрочем и аз пиша на езици от високо ниво, скрипт езика за DPS е гъвкав и удобен за
доста неща от ежедневието, примерно.
Но за код който ще остава и ще се ползва - и над който ще работя повече от няколко дни - със
сигурност не съм срещнал този, който може да бъде и наполовина толкова ефикасен колкото
аз мога да бъда на VPA.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Юни 15, 2011 8:06 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
syscop написа:
Някъде бях чел проучване на IBM - един програмист може да "произведе" стотина реда качествен код на ден. Въпросът е какво се постига със 100 реда asm или толкова на hll :D....


Току ще сметнах данните за себе си за 14 годишен период - към 400 реда на ден.
Това не на "asm", а на VPA, едва ли на C можеш да намалиш броя на редовете.
Броя на буквите, да, там повечето реда са от 1 буква... :D :D :D

Тая сметка не включва времето, през което съм правил хардуер, платки, не съм
могъл да копая и т.н., затова смятам по 4 дни на седмица - което е леко завишено,
може да излязат и 500 реда средномесечен добив.
После ефикасността е различна според задачата, главната загуба на време е от
измислянето на подходящи алгоритми всъщност. Знам в килобайти на месец как
варирам, от 100 (много рядко нещо ме е озорвало за <100к/месец, веднъж или дваж
за тия години) до 500 (много рядко съм стигал дотам, само когато съм писал
нещо дето е очевидно как ще стане, примерно един дизасемблер за 68к
като правих на времето стана с такова темпо).

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Юни 15, 2011 8:18 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение 
Според мен е добре да се постигне искания резултат :D . По-малко значение имат "изразните" средства, които се ползват. Играл съм си да пиша аналог на printf на asm - стана, ама два пъти по-малко време ми отне да набутам библиотечната функция в rom-a.


Сря Юни 15, 2011 8:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
syscop написа:
Според мен е добре да се постигне искания резултат :D . По-малко значение имат "изразните" средства, които се ползват. Играл съм си да пиша аналог на printf на asm - стана, ама два пъти по-малко време ми отне да набутам библиотечната функция в rom-a.


Разбира се, че целта е резултатът. И да, ако задачата е "hello world" или нещо подобно езиците
от високо ниво са далеч по-добри, те затова са писани.
Когато програмирането на нещо отнема повече от няколко дни, може би и над месец-два, тогава
високото ниво е прът в колелата. Това, което аз пиша за 3 месеца примерно и става готов работещ
продукт отнема година и нагоре на писачи на език от високо ниво, имал съм през годините
шансове да съпоствям. Някои неща и не мога да сравня, има такива дето факторът е
безкрайност (мъчат не един от 20+ години да направят неща, които имам и са ми отнели
под година, без успех дотук - ако и да са платени по стандартите в германия и щатите).

Естествено не говоря за "box moving", някой взел нещо готово, сменил ми хедъра и айде какъв
ефикасен програмист е - и такива съм срещал немалко. Работи в магазин за компютри, значи
е "компютърен специалист"... (носи кашоните). :D :D :D

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Юни 15, 2011 8:54 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
tqi, стига толкова вече!

Ако ти е умряла циганката дето те хвали, кажи и лично ще ти потърся нова ;-)

Да не разводняваме темата на човека. Ако искаш да му помогнеш, прегледай му работата, да му идеи. Нали си най-добрия все на нещо може да го научиш.

А ако младежът реши да мине на GNU среда, аз мога да му погна с интегрирането на асемблера с другите езици, т.е. как се правят хедъри, секции, дебъг и unwind информация и т.н.
Не че това не може и без мен да го разбере, но мога да му спестя ровене.


Сря Юни 15, 2011 10:08 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 01, 2009 8:50 am
Мнения: 125
Местоположение: Varna
Мнение 
С е един от най яките езици.

Примерно ако напишеш input_a();

това става в няколко реда на асемблер...

аз на една брава се мъчих с тъпия асемблер две седмици. после седнах на си го направих това за 15 минути и една малка биричка...

Код:
//PIC16F84A
#include <pic.h>
//#include <16F84A.h>

__CONFIG( WDTDIS & PWRTEN );


#define BUTTON_DELAY 25



int    kb_hit();
void    delay(int delay);
void    beep(int duration, int frequency);    ///  beep
void    correct_beep();
void   error_beep();
void    reset_beep();
void    brava_opeen();
void    button_beep();

char read_kb();


int pass_caunter = 1;


char      temp_pass1;
char      temp_pass2;
char      temp_pass3;
char      temp_pass4;
int      reset = 0;

int Pass_count = 0;

int i, j, d;    // loops varable

main(){ // Main

///----------- CONFING
OPTION = 0b00000100;
TRISB = 0b00000000;

TRISA2 = 0;
TRISA3 = 0;

TRISB0 = 0;
TRISB1 = 0;
TRISB2 = 0;
TRISB3 = 0;
TRISB4 = 1;
TRISB5 = 1;
TRISB6 = 1;
TRISB7 = 1;
while(1==1){   // main loop

   reset++;

      if(pass_caunter < 5)
         {
           if(pass_caunter == 1){
            if(kb_hit()){
               temp_pass1 = read_kb();
                  pass_caunter++;
                     reset = 0;
                     }
               }



         if(pass_caunter == 2){
            if(kb_hit()){
               temp_pass2 = read_kb();
                  pass_caunter++;
                     reset = 0;
                     }
               }

         if(pass_caunter == 3){
            if(kb_hit()){
               temp_pass3 = read_kb();
                  pass_caunter++;
                     reset = 0;
                     }
               }


         if(pass_caunter == 4){
            if(kb_hit()){
               temp_pass4 = read_kb();
               pass_caunter++;
                     reset = 0;
                     }
               }
         }


   if(pass_caunter == 5)
            {
               /// cheek pass
               if((temp_pass1 == '3') && (temp_pass2 == '5') && (temp_pass3 == '4') && (temp_pass4 == '9'))
                  {
                     correct_beep();
                        brava_opeen();
                           pass_caunter = 1;
                  }
               else{
                     error_beep();
                        pass_caunter = 1;
                  }
            }






if(pass_caunter > 1)
      {
   if(reset == 10000)
       {
      // reset
         reset_beep();

         pass_caunter = 1;
         temp_pass1 = ' ';
         temp_pass2 = ' ';
         temp_pass3 = ' ';
         temp_pass4 = ' ';
         reset = 0;
       }
      }













           } // end main loop
} // end main




//------------------------------------------------------------------------
//     PROGRAMS
//
//
//----------------------------------------------------------------------


void delay(int delay){
      for (i = 0; i < 255; i++)  //  Simple Delay Loop
            for (j = 0; j < delay; j++);

}




void beep(int duration, int frequency){
      for(d = 0; d < duration; d++)
            {
               RA3 = 1;
                  for (i = 0; i < 10; i++)  //  Simple Delay Loop
                        for (j = 0; j < frequency; j++);
               RA3 = 0;
                     for (i = 0; i < 10; i++)  //  Simple Delay Loop
                        for (j = 0; j < frequency; j++);
            }
}


int kb_hit(){
            RB0 = 0;
            RB1 = 0;
            RB2 = 0;
                  if(RB4 == 0)
                     {
                     RB0 = 1;
                     RB1 = 1;
                     RB2 = 1;
                        return 1;
                     }
                  if(RB5 == 0)
                     {
                     RB0 = 1;
                     RB1 = 1;
                     RB2 = 1;
                        return 1;
                     }
                  if(RB6 == 0)
                     {
                     RB0 = 1;
                     RB1 = 1;
                     RB2 = 1;
                        return 1;
                     }
                  if(RB7 == 0)
                     {
                     RB0 = 1;
                     RB1 = 1;
                     RB2 = 1;
                        return 1;
                     }

            RB0 = 1;
            RB1 = 1;
            RB2 = 1;

return 0;
         }


void button_beep(){
      beep(50, 5);
   }

//------SUB RUTINE correct_beep()
void correct_beep(){
   beep(30,8);
   delay(20);
   beep(20,3);
   delay(20);
   beep(22,9);
}

void   error_beep(){
   beep(22,9);
   delay(20);
   beep(22,9);
}


void   brava_opeen(){
   RA2 = 1;    ///  oppen
      delay(1000);
         RA2 = 0;    // close
}

void reset_beep(){
   beep(100,3);
}




char read_kb(){
char rezult;

RB0 = 0; ///  ckan row 123
   if(RB4 == 0)
      {
         button_beep();
            rezult = '1';
            while(RB4 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }


   if(RB5 == 0)
      {
         button_beep();
            rezult = '4';
            while(RB5 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

   if(RB6 == 0)
      {
         button_beep();
            rezult = '7';
            while(RB6 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

   if(RB7 == 0)
      {
         button_beep();
            rezult = '*';
            while(RB7 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

RB0 = 1; // end roll skan




RB1 = 0; ///  ckan row 123
   if(RB4 == 0)
      {
         button_beep();
            rezult = '2';
            while(RB4 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }


   if(RB5 == 0)
      {
         button_beep();
            rezult = '5';
            while(RB5 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

   if(RB6 == 0)
      {
         button_beep();
            rezult = '8';
            while(RB6 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

   if(RB7 == 0)
      {
         button_beep();
            rezult = '0';
            while(RB7 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

RB1 = 1; // end roll skan




RB2 = 0; ///  ckan row 123
   if(RB4 == 0)
      {
         button_beep();
            rezult = '3';
            while(RB4 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }


   if(RB5 == 0)
      {
         button_beep();
            rezult = '6';
            while(RB5 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

   if(RB6 == 0)
      {
         button_beep();
            rezult = '9';
            while(RB6 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

   if(RB7 == 0)
      {
         button_beep();
            rezult = '*';
            while(RB7 == 0)
                     {
                     }
               delay(BUTTON_DELAY);
      }

RB2 = 1; // end roll skan



return rezult;
}


И бравата си върви вече година без да спира хахха....

_________________
http://truna.freehosting.bg/
форум за механици..
"Любителска електроника" не означава скапана а означава с много любов правена..

Ако можеше да се съберат техническият отдел на atmel и маркетинговият отдел на microchip, ще се получи нещо велико.


Пет Юни 24, 2011 8:03 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 56 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни