Debian Customizing U-Boot AM62: Difference between revisions

From Variscite Wiki
(Created page with "<!-- Set release according to the "release" parameter in URL and use am62-yocto-dunfell-5.10.168_08.06.00.42-v1.0 as default --> {{INIT_RELEASE_PARAM|am62-yocto-kirkstone-6.1.46_09.01.00.08-v1.0}}<!-- --> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!-- --> {{COMMON_YOCTO_VARS}} <!-- Include common yocto variables --> {{#vardefine:WORKDIR|~/{{#var:MACHINE_NAME}}-u-boot}} <!-- --> {{#vardefine:WORKDIR_ENV|$WORKDIR}} <!-- --> {{PageHeader|{{#var:HARDWARE_...")
 
 
(41 intermediate revisions by the same user not shown)
Line 1: Line 1:
<!-- Set release according to the "release" parameter in URL and use am62-yocto-dunfell-5.10.168_08.06.00.42-v1.0 as default
<!-- Set release according to the "release" parameter in URL and use am62-yocto-dunfell-5.10.168_08.06.00.42-v1.0 as default
--> {{INIT_RELEASE_PARAM|am62-yocto-kirkstone-6.1.46_09.01.00.08-v1.0}}<!--
--> {{INIT_RELEASE_PARAM|am62-debian-bookworm-6.1.83_09.02.01.10-v1.0}}<!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:Debian_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--


