diff options
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 103 |
1 files changed, 63 insertions, 40 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 63c915ccc8..1ba267a5cd 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
@@ -2461,34 +2461,47 @@ | |||
2461 | <title>Adding a New Machine</title> | 2461 | <title>Adding a New Machine</title> |
2462 | 2462 | ||
2463 | <para> | 2463 | <para> |
2464 | Adding a new machine to the Yocto Project is a straightforward process. | 2464 | Adding a new machine to the Yocto Project is a straight forward |
2465 | This section provides information that gives you an idea of the changes you must make. | 2465 | process. |
2466 | The information covers adding machines similar to those the Yocto Project already supports. | 2466 | This section describes how to add machines that are similar |
2467 | Although well within the capabilities of the Yocto Project, adding a totally new architecture | 2467 | to those that the Yocto Project already supports. |
2468 | might require | 2468 | <note> |
2469 | changes to <filename>gcc/eglibc</filename> and to the site information, which is | 2469 | Although well within the capabilities of the Yocto Project, |
2470 | beyond the scope of this manual. | 2470 | adding a totally new architecture might require |
2471 | changes to <filename>gcc/eglibc</filename> and to the site | ||
2472 | information, which is beyond the scope of this manual. | ||
2473 | </note> | ||
2471 | </para> | 2474 | </para> |
2472 | 2475 | ||
2473 | <para> | 2476 | <para> |
2474 | For a complete example that shows how to add a new machine, | 2477 | For a complete example that shows how to add a new machine, |
2475 | see the | 2478 | see the |
2476 | "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'>Creating a New BSP Layer Using the yocto-bsp Script</ulink>" | 2479 | "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'>Creating a New BSP Layer Using the yocto-bsp Script</ulink>" |
2477 | in the Yocto Project Board Support Package (BSP) Developer's Guide. | 2480 | section in the Yocto Project Board Support Package (BSP) Developer's Guide. |
2478 | </para> | 2481 | </para> |
2479 | 2482 | ||
2480 | <section id="platdev-newmachine-conffile"> | 2483 | <section id="platdev-newmachine-conffile"> |
2481 | <title>Adding the Machine Configuration File</title> | 2484 | <title>Adding the Machine Configuration File</title> |
2482 | 2485 | ||
2483 | <para> | 2486 | <para> |
2484 | To add a machine configuration, you need to add a <filename>.conf</filename> file | 2487 | To add a new machine, you need to add a new machine |
2485 | with details of the device being added to the <filename>conf/machine/</filename> file. | 2488 | configuration file to the layer's |
2486 | The name of the file determines the name the OpenEmbedded build system | 2489 | <filename>conf/machine</filename> directory. |
2487 | uses to reference the new machine. | 2490 | This configuration file provides details about the device |
2491 | you are adding. | ||
2492 | </para> | ||
2493 | |||
2494 | <para> | ||
2495 | The OpenEmbedded build system uses the root name of the | ||
2496 | machine configuration file to reference the new machine. | ||
2497 | For example, given a machine configuration file named | ||
2498 | <filename>crownbay.conf</filename>, the build system | ||
2499 | recognizes the machine as "crownbay". | ||
2488 | </para> | 2500 | </para> |
2489 | 2501 | ||
2490 | <para> | 2502 | <para> |
2491 | The most important variables to set in this file are as follows: | 2503 | The most important variables you must set in your machine |
2504 | configuration file are as follows: | ||
2492 | <itemizedlist> | 2505 | <itemizedlist> |
2493 | <listitem><para><filename><ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_ARCH'>TARGET_ARCH</ulink></filename> | 2506 | <listitem><para><filename><ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_ARCH'>TARGET_ARCH</ulink></filename> |
2494 | (e.g. "arm")</para></listitem> | 2507 | (e.g. "arm")</para></listitem> |
@@ -2512,9 +2525,10 @@ | |||
2512 | </para> | 2525 | </para> |
2513 | 2526 | ||
2514 | <para> | 2527 | <para> |
2515 | You can find full details on these variables in the reference section. | 2528 | You can find full details on these variables in the reference |
2516 | You can leverage many existing machine <filename>.conf</filename> files from | 2529 | section. |
2517 | <filename>meta/conf/machine/</filename>. | 2530 | You can leverage existing machine <filename>.conf</filename> |
2531 | files from <filename>meta-yocto-bsp/conf/machine/</filename>. | ||
2518 | </para> | 2532 | </para> |
2519 | </section> | 2533 | </section> |
2520 | 2534 | ||
@@ -2522,37 +2536,46 @@ | |||
2522 | <title>Adding a Kernel for the Machine</title> | 2536 | <title>Adding a Kernel for the Machine</title> |
2523 | 2537 | ||
2524 | <para> | 2538 | <para> |
2525 | The OpenEmbedded build system needs to be able to build a kernel for the machine. | 2539 | The OpenEmbedded build system needs to be able to build a kernel |
2526 | You need to either create a new kernel recipe for this machine, or extend an | 2540 | for the machine. |
2527 | existing recipe. | 2541 | You need to either create a new kernel recipe for this machine, |
2528 | You can find several kernel examples in the | 2542 | or extend an existing kernel recipe. |
2529 | Source Directory at <filename>meta/recipes-kernel/linux</filename> | 2543 | You can find several kernel recipe examples in the |
2544 | Source Directory at | ||
2545 | <filename>meta/recipes-kernel/linux</filename> | ||
2530 | that you can use as references. | 2546 | that you can use as references. |
2531 | </para> | 2547 | </para> |
2532 | 2548 | ||
2533 | <para> | 2549 | <para> |
2534 | If you are creating a new recipe, normal recipe-writing rules apply for setting | 2550 | If you are creating a new kernel recipe, normal recipe-writing |
2535 | up a | 2551 | rules apply for setting up a |
2536 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename>. | 2552 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename>. |
2537 | Thus, you need to specify any necessary patches and set | 2553 | Thus, you need to specify any necessary patches and set |
2538 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'>S</ulink></filename> to point at the source code. | 2554 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'>S</ulink></filename> |
2539 | You need to create a <filename>configure</filename> task that configures the | 2555 | to point at the source code. |
2540 | unpacked kernel with a defconfig. | 2556 | You need to create a <filename>do_configure</filename> task that |
2541 | You can do this by using a <filename>make defconfig</filename> command or, | 2557 | configures the unpacked kernel with a |
2542 | more commonly, by copying in a suitable <filename>defconfig</filename> file and then running | 2558 | <filename>defconfig</filename> file. |
2559 | You can do this by using a <filename>make defconfig</filename> | ||
2560 | command or, more commonly, by copying in a suitable | ||
2561 | <filename>defconfig</filename> file and then running | ||
2543 | <filename>make oldconfig</filename>. | 2562 | <filename>make oldconfig</filename>. |
2544 | By making use of <filename>inherit kernel</filename> and potentially some of the | 2563 | By making use of <filename>inherit kernel</filename> and |
2545 | <filename>linux-*.inc</filename> files, most other functionality is | 2564 | potentially some of the <filename>linux-*.inc</filename> files, |
2546 | centralized and the defaults of the class normally work well. | 2565 | most other functionality is centralized and the defaults of the |
2566 | class normally work well. | ||
2547 | </para> | 2567 | </para> |
2548 | 2568 | ||
2549 | <para> | 2569 | <para> |
2550 | If you are extending an existing kernel, it is usually a matter of adding a | 2570 | If you are extending an existing kernel recipe, it is usually |
2551 | suitable defconfig file. | 2571 | a matter of adding a suitable <filename>defconfig</filename> |
2552 | The file needs to be added into a location similar to defconfig files | 2572 | file. |
2553 | used for other machines in a given kernel. | 2573 | The file needs to be added into a location similar to |
2574 | <filename>defconfig</filename> files used for other machines | ||
2575 | in a given kernel recipe. | ||
2554 | A possible way to do this is by listing the file in the | 2576 | A possible way to do this is by listing the file in the |
2555 | <filename>SRC_URI</filename> and adding the machine to the expression in | 2577 | <filename>SRC_URI</filename> and adding the machine to the |
2578 | expression in | ||
2556 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-COMPATIBLE_MACHINE'>COMPATIBLE_MACHINE</ulink></filename>: | 2579 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-COMPATIBLE_MACHINE'>COMPATIBLE_MACHINE</ulink></filename>: |
2557 | <literallayout class='monospaced'> | 2580 | <literallayout class='monospaced'> |
2558 | COMPATIBLE_MACHINE = '(qemux86|qemumips)' | 2581 | COMPATIBLE_MACHINE = '(qemux86|qemumips)' |
@@ -2587,7 +2610,7 @@ | |||
2587 | </para> | 2610 | </para> |
2588 | 2611 | ||
2589 | <para> | 2612 | <para> |
2590 | Following is an example for qemuarm: | 2613 | Following is an example for "qemuarm" machine: |
2591 | <literallayout class='monospaced'> | 2614 | <literallayout class='monospaced'> |
2592 | HAVE_TOUCHSCREEN=1 | 2615 | HAVE_TOUCHSCREEN=1 |
2593 | HAVE_KEYBOARD=1 | 2616 | HAVE_KEYBOARD=1 |
@@ -2714,8 +2737,7 @@ | |||
2714 | 2737 | ||
2715 | <para> | 2738 | <para> |
2716 | Aside from this wiki page, several examples exist in the | 2739 | Aside from this wiki page, several examples exist in the |
2717 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi/poky/tree/meta-skeleton'><filename>meta-skeleton</filename></ulink> | 2740 | <filename>meta-skeleton</filename> layer found in the |
2718 | layer found in the | ||
2719 | <link linkend='source-directory'>Source Directory</link>: | 2741 | <link linkend='source-directory'>Source Directory</link>: |
2720 | <itemizedlist> | 2742 | <itemizedlist> |
2721 | <listitem><para><filename>conf/multilib-example.conf</filename> | 2743 | <listitem><para><filename>conf/multilib-example.conf</filename> |
@@ -2746,7 +2768,8 @@ | |||
2746 | done using the | 2768 | done using the |
2747 | <ulink url='&YOCTO_DOCS_REF_URL;#var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></ulink> | 2769 | <ulink url='&YOCTO_DOCS_REF_URL;#var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></ulink> |
2748 | variable. | 2770 | variable. |
2749 | Eventually, all recipes will be covered and this list will be unneeded. | 2771 | Eventually, all recipes will be covered and this list will |
2772 | not be needed. | ||
2750 | </para> | 2773 | </para> |
2751 | 2774 | ||
2752 | <para> | 2775 | <para> |