This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

auto segment too large

i get the error "main() auto segment too large" for the given program which should be run on atmet 89c51 how to fix it
thanks.........

#include <reg51.h>
void Delay();
char serialsend(char []);

void main ()
{ char z;
char command1[]={"AT+CGATT=1\r"};
char command2[]={"AT+CSTT= \"ufone.pinternet\"\r" };
char command3[]={"AT+CIICR\r"};
char command4[]={"AT+CIFSR\r"};
char command5[]={"AT+CIPSTART=\"TCP\"\"121.52.147.94\"800\r"};
char command6[]={"AT+CIPSEND\r"};
char command7[]={"GPRS is Activated"};
char command8[]={"26"};
TMOD = 0x20;
TH1 = 0xFD;
SCON = 0x50;
TR1 = 1;
serialsend(command1);
Delay();
serialsend(command2);
Delay();
serialsend(command3);
for(z=0; z<3; z++)
{ Delay(); }
serialsend(command4);
Delay();
serialsend(command5);
for(z=0; z<10; z++)
{ Delay();
} serialsend(command6);
for(z=0; z<5; z++)
{ Delay(); }
serialsend(command7);
serialsend(command8);

}
char serialsend(char array[])
{ int i=0;
while(array[i] != '\0')
{ SBUF = array[i];
while(TI == 0);
TI = 0;
i++;
} }

void Delay()
{ unsigned char x;
for(x=0; x<40; x++)
{ TMOD=0x10;
TL1=0xFE;
TH1=0xA5;
TR1=1;
while (TF1==0);
TR1=0;
TF1=0;
} }

Parents
  • >>>>>>It (putting the constant strings in CODE space; ie, Flash) is certainly a much better answer than just masking the problem by switching to the Large Memory Model!!

    did you read anything????? i said it is not the right answer. have you seen and done the question paper????? you will fail the exam with your answer!!!!!!!!!!!

    i got a grade a++ first time!!!!!!!!!!!

Reply
  • >>>>>>It (putting the constant strings in CODE space; ie, Flash) is certainly a much better answer than just masking the problem by switching to the Large Memory Model!!

    did you read anything????? i said it is not the right answer. have you seen and done the question paper????? you will fail the exam with your answer!!!!!!!!!!!

    i got a grade a++ first time!!!!!!!!!!!