--> {{COMMON_YOCTO_VARS}} <!-- Include common yocto variables
--> {{#vardefine:WORKDIR|~/{{#var:MACHINE_NAME}}-u-boot}} <!--
--> {{#vardefine:WORKDIR|~/{{#var:MACHINE_NAME}}-u-boot}} <!--
--> {{#vardefine:WORKDIR_ENV|$WORKDIR}} <!--
--> {{#vardefine:WORKDIR_ENV|$WORKDIR}} <!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} - Yocto Customize from source code}} {{DocImage|category1=Yocto|category2={{#var:HARDWARE_NAME}}}} __toc__
--> {{PageHeader|{{#var:HARDWARE_NAME}} - Debian Customize from source code}} {{DocImage|category1=Yocto|category2={{#var:HARDWARE_NAME}}}} __toc__


= Introduction =
= Introduction =


This guide demonstrates how to patch and rebuild the VAR-SOM-AM62 U-Boot images using Yocto.
This guide demonstrates how to patch and rebuild the VAR-SOM-AM62 U-Boot images.


To learn how to build the U-Boot images outside of Yocto, see: {{Varlink|Yocto_Build_U-Boot_TI|{{#var:RELEASE_LINK}}|'''Build U-Boot from source code'''}}
To learn how to build the U-Boot images outside of Debian, see: {{Varlink|Debian_Build_U-Boot_TI|{{#var:RELEASE_LINK}}|'''Build U-Boot from source code'''}}
 
= Before Starting =
 
Before starting this guide, you must have the Yocto environment set and be able to build images for the VAR-SOM-AM62.
 
Please see: {{Varlink|Yocto_Build_Release|{{#var:RELEASE_LINK}}|'''Build Yocto from source code'''}}.
 
The remainder of the guide assumes the Yocto working directory is '''~/var-ti-yocto'''
 
= Making changes in the source code =
Choose one of the following three methods to customize the U-Boot source code and build it using Yocto:


== Add your patches on top of the Variscite source code ==
== Add your patches on top of the Variscite source code ==


Fetch the U-Boot source:
Fetch the U-Boot source:
  $ MACHINE={{#var:MACHINE_NAME}} bitbake -c unpack virtual/bootloader
  $ mkdir -p {{#var:BUILD_FOLDER_UBOOT}} && cd {{#var:BUILD_FOLDER_UBOOT}}
$ mkdir -p ../local_repos/{{#var:U-BOOT_REPO}}
  $ git clone https://github.com/varigit/{{#var:U-BOOT}} -b {{#var:U-BOOT_BRANCH}}
  $ cp -a arago-tmp-default-glibc/work/{{#var:MACHINE_NAME_}}-oe-linux/u-boot-variscite/<uboot version>/git/. ../local_repos/{{#var:U-BOOT_REPO}}
  $ cd {{#var:U-BOOT}}
  $ cd ../local_repos/{{#var:U-BOOT_REPO}}
$ git reset --hard
  $ git clean -fdx
  $ git clean -fdx


Next, make the desired changes to the U-Boot source code. After changing the source code, create a diff file:
Next, make the desired changes to the U-Boot source code. After changing the source code, create a diff file:
$ vim board/variscite/am62x_var_som/am62x_var_som.c
$ vim include/configs/am62x_var_som.h
edit and save
$ git diff > {{#var:BUILD_FOLDER_UBOOT}}/{{#var:U-BOOT}}/uboot.diff


$ git diff > ~/var-ti-yocto/tisdk/sources/meta-variscite-bsp-ti/recipes-bsp/u-boot/u-boot-variscite/uboot.diff
Refer to the instructions on how to download the Debian source code and apply the U-Boot patch during the Debian image build process. After cloning the Debian source code, it will be located in the '''{{#var:BUILD_FOLDER}}/ti-bdebstrap/'''".
 
Finally, configure <code>~/var-ti-yocto/tisdk/sources/meta-variscite-bsp-ti/recipes-bsp/u-boot/u-boot-variscite_<u-boot version>.bb</code> to apply the patch by appending:
 
SRC_URI += "file://uboot.diff"
 
== Use a local repository ==
 
Fetch the U-Boot source:
$ MACHINE={{#var:MACHINE_NAME}} bitbake -c unpack virtual/bootloader
$ mkdir -p ../local_repos/{{#var:U-BOOT_REPO}}
$ cp -a arago-tmp-default-glibc/work/{{#var:MACHINE_NAME_}}-oe-linux/u-boot-variscite/<uboot version>/git/. ../local_repos/{{#var:U-BOOT_REPO}}
$ cd ../local_repos/{{#var:U-BOOT_REPO}}
$ git reset --hard
$ git clean -fdx
 
Next, make the desired changes to the U-Boot source code. After making changes in the source code ''you need to commit them''.<br>
For example:
$ cd {{#var:BUILD_FOLDER}}/local_repos/{{#var:U-BOOT_REPO}}
$ vim board/variscite/{{#var:MACHINE_NAME_}}/{{#var:MACHINE_NAME_}}.c
$ vim include/configs/{{#var:MACHINE_NAME_}}.h
edit and save
$ git commit -a -m "my_{{#var:MACHINE_NAME_}}_changes"
 
To list all of the commits:
$ git log
 
Get the latest commit ID:
$ git rev-parse HEAD
<br>
Update the recipe to use the local repository instead of the default one:
$ cd {{#var:BUILD_FOLDER}}/sources/{{#var:META_VARISCITE_REPO}}/recipes-bsp/u-boot/
 
Create a u-boot-variscite.bbappend file:
$ vim u-boot-variscite_%.bbappend


Append the following lines to it (see the previous section for listing the commits or getting the latest commit ID):
Create the directory '''{{#var:BUILD_FOLDER}}/ti-bdebstrap/patches/ti-u-boot''' and copy the '''uboot.diff''' patch.
  UBOOT_SRC = "git://<var-ti-yocto_directory_path>/local_repos/{{#var:U-BOOT_REPO}};protocol=file"
  $ mkdir -p {{#var:BUILD_FOLDER}}/ti-bdebstrap/patches/ti-u-boot
  SRCBRANCH{{#var:YOCTO_OVERRIDE_PREFIX}}{{#var:MACHINE_NAME}} = "{{#var:U-BOOT_BRANCH}}" ''(or your own created branch)''
$ cp {{#var:BUILD_FOLDER_UBOOT}}/{{#var:U-BOOT}}/uboot.diff {{#var:BUILD_FOLDER}}/ti-bdebstrap/patches/ti-u-boot
  SRCREV{{#var:YOCTO_OVERRIDE_PREFIX}}{{#var:MACHINE_NAME}} = "''The commit id you'd like to use''"


{{#ifexpr:{{#var:YOCTO_VERSION}}<3.1|
Refer to {{Varlink|Debian_Build_Release_TI|{{#var:RELEASE_LINK}}#Building_the_Debian_image|'''Build and flash the Debian image with uboot changes'''}}.
Also, update the u-boot-fw-utils recipe:
$ cp u-boot-variscite.bbappend u-boot-fw-utils.bbappend
|}}
{{note|For the SRCREV value you can also use "${AUTOREV}" during development to get the latest commit of the branch<br>
(If you do so, make sure to run "{{#var:BB_ENV}} bitbake -c cleansstate virtual/bootloader" before rebuilding U-Boot)}}


== Use your remote repository on GitHub ==
== Use your remote repository on GitHub ==
Using this method Yocto will fetch the source code from your remote repository on GitHub.<br>
Create a GitHub account and upload your proprietary U-Boot to a new repository:
Create a GitHub account and upload your proprietary U-Boot to a new repository:
You can fork our repository to your account by visiting the following link and clicking on "Fork" at the top right of the screen:
You can fork our repository to your account by visiting the following link and clicking on "Fork" at the top right of the screen:
Line 95: Line 42:
Alternatively, you can clone the repository to your local machine, and push it later to your account.<br>
Alternatively, you can clone the repository to your local machine, and push it later to your account.<br>


<br>
Refer to {{Varlink|Debian_Build_Release_TI|{{#var:RELEASE_LINK}}#Deploy_source|'''How to Download Debian Source Code'''}}. After downloading the source, open the file '''{{#var:BUILD_FOLDER}}/ti-bdebstrap/configs/bsp_sources.toml''' and locate the tag '''{{#var:TI_RELEASE}}_var01'''.
Update the recipes to use your remote repository instead of the default one:
$ cd {{#var:BUILD_FOLDER}}/sources/{{#var:META_VARISCITE_REPO}}/recipes-bsp/u-boot/
 
Create a u-boot-variscite.bbappend file:
$ vim u-boot-variscite_%.bbappend
 
and append the following lines to it (see the previous section for listing the commits or getting the latest commit ID):
 
UBOOT_SRC = <nowiki>"git://github.com/<your_account>/</nowiki>{{#var:U-BOOT_REPO}}.git;protocol=git"
SRCBRANCH = "{{#var:U-BOOT_BRANCH}}" ''(or your own created branch)''
SRCREV = "''The commit id you'd like to use''"
 
{{#ifexpr:{{#var:YOCTO_VERSION}}<3.1|
Also, update the u-boot-fw-utils recipe:
$ cp u-boot-variscite.bbappend u-boot-fw-utils.bbappend
|}}
{{note|For the SRCREV value you can also use "${AUTOREV}" during development to get the latest commit of the branch<br>
(If you do so, make sure to run "{{#var:BB_ENV}} bitbake -c cleansstate virtual/bootloader" before rebuilding U-Boot)}}
 
= Building U-Boot using Yocto =
 
After making the desired changes to the source code following one of the methods described in the [[#Making changes in the source code|Making changes in the source code]], you can build the U-Boot images by running:
 
$ cd ~/var-ti-yocto/tisdk/build
$ . conf/setenv
# Build only the U-Boot images:
$ MACHINE=am62x-var-som bitbake -c deploy u-boot-variscite                    # tispl.bin and u-boot.img
$ MACHINE=am62x-var-som bitbake -c deploy mc:k3r5:u-boot-variscite            # tiboot3.bin
# Optionally, you may skip building U-Boot and just build your image:
$ MACHINE=am62x-var-som bitbake <image name>
 
The relevant output files are:


deploy-ti/images/am62x-var-som/u-boot.img
    atf_srcrev = "00f1ec6b8740ccd403e641131e294aabacf2a48b"
  deploy-ti/images/am62x-var-som/tispl.bin
    optee_srcrev = "012cdca49db398693903e05c42a254a3a0c0d8f2"
deploy-ti/images/am62x-var-som/tiboot3.bin
    uboot_srcuri = "https://github.com/varigit/ti-u-boot.git"  #change to your repository name of uboot
    uboot_srcrev = "80ceb4d91326e00edd22a3fabf5dd2d64f6a7635" #update the hash with the latest commit
    linux_fw_srcrev = "09.02.00.010"


see: {{Varlink|Yocto_Build_U-Boot_TI|{{#var:RELEASE_LINK}}#Update_U-Boot_on_running_system|'''Build U-Boot from source code'''}} to learn how to update a running board with these images.
Finally refer to {{Varlink|Debian_Build_Release_TI|{{#var:RELEASE_LINK}}#Building_the_Debian_image|'''Build the Debian image with updated u-boot repository'''}}.

Latest revision as of 22:24, 11 December 2024

Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release am62-debian-bookworm-6.1.83_09.02.01.10-v1.0.
To view this page for a specific Variscite SoM and software release, please follow these steps:

  1. Visit variwiki.com
  2. Select your SoM
  3. Select the software release
VAR-SOM-AM62 - Debian Customize from source code

Introduction

This guide demonstrates how to patch and rebuild the VAR-SOM-AM62 U-Boot images.

To learn how to build the U-Boot images outside of Debian, see: Build U-Boot from source code

Add your patches on top of the Variscite source code

Fetch the U-Boot source:

$ mkdir -p ~/am62_debian_uboot && cd ~/am62_debian_uboot
$ git clone https://github.com/varigit/ti-u-boot -b ti-u-boot-2023.04_09.02.01.10_var01
$ cd ti-u-boot
$ git clean -fdx

Next, make the desired changes to the U-Boot source code. After changing the source code, create a diff file:

$ vim board/variscite/am62x_var_som/am62x_var_som.c
$ vim include/configs/am62x_var_som.h

edit and save

$ git diff > ~/am62_debian_uboot/ti-u-boot/uboot.diff

Refer to the instructions on how to download the Debian source code and apply the U-Boot patch during the Debian image build process. After cloning the Debian source code, it will be located in the ~/debian_am62x_var_som/ti-bdebstrap/".

Create the directory ~/debian_am62x_var_som/ti-bdebstrap/patches/ti-u-boot and copy the uboot.diff patch.

$ mkdir -p ~/debian_am62x_var_som/ti-bdebstrap/patches/ti-u-boot
$ cp ~/am62_debian_uboot/ti-u-boot/uboot.diff  ~/debian_am62x_var_som/ti-bdebstrap/patches/ti-u-boot

Refer to Build and flash the Debian image with uboot changes.

Use your remote repository on GitHub

Create a GitHub account and upload your proprietary U-Boot to a new repository: You can fork our repository to your account by visiting the following link and clicking on "Fork" at the top right of the screen: https://github.com/varigit/ti-u-boot/tree/ti-u-boot-2023.04_09.02.01.10_var01

Alternatively, you can clone the repository to your local machine, and push it later to your account.

Refer to How to Download Debian Source Code. After downloading the source, open the file ~/debian_am62x_var_som/ti-bdebstrap/configs/bsp_sources.toml and locate the tag 09.02.01.10_var01.

   atf_srcrev = "00f1ec6b8740ccd403e641131e294aabacf2a48b"
   optee_srcrev = "012cdca49db398693903e05c42a254a3a0c0d8f2"
   uboot_srcuri = "https://github.com/varigit/ti-u-boot.git"  #change to your repository name of uboot
   uboot_srcrev = "80ceb4d91326e00edd22a3fabf5dd2d64f6a7635"  #update the hash with the latest commit
   linux_fw_srcrev = "09.02.00.010"

Finally refer to Build the Debian image with updated u-boot repository.