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

Improper fixup

Hi

I am receiving:

*** ERROR L121: IMPROPER FIXUP

MODULE: C:\KEIL\C51\LIB\C51C.LIB (PRINTF)

SEGMENT: ?PR?PRINTF?PRINTF

OFFSET: 0068H

I have tryied to read threads about this, but cannot understand it since it appears in a .LIB file

Any help? Really needing it.
Thanks for your time
Dario

Parents
  • BTW - If you have to update 680.000 sets of firmware out in the field then I guess your support team love you!
    here you make another stupid assumption, who on earth stated that the 'someone, some day after releases attach a unit the do not follow the standards related to THAT project? ALso, if customer x attach unit y that show itself to require handling of the non-standard output, why would you update customer z. Of course, all new units will handle unit y, but existing installations not needing to handle y need no update.

    I refer to the time you spend offending other people on this (and other) forums
    I spend NO time 'offending people' if someone can not handle that I do not wrap my statements in pink cotton, that is not my problem.

    I could send you a link concerning fault tolerance; but I bet you'd pooh-pooh it! I have not discussed 'fault tolerance' MY QUESTION TO YOU has been since my first responce "please tell me hoe to design a system that can handle (no reject BUT CORRECTLY HANDLE) erroneous input that you do not know about at design time. Your first post CLEARLY indicate that you know such a process and I am sure that I am not the onbly one interested.

    I have better things to do than cross swords with you!
    then why did you start doing so?

    Erik

Reply
  • BTW - If you have to update 680.000 sets of firmware out in the field then I guess your support team love you!
    here you make another stupid assumption, who on earth stated that the 'someone, some day after releases attach a unit the do not follow the standards related to THAT project? ALso, if customer x attach unit y that show itself to require handling of the non-standard output, why would you update customer z. Of course, all new units will handle unit y, but existing installations not needing to handle y need no update.

    I refer to the time you spend offending other people on this (and other) forums
    I spend NO time 'offending people' if someone can not handle that I do not wrap my statements in pink cotton, that is not my problem.

    I could send you a link concerning fault tolerance; but I bet you'd pooh-pooh it! I have not discussed 'fault tolerance' MY QUESTION TO YOU has been since my first responce "please tell me hoe to design a system that can handle (no reject BUT CORRECTLY HANDLE) erroneous input that you do not know about at design time. Your first post CLEARLY indicate that you know such a process and I am sure that I am not the onbly one interested.

    I have better things to do than cross swords with you!
    then why did you start doing so?

    Erik

