MPLINK Object Linker | v4.51 |
MPLIB™ Object Librarian | v4.51 |
MP2COD COFF to COD File Converter | v4.51 |
MP2HEX COFF to HEX File Converter | v4.51 |
Prior to v3.46, few linker script filenames were in uppercase. MPLAB X projects using such devices failed to build on Linux based OS as MPLAB X used to specify the linker script using lowercase names. Starting from v3.46 of C18, all linker script filenames have been converted to lowercase to fix this issue.
Users using their own custom scripts to build C18 or MPASM projects should change the filename of linker script in their custom scripts to lowercase. Otherwise they might encounter "Could not find Generic linker commands for this device" error during the link stage. If the user does not wish to do this, then they can work around the issue by creating a symbolic link to the new lowercase filename from the uppercase filename. A shell script called createbackcompatiblelinks has been provided in mpasmx folder on Linux to do the same. Depending on where the user's bin\LKR folder is located, root or super-user privilege might be required.
Due to the elimination of the COD Format from MPASM ouput, and the use of COFF format instead, new flags have been added to COFF files that are generated by C18 v3.30 and MPASM v5.30. These flags are only recognized by MPLINK v4.30 and above. MPLINK v4.30 and above continue to recognize the old COFF files. However, earlier versions of MPLINK may not recognize new COFF files.
This note is only applicable to programs with the following characteristics:
In the previous versions of the linker scripts (with the vectors region), no code or data was being placed between the High/Low-priority interrupt vectors. Consequently, with the arrival of a High-priority interrupt, the execution of the program would (erroneously) fall into the low-priority ISR. With the removal of the vectors region from the linker scripts, other data or code may be placed at the addresses between the High and Low priority interrupt vectors. This results in a non-deterministic behavior, upon the arrival of a high priority interrupt for these programs.
Due to a change in COFF file format, MPLAB C18 v3.00 and later will not be compatible with versions of MPLINK Linker prior to v4.00 or versions of the MPLAB IDE prior to v7.21.
MPLINK Linker v4.00 and later will have backward compatibility to earlier versions at the source level only. Any existing object files or libraries compiled with earlier versions of the tools will not link using new versions of the tools. They will need to be recompiled from source.
If the user attempts to use this release with object files or libraries compiled with earlier versions of MPLAB C18, MPLINK Linker, and MPASM Assembler, the error message that will be received will be similar to:
Error - Coff file format for 'C:\mcc18\lib/c018i.o' is out of date.
If the user attempts to use an old version of MPLINK Linker to link object files or libraries compiled with this release, the error message that will be received will be similar to:
Error - Coff file format for 'C:\mcc18\lib/c018i.o' does not appear to be a valid COFF file.
As an extension to the new features implemented for BIN18-72, now MPLINK has made available:
MCV201B MCV202B MCV282B MCV283B MCV442B MCV443B 10F200 10F202 10F204 10F206 10F220 10F222 10F320 10F322 10LF320 10LF322 12C508 12C508A 12C509 12C509A 12C671 12C672 12CE518 12CE519 12CE673 12CE674 12CR509A 12F1501 12F1822 12F1840 12LF1552 12F508 12F509 12F510 12F519 12F520 12F529T39A 12F529T48A 12F609 12F615 12F617 12F629 12F635 12F675 12F683 12F752 12F1571 12F1572 12HV609 12HV615 12HV752 12LF1501 12LF1822 12LF1840 12LF1840T39A 12LF1840T48A 12LF1571 12LF1572 14000 16C432 16C433 16C505 16C52 16C54 16C54A 16C54B 16C54C 16C55 16C554 16C557 16C558 16C55A 16C56 16C56A 16C57 16C57C 16C58A 16C58B 16C5X 16C61 16C62 16C620 16C620A 16C621 16C621A 16C622 16C622A 16C62A 16C62B 16C63 16C63A 16C64 16C642 16C64A 16C65 16C65A 16C65B 16C66 16C662 16C67 16C71 16C710 16C711 16C712 16C715 16C716 16C717 16C72 16C72A 16C73 16C73A 16C73B 16C74 16C745 16C74A 16C74B 16C76 16C765 16C77 16C770 16C771 16C773 16C774 16C781 16C782 16C84 16C923 16C924 16C925 16C926 16CE623 16CE624 16CE625 16CR54 16CR54A 16CR54B 16CR54C 16CR56A 16CR57A 16CR57B 16CR57C 16CR58A 16CR58B 16CR62 16CR620A 16CR63 16CR64 16CR65 16CR72 16CR83 16CR84 16CXX 16F1454 16F1455 16F1459 16F1503 16F1507 16F1508 16F1509 16F1512 16F1513 16F1516 16F1517 16F1518 16F1519 16F1526 16F1527 16F1703* 16F1704 16F1705* 16F1707* 16F1708 16F1709* 16F1713 16F1716 16F1782 16F1783 16F1784 16F1786 16F1787 16F1788 16F1789 16F1823 16F1824 16F1825 16F1826 16F1827 16F1828 16F1829 16F1847 16F1933 16F1829LIN 16F1934 16F1936 16F1937 16F1938 16F1939 16F1946 16F1947 16F505 16F506 16F526 16F54 16F57 16F570 16F59 16F610 16F616 16F627 16F627A 16F628 16F628A 16F630 16F631 16F636 16F639 16F648A 16F676 16F677 16F684 16F685 16F687 16F688 16F689 16F690 16F707 16F716 16F72 16F720 16F721 16F722 16F722A 16F723 16F723A 16F724 16F726 16F727 16F73 16F737 16F74 16F747 16F753 16F76 16F767 16F77 16F777 16F785 16F818 16F819 16F83 16F84 16F84A 16F87 16F870 16F871 16F872 16F873 16F873A 16F874 16F874A 16F876 16F876A 16F877 16F877A 16F88 16F882 16F883 16F884 16F886 16F887 16F913 16F914 16F916 16F917 16F946 16LF1454 16LF1455 16LF1459 16LF1503 16LF1507 16LF1508 16LF1509 16LF1512 16LF1513 16LF1516 16LF1517 16LF1518 16LF1519 16LF1526 16LF1527 16LF1703* 16LF1704 16LF1705* 16LF1707* 16LF1708 16LF1709* 16LF1713 16LF1716 16LF1782 16LF1783 16LF1784 16LF1786 16LF1787 16LF1788 16LF1789 16LF1823 16LF1824 16LF1824T39A 16LF1825 16LF1826 16LF1827 16LF1828 16LF1829 16LF1847 16LF1902 16LF1903 16LF1904 16LF1906 16LF1907 16LF1933 16LF1934 16LF1936 16LF1937 16LF1938 16LF1939 16LF1946 16LF1947 16LF707 16LF720 16LF721 16LF722 16LF722A 16LF723 16LF724 16LF726 16LF727 16HV540 16HV610 16HV616 16HV753 16HV785 17C42 17C42A 17C43 17C44 17C752 17C756 17C756A 17C762 17C766 17CR42 17CR43 17CXX 18C242 18C252 18C442 18C452 18C601 18C658 18C801 18C858 18F1220 18F1230 18F1320 18F1330 18F13K22 18F13K50 18F14K22 18F14K22LIN 18F14K50 18F2220 18F2221 18F2320 18F2321 18F2331 18F23K20 18F23K22 18F2410 18F242 18F2420 18F2423 18F2431 18F2439 18F2450 18F2455 18F2458 18F248 18F2480 18F24J10 18F24J11 18F24J50 18F24K20 18F24K22 18F24K50 18F2510 18F2515 18F252 18F2520 18F2523 18F2525 18F2539 18F2550 18F2553 18F258 18F2580 18F2585 18F25J10 18F25J11 18F25J50 18F25K20 18F25K22 18F25K50 18F25K80 18F2610 18F2620 18F2680 18F2682 18F2685 18F26J11 18F26J13 18F26J50 18F26J53 18F26K20 18F26K22 18F26K80 18F27J13 18F27J53 18F4220 18F4221 18F4320 18F4321 18F43K20 18F4331 18F43K22 18F4410 18F442 18F4420 18F4423 18F4431 18F4439 18F4450 18F4455 18F4458 18F448 18F4480 18F44J10 18F44J11 18F44J50 18F44K20 18F44K22 18F4510 18F4515 18F452 18F4520 18F4523 18F4525 18F4539 18F4550 18F4553 18F458 18F4580 18F4585 18F45J10 18F45J11 18F45J50 18F45K20 18F45K22 18F45K50 18F45K80 18F4610 18F4620 18F4680 18F4682 18F4685 18F46J11 18F46J13 18F46J50 18F46J53 18F46K20 18F46K22 18F46K80 18F47J13 18F47J53 18F6310 18F6390 18F6393 18F63J11 18F63J90 18F6410 18F6490 18F6493 18F64J11 18F64J90 18F6520 18F6525 18F6527 18F6585 18F65J10 18F65J11 18F65J15 18F65J50 18F65J90 18F65J94 18F65K22 18F65K80 18F65K90 18F6620 18F6621 18F6622 18F6627 18F6628 18F6680 18F66J10 18F66J11 18F66J15 18F66J16 18F66J50 18F66J55 18F66J60 18F66J65 18F66J90 18F66J93 18F66J94 18F66J99 18F66K22 18F66K80 18F66K90 18F6720 18F6722 18F6723 18F67J10 18F67J11 18F67J50 18F67J60 18F67J90 18F67J93 18F67J94 18F67K22 18F67K90 18F8310 18F8390 18F8393 18F83J11 18F83J90 18F8410 18F8490 18F8493 18F84J11 18F84J90 18F8520 18F8525 18F8527 18F8585 18F85J10 18F85J11 18F85J15 18F85J50 18F85J90 18F85J94 18F85K22 18F85K90 18F8620 18F8621 18F8622 18F8627 18F8628 18F8680 18F86J10 18F86J11 18F86J15 18F86J16 18F86J50 18F86J55 18F86J60 18F86J65 18F86J72 18F86J90 18F86J99 18F86J93 18F86J94 18F86K22 18F86K90 18F8720 18F8722 18F8723 18F87J10 18F87J11 18F87J50 18F87J60 18F87J72 18F87J90 18F87J93 18F87J94 18F87K22 18F87K90 18F95J94 18F96J60 18F96J65 18F96J94 18F96J99 18F97J60 18F97J94 18LF13K22 18LF13K50 18LF14K22 18LF14K50 18LF23K22 18LF24J10 18LF24J11 18LF24J50 18LF24K22 18LF24K50 18LF25J10 18LF25J11 18LF25J50 18LF25K22 18LF25K50 18LF25K80 18LF26J11 18LF26J13 18LF26J50 18LF26J53 18LF26K22 18LF26K80 18LF27J13 18LF27J53 18LF43K22 18LF44J10 18LF44J11 18LF44J50 18LF44K22 18LF45J10 18LF45J11 18LF45J50 18LF45K22 18LF45K50 18LF45K80 18LF46J11 18LF46J13 18LF46J50 18LF46J53 18LF46K22 18LF46K80 18LF47J13 18LF47J53 18LF65K80 18LF66K80 EEPROM16 EEPROM8 MCP19110 MCP19111 MCP19114 MCP19115 MCP25020 MCP25025 MCP25050 MCP25055 MCV08A MCV14A MCV18A MCV18E MCV20USB MCV28A RF509AF RF509AG RF675F RF675H RF675K
*Note: Early adopter support has been added for these devices since last release
THE PARTS CORRESPONDING TO THESE OPTIONS MAY NOT ALL BE COMMERCIALLY AVAILABLE.
The part selection is specified at assembly time and contained within the object file. An appropriate linker command file is necessary to properly link for the chosen part.
MLINK.EXE is the 32-bit Windows version of MPLINK Object Linker which is distributed with MPLAB IDE and MPLAB C18. It is supported on the following platforms (32- and 64-bit):
MLINK.EXE is the 32-bit version of MPLINK Object Linker which is distributed with MPLAB X IDE. It is supported on the following platforms (32- and 64-bit):
int add( int a, int b ) { int c; c = a + b; return c; }can be compiled and archived with the commands:
mcc18 test.c -sco mplib -c test.lib test.oHowever, attempting to list the files in the archive link the archive will result in the error:
Error - Coff file 'test.o' could not read string table. Error - Could not build member 'test.o' in library file './test.lib'.
int g (void) { return 2; } void f (void); #pragma interrupt f void f (void) { overlay int x; x = g (); } void main (void) { int x; x = g (); }Will cause a linker error, stating that 'g' is recursive and has locals of "overlay" storage class. The workaround is to use "auto" instead of "overlay" in the interrupt.
LIST P=12C508 CODE 0x100 MOVLW 0 MOVLW 1 MOVLW 2 MOVLW 3 ENDAfter assembly, execute 'mp2hex.exe t.o /r 0x104-0x104'. The hex file content is:
:02 0000 04 0000FA :02 0206 00 030C E7 :00 0000 01 FFThe data record shows the instruction 'MOVLW 3' at address 0x103, but 0x103 was not specified in the range.
Error - unknown switch: /rUse the /h option instead.