Children
  • "i said it is not the right answer"

    So what, exactly, do you mean by "it" here?

    I told you what I meant by "it" - and I stand by that.

    "have you seen and done the question paper?"

    What question paper?

    "you will fail the exam with your answer"

    Then it is a very stupid exam!

    Constant strings like that most certainly should be placed in CODE space - as explained.

    Note that this is the Keil forum; it is for discussing Keil products - not exam tips - and anyone using Keil C51 in practice would certainly be well-advised to put manifest constants like this in CODE space and not in automatic variables, for the reasons stated.

    http://www.keil.com/support/man/docs/c51/c51_le_pgmmem.htm

  • Well, lucky you if you managed an a++ on your exam, since your answers here indicates that you must have been more than a little bit lucky.

    Programming don't have "right answers". Programming have better and worse solutions to problems. If you had a teacher that thought "large" was the "right answer", then that teacher did not manage a grade a++ first time, second time or any time.

    Your "right answer" is to use wires to get the exhaust pipe to hang on to the car.

    Your "right answer" is to fit additional lights to your car with duct tape.

    Any teacher with a slight bit of skill would think it a better answer to have the strings only in the code segment, than to have the strings first copied into individual RAM variables before being used. Especially since RAM is often a very tight resource in embedded processors.

    Any student with a slight bit of skill should see the same. And - if needed - point out to that teacher that there are better ways to do things.

    And a skilled developer would also recognize that in case the strings needs to be modified before being sent, it would be enough with one (1) single RAM buffer for formatting the next command to send. After that command has been sent, that single buffer will be available for reuse, for formatting the next command, if needed.

    Skill, in programming, isn't to learn 10 "absolute truths". Skill, in programming, is to be able to understand problems and analyze the consequences of different alternative solutions. Such analysis would quickly show the advantage of keeping just a single copy of the strings - the copy that the compiler/linker is forced to store in the code, since any data in RAM is lost when the power is removed and have to be recreated somehow. Either by making a copy from code, or by having the code build the strings, character by character by sprintf(), strcpy(), individual character assignments or similar.

    Your case will not be stronger because you press and hold your !!!!!!!!!!!!!!!!! button. "large" is still not a good solution to this specific problem, even if it can be used as a rough work-around in case the specific processor used happens to have XDATA space available.

    Some day, when you have made your income for a number of years writing software - especially embedded software - you might have a different view on things.

    The above code is a trivial piece of code. So trivial that it (if it was correct) could be seen as a little code example created between two phone calls just to display a concept. Real-life code is seldom so trivial. Even small embedded projects may have 10k+ lines of code. And since the complexity grows with the amount of code, it is important that every part of the code is written with care. And using good practices. But good practices needs to be used already from the start. Good practices is to know the disadvantages with "large". And to know the disadvantages with making useless copies of data. And the need to value RAM. And to recognize the difference in access costs between DATA and XDATA and hence manually decide what information to place in cheap or expensive RAM.

    So back to you - are you a professional, as you claim? Then your main goal should be a strong want to improve. And a good way to improve is to ask "why" if you see something you don't recognize or understand. Instead of responding back with a rather childish "did you read anything?????"

  • unless there was some specific detail in the rubric and/or question of which we are not aware.

    But, if that were the case, you should be able to explain it...

  • i got a grade a++ first time!!!!!!!!!!!
    in typing exclamation points?

    and so what, folowing this (and other) forum for years it has become obvious that some "educational institutions" will graduate people that do not know which end of a resistor is up.

    Anyhow, whatever the quality of the institution,the graduates are worthless the day they hit the street. NOTHING but real life experience will 'teach' the individual how to do right with a specific problem.

    I have interviewed recent graduates and their lack of "real" knowledge is amazing.

    Erik

    PS. I recall other discussions where some individual threw education against experience and lost.

  • Well, I actually think some schools - or some specific teachers - can manage quite well to teach not only facts, but to only help people to learn how to search for information, and how to analyze problems and make own deductions.

    Alas, it is way harder to teach people good methodology than it is to teach then specific facts. Even harder, when some students prefer to learn hard facts that they can just memorize than to try to pick up the underlying reasons for these facts and see a need for viewing problems with open eyes.

  • hey mates.

    is there an act stupid event in the olympics.

    you guys would win the gold for sure.

    hahahahahahahahahahahahahahahahahaha!!!!!!!!!!!!!!!!!!!!!!

  • >>>>>>So what, exactly, do you mean by "it" here?

    reading is more than interpreting individual words. fool.

    >>>>>>What question paper?

    read what is said. fool.

    >>>>>>Then it is a very stupid exam!

    more like you are stupid. fool.

    >>>>>>Constant strings like that most certainly should be placed in CODE space - as explained.

    funniest of the lot is hat one. even fools cant agree. your mate said

    >>>>>>Programming don't have "right answers".

    and you say **** most certainly should ****. fool.

    youll blunder your way out again but it is obvious what you are.

  • "you guys would win the gold for sure."

    Yes we would. All we need to do is send you to represent us. It would be a walkover victory.

  • "unniest of the lot is hat one. even fools cant agree. your mate said

    >>>>>>Programming don't have "right answers"."

    Correct. Programming have better and worse solution. Your solution is the stupid solution, since it requires the availability of XDATA which is a fail in a processor that doesn't have any XDATA. But then, the olympic candidate also claimed that:
    "its got 4k of perom!!!!!!!!!!!!!!!!!!!!"

    And yes - it is in these 4kB of PEROM (that the Atmel datasheet calls it) that the strings will be stored, whatevery you like. Having them first occupy space in the PEROM and then copied to the 128 bytes if internal RAM have already been found a failure by the OP. Having them copied to nonexisting XDATA, as suggested by you, will just be a different kind of failure.

    So yes - I'm pretty sure sending you to represent us in the OS of stupidity would lead to a great victory.

  • is there an act stupid event in the olympics.

    you guys would win the gold for sure.

    Only if you don't participate.

    Behaviour like yours is usually typical of 5-year-olds. Your behaviour is about as far from the "professional" you claimed yourself to be as it is possible.

    The only thing you've succeeded at here so far is to present yourself as a complete and utter imbecile. Good luck at digging your way out of that hole again, ever.

  • hahaha.

    the fools keep appearing. and they still cant agree.

    so i said

    >>>>>>is there an act stupid event in the olympics.

    >>>>>>you guys would win the gold for sure.

    and two answers

    >>>>>>All we need to do is send you to represent us.

    and

    >>>>>>Only if you don't participate.

    priceless!!!!!!!!!!!!!!!!!!

  • So logic isn't your strong point - we made the same conclusion but expressed differently.

  • hahaha.

    the fools keep appearing. and they still cant agree.

    so i said

    >>>>>>is there an act stupid event in the olympics.

    >>>>>>you guys would win the gold for sure.

    and two answers

    >>>>>>All we need to do is send you to represent us.

    and

    >>>>>>Only if you don't participate.

    priceless!!!!!!!!!!!!!!!!!!

    I think this is the best argument for NOT using 'large' I have seen.

    Erik

  • >>>>>>we made the same conclusion but expressed differently.

    what??????? you say i must be there and youd win. your friend says i must not be there and youd win.

    those two ****** are ****** opposites.

    but either way youd win the act stupid event in the olympics!!!!!

    sure you and your mate will try to bluff your way out and you and your friend will claim you are all clever and im a fool. your defence just makes you look more like what you are.

    hahahahahaha

  • My note: With you representing us, we, as a group (of let's say the worlds programmers) would win because no one can beat you at "most stupid".

    Hans-Bernhard Broeker's note: The only way we (anyone but you) can win, is if we don't need to compete with you. Because no one can beat you at "most stupid".

    I must assume that you are a troll. But trolls are normally way more clever.

    If you are a troll, then you are a person who intentionally try to fool other people into selecting a very stupid solution.

    If you aren't a troll, then god bless your poor parents.