Children
  • Erik,

    Be warned - I am not wrapping up my statements in pink cotton.

    Two very important points before continuing:

    1 - You started the crossing of swords by giving the glib statement concerning the large model
    2 - You initially offended me by implying that I am lazy because I, on occasions, use the large model

    As far as I am aware, we have never met and you have probably never heard of me; however you decide to give these blanket statements, purporting to be authoritative, that effectively slight my work and people who might work like me.

    These are the actions of a bigot.

    I'm going to give you a few further things to consider.

    You question whether my projects are efficient. My answer is - Yes they are. They work to the required specifications and within the boundaries dictated by the original hardware design.
    I suspect that you have a different meaning for the word efficiency - And reading through some of your other posts it would appear that the only person you believe can write efficient code is Eric Malund.

    Maybe a paper entitled "Efficiency as defined by Eric Malund" would be worth writing.

    I've noticed that you like to give the quantities for a project you have done. Do not confuse quantity of product with quality of product. I have known many products that have sold in bulk, but have been riddled with problems.

    In the environment where I work, a fix to firmware after release is considered to be a bug. Our designs attempt to take all conceivable scenarios into account. As I stated previously, we have produced products that work 24/7 for around 10 years of continuous operation. For one of those, one fix (aka bug) we had to identify and cure was considered to be a barely acceptable situation.

    You, by your own admission, have to take steps to allow you the opportunity to fix problems after the initial release. In our environment, that would be serious indication of poor quality - And there would be serious questions that would have to be answered.

    I hope you now see that you should view developments not just from within your own (narrow) bounds, but also realise that there are other developers who work within different criteria that may have equally valid but diametrically opposed views to your own.

    I think that you should re-visit my previous posts, read and understand what is actually being said - Don't be so quick to condemn.

    This is the last post from me on the subject. Further discussion with you on the issue would, I think, be like trying to explain to my two year old daughter why she can't have more ice cream before bedtime; i.e., there would be tears and a tantrum.

    ps If you want me to provide advice on system design, please consider paying for my consultation services.

  • You, by your own admission, have to take steps to allow you the opportunity to fix problems after the initial release. In our environment, that would be serious indication of poor quality - And there would be serious questions that would have to be answered.

    which can only be based on you NOT reading my posts.

    I paraphrase a previous statement "we release a product and there are no problems until some customer buy product x (not ours) and attach it. Analyzing the problem with attaching product x it is found that product x (again not ours) deviate from the standatd in some area. The customer insist that we accept his attaching of product x and, in order to handle that we have to make some changes to the code".

    You stated that the above problem was a fault of my design and to that I replied "please advuse how to predict which deviations from the standat=rd an unknown (maybe not even made yet) product x will have"

    That you have never answered Instead you keep inmsulting me by stating that such a problem is a fault of my design ("that would be serious indication of poor quality").

    If you want me to provide advice on system design, please consider paying for my consultation services.
    No, I do not "want you to provide advice on system design" I just want you to either
    a) retract the statement that not handling deviations from the standard that were not even existing at design time is a design fault
    OR
    b) tell me where you bought your crystal ball.
    OR
    c) qualify your statement.

    Erik

    PS re 'lazy"
    my exact statement was I have seen "I use large so I do not have to worry about space" which I read as "I use large because I am a lazy dog"
    While I can not see any case whre using 'large' will be justified, there may, iondeed, be one; however, I specifically referred to "so I do not have to worry about space" and, if that is the qualifier, then the user of large is, indeed, a lazy dog.

  • Erik,

    Since you insist, I'll give you one final comment on the subject ...

    You appear to be so blinded by your own 'I do efficient' self-belief that you simply ignore the real point which I've been making.

    I will not just keep repeating the same statements in different ways just to give you something to whinge about.

    Please read my previous postings - You might actually learn something.

    ps For some reason, when seeing your posts, the words old dogs and new tricks keep springing to mind! I wonder why?

    The end.

  • During my MS-DOS programming days, I now and then made use of the compact, medium or even large memory models. I understand that this makes me unworthy of continued posting on this site.

    The only thing I can say to my defense is that I never used the huge memory model. Just a huge-declared array now and then, when I really needed it.

     * 5A3266E3-82B2-4DCB-8A0C-23BE1236021C walks shamefully home with tail between legs.

  • You appear to be so blinded by your own 'I do efficient' self-belief
    whether I do efficient (which I do) or not is totally irrelevant. The point is that '51 code should be efficient. Of course if the choice of the '51 for a given app is wrong in the first place, then any point about '51 code is moot.

    Since you insist, I'll give you one final comment on the subject ...

    You keep giving me comments how about an answer!!!

    from last post: You stated that the above problem was a fault of my design and to that I replied "please advuse how to predict which deviations from the standat=rd an unknown (maybe not even made yet) product x will have"

    That you have never answered Instead you keep inmsulting me by stating that such a problem is a fault of my design ("that would be serious indication of poor quality").

    Erik

  • During my MS-DOS programming days, I now and then made use of the compact, medium or even large memory models. I understand that this makes me unworthy of continued posting on this site.

    Not at all, my comments re memory model are strictly related to the '51 where the architecture makes the penalty for choosing the large model many times more severe than for e.g. an x86.

    Also an x86 app is typically a "processor" rather than a "controller" app and who gives a hoot if a "process" is complete im 10uS or 10mS. for a "controller' app that, however can be the difference between success and failure.

    Erik

  • During my MS-DOS programming days, I now and then made use of the compact, medium or even large memory models.

    Whoops - Now you mention it, so did I.

    Oh dear, that must make me a habitual un-optimized coder ;)

  • The point is that '51 code should be efficient.

    Why?

    If I have a 9600 baud serial port, it doesn't matter if the code is capable of handling 20k characters/second.

    If I need to read a voltage every second, it doesn't matter if the ISR is able to process 8k samples/second or not.

    If the application fits in available memory, it doesn't matter if there is 1kB or 10kB code space free.

    Only if the application hits (or may hit) a limit is it meaningful to make a decision if it is better to try to squeeze/speed up the code, or switch to faster/larger iron.

    The main thing is to write correct code that is also easy to maintain. The need for optimization is more a project-to-project decision, depending on the requirements.

    In some cases, the customer may want a new "applet" or feature within a couple of days in a unit with remote update capability. They may want to show off a "cool feature" on a fair.

    In some cases, the code may be expected to run unchanged for many years in multi-k products which would require transport to factory if they contain a major error.

    In some cases it is ok to switch to a $100 more expensive processor since the end product may cost $10k will all external hardware, making the processor price insignificant.

  • Oh dear, that must make me a habitual un-optimized coder
    not at all, as I replied to Per, what you did with DOS (hopefully) has no bearing on what you do with the '51.
    I, for one, do not apply the same practices to an ARM as I do to a '51, e.g. while I consider using a RTOS for the '51 totally ridiculous, I see nothing wrong with using one on an ARM.
    I do not recall what I did in my DOS days, but may, very well, be as 'guilty' as you.

    Erik

  • I, for one, do not apply the same practices to an ARM as I do to a '51, e.g. while I consider using a RTOS for the '51 totally ridiculous, I see nothing wrong with using one on an ARM.

    On that point, I would certainly agree.

  • The point is that '51 code should be efficient.

    Why?

    If I have a 9600 baud serial port, it doesn't matter if the code is capable of handling 20k characters/second.

    If I need to read a voltage every second, it doesn't matter if the ISR is able to process 8k samples/second or not.

    If the application fits in available memory, it doesn't matter if there is 1kB or 10kB code space free.

    all the above is (partially) correct; however applying such thinking will, very likely, hit you in a large muscle when the next feature is to be added for MKII of your product.

    Also, if you habitually code efficient, you will not have to 'fight' when a project comes up that absolutely require efficient coding.

    In some cases it is ok to switch to a $100 more expensive processor since the end product may cost $10k will all external hardware, making the processor price insignificant.
    Absolutely, I have always stated "use the right processor for the job, do not try to make the '51 an 'universal' solution".

    Erik