Keil Logo

C51: re-use Library Functions from a Boot Application

Information in this article applies to:

  • Keil C51 Version 8.00
  • Keil PK51 Professional Developer's Kit


I am writing a BOOT code that contains certain library functions. I want to locate this library functions on specific addresses so that I can re-use them in the application (without the need to duplicate them into each application).

However, all intrinsic library functions of the C51 run-time library share the same segment name ?C?LIB_CODE, which makes it practically impossible to locate them individually using linker directives.

Is there a smart solution to my problem?


Yes, take a look at Application Note 180: Multi-Application Programming for 8051 Devices. This application note contains two files:

  • App1Entry.asm: Defines the functions that are in the BOOT section of your code that will be re-used in the APPLICATION section.
  • App1Call.asm: Contains only entry point definitions for the BOOT section. This module is located in the APPLICATION section of your code.

The example in the application note implements a jump table that allows modifications of the BOOT part independent of the APPLICATION part. This technique even allows you to update the BOOT section after the APPLICATION has been released.



Last Reviewed: Thursday, February 25, 2021

Did this article provide the answer you needed?
Not Sure
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.