??? 12/07/04 20:46 Read: times Msg Score: +2 +2 Informative |
#82721 - "driver". Responding to: ???'s previous message |
I don't know if I missed something but it seems my yesterday's post got lost somehow, let me just repeat then...
This case got famous and details visible because recently Lexmark sued a 3rd party ink cartridge manufacturer for alleged copyright violation as they copied the copyrighted code. The case went like this: Lexmark manufactures printers and different kinds of ink cartridges. Their modern printers contain a feature to correctly measure amount of ink in types of cartridges not yet designed at the time when the printer is manufactured, using the cartridge movement motor torque, without limiting properties like weight or shape of the cartridges. The problem is that with shape, weight and some other properties of the cartridge, the formula of calculating the level of ink changes, and it can't be programmed into the printer for cartridges that don't exist yet. Lexmark solved it by putting a small piece of program (about 30 bytes) into the cartridge, so the printer downloads it from the cartridge after the specific cartridge is installed, runs it and uses it to calculate the amount of ink, basing on the torque. This way you could say the cartridge practically contains a driver for the printer. (and allegedly the piece of code in one of the models of cartridges was unlawfully copied.) This is one of many scenarios where small parts of code could be dynamically loaded and run on an embedded application. Of course you could say these could be written in non-relocable way, located at a single, designated place in memory. Now imagine, you upgrade the firmware, new version overruns the designated memory location. Either you go through hell with compiler and linker to keep your code from entering "forbidden areas" or suddenly your old "modules" become useless, or... you write them in relocable way in the first place, so the firmware can download it into arbitrary memory location anyway. |
Topic | Author | Date |
sjmp vs ajmp | 01/01/70 00:00 | |
as you said | 01/01/70 00:00 | |
Different jmps | 01/01/70 00:00 | |
re:AJMP, SJMP | 01/01/70 00:00 | |
AJMP is 2 bytes LJMP is 3 | 01/01/70 00:00 | |
LJMP was not the question | 01/01/70 00:00 | |
AJMP vs SJMP | 01/01/70 00:00 | |
Relocable. | 01/01/70 00:00 | |
relocatable | 01/01/70 00:00 | |
Re:Relocatable | 01/01/70 00:00 | |
relocatable - not in a 51 | 01/01/70 00:00 | |
Relocatable Code is Valid | 01/01/70 00:00 | |
Not JMPs, relocatable | 01/01/70 00:00 | |
I can anticipate all kinds of situations | 01/01/70 00:00 | |
If I can devise concepts others will too | 01/01/70 00:00 | |
"driver". | 01/01/70 00:00 | |
Re: driver | 01/01/70 00:00 | |
maybe... maybe not.![]() | 01/01/70 00:00 | |
16M derivatives... | 01/01/70 00:00 | |
SJMP is 2 bytes | 01/01/70 00:00 | |
Maybe he means additional bytes | 01/01/70 00:00 | |
yes. | 01/01/70 00:00 |