Git Product home page Git Product logo

ldscript-generator's Introduction

ldscript-generator

This is a python tool based on pydevicetree (GitHub/PyPI) which generates linker scripts for Freedom Metal applications.

Usage

usage: generate_ldscript.py [-h] -d DTS -o OUTPUT [--scratchpad | --ramrodata]

Generate linker scripts from Devicetrees

optional arguments:
  -h, --help            show this help message and exit
  -d DTS, --dts DTS     The path to the Devicetree for the target
  -o OUTPUT, --output OUTPUT
                        The path of the linker script file to output
  --scratchpad          Emits a linker script with the scratchpad layout
  --ramrodata           Emits a linker script with the ramrodata layout
  --freertos            Emits a linker script with specific layout for freertos

Required Devicetree Properties

This linker script generator expects that the Devicetree has annotated the desired memory map for the resulting linker script through properties in the /chosen node. Those properties are:

  • metal,entry, which describes which memory region read-only data should be placed in
  • metal,itim, which describes which memory region should be treated as instruction tightly-integrated memory for low-latency instruction fetch
  • metal,ram, which describes which memory region should be treated as ram

Each of these properties is a prop-encoded-array with the following triplet of values:

  1. A reference to a node which describes memory with the reg property
  2. An integer describing which 0-indexed tuple in the reg property should be used
  3. An integer describing the offset into the memory region described by the requested reg tuple

For example, the chosen node may include the following properties:

chosen {
    metal,entry = <&testram0 0 0>;
    metal,itim = <&L11 0 0>;
    metal,ram = <&L28 0 0>;
};

Example Invocation

$ ./generate_ldscript.py -d e31.dts -o metal.default.lds
Generating linker script with default layout
Selected memories in design:
        RAM:  0x80000000-0x8000ffff (/soc/dtim@80000000)
        ITIM: 0x01800000-0x01801fff (/soc/itim@1800000)
        ROM:  0x20000000-0x3ffffffe (/soc/ahb-periph-port@20000000/testram@20000000)

$ head -n 20 metal.default.lds
/* Copyright (c) 2020 SiFive Inc. */
/* SPDX-License-Identifier: Apache-2.0 */
OUTPUT_ARCH("riscv")


/* Default Linker Script
 *
 * This is the default linker script for all Freedom Metal applications.
 */


ENTRY(_enter)

MEMORY
{
    ram (rwai!x) : ORIGIN = 0x80000000, LENGTH = 0x10000
    itim (rwxai) : ORIGIN = 0x1800000, LENGTH = 0x2000
    rom (rxai!w) : ORIGIN = 0x20000000, LENGTH = 0x1fffffff
    
}

Copyright and License

Copyright (c) 2020 SiFive Inc.

The contents of this repository are distributed according to the terms described in the LICENSE file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.