€cdocutils.nodes document q)�q}q(U nametypesq}q(Xbooting u-boot from the networkqNXloadingqNXu-boot environmentqNXFbooting tiboot3.bin, tispl.bin and u-boot.img from emmc boot partitionq NXu-boot splash screenq NX device treesq NXj721e-evm-usb-30-hostq ˆXwriting-to-qspi-from-u-boot-1q ˆXreading-from-partitionqˆXstopqNXadding-a-splash-screenqˆXbooting linux from the networkqNXnorqNX)viewing, reading and writing to partitionqNXviewing sata devicesqNXstep 1: downloading ccsqNXmultiple interfacesqNXmanual network configurationqNXbuild informationqNX available ram for image downloadqNXdra7xx supportqNXstep 3: loading symbol filesqNX%updating an sd card or emmc using dfuqNXnetwork configuration via dhcpqNXview partition contentsqNX;booting from sd/emmc from spl (single stage or falcon mode)qNXnandq NXgeneral informationq!NX%identifying partition filesystem typeq"NXwriting to spi from u-bootq#NX k3-boot-flowq$ˆXwriting-to-qspi-using-dfuq%ˆXwriting-to-qspi-from-u-bootq&ˆXbooting-from-qspiq'ˆX+updating an sd card or emmc with raw writesq(NX setting-the-full-tool-chain-pathq)ˆX'build and boot flow on 32-bit platformsq*NXufsq+NXwriting to nand via dfuq,NXlisting-nand-partitionsq-ˆX"updating an sd card from a host pcq.NXpartitioning emmc from u-bootq/NXu-boot release notesq0NX6booting-from-qspi-from-spl-single-stage-or-falcon-modeq1ˆXoverviewq2NXtroubleshootingq3NXBbuild and boot flow on 64-bit platforms (based on k3 architecture)q4NXam43xx supportq5NXuboot spl debugging tipsq6NX!disabling gigabit phy advertisingq7NX"booting linux from sd card or emmcq8NXu-bootq9NXcompiling-mlo-and-u-bootq:ˆXerasing-partitionq;ˆX4erasing, reading and writing to/from nand partitionsqˆXu-boot user's guideq?NXcompiling-r5-and-arm64-imagesq@ˆXsetting-the-tool-chain-pathqAˆX boot-flowqBˆXuartqCNXddr3 eccqDNXam335xqEˆX ospi/qspiqFNXgetting the u-boot source codeqGNX!usb device firmware upgrade (dfu)qHNXhyperbus and hyperflashqINXspiqJNX'booting kernel and filesystem from nandqKNX remoteprocqLNX nand bootqMNXviewing partitionsqNNXbooting linux from usb storageqONXddr3 ecc in keystone-iiqPNXsataqQNXbooting from spiqRNXnetwork (wired or usb client)qSNXsd, emmc or usb storageqTNXbooting-from-qspi-from-u-bootqUˆXwrite-file-to-partitionqVˆXnetworking-environmentqWˆXddr3 ecc handlingqXNXinitializationqYNXwriting to nor from u-bootqZNX dfu-j721eq[ˆXam654/j721e supportq\NXbooting from norq]NX*usb peripheral boot mode (spl-dfu support)q^NX,step 2: creating a target configuration fileq_NX$booting u-boot from the console uartq`NXcleaning-the-sourcesqaˆX/booting mlo and u-boot from emmc boot partitionqbNXwriting-to-partitionqcˆXstartingqdNuUsubstitution_defsqe}qfUparse_messagesqg]qh(cdocutils.nodes system_message qi)�qj}qk(U rawsourceqlUUparentqmcdocutils.nodes section qn)�qo}qp(hlUhmhn)�qq}qr(hlUhmhn)�qs}qt(hlUhmhn)�qu}qv(hlUhmhUsourceqwcdocutils.nodes reprunicode qxX3source/linux/Foundational_Components/U-Boot.rst.incqy…�qz}q{bUtagnameq|Usectionq}U attributesq~}q(Udupnamesq€]Uclassesq�]Ubackrefsq‚]Uidsqƒ]q„Uu-bootq…aUnamesq†]q‡h9auUlineqˆKUdocumentq‰hUchildrenqŠ]q‹(cdocutils.nodes title qŒ)�q�}qŽ(hlXU-Bootq�hmhuhwhzh|Utitleq�h~}q‘(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]q’cdocutils.nodes Text q“XU-Bootq”…�q•}q–(hlh�hmh�ubaubcdocutils.nodes comment q—)�q˜}q™(hlXZconvert from page http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User%27s_GuidehmhuhwhxXQsource/linux/Foundational_Components/U-Boot/Linux_Core_U-Boot_Users_Guide.rst.incqš…�q›}qœbh|Ucommentq�h~}qž(U xml:spaceqŸUpreserveq hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]q¡h“XZconvert from page http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User%27s_Guideq¢…�q£}q¤(hlUhmh˜ubaubhshn)�q¥}q¦(hlUhmhuhwhzh|h}h~}q§(h€]h�]h‚]hƒ]q¨Uu-boot-release-notesq©ah†]qªh0auhˆK h‰hhŠ]q«(hŒ)�q¬}q­(hlXU-Boot Release Notesq®hmh¥hwhzh|h�h~}q¯(h€]h�]h‚]hƒ]h†]uhˆK h‰hhŠ]q°h“XU-Boot Release Notesq±…�q²}q³(hlh®hmh¬ubaubhn)�q´}qµ(hlUhmh¥hwhzh|h}h~}q¶(h€]h�]h‚]hƒ]q·Ubuild-informationq¸ah†]q¹hauhˆK h‰hhŠ]qº(hŒ)�q»}q¼(hlXBuild Informationq½hmh´hwhzh|h�h~}q¾(h€]h�]h‚]hƒ]h†]uhˆK h‰hhŠ]q¿h“XBuild InformationqÀ…�qÁ}qÂ(hlh½hmh»ubaubcsphinx.ext.ifconfig ifconfig qÃ)�qÄ}qÅ(hlUhmh´hwhzh|UifconfigqÆh~}qÇ(UexprqÈXCONFIG_sdk in ('PLSDK')hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]qÉcdocutils.nodes paragraph qÊ)�qË}qÌ(hlXlPlease refer to `U-Boot Build Information `__ for details.hmhÄhwhzh|U paragraphqÍh~}qÎ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]qÏ(h“XPlease refer to qÐ…�qÑ}qÒ(hlXPlease refer to hmhËubcdocutils.nodes reference qÓ)�qÔ}qÕ(hlXO`U-Boot Build Information `__h~}qÖ(UnameXU-Boot Build InformationUrefuriq×X0Release_Specific_PLSDK_Release_Notes.html#u-boothƒ]h‚]h€]h�]h†]uhmhËhŠ]qØh“XU-Boot Build InformationqÙ…�qÚ}qÛ(hlUhmhÔubah|U referenceqÜubh“X for details.qÝ…�qÞ}qß(hlX for details.hmhËubeubaubhÃ)�qà}qá(hlUhmh´hwhzh|hÆh~}qâ(hÈXCONFIG_sdk in ('PSDKLA')hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]qãhÊ)�qä}qå(hlX(Please refer to Yocto build for details.qæhmhàhwhzh|hÍh~}qç(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]qèh“X(Please refer to Yocto build for details.qé…�qê}që(hlhæhmhäubaubaubeubhn)�qì}qí(hlUhmh¥hwhzh|h}h~}qî(h€]h�]h‚]hƒ]qïU known-issuesqðah†]qñh=auhˆKh‰hhŠ]qò(hŒ)�qó}qô(hlX Known Issuesqõhmhìhwhzh|h�h~}qö(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]q÷h“X Known Issuesqø…�qù}qú(hlhõhmhóubaubhÃ)�qû}qü(hlUhmhìhwhzh|hÆh~}qý(hÈXCONFIG_sdk in ('PLSDK')hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]qþhÊ)�qÿ}r(hlXtPlease refer to `U-Boot Known Issues `__ for details.hmhûhwhzh|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]r(h“XPlease refer to r…�r}r(hlXPlease refer to hmhÿubhÓ)�r}r(hlXW`U-Boot Known Issues `__h~}r(UnameXU-Boot Known Issuesh×X=Release_Specific_PLSDK_Release_Notes.html#u-boot-known-issueshƒ]h‚]h€]h�]h†]uhmhÿhŠ]r h“XU-Boot Known Issuesr …�r }r (hlUhmjubah|hÜubh“X for details.r …�r}r(hlX for details.hmhÿubeubaubhÃ)�r}r(hlUhmhìhwhzh|hÆh~}r(hÈXCONFIG_sdk in ('PSDKLA')hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]rhÊ)�r}r(hlXiPlease refer to `Known Issues `__ for details.hmjhwhzh|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆK!h‰hhŠ]r(h“XPlease refer to r…�r}r(hlXPlease refer to hmjubhÓ)�r}r(hlXL`Known Issues `__h~}r(UnameX Known Issuesh×X9Release_Specific_PSDKLA_Release_Notes.html#issues-trackerhƒ]h‚]h€]h�]h†]uhmjhŠ]rh“X Known Issuesr…�r }r!(hlUhmjubah|hÜubh“X for details.r"…�r#}r$(hlX for details.hmjubeubaubh—)�r%}r&(hlXPhttp://processors.wiki.ti.com/index.php/Processor_SDK_Linux_U-Boot_Splash_ScreenhmhìhwhxX\source/linux/Foundational_Components/U-Boot/Processor_SDK_Linux_U-Boot_Splash_Screen.rst.incr'…�r(}r)bh|h�h~}r*(hŸh hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]r+h“XPhttp://processors.wiki.ti.com/index.php/Processor_SDK_Linux_U-Boot_Splash_Screenr,…�r-}r.(hlUhmj%ubaubcsphinx.addnodes highlightlang r/)�r0}r1(hlUhmhìhwj(h|U highlightlangr2h~}r3(UlangXcUlinenothresholdI9223372036854775807 hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]ubeubeubhn)�r4}r5(hlUhmhuhwj(h|h}h~}r6(h€]h�]h‚]hƒ]r7Uu-boot-splash-screenr8ah†]r9h auhˆKh‰hhŠ]r:(hŒ)�r;}r<(hlXU-Boot Splash Screenr=hmj4hwj(h|h�h~}r>(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]r?h“XU-Boot Splash Screenr@…�rA}rB(hlj=hmj;ubaubcdocutils.nodes rubric rC)�rD}rE(hlXAdding a splash screenrFhmj4hwj(h|UrubricrGh~}rH(hƒ]rIUadding-a-splash-screenrJah‚]h€]h�]h†]rKhauhˆNh‰hhŠ]rLh“XAdding a splash screenrM…�rN}rO(hljFhmjDubaubjC)�rP}rQ(hlXAM335xrRhmj4hwj(h|jGh~}rS(hƒ]rTUam335xrUah‚]h€]h�]h†]rVhEauhˆNh‰hhŠ]rWh“XAM335xrX…�rY}rZ(hljRhmjPubaubhÊ)�r[}r\(hlX@All the code below is based on Processor Linux SDK 03.02.00..05.r]hmj4hwj(h|hÍh~}r^(h€]h�]h‚]hƒ]h†]uhˆK h‰hhŠ]r_h“X@All the code below is based on Processor Linux SDK 03.02.00..05.r`…�ra}rb(hlj]hmj[ubaubhÊ)�rc}rd(hlX³There is a frame buffer driver for am335x in the drivers/video directory called am3355x-fb.c. It makes calls to routines in board.c to set up the LCDC and frame buffer. To use it:rehmj4hwj(h|hÍh~}rf(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]rgh“X³There is a frame buffer driver for am335x in the drivers/video directory called am3355x-fb.c. It makes calls to routines in board.c to set up the LCDC and frame buffer. To use it:rh…�ri}rj(hljehmjcubaubhÊ)�rk}rl(hlXÔEither create a new defconfig in the configs directory or just add SPLASH to CONFIG\_SYS\_EXTRA\_OPTIONS. In this example the am335x\_evm\_defconfig is copied into a new one called am335x\_evm\_splash\_defconfig.hmj4hwj(h|hÍh~}rm(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]rnh“XÌEither create a new defconfig in the configs directory or just add SPLASH to CONFIG_SYS_EXTRA_OPTIONS. In this example the am335x_evm_defconfig is copied into a new one called am335x_evm_splash_defconfig.ro…�rp}rq(hlXÔEither create a new defconfig in the configs directory or just add SPLASH to CONFIG\_SYS\_EXTRA\_OPTIONS. In this example the am335x\_evm\_defconfig is copied into a new one called am335x\_evm\_splash\_defconfig.hmjkubaubcdocutils.nodes literal_block rr)�rs}rt(hlXÛCONFIG_TARGET_AM335X_EVM=y CONFIG_SPL_STACK_R_ADDR=0x82000000 CONFIG_DEFAULT_DEVICE_TREE="am335x-evm" CONFIG_SPL=y CONFIG_SPL_STACK_R=y CONFIG_SYS_EXTRA_OPTIONS="NAND,SPLASH" CONFIG_HUSH_PARSER=y CONFIG_AUTOBOOT_KEYED=yhmj4hwj(h|U literal_blockruh~}rv(Ulinenosrw‰UlanguagerxXtexthŸh hƒ]h‚]h€]Uhighlight_argsry}h�]h†]uhˆKh‰hhŠ]rzh“XÛCONFIG_TARGET_AM335X_EVM=y CONFIG_SPL_STACK_R_ADDR=0x82000000 CONFIG_DEFAULT_DEVICE_TREE="am335x-evm" CONFIG_SPL=y CONFIG_SPL_STACK_R=y CONFIG_SYS_EXTRA_OPTIONS="NAND,SPLASH" CONFIG_HUSH_PARSER=y CONFIG_AUTOBOOT_KEYED=yr{…�r|}r}(hlUhmjsubaubhÊ)�r~}r(hlX_In include/configs/am335x\_evm.h, add support for the splash screen, LCDC, and gzipped bitmaps.hmj4hwj(h|hÍh~}r€(h€]h�]h‚]hƒ]h†]uhˆK#h‰hhŠ]r�h“X^In include/configs/am335x_evm.h, add support for the splash screen, LCDC, and gzipped bitmaps.r‚…�rƒ}r„(hlX_In include/configs/am335x\_evm.h, add support for the splash screen, LCDC, and gzipped bitmaps.hmj~ubaubjr)�r…}r†(hlX[/* Splash scrren support */ #ifdef CONFIG_SPLASH #define CONFIG_AM335X_LCD #define CONFIG_LCD #define CONFIG_LCD_NOSTDOUT #define CONFIG_SYS_WHITE_ON_BLACK #define LCD_BPP LCD_COLOR16 #define CONFIG_VIDEO_BMP_GZIP #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1366*767*4) #define CONFIG_CMD_UNZIP #define CONFIG_CMD_BMP #define CONFIG_BMP_16BPP #endifhmj4hwj(h|juh~}r‡(hŸh hƒ]h‚]h€]h�]h†]uhˆM— h‰hhŠ]rˆh“X[/* Splash scrren support */ #ifdef CONFIG_SPLASH #define CONFIG_AM335X_LCD #define CONFIG_LCD #define CONFIG_LCD_NOSTDOUT #define CONFIG_SYS_WHITE_ON_BLACK #define LCD_BPP LCD_COLOR16 #define CONFIG_VIDEO_BMP_GZIP #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1366*767*4) #define CONFIG_CMD_UNZIP #define CONFIG_CMD_BMP #define CONFIG_BMP_16BPP #endifr‰…�rŠ}r‹(hlUhmj…ubaubhÊ)�rŒ}r�(hlXDIn arch/arm/cpu/armv7/am33xx/clock\_am33xx.c enable the LCDC clocks.rŽhmj4hwj(h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆK7h‰hhŠ]r�h“XCIn arch/arm/cpu/armv7/am33xx/clock_am33xx.c enable the LCDC clocks.r‘…�r’}r“(hlXDIn arch/arm/cpu/armv7/am33xx/clock\_am33xx.c enable the LCDC clocks.hmjŒubaubjr)�r”}r•(hlX™&cmrtc->rtcclkctrl, &cmper->usb0clkctrl, &cmper->emiffwclkctrl, &cmper->emifclkctrl, &cmper->lcdclkctrl, &cmper->lcdcclkstctrl, &cmper->epwmss2clkctrl, 0hmj4hwj(h|juh~}r–(hŸh hƒ]h‚]h€]h�]h†]uhˆMª h‰hhŠ]r—h“X™&cmrtc->rtcclkctrl, &cmper->usb0clkctrl, &cmper->emiffwclkctrl, &cmper->emifclkctrl, &cmper->lcdclkctrl, &cmper->lcdcclkstctrl, &cmper->epwmss2clkctrl, 0r˜…�r™}rš(hlUhmj”ubaubhÊ)�r›}rœ(hlX@In board.c add includes for mmc, fat, lcd, and the frame buffer.r�hmj4hwj(h|hÍh~}rž(h€]h�]h‚]hƒ]h†]uhˆKDh‰hhŠ]rŸh“X@In board.c add includes for mmc, fat, lcd, and the frame buffer.r …�r¡}r¢(hlj�hmj›ubaubjr)�r£}r¤(hlX�#include #include #include #include #include #include <../../../drivers/video/am335x-fb.h>hmj4hwj(h|juh~}r¥(hŸh hƒ]h‚]h€]h�]h†]uhˆM· h‰hhŠ]r¦h“X�#include #include #include #include #include #include <../../../drivers/video/am335x-fb.h>r§…�r¨}r©(hlUhmj£ubaubhÊ)�rª}r«(hlX|This example code is based on the AM335x Starter Kit. A GPIO controls the backlight so use GPIO\_TO\_PIN to define the GPIO.hmj4hwj(h|hÍh~}r¬(h€]h�]h‚]hƒ]h†]uhˆKOh‰hhŠ]r­h“XzThis example code is based on the AM335x Starter Kit. A GPIO controls the backlight so use GPIO_TO_PIN to define the GPIO.r®…�r¯}r°(hlX|This example code is based on the AM335x Starter Kit. A GPIO controls the backlight so use GPIO\_TO\_PIN to define the GPIO.hmjªubaubjr)�r±}r²(hlX“#define GPIO_ETH1_MODE GPIO_TO_PIN(1, 26) /* GPIO that controls backlight on EVM-SK */ #define GPIO_BACKLIGHT_EN GPIO_TO_PIN(3, 17)hmj4hwj(h|juh~}r³(hŸh hƒ]h‚]h€]h�]h†]uhˆMà h‰hhŠ]r´h“X“#define GPIO_ETH1_MODE GPIO_TO_PIN(1, 26) /* GPIO that controls backlight on EVM-SK */ #define GPIO_BACKLIGHT_EN GPIO_TO_PIN(3, 17)rµ…�r¶}r·(hlUhmj±ubaubhÊ)�r¸}r¹(hlX4In board\_late\_init call the splash screen routine.rºhmj4hwj(h|hÍh~}r»(h€]h�]h‚]hƒ]h†]uhˆKYh‰hhŠ]r¼h“X2In board_late_init call the splash screen routine.r½…�r¾}r¿(hlX4In board\_late\_init call the splash screen routine.hmj¸ubaubjr)�rÀ}rÁ(hlX¹#if !defined(CONFIG_SPL_BUILD) splash_screen(); /* try reading mac address from efuse */ mac_lo = readl(&cdev->macid0l); mac_hi = readl(&cdev->macid0h);hmj4hwj(h|juh~}rÂ(hŸh hƒ]h‚]h€]h�]h†]uhˆMÌ h‰hhŠ]rÃh“X¹#if !defined(CONFIG_SPL_BUILD) splash_screen(); /* try reading mac address from efuse */ mac_lo = readl(&cdev->macid0l); mac_hi = readl(&cdev->macid0h);rÄ…�rÅ}rÆ(hlUhmjÀubaubhÊ)�rÇ}rÈ(hlX%The following routines enable the backlight, load the LCD timings (this example is based on Starter Kit), power on the LCD and enable it, then finally the splash screen code that registers a fat file system on mmc0. The gzipped bitmap is named splash.bmp.gz and is displayed with bmp\_display.hmj4hwj(h|hÍh~}rÉ(h€]h�]h‚]hƒ]h†]uhˆKch‰hhŠ]rÊh“X$The following routines enable the backlight, load the LCD timings (this example is based on Starter Kit), power on the LCD and enable it, then finally the splash screen code that registers a fat file system on mmc0. The gzipped bitmap is named splash.bmp.gz and is displayed with bmp_display.rË…�rÌ}rÍ(hlX%The following routines enable the backlight, load the LCD timings (this example is based on Starter Kit), power on the LCD and enable it, then finally the splash screen code that registers a fat file system on mmc0. The gzipped bitmap is named splash.bmp.gz and is displayed with bmp\_display.hmjÇubaubjr)�rÎ}rÏ(hlX¿#if defined(CONFIG_LCD) && defined(CONFIG_AM335X_LCD) && \  !defined(CONFIG_SPL_BUILD) void lcdbacklight(int on) { gpio_request(GPIO_BACKLIGHT_EN, "backlight_en"); if (on) gpio_direction_output(GPIO_BACKLIGHT_EN, 0); else gpio_direction_output(GPIO_BACKLIGHT_EN, 1); } int load_lcdtiming(struct am335x_lcdpanel *panel) { struct am335x_lcdpanel pnltmp; pnltmp.hactive = 480; pnltmp.vactive = 272; pnltmp.bpp = 16; pnltmp.hfp = 8; pnltmp.hbp = 43; pnltmp.hsw = 4; pnltmp.vfp = 4; pnltmp.vbp = 12; pnltmp.vsw = 10; pnltmp.pxl_clk_div = 2; pnltmp.pol = 0; pnltmp.pup_delay = 1; pnltmp.pon_delay = 1; panel_info.vl_rot = 0; memcpy((void *)panel, (void *)&pnltmp, sizeof(struct am335x_lcdpanel)); return 0; } void lcdpower(int on) { lcd_enable(); } vidinfo_t panel_info = { .vl_col = 480, .vl_row = 272, .vl_bpix = 4, .priv = 0 }; void lcd_ctrl_init(void *lcdbase) { struct am335x_lcdpanel lcd_panel; memset(&lcd_panel, 0, sizeof(struct am335x_lcdpanel)); if (load_lcdtiming(&lcd_panel) != 0) return; lcd_panel.panel_power_ctrl = &lcdpower; if (am335xfb_init(&lcd_panel) != 0) printf("ERROR: failed to initialize video!"); /* Modify panel into to real resolution */ panel_info.vl_col = lcd_panel.hactive; panel_info.vl_row = lcd_panel.vactive; // lcd_set_flush_dcache(1); } void lcd_enable(void) { lcdbacklight(1); } void splash_screen(void) { struct mmc *mmc = NULL; int err; mmc = find_mmc_device(0); if (!mmc) printf("Error finding mmc device\n"); mmc_init(mmc); err = fat_register_device(&mmc->block_dev, CONFIG_SYS_MMCSD_FS_BOOT_PARTITION); if (!err) { err = file_fat_read("splash.bmp.gz", (void *)0x82000000, 0); bmp_display(0x82000000, 0, 0); } } #endifhmj4hwj(h|juh~}rÐ(jw‰jxXtexthŸh hƒ]h‚]h€]jy}h�]h†]uhˆKih‰hhŠ]rÑh“X¿#if defined(CONFIG_LCD) && defined(CONFIG_AM335X_LCD) && \  !defined(CONFIG_SPL_BUILD) void lcdbacklight(int on) { gpio_request(GPIO_BACKLIGHT_EN, "backlight_en"); if (on) gpio_direction_output(GPIO_BACKLIGHT_EN, 0); else gpio_direction_output(GPIO_BACKLIGHT_EN, 1); } int load_lcdtiming(struct am335x_lcdpanel *panel) { struct am335x_lcdpanel pnltmp; pnltmp.hactive = 480; pnltmp.vactive = 272; pnltmp.bpp = 16; pnltmp.hfp = 8; pnltmp.hbp = 43; pnltmp.hsw = 4; pnltmp.vfp = 4; pnltmp.vbp = 12; pnltmp.vsw = 10; pnltmp.pxl_clk_div = 2; pnltmp.pol = 0; pnltmp.pup_delay = 1; pnltmp.pon_delay = 1; panel_info.vl_rot = 0; memcpy((void *)panel, (void *)&pnltmp, sizeof(struct am335x_lcdpanel)); return 0; } void lcdpower(int on) { lcd_enable(); } vidinfo_t panel_info = { .vl_col = 480, .vl_row = 272, .vl_bpix = 4, .priv = 0 }; void lcd_ctrl_init(void *lcdbase) { struct am335x_lcdpanel lcd_panel; memset(&lcd_panel, 0, sizeof(struct am335x_lcdpanel)); if (load_lcdtiming(&lcd_panel) != 0) return; lcd_panel.panel_power_ctrl = &lcdpower; if (am335xfb_init(&lcd_panel) != 0) printf("ERROR: failed to initialize video!"); /* Modify panel into to real resolution */ panel_info.vl_col = lcd_panel.hactive; panel_info.vl_row = lcd_panel.vactive; // lcd_set_flush_dcache(1); } void lcd_enable(void) { lcdbacklight(1); } void splash_screen(void) { struct mmc *mmc = NULL; int err; mmc = find_mmc_device(0); if (!mmc) printf("Error finding mmc device\n"); mmc_init(mmc); err = fat_register_device(&mmc->block_dev, CONFIG_SYS_MMCSD_FS_BOOT_PARTITION); if (!err) { err = file_fat_read("splash.bmp.gz", (void *)0x82000000, 0); bmp_display(0x82000000, 0, 0); } } #endifrÒ…�rÓ}rÔ(hlUhmjÎubaubhÊ)�rÕ}rÖ(hlX!In mux.c define the LCDC pin mux.r×hmj4hwj(h|hÍh~}rØ(h€]h�]h‚]hƒ]h†]uhˆKÈh‰hhŠ]rÙh“X!In mux.c define the LCDC pin mux.rÚ…�rÛ}rÜ(hlj×hmjÕubaubjr)�rÝ}rÞ(hlXÜ#ifdef CONFIG_AM335X_LCD static struct module_pin_mux lcd_pin_mux[] = { {OFFSET(lcd_data0), (MODE(0) | PULLUDDIS)}, /* LCD-Data(0) */ {OFFSET(lcd_data1), (MODE(0) | PULLUDDIS)}, /* LCD-Data(1) */ {OFFSET(lcd_data2), (MODE(0) | PULLUDDIS)}, /* LCD-Data(2) */ {OFFSET(lcd_data3), (MODE(0) | PULLUDDIS)}, /* LCD-Data(3) */ {OFFSET(lcd_data4), (MODE(0) | PULLUDDIS)}, /* LCD-Data(4) */ {OFFSET(lcd_data5), (MODE(0) | PULLUDDIS)}, /* LCD-Data(5) */ {OFFSET(lcd_data6), (MODE(0) | PULLUDDIS)}, /* LCD-Data(6) */ {OFFSET(lcd_data7), (MODE(0) | PULLUDDIS)}, /* LCD-Data(7) */ {OFFSET(lcd_data8), (MODE(0) | PULLUDDIS)}, /* LCD-Data(8) */ {OFFSET(lcd_data9), (MODE(0) | PULLUDDIS)}, /* LCD-Data(9) */ {OFFSET(lcd_data10), (MODE(0) | PULLUDDIS)}, /* LCD-Data(10) */ {OFFSET(lcd_data11), (MODE(0) | PULLUDDIS)}, /* LCD-Data(11) */ {OFFSET(lcd_data12), (MODE(0) | PULLUDDIS)}, /* LCD-Data(12) */ {OFFSET(lcd_data13), (MODE(0) | PULLUDDIS)}, /* LCD-Data(13) */ {OFFSET(lcd_data14), (MODE(0) | PULLUDDIS)}, /* LCD-Data(14) */ {OFFSET(lcd_data15), (MODE(0) | PULLUDDIS)}, /* LCD-Data(15) */ {OFFSET(gpmc_ad8), (MODE(1) | PULLUDDIS)}, /* LCD-Data(16) */ {OFFSET(gpmc_ad9), (MODE(1) | PULLUDDIS)}, /* LCD-Data(17) */ {OFFSET(gpmc_ad10), (MODE(1) | PULLUDDIS)}, /* LCD-Data(18) */ {OFFSET(gpmc_ad11), (MODE(1) | PULLUDDIS)}, /* LCD-Data(19) */ {OFFSET(gpmc_ad12), (MODE(1) | PULLUDDIS)}, /* LCD-Data(20) */ {OFFSET(gpmc_ad13), (MODE(1) | PULLUDDIS)}, /* LCD-Data(21) */ {OFFSET(gpmc_ad14), (MODE(1) | PULLUDDIS)}, /* LCD-Data(22) */ {OFFSET(gpmc_ad15), (MODE(1) | PULLUDDIS)}, /* LCD-Data(23) */ {OFFSET(lcd_vsync), (MODE(0) | PULLUDDIS)}, /* LCD-VSync */ {OFFSET(lcd_hsync), (MODE(0) | PULLUDDIS)}, /* LCD-HSync */ {OFFSET(lcd_ac_bias_en), (MODE(0) | PULLUDDIS)},/* LCD-DE */ {OFFSET(lcd_pclk), (MODE(0) | PULLUDDIS)}, /* LCD-CLK */ /* backlight */ {OFFSET(mcasp0_ahclkr), (MODE(7) | PULLUDDIS)}, /* mcasp0_gpio */ {-1}, }; #endifhmj4hwj(h|juh~}rß(hŸh hƒ]h‚]h€]h�]h†]uhˆM; h‰hhŠ]ràh“XÜ#ifdef CONFIG_AM335X_LCD static struct module_pin_mux lcd_pin_mux[] = { {OFFSET(lcd_data0), (MODE(0) | PULLUDDIS)}, /* LCD-Data(0) */ {OFFSET(lcd_data1), (MODE(0) | PULLUDDIS)}, /* LCD-Data(1) */ {OFFSET(lcd_data2), (MODE(0) | PULLUDDIS)}, /* LCD-Data(2) */ {OFFSET(lcd_data3), (MODE(0) | PULLUDDIS)}, /* LCD-Data(3) */ {OFFSET(lcd_data4), (MODE(0) | PULLUDDIS)}, /* LCD-Data(4) */ {OFFSET(lcd_data5), (MODE(0) | PULLUDDIS)}, /* LCD-Data(5) */ {OFFSET(lcd_data6), (MODE(0) | PULLUDDIS)}, /* LCD-Data(6) */ {OFFSET(lcd_data7), (MODE(0) | PULLUDDIS)}, /* LCD-Data(7) */ {OFFSET(lcd_data8), (MODE(0) | PULLUDDIS)}, /* LCD-Data(8) */ {OFFSET(lcd_data9), (MODE(0) | PULLUDDIS)}, /* LCD-Data(9) */ {OFFSET(lcd_data10), (MODE(0) | PULLUDDIS)}, /* LCD-Data(10) */ {OFFSET(lcd_data11), (MODE(0) | PULLUDDIS)}, /* LCD-Data(11) */ {OFFSET(lcd_data12), (MODE(0) | PULLUDDIS)}, /* LCD-Data(12) */ {OFFSET(lcd_data13), (MODE(0) | PULLUDDIS)}, /* LCD-Data(13) */ {OFFSET(lcd_data14), (MODE(0) | PULLUDDIS)}, /* LCD-Data(14) */ {OFFSET(lcd_data15), (MODE(0) | PULLUDDIS)}, /* LCD-Data(15) */ {OFFSET(gpmc_ad8), (MODE(1) | PULLUDDIS)}, /* LCD-Data(16) */ {OFFSET(gpmc_ad9), (MODE(1) | PULLUDDIS)}, /* LCD-Data(17) */ {OFFSET(gpmc_ad10), (MODE(1) | PULLUDDIS)}, /* LCD-Data(18) */ {OFFSET(gpmc_ad11), (MODE(1) | PULLUDDIS)}, /* LCD-Data(19) */ {OFFSET(gpmc_ad12), (MODE(1) | PULLUDDIS)}, /* LCD-Data(20) */ {OFFSET(gpmc_ad13), (MODE(1) | PULLUDDIS)}, /* LCD-Data(21) */ {OFFSET(gpmc_ad14), (MODE(1) | PULLUDDIS)}, /* LCD-Data(22) */ {OFFSET(gpmc_ad15), (MODE(1) | PULLUDDIS)}, /* LCD-Data(23) */ {OFFSET(lcd_vsync), (MODE(0) | PULLUDDIS)}, /* LCD-VSync */ {OFFSET(lcd_hsync), (MODE(0) | PULLUDDIS)}, /* LCD-HSync */ {OFFSET(lcd_ac_bias_en), (MODE(0) | PULLUDDIS)},/* LCD-DE */ {OFFSET(lcd_pclk), (MODE(0) | PULLUDDIS)}, /* LCD-CLK */ /* backlight */ {OFFSET(mcasp0_ahclkr), (MODE(7) | PULLUDDIS)}, /* mcasp0_gpio */ {-1}, }; #endifrá…�râ}rã(hlUhmjÝubaubhÊ)�rä}rå(hlXAnd enable the LCD.ræhmj4hwj(h|hÍh~}rç(h€]h�]h‚]hƒ]h†]uhˆKòh‰hhŠ]rèh“XAnd enable the LCD.ré…�rê}rë(hljæhmjäubaubjr)�rì}rí(hlX¹ } else if (board_is_evm_sk()) { /* Starter Kit EVM */ configure_module_pin_mux(i2c1_pin_mux); configure_module_pin_mux(gpio0_7_pin_mux); configure_module_pin_mux(rgmii1_pin_mux); configure_module_pin_mux(mmc0_pin_mux_sk_evm); #ifdef CONFIG_AM335X_LCD configure_module_pin_mux(lcd_pin_mux); #endif } else if (board_is_bone_lt()) {hmj4hwXsinternal padding after source/linux/Foundational_Components/U-Boot/Processor_SDK_Linux_U-Boot_Splash_Screen.rst.incrîh|juh~}rï(hŸh hƒ]h‚]h€]h�]h†]uhˆMe h‰hhŠ]rðh“X¹ } else if (board_is_evm_sk()) { /* Starter Kit EVM */ configure_module_pin_mux(i2c1_pin_mux); configure_module_pin_mux(gpio0_7_pin_mux); configure_module_pin_mux(rgmii1_pin_mux); configure_module_pin_mux(mmc0_pin_mux_sk_evm); #ifdef CONFIG_AM335X_LCD configure_module_pin_mux(lcd_pin_mux); #endif } else if (board_is_bone_lt()) {rñ…�rò}ró(hlUhmjìubaubeubhn)�rô}rõ(hlUhmhuhwhzh|h}h~}rö(h€]h�]h‚]hƒ]r÷Utroubleshootingrøah†]rùh3auhˆK(h‰hhŠ]rú(hŒ)�rû}rü(hlXTroubleshootingrýhmjôhwhzh|h�h~}rþ(h€]h�]h‚]hƒ]h†]uhˆK(h‰hhŠ]rÿh“XTroubleshootingr…�r}r(hljýhmjûubaubcdocutils.nodes enumerated_list r)�r}r(hlUhmjôhwhzh|Uenumerated_listrh~}r(UsuffixrU.hƒ]h‚]h€]Uprefixr Uh�]h†]Uenumtyper Uarabicr uhˆK*h‰hhŠ]r cdocutils.nodes list_item r )�r}r(hlX+After U-boot upgrade, Kernel stops booting hmjhwhzh|U list_itemrh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r}r(hlX*After U-boot upgrade, Kernel stops bootingrhmjhwhzh|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆK*hŠ]rh“X*After U-boot upgrade, Kernel stops bootingr…�r}r(hljhmjubaubaubaubhÊ)�r}r(hlX(Check if one of the cases below applies:rhmjôhwhzh|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆK,h‰hhŠ]rh“X(Check if one of the cases below applies:r …�r!}r"(hljhmjubaubcdocutils.nodes bullet_list r#)�r$}r%(hlUhmjôhwhzh|U bullet_listr&h~}r'(Ubulletr(X-hƒ]h‚]h€]h�]h†]uhˆK.h‰hhŠ]r)(j )�r*}r+(hlXfNot resetting U-boot environment variables after upgrading/downgrading u-boot version From release to release, some of the u-boot environment variables may be changed. To guarantee the environment variables are correctly matching the version used, it is required to reset the u-boot environment variables When upgrading/downgrading u-boot version. When booting up a different version of u-boot, the u-boot boot process can be interruptted by hitting any key to get the u-boot prompt. Then, the following command needs to issue to reset the u-boot environment variables. | # env default -f -a | # saveenv hmj$hwhzh|jh~}r,(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r-(hÊ)�r.}r/(hlXUNot resetting U-boot environment variables after upgrading/downgrading u-boot versionr0hmj*hwhzh|hÍh~}r1(h€]h�]h‚]hƒ]h†]uhˆK.hŠ]r2h“XUNot resetting U-boot environment variables after upgrading/downgrading u-boot versionr3…�r4}r5(hlj0hmj.ubaubhÊ)�r6}r7(hlXãFrom release to release, some of the u-boot environment variables may be changed. To guarantee the environment variables are correctly matching the version used, it is required to reset the u-boot environment variables When upgrading/downgrading u-boot version. When booting up a different version of u-boot, the u-boot boot process can be interruptted by hitting any key to get the u-boot prompt. Then, the following command needs to issue to reset the u-boot environment variables.r8hmj*hwhzh|hÍh~}r9(h€]h�]h‚]hƒ]h†]uhˆK0hŠ]r:h“XãFrom release to release, some of the u-boot environment variables may be changed. To guarantee the environment variables are correctly matching the version used, it is required to reset the u-boot environment variables When upgrading/downgrading u-boot version. When booting up a different version of u-boot, the u-boot boot process can be interruptted by hitting any key to get the u-boot prompt. Then, the following command needs to issue to reset the u-boot environment variables.r;…�r<}r=(hlj8hmj6ubaubcdocutils.nodes block_quote r>)�r?}r@(hlUh~}rA(h€]h�]h‚]hƒ]h†]uhmj*hŠ]rBcdocutils.nodes line_block rC)�rD}rE(hlUh~}rF(h€]h�]h‚]hƒ]h†]uhmj?hŠ]rG(cdocutils.nodes line rH)�rI}rJ(hlX# env default -f -arKUindentrLKhmjDhwhzh|hˆh~}rM(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rNh“X# env default -f -arO…�rP}rQ(hljKhmjIubaubjH)�rR}rS(hlX # saveenvrTjLKhmjDhwhzh|hˆh~}rU(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rVh“X # saveenvrW…�rX}rY(hljThmjRubaubeh|U line_blockrZubah|U block_quoter[ubeubj )�r\}r](hlX€Mix-matching U-boot and Linux kernel version There are times that users mix-match u-boot and kernel version from different SDK releases. It probably is fine in most cases, but TI recommends the u-boot and kernel are from the same SDK release. From release to release, the u-boot environemt variables may change, including load addresses, kernel image format, etc. Any of the incompatibility of these changes between u-boot and kernel will cause boot issues. Therefore, when u-boot is upgraded or downgreaded, a reset of the u-boot environment variables is requried. Please see how to reset u-boot environment variables in previous bullet. hmj$hwhzh|jh~}r^(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r_(hÊ)�r`}ra(hlX,Mix-matching U-boot and Linux kernel versionrbhmj\hwhzh|hÍh~}rc(h€]h�]h‚]hƒ]h†]uhˆK:hŠ]rdh“X,Mix-matching U-boot and Linux kernel versionre…�rf}rg(hljbhmj`ubaubhÊ)�rh}ri(hlXQThere are times that users mix-match u-boot and kernel version from different SDK releases. It probably is fine in most cases, but TI recommends the u-boot and kernel are from the same SDK release. From release to release, the u-boot environemt variables may change, including load addresses, kernel image format, etc. Any of the incompatibility of these changes between u-boot and kernel will cause boot issues. Therefore, when u-boot is upgraded or downgreaded, a reset of the u-boot environment variables is requried. Please see how to reset u-boot environment variables in previous bullet.rjhmj\hwhzh|hÍh~}rk(h€]h�]h‚]hƒ]h†]uhˆK`__jLKhmj‘hwhzh|hˆh~}r—(h€]h�]h‚]hƒ]h†]uhˆKIh‰hhŠ]r˜(h“XPlease follow instructions in r™…�rš}r›(hlXPlease follow instructions in hmj•ubhÓ)�rœ}r�(hlXQ`U-boot User's Guide `__h~}rž(UnameXU-boot User's Guideh×X7Foundational_Components_U-Boot.html#u-boot-user-s-guidehƒ]h‚]h€]h�]h†]uhmj•hŠ]rŸh“XU-boot User's Guider …�r¡}r¢(hlUhmjœubah|hÜubeubjH)�r£}r¤(hlUjLKhmj‘hwhzh|hˆh~}r¥(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubeubjC)�r¦}r§(hlUhmjôhwhzh|jZh~}r¨(h€]h�]h‚]hƒ]h†]uhˆKLh‰hhŠ]r©jH)�rª}r«(hlX:Different boot modes ues diferent image formats. They are:r¬jLKhmj¦hwhzh|hˆh~}r­(h€]h�]h‚]hƒ]h†]uhˆKLh‰hhŠ]r®h“X:Different boot modes ues diferent image formats. They are:r¯…�r°}r±(hlj¬hmjªubaubaubj>)�r²}r³(hlUhmjôhwNh|j[h~}r´(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rµj#)�r¶}r·(hlUh~}r¸(j(X-hƒ]h‚]h€]h�]h†]uhmj²hŠ]r¹(j )�rº}r»(hlXu-boot-spi.gphr¼h~}r½(h€]h�]h‚]hƒ]h†]uhmj¶hŠ]r¾hÊ)�r¿}rÀ(hlj¼hmjºhwhzh|hÍh~}rÁ(h€]h�]h‚]hƒ]h†]uhˆKNhŠ]rÂh“Xu-boot-spi.gphrÃ…�rÄ}rÅ(hlj¼hmj¿ubaubah|jubj )�rÆ}rÇ(hlXrootfs-image.ubirÈh~}rÉ(h€]h�]h‚]hƒ]h†]uhmj¶hŠ]rÊhÊ)�rË}rÌ(hljÈhmjÆhwhzh|hÍh~}rÍ(h€]h�]h‚]hƒ]h†]uhˆKOhŠ]rÎh“Xrootfs-image.ubirÏ…�rÐ}rÑ(hljÈhmjËubaubah|jubj )�rÒ}rÓ(hlX u-boot.binrÔh~}rÕ(h€]h�]h‚]hƒ]h†]uhmj¶hŠ]rÖhÊ)�r×}rØ(hljÔhmjÒhwhzh|hÍh~}rÙ(h€]h�]h‚]hƒ]h†]uhˆKPhŠ]rÚh“X u-boot.binrÛ…�rÜ}rÝ(hljÔhmj×ubaubah|jubj )�rÞ}rß(hlXMLO h~}rà(h€]h�]h‚]hƒ]h†]uhmj¶hŠ]ráhÊ)�râ}rã(hlXMLOrähmjÞhwhzh|hÍh~}rå(h€]h�]h‚]hƒ]h†]uhˆKQhŠ]ræh“XMLOrç…�rè}ré(hljähmjâubaubah|jubeh|j&ubaubhÃ)�rê}rë(hlUhmjôhwhzh|hÆh~}rì(hÈXCONFIG_sdk in ('PLSDK')hƒ]h‚]h€]h�]h†]uhˆKSh‰hhŠ]ríhÊ)�rî}rï(hlXFor Keystone-2 platforms, U-boot can also be brought up using CCS. The step-by-step instruction on booting up u-boot with one of the boot modes or using CCS are documented in /board-support/u-boot-/board/ti/ks2_evm/README file.rðhmjêhwhzh|hÍh~}rñ(h€]h�]h‚]hƒ]h†]uhˆKUh‰hhŠ]ròh“XFor Keystone-2 platforms, U-boot can also be brought up using CCS. The step-by-step instruction on booting up u-boot with one of the boot modes or using CCS are documented in /board-support/u-boot-/board/ti/ks2_evm/README file.ró…�rô}rõ(hljðhmjîubaubaubeubeubhwh›h|h}h~}rö(h€]h�]h‚]hƒ]r÷Uu-boot-user-s-guiderøah†]rùh?auhˆKh‰hhŠ]rú(hŒ)�rû}rü(hlXU-Boot User's Guiderýhmhshwh›h|h�h~}rþ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]rÿh“XU-Boot User's Guider…�r}r(hljýhmjûubaubhn)�r}r(hlUhmhshwh›h|h}h~}r(h€]h�]h‚]hƒ]rUoverviewrah†]rh2auhˆKh‰hhŠ]r (hŒ)�r }r (hlXOverviewr hmjhwh›h|h�h~}r (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]rh“XOverviewr…�r}r(hlj hmj ubaubhÊ)�r}r(hlX\This document covers the general use of Linux Core Release of U-Boot on following platforms:rhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆK h‰hhŠ]rh“X\This document covers the general use of Linux Core Release of U-Boot on following platforms:r…�r}r(hljhmjubaubhÊ)�r}r(hlX**32-bit platforms**rhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆK h‰hhŠ]rcdocutils.nodes strong r)�r }r!(hljh~}r"(h€]h�]h‚]hƒ]h†]uhmjhŠ]r#h“X32-bit platformsr$…�r%}r&(hlUhmj ubah|Ustrongr'ubaubj>)�r(}r)(hlUhmjhwNh|j[h~}r*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r+j#)�r,}r-(hlUh~}r.(j(X-hƒ]h‚]h€]h�]h†]uhmj(hŠ]r/(j )�r0}r1(hlX6`AM335x GP EVM `__r2h~}r3(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r4hÊ)�r5}r6(hlj2hmj0hwh›h|hÍh~}r7(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r8hÓ)�r9}r:(hlj2h~}r;(UnameX AM335x GP EVMh×X"http://www.ti.com/tool/tmdxevm3358hƒ]h‚]h€]h�]h†]uhmj5hŠ]r<h“X AM335x GP EVMr=…�r>}r?(hlUhmj9ubah|hÜubaubah|jubj )�r@}rA(hlX5`AM335x EVM-SK `__rBh~}rC(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rDhÊ)�rE}rF(hljBhmj@hwh›h|hÍh~}rG(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rHhÓ)�rI}rJ(hljBh~}rK(UnameX AM335x EVM-SKh×X!http://www.ti.com/tool/tmdssk3358hƒ]h‚]h€]h�]h†]uhmjEhŠ]rLh“X AM335x EVM-SKrM…�rN}rO(hlUhmjIubah|hÜubaubah|jubj )�rP}rQ(hlX3`AM335x ICE `__rRh~}rS(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rThÊ)�rU}rV(hljRhmjPhwh›h|hÍh~}rW(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rXhÓ)�rY}rZ(hljRh~}r[(UnameX AM335x ICEh×X"http://www.ti.com/tool/tmdsice3359hƒ]h‚]h€]h�]h†]uhmjUhŠ]r\h“X AM335x ICEr]…�r^}r_(hlUhmjYubah|hÜubaubah|jubj )�r`}ra(hlX2`BeagleBone White `__rbh~}rc(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rdhÊ)�re}rf(hljbhmj`hwh›h|hÍh~}rg(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rhhÓ)�ri}rj(hljbh~}rk(UnameXBeagleBone Whiteh×Xhttp://beagleboard.org/bonehƒ]h‚]h€]h�]h†]uhmjehŠ]rlh“XBeagleBone Whiterm…�rn}ro(hlUhmjiubah|hÜubaubah|jubj )�rp}rq(hlX4`BeagleBone Black `__rrh~}rs(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rthÊ)�ru}rv(hljrhmjphwh›h|hÍh~}rw(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rxhÓ)�ry}rz(hljrh~}r{(UnameXBeagleBone Blackh×Xhttps://beagleboard.org/blackhƒ]h‚]h€]h�]h†]uhmjuhŠ]r|h“XBeagleBone Blackr}…�r~}r(hlUhmjyubah|hÜubaubah|jubj )�r€}r�(hlX2`DRA76x EVM `__r‚h~}rƒ(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r„hÊ)�r…}r†(hlj‚hmj€hwh›h|hÍh~}r‡(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rˆhÓ)�r‰}rŠ(hlj‚h~}r‹(UnameX DRA76x EVMh×X!http://www.ti.com/tool/J6PEVM577Phƒ]h‚]h€]h�]h†]uhmj…hŠ]rŒh“X DRA76x EVMr�…�rŽ}r�(hlUhmj‰ubah|hÜubaubah|jubj )�r�}r‘(hlX1`DRA74x EVM `__r’h~}r“(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r”hÊ)�r•}r–(hlj’hmj�hwh›h|hÍh~}r—(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r˜hÓ)�r™}rš(hlj’h~}r›(UnameX DRA74x EVMh×X http://www.ti.com/tool/j6evm5777hƒ]h‚]h€]h�]h†]uhmj•hŠ]rœh“X DRA74x EVMr�…�rž}rŸ(hlUhmj™ubah|hÜubaubah|jubj )�r }r¡(hlX1`DRA72x EVM `__r¢h~}r£(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r¤hÊ)�r¥}r¦(hlj¢hmj hwh›h|hÍh~}r§(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r¨hÓ)�r©}rª(hlj¢h~}r«(UnameX DRA72x EVMh×X http://www.ti.com/tool/dra72xevmhƒ]h‚]h€]h�]h†]uhmj¥hŠ]r¬h“X DRA72x EVMr­…�r®}r¯(hlUhmj©ubah|hÜubaubah|jubj )�r°}r±(hlX1`DRA71x EVM `__r²h~}r³(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r´hÊ)�rµ}r¶(hlj²hmj°hwh›h|hÍh~}r·(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r¸hÓ)�r¹}rº(hlj²h~}r»(UnameX DRA71x EVMh×X http://www.ti.com/product/DRA718hƒ]h‚]h€]h�]h†]uhmjµhŠ]r¼h“X DRA71x EVMr½…�r¾}r¿(hlUhmj¹ubah|hÜubaubah|jubj )�rÀ}rÁ(hlX6`AM437x GP EVM `__rÂh~}rÃ(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rÄhÊ)�rÅ}rÆ(hljÂhmjÀhwh›h|hÍh~}rÇ(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rÈhÓ)�rÉ}rÊ(hljÂh~}rË(UnameX AM437x GP EVMh×X"http://www.ti.com/tool/tmdsevm437xhƒ]h‚]h€]h�]h†]uhmjÅhŠ]rÌh“X AM437x GP EVMrÍ…�rÎ}rÏ(hlUhmjÉubah|hÜubaubah|jubj )�rÐ}rÑ(hlXAM43xx ePOS EVMrÒh~}rÓ(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rÔhÊ)�rÕ}rÖ(hljÒhmjÐhwh›h|hÍh~}r×(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rØh“XAM43xx ePOS EVMrÙ…�rÚ}rÛ(hljÒhmjÕubaubah|jubj )�rÜ}rÝ(hlX5`AM437x EVM-SK `__rÞh~}rß(h€]h�]h‚]hƒ]h†]uhmj,hŠ]ràhÊ)�rá}râ(hljÞhmjÜhwh›h|hÍh~}rã(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rähÓ)�rå}ræ(hljÞh~}rç(UnameX AM437x EVM-SKh×X!http://www.ti.com/tool/tmdxsk437xhƒ]h‚]h€]h�]h†]uhmjáhŠ]rèh“X AM437x EVM-SKré…�rê}rë(hlUhmjåubah|hÜubaubah|jubj )�rì}rí(hlX3`AM437x IDK `__rîh~}rï(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rðhÊ)�rñ}rò(hljîhmjìhwh›h|hÍh~}ró(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rôhÓ)�rõ}rö(hljîh~}r÷(UnameX AM437x IDKh×X"http://www.ti.com/tool/TMDSIDK437Xhƒ]h‚]h€]h�]h†]uhmjñhŠ]røh“X AM437x IDKrù…�rú}rû(hlUhmjõubah|hÜubaubah|jubj )�rü}rý(hlX2`AM574x IDK `__rþh~}rÿ(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rhÊ)�r}r(hljþhmjühwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rhÓ)�r}r(hljþh~}r(UnameX AM574x IDKh×X!http://www.ti.com/tool/TMDSIDK574hƒ]h‚]h€]h�]h†]uhmjhŠ]rh“X AM574x IDKr …�r }r (hlUhmjubah|hÜubaubah|jubj )�r }r (hlX6`AM572x GP EVM `__rh~}r(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rhÊ)�r}r(hljhmj hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rhÓ)�r}r(hljh~}r(UnameX AM572x GP EVMh×X"http://www.ti.com/tool/tmdsevm572xhƒ]h‚]h€]h�]h†]uhmjhŠ]rh“X AM572x GP EVMr…�r}r(hlUhmjubah|hÜubaubah|jubj )�r}r(hlX3`AM572x IDK `__rh~}r(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r hÊ)�r!}r"(hljhmjhwh›h|hÍh~}r#(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r$hÓ)�r%}r&(hljh~}r'(UnameX AM572x IDKh×X"http://www.ti.com/tool/TMDXIDK5728hƒ]h‚]h€]h�]h†]uhmj!hŠ]r(h“X AM572x IDKr)…�r*}r+(hlUhmj%ubah|hÜubaubah|jubj )�r,}r-(hlX3`AM571x IDK `__r.h~}r/(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r0hÊ)�r1}r2(hlj.hmj,hwh›h|hÍh~}r3(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r4hÓ)�r5}r6(hlj.h~}r7(UnameX AM571x IDKh×X"http://www.ti.com/tool/tmdxidk5718hƒ]h‚]h€]h�]h†]uhmj1hŠ]r8h“X AM571x IDKr9…�r:}r;(hlUhmj5ubah|hÜubaubah|jubj )�r<}r=(hlX.`66AK2H EVM `__r>h~}r?(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r@hÊ)�rA}rB(hlj>hmj<hwh›h|hÍh~}rC(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rDhÓ)�rE}rF(hlj>h~}rG(UnameX 66AK2H EVMh×Xhttp://www.ti.com/tool/EVMK2Hhƒ]h‚]h€]h�]h†]uhmjAhŠ]rHh“X 66AK2H EVMrI…�rJ}rK(hlUhmjEubah|hÜubaubah|jubj )�rL}rM(hlXK2K EVMrNh~}rO(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rPhÊ)�rQ}rR(hljNhmjLhwh›h|hÍh~}rS(h€]h�]h‚]hƒ]h†]uhˆK hŠ]rTh“XK2K EVMrU…�rV}rW(hljNhmjQubaubah|jubj )�rX}rY(hlX.`K2Ex EVM `__rZh~}r[(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r\hÊ)�r]}r^(hljZhmjXhwh›h|hÍh~}r_(h€]h�]h‚]hƒ]h†]uhˆK!hŠ]r`hÓ)�ra}rb(hljZh~}rc(UnameXK2Ex EVMh×Xhttp://www.ti.com/tool/xevmk2exhƒ]h‚]h€]h�]h†]uhmj]hŠ]rdh“XK2Ex EVMre…�rf}rg(hlUhmjaubah|hÜubaubah|jubj )�rh}ri(hlX-`K2L EVM `__rjh~}rk(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rlhÊ)�rm}rn(hljjhmjhhwh›h|hÍh~}ro(h€]h�]h‚]hƒ]h†]uhˆK"hŠ]rphÓ)�rq}rr(hljjh~}rs(UnameXK2L EVMh×Xhttp://www.ti.com/tool/xevmk2lxhƒ]h‚]h€]h�]h†]uhmjmhŠ]rth“XK2L EVMru…�rv}rw(hlUhmjqubah|hÜubaubah|jubj )�rx}ry(hlX.`K2G GP EVM `__rzh~}r{(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r|hÊ)�r}}r~(hljzhmjxhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆK#hŠ]r€hÓ)�r�}r‚(hljzh~}rƒ(UnameX K2G GP EVMh×Xhttp://www.ti.com/tool/evmk2ghƒ]h‚]h€]h�]h†]uhmj}hŠ]r„h“X K2G GP EVMr……�r†}r‡(hlUhmj�ubah|hÜubaubah|jubj )�rˆ}r‰(hlX/`K2G ICE EVM `__rŠh~}r‹(h€]h�]h‚]hƒ]h†]uhmj,hŠ]rŒhÊ)�r�}rŽ(hljŠhmjˆhwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆK$hŠ]r�hÓ)�r‘}r’(hljŠh~}r“(UnameX K2G ICE EVMh×Xhttp://www.ti.com/tool/k2gicehƒ]h‚]h€]h�]h†]uhmj�hŠ]r”h“X K2G ICE EVMr•…�r–}r—(hlUhmj‘ubah|hÜubaubah|jubj )�r˜}r™(hlX9`OMAP-L138 LCDK `__ h~}rš(h€]h�]h‚]hƒ]h†]uhmj,hŠ]r›hÊ)�rœ}r�(hlX8`OMAP-L138 LCDK `__ržhmj˜hwh›h|hÍh~}rŸ(h€]h�]h‚]hƒ]h†]uhˆK%hŠ]r hÓ)�r¡}r¢(hljžh~}r£(UnameXOMAP-L138 LCDKh×X#http://www.ti.com/product/omap-l138hƒ]h‚]h€]h�]h†]uhmjœhŠ]r¤h“XOMAP-L138 LCDKr¥…�r¦}r§(hlUhmj¡ubah|hÜubaubah|jubeh|j&ubaubhÊ)�r¨}r©(hlX**64-bit platforms**rªhmjhwh›h|hÍh~}r«(h€]h�]h‚]hƒ]h†]uhˆK'h‰hhŠ]r¬j)�r­}r®(hljªh~}r¯(h€]h�]h‚]hƒ]h†]uhmj¨hŠ]r°h“X64-bit platformsr±…�r²}r³(hlUhmj­ubah|j'ubaubj>)�r´}rµ(hlUhmjhwNh|j[h~}r¶(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r·j#)�r¸}r¹(hlUh~}rº(j(X-hƒ]h‚]h€]h�]h†]uhmj´hŠ]r»(j )�r¼}r½(hlX3`AM65x EVM `__r¾h~}r¿(h€]h�]h‚]hƒ]h†]uhmj¸hŠ]rÀhÊ)�rÁ}rÂ(hlj¾hmj¼hwh›h|hÍh~}rÃ(h€]h�]h‚]hƒ]h†]uhˆK)hŠ]rÄhÓ)�rÅ}rÆ(hlj¾h~}rÇ(UnameX AM65x EVMh×X#http://www.ti.com/tool/TMDX654GPEVMhƒ]h‚]h€]h�]h†]uhmjÁhŠ]rÈh“X AM65x EVMrÉ…�rÊ}rË(hlUhmjÅubah|hÜubaubah|jubj )�rÌ}rÍ(hlX4`AM65x IDK `__rÎh~}rÏ(h€]h�]h‚]hƒ]h†]uhmj¸hŠ]rÐhÊ)�rÑ}rÒ(hljÎhmjÌhwh›h|hÍh~}rÓ(h€]h�]h‚]hƒ]h†]uhˆK*hŠ]rÔhÓ)�rÕ}rÖ(hljÎh~}r×(UnameX AM65x IDKh×X$http://www.ti.com/tool/TMDX654IDKEVMhƒ]h‚]h€]h�]h†]uhmjÑhŠ]rØh“X AM65x IDKrÙ…�rÚ}rÛ(hlUhmjÕubah|hÜubaubah|jubj )�rÜ}rÝ(hlX J721E EVM h~}rÞ(h€]h�]h‚]hƒ]h†]uhmj¸hŠ]rßhÊ)�rà}rá(hlX J721E EVMrâhmjÜhwh›h|hÍh~}rã(h€]h�]h‚]hƒ]h†]uhˆK+hŠ]räh“X J721E EVMrå…�ræ}rç(hljâhmjàubaubah|jubeh|j&ubaubeubhqhn)�rè}ré(hlUhmhshwh›h|h}h~}rê(h€]h�]h‚]hƒ]rëUusb-device-firmware-upgrade-dfurìah†]ríhHauhˆM9h‰hhŠ]rî(hŒ)�rï}rð(hlX!USB Device Firmware Upgrade (DFU)rñhmjèhwh›h|h�h~}rò(h€]h�]h‚]hƒ]h†]uhˆM9h‰hhŠ]róh“X!USB Device Firmware Upgrade (DFU)rô…�rõ}rö(hljñhmjïubaubhÊ)�r÷}rø(hlX¿When working with USB Device Firmware Upgrade (DFU), regardless of the medium to be written to and of the board being used, there are some general things to keep in mind. First of all, you will need to get a copy of the **dfu-util** program installed on your host. If your distribution does not provide this package you will need to build it from source. Second, the examples that follow assume a single board is plugged into the host PC. If you have more than one device plugged in you will need to use the options that **dfu-util** provides for specifying a single device to work with. Finally, to program via DFU for a given storage device see the section for the storage device you are working with.hmjèhwh›h|hÍh~}rù(h€]h�]h‚]hƒ]h†]uhˆM;h‰hhŠ]rú(h“XÜWhen working with USB Device Firmware Upgrade (DFU), regardless of the medium to be written to and of the board being used, there are some general things to keep in mind. First of all, you will need to get a copy of the rû…�rü}rý(hlXÜWhen working with USB Device Firmware Upgrade (DFU), regardless of the medium to be written to and of the board being used, there are some general things to keep in mind. First of all, you will need to get a copy of the hmj÷ubj)�rþ}rÿ(hlX **dfu-util**h~}r(h€]h�]h‚]hƒ]h†]uhmj÷hŠ]rh“Xdfu-utilr…�r}r(hlUhmjþubah|j'ubh“X! program installed on your host. If your distribution does not provide this package you will need to build it from source. Second, the examples that follow assume a single board is plugged into the host PC. If you have more than one device plugged in you will need to use the options that r…�r}r(hlX! program installed on your host. If your distribution does not provide this package you will need to build it from source. Second, the examples that follow assume a single board is plugged into the host PC. If you have more than one device plugged in you will need to use the options that hmj÷ubj)�r}r (hlX **dfu-util**h~}r (h€]h�]h‚]hƒ]h†]uhmj÷hŠ]r h“Xdfu-utilr …�r }r(hlUhmjubah|j'ubh“Xª provides for specifying a single device to work with. Finally, to program via DFU for a given storage device see the section for the storage device you are working with.r…�r}r(hlXª provides for specifying a single device to work with. Finally, to program via DFU for a given storage device see the section for the storage device you are working with.hmj÷ubeubhn)�r}r(hlUhmjèhwh›h|h}h~}r(h€]h�]h‚]hƒ]rU(usb-peripheral-boot-mode-spl-dfu-supportrah†]rh^auhˆMHh‰hhŠ]r(hŒ)�r}r(hlX*USB Peripheral boot mode (SPL-DFU support)rhmjhwh›h|h�h~}r(h€]h�]h‚]hƒ]h†]uhˆMHh‰hhŠ]rh“X*USB Peripheral boot mode (SPL-DFU support)r…�r}r (hljhmjubaubhÊ)�r!}r"(hlXªThe USB Peripheral boot mode is used to boot using USB interface using SPL-DFU feature. Steps outlined here can be used on platform that support USB Peripheral boot mode.r#hmjhwh›h|hÍh~}r$(h€]h�]h‚]hƒ]h†]uhˆMIh‰hhŠ]r%h“XªThe USB Peripheral boot mode is used to boot using USB interface using SPL-DFU feature. Steps outlined here can be used on platform that support USB Peripheral boot mode.r&…�r'}r((hlj#hmj!ubaubj)�r)}r*(hlUhmjhwh›h|jh~}r+(jU.hƒ]h‚]h€]j Uh�]h†]j j uhˆMMh‰hhŠ]r,(j )�r-}r.(hlXCEnable the SPL-DFU feature in u-boot and build MLO/u-boot binaries.r/hmj)hwh›h|jh~}r0(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r1hÊ)�r2}r3(hlj/hmj-hwh›h|hÍh~}r4(h€]h�]h‚]hƒ]h†]uhˆMMhŠ]r5h“XCEnable the SPL-DFU feature in u-boot and build MLO/u-boot binaries.r6…�r7}r8(hlj/hmj2ubaubaubj )�r9}r:(hlX<Load the MLO and u-boot.img using the dfu-util from host PC.r;hmj)hwh›h|jh~}r<(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r=hÊ)�r>}r?(hlj;hmj9hwh›h|hÍh~}r@(h€]h�]h‚]hƒ]h†]uhˆMNhŠ]rAh“X<Load the MLO and u-boot.img using the dfu-util from host PC.rB…�rC}rD(hlj;hmj>ubaubaubj )�rE}rF(hlX Once the u-boot is up, use DFU command from u-boot to flash the binary images from Host PC (using dfu-utils tool) to the eMMC, or QSPI to fresh/factory boards. hmj)hwh›h|jh~}rG(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rHhÊ)�rI}rJ(hlXŸOnce the u-boot is up, use DFU command from u-boot to flash the binary images from Host PC (using dfu-utils tool) to the eMMC, or QSPI to fresh/factory boards.rKhmjEhwh›h|hÍh~}rL(h€]h�]h‚]hƒ]h†]uhˆMOhŠ]rMh“XŸOnce the u-boot is up, use DFU command from u-boot to flash the binary images from Host PC (using dfu-utils tool) to the eMMC, or QSPI to fresh/factory boards.rN…�rO}rP(hljKhmjIubaubaubeubj#)�rQ}rR(hlUhmjhwh›h|j&h~}rS(j(X-hƒ]h‚]h€]h�]h†]uhˆMSh‰hhŠ]rT(j )�rU}rV(hlX.Example provided here is for dra7xx platform. hmjQhwh›h|jh~}rW(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rXhÊ)�rY}rZ(hlX-Example provided here is for dra7xx platform.r[hmjUhwh›h|hÍh~}r\(h€]h�]h‚]hƒ]h†]uhˆMShŠ]r]h“X-Example provided here is for dra7xx platform.r^…�r_}r`(hlj[hmjYubaubaubj )�ra}rb(hlXNUse default "dra7xx\_evm\_defconfig" to build spl/u-boot-spl.bin, u-boot.img. hmjQhwh›h|jh~}rc(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rdhÊ)�re}rf(hlXMUse default "dra7xx\_evm\_defconfig" to build spl/u-boot-spl.bin, u-boot.img.hmjahwh›h|hÍh~}rg(h€]h�]h‚]hƒ]h†]uhˆMUhŠ]rhh“XKUse default "dra7xx_evm_defconfig" to build spl/u-boot-spl.bin, u-boot.img.ri…�rj}rk(hlXMUse default "dra7xx\_evm\_defconfig" to build spl/u-boot-spl.bin, u-boot.img.hmjeubaubaubeubjr)�rl}rm(hlX7host$ make dra7xx_evm_defconfig host$ make menuconfig select SPL/DFU support menuconfig->SPL/TPL---> .. [*] Support booting from RAM [*] Support USB Gadget drivers [ ] Support USB Ethernet drivers [*] Support DFU (Device Firmware Upgrade) DFU device selection (RAM device) -->hmjhwh›h|juh~}rn(hŸh hƒ]h‚]h€]h�]h†]uhˆMeh‰hhŠ]roh“X7host$ make dra7xx_evm_defconfig host$ make menuconfig select SPL/DFU support menuconfig->SPL/TPL---> .. [*] Support booting from RAM [*] Support USB Gadget drivers [ ] Support USB Ethernet drivers [*] Support DFU (Device Firmware Upgrade) DFU device selection (RAM device) -->rp…�rq}rr(hlUhmjlubaubjr)�rs}rt(hlXwUnselect CONFIG_HUSH_PARSER menuconfig--->Command Line interface [*] Support U-boot commands [ ] Use hush shellhmjhwh›h|juh~}ru(hŸh hƒ]h‚]h€]h�]h†]uhˆMsh‰hhŠ]rvh“XwUnselect CONFIG_HUSH_PARSER menuconfig--->Command Line interface [*] Support U-boot commands [ ] Use hush shellrw…�rx}ry(hlUhmjsubaubj#)�rz}r{(hlUhmjhwh›h|j&h~}r|(j(X-hƒ]h‚]h€]h�]h†]uhˆMnh‰hhŠ]r}j )�r~}r(hlX(Build spl/u-boot-spl.bin and u-boot.img hmjzhwh›h|jh~}r€(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r�hÊ)�r‚}rƒ(hlX'Build spl/u-boot-spl.bin and u-boot.imgr„hmj~hwh›h|hÍh~}r…(h€]h�]h‚]hƒ]h†]uhˆMnhŠ]r†h“X'Build spl/u-boot-spl.bin and u-boot.imgr‡…�rˆ}r‰(hlj„hmj‚ubaubaubaubjr)�rŠ}r‹(hlX host$ makehmjhwh›h|juh~}rŒ(hŸh hƒ]h‚]h€]h�]h†]uhˆM}h‰hhŠ]r�h“X host$ makerŽ…�r�}r�(hlUhmjŠubaubhÃ)�r‘}r’(hlUhmjhwh›h|hÆh~}r“(hÈX(CONFIG_part_family in ('General_family')hƒ]h‚]h€]h�]h†]uhˆMth‰hhŠ]r”(j#)�r•}r–(hlUhmj‘hwh›h|j&h~}r—(j(X-hƒ]h‚]h€]h�]h†]uhˆMvh‰hhŠ]r˜j )�r™}rš(hlX3Set SYSBOOT SW2 switch to USB Peripheral boot mode hmj•hwh›h|jh~}r›(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rœhÊ)�r�}rž(hlX2Set SYSBOOT SW2 switch to USB Peripheral boot moderŸhmj™hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMvhŠ]r¡h“X2Set SYSBOOT SW2 switch to USB Peripheral boot moder¢…�r£}r¤(hljŸhmj�ubaubaubaubjr)�r¥}r¦(hlX=SW2[7..0] = 00010000 (refer to TRM for various booting order)hmj‘hwh›h|juh~}r§(hŸh hƒ]h‚]h€]h�]h†]uhˆM…h‰hhŠ]r¨h“X=SW2[7..0] = 00010000 (refer to TRM for various booting order)r©…�rª}r«(hlUhmj¥ubaubj#)�r¬}r­(hlUhmj‘hwh›h|j&h~}r®(j(X-hƒ]h‚]h€]h�]h†]uhˆM|h‰hhŠ]r¯(j )�r°}r±(hlXIConnect EVM Superspeed port (USB1 port) to PC (Ubuntu) through USB cable.hmj¬hwh›h|jh~}r²(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r³hÊ)�r´}rµ(hlXIConnect EVM Superspeed port (USB1 port) to PC (Ubuntu) through USB cable.r¶hmj°hwh›h|hÍh~}r·(h€]h�]h‚]hƒ]h†]uhˆM|hŠ]r¸h“XIConnect EVM Superspeed port (USB1 port) to PC (Ubuntu) through USB cable.r¹…�rº}r»(hlj¶hmj´ubaubaubj )�r¼}r½(hlXèFrom Ubuntu (or the host) PC, fetch and build usbboot application. usbboot pre-built binaries for particular distributions may be available in `Processor SDK `__ already. Here are the steps to build usbboot application. hmj¬hwh›h|jh~}r¾(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¿hÊ)�rÀ}rÁ(hlXçFrom Ubuntu (or the host) PC, fetch and build usbboot application. usbboot pre-built binaries for particular distributions may be available in `Processor SDK `__ already. Here are the steps to build usbboot application.hmj¼hwh›h|hÍh~}rÂ(h€]h�]h‚]hƒ]h†]uhˆM~hŠ]rÃ(h“X�From Ubuntu (or the host) PC, fetch and build usbboot application. usbboot pre-built binaries for particular distributions may be available in rÄ…�rÅ}rÆ(hlX�From Ubuntu (or the host) PC, fetch and build usbboot application. usbboot pre-built binaries for particular distributions may be available in hmjÀubhÓ)�rÇ}rÈ(hlX`Processor SDK `__h~}rÉ(UnameX Processor SDKh×X index.htmlhƒ]h‚]h€]h�]h†]uhmjÀhŠ]rÊh“X Processor SDKrË…�rÌ}rÍ(hlUhmjÇubah|hÜubh“X: already. Here are the steps to build usbboot application.rÎ…�rÏ}rÐ(hlX: already. Here are the steps to build usbboot application.hmjÀubeubaubeubjr)�rÑ}rÒ(hlX›host$ git clone git://git.omapzoom.org/repo/omapboot.git host$ cd omapboot host$ checkout 609ac271d9f89b51c133fd829dc77e8af4e7b67e host$ make -C host/toolshmj‘hwh›h|juh~}rÓ(hŸh hƒ]h‚]h€]h�]h†]uhˆM‘h‰hhŠ]rÔh“X›host$ git clone git://git.omapzoom.org/repo/omapboot.git host$ cd omapboot host$ checkout 609ac271d9f89b51c133fd829dc77e8af4e7b67e host$ make -C host/toolsrÕ…�rÖ}r×(hlUhmjÑubaubhÊ)�rØ}rÙ(hlX=This results in host side tool called ``usbboot-stand-alone``hmj‘hwh›h|hÍh~}rÚ(h€]h�]h‚]hƒ]h†]uhˆM‹h‰hhŠ]rÛ(h“X&This results in host side tool called rÜ…�rÝ}rÞ(hlX&This results in host side tool called hmjØubcdocutils.nodes literal rß)�rà}rá(hlX``usbboot-stand-alone``h~}râ(h€]h�]h‚]hƒ]h†]uhmjØhŠ]rãh“Xusbboot-stand-alonerä…�rå}ræ(hlUhmjàubah|UliteralrçubeubhÊ)�rè}ré(hlXSFor loading spl/u-boot-spl.bin to EVM, issue the command below and reset the board.rêhmj‘hwh›h|hÍh~}rë(h€]h�]h‚]hƒ]h†]uhˆM�h‰hhŠ]rìh“XSFor loading spl/u-boot-spl.bin to EVM, issue the command below and reset the board.rí…�rî}rï(hljêhmjèubaubjr)�rð}rñ(hlX4host$ sudo usbboot-stand-alone -S spl/u-boot-spl.binhmj‘hwh›h|juh~}rò(hŸh hƒ]h‚]h€]h�]h†]uhˆM�h‰hhŠ]róh“X4host$ sudo usbboot-stand-alone -S spl/u-boot-spl.binrô…�rõ}rö(hlUhmjðubaubj#)�r÷}rø(hlUhmj‘hwh›h|j&h~}rù(j(X-hƒ]h‚]h€]h�]h†]uhˆM”h‰hhŠ]rúj )�rû}rü(hlXLoad the u-boot.img to RAM. hmj÷hwh›h|jh~}rý(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rþhÊ)�rÿ}r(hlXLoad the u-boot.img to RAM.rhmjûhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM”hŠ]rh“XLoad the u-boot.img to RAM.r…�r}r(hljhmjÿubaubaubaubjr)�r}r(hlXhost$ sudo dfu-util -lhmj‘hwh›h|juh~}r (hŸh hƒ]h‚]h€]h�]h†]uhˆM£h‰hhŠ]r h“Xhost$ sudo dfu-util -lr …�r }r (hlUhmjubaubjr)�r}r(hlXÌFound DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=0, name="kernel" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=1, name="fdt" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=2, name="ramdisk"hmj‘hwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆM§h‰hhŠ]rh“XÌFound DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=0, name="kernel" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=1, name="fdt" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=2, name="ramdisk"r…�r}r(hlUhmjubaubjr)�r}r(hlX4host$ sudo dfu-util c 1 -i 0 -a 0 -D "u-boot.img" -Rhmj‘hwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆM­h‰hhŠ]rh“X4host$ sudo dfu-util c 1 -i 0 -a 0 -D "u-boot.img" -Rr…�r}r(hlUhmjubaubj#)�r}r(hlUhmj‘hwh›h|j&h~}r(j(X-hƒ]h‚]h€]h�]h†]uhˆM¤h‰hhŠ]rj )�r }r!(hlX#Now EVM will boot to u-boot prompt.r"hmjhwh›h|jh~}r#(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r$hÊ)�r%}r&(hlj"hmj hwh›h|hÍh~}r'(h€]h�]h‚]hƒ]h†]uhˆM¤hŠ]r(h“X#Now EVM will boot to u-boot prompt.r)…�r*}r+(hlj"hmj%ubaubaubaubeubhÃ)�r,}r-(hlUhmjhwh›h|hÆh~}r.(hÈX#CONFIG_part_family in ('J7_family')hƒ]h‚]h€]h�]h†]uhˆM¦h‰hhŠ]r/(jC)�r0}r1(hlX9USB Peripheral boot mode on J721E EVM (SPL-DFU boot mode)r2hmj,hwh›h|jGh~}r3(hƒ]r4U dfu-j721er5ah‚]h€]h�]h†]r6h[auhˆNh‰hhŠ]r7h“X9USB Peripheral boot mode on J721E EVM (SPL-DFU boot mode)r8…�r9}r:(hlj2hmj0ubaubj#)�r;}r<(hlUhmj,hwh›h|j&h~}r=(j(X-hƒ]h‚]h€]h�]h†]uhˆM¬h‰hhŠ]r>(j )�r?}r@(hlX{Set SYSBOOT switches to USB Peripheral boot mode (Refer to **Initialization** chapter of J721E TRM for boot switch details)rAhmj;hwh›h|jh~}rB(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rChÊ)�rD}rE(hljAhmj?hwh›h|hÍh~}rF(h€]h�]h‚]hƒ]h†]uhˆM¬hŠ]rG(h“X;Set SYSBOOT switches to USB Peripheral boot mode (Refer to rH…�rI}rJ(hlX;Set SYSBOOT switches to USB Peripheral boot mode (Refer to hmjDubj)�rK}rL(hlX**Initialization**h~}rM(h€]h�]h‚]hƒ]h†]uhmjDhŠ]rNh“XInitializationrO…�rP}rQ(hlUhmjKubah|j'ubh“X. chapter of J721E TRM for boot switch details)rR…�rS}rT(hlX. chapter of J721E TRM for boot switch details)hmjDubeubaubj )�rU}rV(hlX8Make sure USB0 port in UFP/DRP mode: SW3[3:4] = 01 or 1xrWhmj;hwh›h|jh~}rX(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rYhÊ)�rZ}r[(hljWhmjUhwh›h|hÍh~}r\(h€]h�]h‚]hƒ]h†]uhˆM­hŠ]r]h“X8Make sure USB0 port in UFP/DRP mode: SW3[3:4] = 01 or 1xr^…�r_}r`(hljWhmjZubaubaubj )�ra}rb(hlX<Connect EVM's TypeC port (USB0 port) to PC through USB cablerchmj;hwh›h|jh~}rd(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rehÊ)�rf}rg(hljchmjahwh›h|hÍh~}rh(h€]h�]h‚]hƒ]h†]uhˆM®hŠ]rih“X<Connect EVM's TypeC port (USB0 port) to PC through USB cablerj…�rk}rl(hljchmjfubaubaubj )�rm}rn(hlXPower on the board hmj;hwh›h|jh~}ro(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rphÊ)�rq}rr(hlXPower on the boardrshmjmhwh›h|hÍh~}rt(h€]h�]h‚]hƒ]h†]uhˆM¯hŠ]ruh“XPower on the boardrv…�rw}rx(hljshmjqubaubaubeubhÊ)�ry}rz(hlX On host side:r{hmj,hwh›h|hÍh~}r|(h€]h�]h‚]hƒ]h†]uhˆM±h‰hhŠ]r}h“X On host side:r~…�r}r€(hlj{hmjyubaubjr)�r�}r‚(hlXhost$ sudo dfu-util -lhmj,hwh›h|juh~}rƒ(jw‰jxXtexthŸh hƒ]h‚]h€]jy}h�]h†]uhˆM³h‰hhŠ]r„h“Xhost$ sudo dfu-util -lr……�r†}r‡(hlUhmj�ubaubhÊ)�rˆ}r‰(hlX*This will show the following DFU entities:rŠhmj,hwh›h|hÍh~}r‹(h€]h�]h‚]hƒ]h†]uhˆM·h‰hhŠ]rŒh“X*This will show the following DFU entities:r�…�rŽ}r�(hljŠhmjˆubaubjr)�r�}r‘(hlXæFound DFU: [0451:6163] ver=0200, devnum=50, cfg=1, intf=0, path="3-2", alt=1, name="SocId", serial="01.00.00.00" Found DFU: [0451:6163] ver=0200, devnum=50, cfg=1, intf=0, path="3-2", alt=0, name="bootloader", serial="01.00.00.00"hmj,hwh›h|juh~}r’(jw‰jxXtexthŸh hƒ]h‚]h€]jy}h�]h†]uhˆM¹h‰hhŠ]r“h“XæFound DFU: [0451:6163] ver=0200, devnum=50, cfg=1, intf=0, path="3-2", alt=1, name="SocId", serial="01.00.00.00" Found DFU: [0451:6163] ver=0200, devnum=50, cfg=1, intf=0, path="3-2", alt=0, name="bootloader", serial="01.00.00.00"r”…�r•}r–(hlUhmj�ubaubhÊ)�r—}r˜(hlXTSend boot images in this order: tiboot3.bin -> sysfw.itb -> tispl.bin -> u-boot.img.r™hmj,hwh›h|hÍh~}rš(h€]h�]h‚]hƒ]h†]uhˆM¾h‰hhŠ]r›h“XTSend boot images in this order: tiboot3.bin -> sysfw.itb -> tispl.bin -> u-boot.img.rœ…�r�}rž(hlj™hmj—ubaubjr)�rŸ}r (hlXPhost$ sudo dfu-util -R -a bootloader -D tiboot3.bin host$ sudo dfu-util -l Found DFU: [0451:6163] ver=0224, devnum=51, cfg=1, intf=0, path="3-2", alt=0, name="sysfw.itb", serial="UNKNOWN" host$ sudo dfu-util -R -a sysfw.itb -D sysfw.itb host$ sudo dfu-util -l Found DFU: [0451:6163] ver=0224, devnum=52, cfg=1, intf=0, path="3-2", alt=1, name="u-boot.img", serial="UNKNOWN" Found DFU: [0451:6163] ver=0224, devnum=52, cfg=1, intf=0, path="3-2", alt=0, name="tispl.bin", serial="UNKNOWN" host$ sudo dfu-util -R -a tispl.bin -D tispl.bin host$ sudo dfu-util -R -a u-boot.img -D u-boot.imghmj,hwh›h|juh~}r¡(jw‰jxXtexthŸh hƒ]h‚]h€]jy}h�]h†]uhˆMÀh‰hhŠ]r¢h“XPhost$ sudo dfu-util -R -a bootloader -D tiboot3.bin host$ sudo dfu-util -l Found DFU: [0451:6163] ver=0224, devnum=51, cfg=1, intf=0, path="3-2", alt=0, name="sysfw.itb", serial="UNKNOWN" host$ sudo dfu-util -R -a sysfw.itb -D sysfw.itb host$ sudo dfu-util -l Found DFU: [0451:6163] ver=0224, devnum=52, cfg=1, intf=0, path="3-2", alt=1, name="u-boot.img", serial="UNKNOWN" Found DFU: [0451:6163] ver=0224, devnum=52, cfg=1, intf=0, path="3-2", alt=0, name="tispl.bin", serial="UNKNOWN" host$ sudo dfu-util -R -a tispl.bin -D tispl.bin host$ sudo dfu-util -R -a u-boot.img -D u-boot.imgr£…�r¤}r¥(hlUhmjŸubaubhÊ)�r¦}r§(hlX:At this point, the board should boot to the U-Boot prompt.r¨hmj,hwh›h|hÍh~}r©(h€]h�]h‚]hƒ]h†]uhˆMÐh‰hhŠ]rªh“X:At this point, the board should boot to the U-Boot prompt.r«…�r¬}r­(hlj¨hmj¦ubaubcdocutils.nodes note r®)�r¯}r°(hlX>This mode is not supported on J721E Rev E2 and earlier boards.r±hmj,hwh›h|Unoter²h~}r³(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r´hÊ)�rµ}r¶(hlj±hmj¯hwh›h|hÍh~}r·(h€]h�]h‚]hƒ]h†]uhˆMÓhŠ]r¸h“X>This mode is not supported on J721E Rev E2 and earlier boards.r¹…�rº}r»(hlj±hmjµubaubaubeubeubeubhn)�r¼}r½(hlUhmhshwh›h|h}h~}r¾(h€]h�]h‚]hƒ]r¿Unetwork-wired-or-usb-clientrÀah†]rÁhSauhˆMÖh‰hhŠ]rÂ(hŒ)�rÃ}rÄ(hlXNetwork (Wired or USB Client)rÅhmj¼hwh›h|h�h~}rÆ(h€]h�]h‚]hƒ]h†]uhˆMÖh‰hhŠ]rÇh“XNetwork (Wired or USB Client)rÈ…�rÉ}rÊ(hljÅhmjÃubaubhÊ)�rË}rÌ(hlXThis section documents how to configure the network and use it to load files and then boot the Linux Kernel using a root filesystem mounted over NFS. At this time, no special builds of U-Boot are required to perform these operations on the supported hardware.rÍhmj¼hwh›h|hÍh~}rÎ(h€]h�]h‚]hƒ]h†]uhˆMØh‰hhŠ]rÏh“XThis section documents how to configure the network and use it to load files and then boot the Linux Kernel using a root filesystem mounted over NFS. At this time, no special builds of U-Boot are required to perform these operations on the supported hardware.rÐ…�rÑ}rÒ(hljÍhmjËubaubhn)�rÓ}rÔ(hlUhmj¼hwh›h|h}h~}rÕ(h€]h�]h‚]hƒ]rÖUbooting-u-boot-from-the-networkr×ah†]rØhauhˆMÞh‰hhŠ]rÙ(hŒ)�rÚ}rÛ(hlXBooting U-Boot from the networkrÜhmjÓhwh›h|h�h~}rÝ(h€]h�]h‚]hƒ]h†]uhˆMÞh‰hhŠ]rÞh“XBooting U-Boot from the networkrß…�rà}rá(hljÜhmjÚubaubhÊ)�râ}rã(hlXÛIn some cases we support loading SPL and U-Boot over the network because of ROM support. In some cases, a special build of U-Boot may be required. In addition, the DHCP server is needed to reply to the target with the file to fetch via tftp. In order to facilitate this, the **vendor-class-identifier** DHCP field is filled out by the ROM and the values are listed in the table below. Finally, you will need to use the **spl/u-boot-spl.bin** and **u-boot.img** files to boot.hmjÓhwh›h|hÍh~}rä(h€]h�]h‚]hƒ]h†]uhˆMàh‰hhŠ]rå(h“XIn some cases we support loading SPL and U-Boot over the network because of ROM support. In some cases, a special build of U-Boot may be required. In addition, the DHCP server is needed to reply to the target with the file to fetch via tftp. In order to facilitate this, the ræ…�rç}rè(hlXIn some cases we support loading SPL and U-Boot over the network because of ROM support. In some cases, a special build of U-Boot may be required. In addition, the DHCP server is needed to reply to the target with the file to fetch via tftp. In order to facilitate this, the hmjâubj)�ré}rê(hlX**vendor-class-identifier**h~}rë(h€]h�]h‚]hƒ]h†]uhmjâhŠ]rìh“Xvendor-class-identifierrí…�rî}rï(hlUhmjéubah|j'ubh“Xu DHCP field is filled out by the ROM and the values are listed in the table below. Finally, you will need to use the rð…�rñ}rò(hlXu DHCP field is filled out by the ROM and the values are listed in the table below. Finally, you will need to use the hmjâubj)�ró}rô(hlX**spl/u-boot-spl.bin**h~}rõ(h€]h�]h‚]hƒ]h†]uhmjâhŠ]röh“Xspl/u-boot-spl.binr÷…�rø}rù(hlUhmjóubah|j'ubh“X and rú…�rû}rü(hlX and hmjâubj)�rý}rþ(hlX**u-boot.img**h~}rÿ(h€]h�]h‚]hƒ]h†]uhmjâhŠ]rh“X u-boot.imgr…�r}r(hlUhmjýubah|j'ubh“X files to boot.r…�r}r(hlX files to boot.hmjâubeubj®)�r}r(hlXMBooting U-Boot/SPL from network is supported only on the following platforms.r hmjÓhwh›h|j²h~}r (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r hÊ)�r }r (hlj hmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMéhŠ]rh“XMBooting U-Boot/SPL from network is supported only on the following platforms.r…�r}r(hlj hmj ubaubaubcdocutils.nodes table r)�r}r(hlUhmjÓhwh›h|Utablerh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rcdocutils.nodes tgroup r)�r}r(hlUh~}r(hƒ]h‚]h€]h�]h†]UcolsKuhmjhŠ]r(cdocutils.nodes colspec r)�r}r (hlUh~}r!(hƒ]h‚]h€]h�]h†]UcolwidthK#uhmjhŠ]h|Ucolspecr"ubj)�r#}r$(hlUh~}r%(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjhŠ]h|j"ubj)�r&}r'(hlUh~}r((hƒ]h‚]h€]h�]h†]UcolwidthK&uhmjhŠ]h|j"ubj)�r)}r*(hlUh~}r+(hƒ]h‚]h€]h�]h†]UcolwidthK6uhmjhŠ]h|j"ubj)�r,}r-(hlUh~}r.(hƒ]h‚]h€]h�]h†]UcolwidthK%uhmjhŠ]h|j"ubcdocutils.nodes thead r/)�r0}r1(hlUh~}r2(h€]h�]h‚]hƒ]h†]uhmjhŠ]r3cdocutils.nodes row r4)�r5}r6(hlUh~}r7(h€]h�]h‚]hƒ]h†]uhmj0hŠ]r8(cdocutils.nodes entry r9)�r:}r;(hlUh~}r<(h€]h�]h‚]hƒ]h†]uhmj5hŠ]r=hÊ)�r>}r?(hlXBoardr@hmj:hwh›h|hÍh~}rA(h€]h�]h‚]hƒ]h†]uhˆMìhŠ]rBh“XBoardrC…�rD}rE(hlj@hmj>ubaubah|UentryrFubj9)�rG}rH(hlUh~}rI(h€]h�]h‚]hƒ]h†]uhmj5hŠ]rJhÊ)�rK}rL(hlX make targetrMhmjGhwh›h|hÍh~}rN(h€]h�]h‚]hƒ]h†]uhˆMìhŠ]rOh“X make targetrP…�rQ}rR(hljMhmjKubaubah|jFubj9)�rS}rT(hlUh~}rU(h€]h�]h‚]hƒ]h†]uhmj5hŠ]rVhÊ)�rW}rX(hlXSupported interfacesrYhmjShwh›h|hÍh~}rZ(h€]h�]h‚]hƒ]h†]uhˆMìhŠ]r[h“XSupported interfacesr\…�r]}r^(hljYhmjWubaubah|jFubj9)�r_}r`(hlUh~}ra(h€]h�]h‚]hƒ]h†]uhmj5hŠ]rbhÊ)�rc}rd(hlX!ROM vendor-class-identifier valuerehmj_hwh›h|hÍh~}rf(h€]h�]h‚]hƒ]h†]uhˆMìhŠ]rgh“X!ROM vendor-class-identifier valuerh…�ri}rj(hljehmjcubaubah|jFubj9)�rk}rl(hlUh~}rm(h€]h�]h‚]hƒ]h†]uhmj5hŠ]rnhÊ)�ro}rp(hlX!SPL vendor-class-identifier valuerqhmjkhwh›h|hÍh~}rr(h€]h�]h‚]hƒ]h†]uhˆMìhŠ]rsh“X!SPL vendor-class-identifier valuert…�ru}rv(hljqhmjoubaubah|jFubeh|Urowrwubah|Utheadrxubcdocutils.nodes tbody ry)�rz}r{(hlUh~}r|(h€]h�]h‚]hƒ]h†]uhmjhŠ]r}(j4)�r~}r(hlUh~}r€(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r�(j9)�r‚}rƒ(hlUh~}r„(h€]h�]h‚]hƒ]h†]uhmj~hŠ]r…hÊ)�r†}r‡(hlX AM335x GP EVMrˆhmj‚hwh›h|hÍh~}r‰(h€]h�]h‚]hƒ]h†]uhˆMîhŠ]rŠh“X AM335x GP EVMr‹…�rŒ}r�(hljˆhmj†ubaubah|jFubj9)�rŽ}r�(hlUh~}r�(h€]h�]h‚]hƒ]h†]uhmj~hŠ]r‘hÊ)�r’}r“(hlX am335x\_evmhmjŽhwh›h|hÍh~}r”(h€]h�]h‚]hƒ]h†]uhˆMîhŠ]r•h“X am335x_evmr–…�r—}r˜(hlX am335x\_evmhmj’ubaubah|jFubj9)�r™}rš(hlUh~}r›(h€]h�]h‚]hƒ]h†]uhmj~hŠ]rœhÊ)�r�}rž(hlX CPSW ethernetrŸhmj™hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMîhŠ]r¡h“X CPSW ethernetr¢…�r£}r¤(hljŸhmj�ubaubah|jFubj9)�r¥}r¦(hlUh~}r§(h€]h�]h‚]hƒ]h†]uhmj~hŠ]r¨hÊ)�r©}rª(hlX2DM814x ROM (PG1.0) or AM335x ROM (PG2.0 and later)r«hmj¥hwh›h|hÍh~}r¬(h€]h�]h‚]hƒ]h†]uhˆMîhŠ]r­h“X2DM814x ROM (PG1.0) or AM335x ROM (PG2.0 and later)r®…�r¯}r°(hlj«hmj©ubaubah|jFubj9)�r±}r²(hlUh~}r³(h€]h�]h‚]hƒ]h†]uhmj~hŠ]r´hÊ)�rµ}r¶(hlXAM335x U-Boot SPLr·hmj±hwh›h|hÍh~}r¸(h€]h�]h‚]hƒ]h†]uhˆMîhŠ]r¹h“XAM335x U-Boot SPLrº…�r»}r¼(hlj·hmjµubaubah|jFubeh|jwubj4)�r½}r¾(hlUh~}r¿(h€]h�]h‚]hƒ]h†]uhmjzhŠ]rÀ(j9)�rÁ}rÂ(hlUh~}rÃ(h€]h�]h‚]hƒ]h†]uhmj½hŠ]rÄhÊ)�rÅ}rÆ(hlXAM335x GP EVM (PG2.0 and later)rÇhmjÁhwh›h|hÍh~}rÈ(h€]h�]h‚]hƒ]h†]uhˆMðhŠ]rÉh“XAM335x GP EVM (PG2.0 and later)rÊ…�rË}rÌ(hljÇhmjÅubaubah|jFubj9)�rÍ}rÎ(hlUh~}rÏ(h€]h�]h‚]hƒ]h†]uhmj½hŠ]rÐhÊ)�rÑ}rÒ(hlX am335x\_evmhmjÍhwh›h|hÍh~}rÓ(h€]h�]h‚]hƒ]h†]uhˆMðhŠ]rÔh“X am335x_evmrÕ…�rÖ}r×(hlX am335x\_evmhmjÑubaubah|jFubj9)�rØ}rÙ(hlUh~}rÚ(h€]h�]h‚]hƒ]h†]uhmj½hŠ]rÛhÊ)�rÜ}rÝ(hlXSPL and U-Boot via USB RNDISrÞhmjØhwh›h|hÍh~}rß(h€]h�]h‚]hƒ]h†]uhˆMðhŠ]ràh“XSPL and U-Boot via USB RNDISrá…�râ}rã(hljÞhmjÜubaubah|jFubj9)�rä}rå(hlUh~}ræ(h€]h�]h‚]hƒ]h†]uhmj½hŠ]rçhÊ)�rè}ré(hlX AM335x ROMrêhmjähwh›h|hÍh~}rë(h€]h�]h‚]hƒ]h†]uhˆMðhŠ]rìh“X AM335x ROMrí…�rî}rï(hljêhmjèubaubah|jFubj9)�rð}rñ(hlUh~}rò(h€]h�]h‚]hƒ]h†]uhmj½hŠ]róhÊ)�rô}rõ(hlXAM335x U-Boot SPLröhmjðhwh›h|hÍh~}r÷(h€]h�]h‚]hƒ]h†]uhˆMðhŠ]røh“XAM335x U-Boot SPLrù…�rú}rû(hljöhmjôubaubah|jFubeh|jwubj4)�rü}rý(hlUh~}rþ(h€]h�]h‚]hƒ]h†]uhmjzhŠ]rÿ(j9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjühŠ]rhÊ)�r}r(hlXAM335x GP EVM (PG1.0)rhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMòhŠ]rh“XAM335x GP EVM (PG1.0)r …�r }r (hljhmjubaubah|jFubj9)�r }r (hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjühŠ]rhÊ)�r}r(hlX am335x\_evmhmj hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMòhŠ]rh“X am335x_evmr…�r}r(hlX am335x\_evmhmjubaubah|jFubj9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjühŠ]rhÊ)�r}r(hlX"SPL via UART, U-Boot via USB RNDISrhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMòhŠ]rh“X"SPL via UART, U-Boot via USB RNDISr …�r!}r"(hljhmjubaubah|jFubj9)�r#}r$(hlUh~}r%(h€]h�]h‚]hƒ]h†]uhmjühŠ]r&hÊ)�r'}r((hlXN/Ar)hmj#hwh›h|hÍh~}r*(h€]h�]h‚]hƒ]h†]uhˆMòhŠ]r+h“XN/Ar,…�r-}r.(hlj)hmj'ubaubah|jFubj9)�r/}r0(hlUh~}r1(h€]h�]h‚]hƒ]h†]uhmjühŠ]r2hÊ)�r3}r4(hlXAM335x U-Boot SPLr5hmj/hwh›h|hÍh~}r6(h€]h�]h‚]hƒ]h†]uhˆMòhŠ]r7h“XAM335x U-Boot SPLr8…�r9}r:(hlj5hmj3ubaubah|jFubeh|jwubj4)�r;}r<(hlUh~}r=(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r>(j9)�r?}r@(hlUh~}rA(h€]h�]h‚]hƒ]h†]uhmj;hŠ]rBhÊ)�rC}rD(hlX AM43xx EVMrEhmj?hwh›h|hÍh~}rF(h€]h�]h‚]hƒ]h†]uhˆMôhŠ]rGh“X AM43xx EVMrH…�rI}rJ(hljEhmjCubaubah|jFubj9)�rK}rL(hlUh~}rM(h€]h�]h‚]hƒ]h†]uhmj;hŠ]rNhÊ)�rO}rP(hlX am43xx\_evmhmjKhwh›h|hÍh~}rQ(h€]h�]h‚]hƒ]h†]uhˆMôhŠ]rRh“X am43xx_evmrS…�rT}rU(hlX am43xx\_evmhmjOubaubah|jFubj9)�rV}rW(hlUh~}rX(h€]h�]h‚]hƒ]h†]uhmj;hŠ]rYhÊ)�rZ}r[(hlX CPSW ethernetr\hmjVhwh›h|hÍh~}r](h€]h�]h‚]hƒ]h†]uhˆMôhŠ]r^h“X CPSW ethernetr_…�r`}ra(hlj\hmjZubaubah|jFubj9)�rb}rc(hlUh~}rd(h€]h�]h‚]hƒ]h†]uhmj;hŠ]rehÊ)�rf}rg(hlX AM43xx ROMrhhmjbhwh›h|hÍh~}ri(h€]h�]h‚]hƒ]h†]uhˆMôhŠ]rjh“X AM43xx ROMrk…�rl}rm(hljhhmjfubaubah|jFubj9)�rn}ro(hlUh~}rp(h€]h�]h‚]hƒ]h†]uhmj;hŠ]rqhÊ)�rr}rs(hlXAM43xx U-Boot SPLrthmjnhwh›h|hÍh~}ru(h€]h�]h‚]hƒ]h†]uhˆMôhŠ]rvh“XAM43xx U-Boot SPLrw…�rx}ry(hljthmjrubaubah|jFubeh|jwubj4)�rz}r{(hlUh~}r|(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r}(j9)�r~}r(hlUh~}r€(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r�hÊ)�r‚}rƒ(hlXAM43xx EVM (PG1.2 and later)r„hmj~hwh›h|hÍh~}r…(h€]h�]h‚]hƒ]h†]uhˆMöhŠ]r†h“XAM43xx EVM (PG1.2 and later)r‡…�rˆ}r‰(hlj„hmj‚ubaubah|jFubj9)�rŠ}r‹(hlUh~}rŒ(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r�hÊ)�rŽ}r�(hlX am43xx\_evmhmjŠhwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆMöhŠ]r‘h“X am43xx_evmr’…�r“}r”(hlX am43xx\_evmhmjŽubaubah|jFubj9)�r•}r–(hlUh~}r—(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r˜hÊ)�r™}rš(hlXSPL and U-Boot via USB RNDISr›hmj•hwh›h|hÍh~}rœ(h€]h�]h‚]hƒ]h†]uhˆMöhŠ]r�h“XSPL and U-Boot via USB RNDISrž…�rŸ}r (hlj›hmj™ubaubah|jFubj9)�r¡}r¢(hlUh~}r£(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r¤hÊ)�r¥}r¦(hlX AM43xx ROMr§hmj¡hwh›h|hÍh~}r¨(h€]h�]h‚]hƒ]h†]uhˆMöhŠ]r©h“X AM43xx ROMrª…�r«}r¬(hlj§hmj¥ubaubah|jFubj9)�r­}r®(hlUh~}r¯(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r°hÊ)�r±}r²(hlXAM43xx U-Boot SPLr³hmj­hwh›h|hÍh~}r´(h€]h�]h‚]hƒ]h†]uhˆMöhŠ]rµh“XAM43xx U-Boot SPLr¶…�r·}r¸(hlj³hmj±ubaubah|jFubeh|jwubeh|Utbodyr¹ubeh|UtgrouprºubaubhÊ)�r»}r¼(hlX>If using ISC dhcpd an example host entry would look like this:r½hmjÓhwh›h|hÍh~}r¾(h€]h�]h‚]hƒ]h†]uhˆMùh‰hhŠ]r¿h“X>If using ISC dhcpd an example host entry would look like this:rÀ…�rÁ}rÂ(hlj½hmj»ubaubjr)�rÃ}rÄ(hlXühost am335x_evm { hardware ethernet de:ad:be:ee:ee:ef; # Check for PG1.0, typically CPSW if substring (option vendor-class-identifier, 0, 10) = "DM814x ROM" { filename "u-boot-spl.bin"; # Check for PG2.0, CPSW or USB RNDIS } elsif substring (option vendor-class-identifier, 0, 10) = "AM335x ROM" { filename "u-boot-spl.bin"; } elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL" { filename "u-boot.img"; } else { filename "zImage-am335x-evm.bin"; } }hmjÓhwh›h|juh~}rÅ(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]rÆh“Xühost am335x_evm { hardware ethernet de:ad:be:ee:ee:ef; # Check for PG1.0, typically CPSW if substring (option vendor-class-identifier, 0, 10) = "DM814x ROM" { filename "u-boot-spl.bin"; # Check for PG2.0, CPSW or USB RNDIS } elsif substring (option vendor-class-identifier, 0, 10) = "AM335x ROM" { filename "u-boot-spl.bin"; } elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL" { filename "u-boot.img"; } else { filename "zImage-am335x-evm.bin"; } }rÇ…�rÈ}rÉ(hlUhmjÃubaubhÊ)�rÊ}rË(hlXÂNote that in a factory type setting, the substring tests can be done inside of the subnet declaration to set the default filename value for the subnet, and overriden (if needed) in a host entry.rÌhmjÓhwh›h|hÍh~}rÍ(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rÎh“XÂNote that in a factory type setting, the substring tests can be done inside of the subnet declaration to set the default filename value for the subnet, and overriden (if needed) in a host entry.rÏ…�rÐ}rÑ(hljÌhmjÊubaubhÊ)�rÒ}rÓ(hlX¤If you have removed NetworkManager from your system (which is not the default in most distributions) you need to configure your /etc/network/interfaces file thusly:rÔhmjÓhwh›h|hÍh~}rÕ(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rÖh“X¤If you have removed NetworkManager from your system (which is not the default in most distributions) you need to configure your /etc/network/interfaces file thusly:r×…�rØ}rÙ(hljÔhmjÒubaubjr)�rÚ}rÛ(hlX’allow-hotplug usb0 iface usb0 inet static address 192.168.1.1 netmask 255.255.255.0 post-up service isc-dhcp-server reloadhmjÓhwh›h|juh~}rÜ(hŸh hƒ]h‚]h€]h�]h†]uhˆM!h‰hhŠ]rÝh“X’allow-hotplug usb0 iface usb0 inet static address 192.168.1.1 netmask 255.255.255.0 post-up service isc-dhcp-server reloadrÞ…�rß}rà(hlUhmjÚubaubhÊ)�rá}râ(hlXÈIf you are using NetworkManager you need to create two files. First, as root create /etc/NetworkManager/system-connections/AM335x USB RNDIS (and use \\ to escape the space) with the following content:hmjÓhwh›h|hÍh~}rã(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]räh“XÇIf you are using NetworkManager you need to create two files. First, as root create /etc/NetworkManager/system-connections/AM335x USB RNDIS (and use \ to escape the space) with the following content:rå…�ræ}rç(hlXÈIf you are using NetworkManager you need to create two files. First, as root create /etc/NetworkManager/system-connections/AM335x USB RNDIS (and use \\ to escape the space) with the following content:hmjáubaubjr)�rè}ré(hlXâ[802-3-ethernet] duplex=full mac-address=AA:BB:CC:11:22:33 [connection] id=AM335X USB RNDIS uuid=INSERT THE CONTENTS OF 'uuidgen' HERE type=802-3-ethernet [ipv6] method=ignore [ipv4] method=manual addresses1=192.168.1.1;16;hmjÓhwh›h|juh~}rê(hŸh hƒ]h‚]h€]h�]h†]uhˆM.h‰hhŠ]rëh“Xâ[802-3-ethernet] duplex=full mac-address=AA:BB:CC:11:22:33 [connection] id=AM335X USB RNDIS uuid=INSERT THE CONTENTS OF 'uuidgen' HERE type=802-3-ethernet [ipv6] method=ignore [ipv4] method=manual addresses1=192.168.1.1;16;rì…�rí}rî(hlUhmjèubaubhÊ)�rï}rð(hlXoSeccond as root, and ensuring execute permissions, create /etc/NetworkManager/dispatcher.d/99am335x-dhcp-serverrñhmjÓhwh›h|hÍh~}rò(h€]h�]h‚]hƒ]h†]uhˆM3h‰hhŠ]róh“XoSeccond as root, and ensuring execute permissions, create /etc/NetworkManager/dispatcher.d/99am335x-dhcp-serverrô…�rõ}rö(hljñhmjïubaubjr)�r÷}rø(hlXu#!/bin/sh IF=$1 STATUS=$2 if [ "$IF" = "usb0" ] && [ "$STATUS" = "up" ]; then service isc-dhcp-server reload fihmjÓhwh›h|juh~}rù(hŸh hƒ]h‚]h€]h�]h†]uhˆMCh‰hhŠ]rúh“Xu#!/bin/sh IF=$1 STATUS=$2 if [ "$IF" = "usb0" ] && [ "$STATUS" = "up" ]; then service isc-dhcp-server reload firû…�rü}rý(hlUhmj÷ubaubhÊ)�rþ}rÿ(hlXÕA walk through of these steps can be seen at `Ubuntu 12.04 Set Up to Network Boot an AM335x Based Platform `__.hmjÓhwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMAh‰hhŠ]r (h“X-A walk through of these steps can be seen at r …�r }r (hlX-A walk through of these steps can be seen at hmjþubhÓ)�r }r (hlX§`Ubuntu 12.04 Set Up to Network Boot an AM335x Based Platform `__h~}r (UnameX<Ubuntu 12.04 Set Up to Network Boot an AM335x Based Platformh×Xdhttp://processors.wiki.ti.com/index.php/Ubuntu_12.04_Set_Up_to_Network_Boot_an_AM335x_Based_Platformhƒ]h‚]h€]h�]h†]uhmjþhŠ]r h“X<Ubuntu 12.04 Set Up to Network Boot an AM335x Based Platformr …�r }r (hlUhmj ubah|hÜubh“X.…�r }r (hlX.hmjþubeubjC)�r }r (hlUhmjÓhwh›h|jZh~}r (h€]h�]h‚]hƒ]h†]uhˆMEh‰hhŠ]r jH)�r }r (hlUjLKhmj hwh›h|hˆh~}r (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�r }r (hlUhmj¼hwh›h|h}h~}r (h€]h�]h‚]hƒ]r Umultiple-interfacesr ah†]r hauhˆMHh‰hhŠ]r (hŒ)�r }r (hlXMultiple Interfacesr hmj hwh›h|h�h~}r (h€]h�]h‚]hƒ]h†]uhˆMHh‰hhŠ]r h“XMultiple Interfacesr! …�r" }r# (hlj hmj ubaubhÊ)�r$ }r% (hlX On some boards, for example when we have both a wired interface and USB RNDIS gadget ethernet, it can be desirable to change from the default U-Boot behavior of cycling over each interface it knows to telling U-Boot to use a single interface. For example, on start you may see lines like:r& hmj hwh›h|hÍh~}r' (h€]h�]h‚]hƒ]h†]uhˆMJh‰hhŠ]r( h“X On some boards, for example when we have both a wired interface and USB RNDIS gadget ethernet, it can be desirable to change from the default U-Boot behavior of cycling over each interface it knows to telling U-Boot to use a single interface. For example, on start you may see lines like:r) …�r* }r+ (hlj& hmj$ ubaubjr)�r, }r- (hlXNet: cpsw, usb_etherhmj hwh›h|juh~}r. (hŸh hƒ]h‚]h€]h�]h†]uhˆM]h‰hhŠ]r/ h“XNet: cpsw, usb_etherr0 …�r1 }r2 (hlUhmj, ubaubhÊ)�r3 }r4 (hlXJSo to ensure that we use **usb\_ether** first issue the following command:hmj hwh›h|hÍh~}r5 (h€]h�]h‚]hƒ]h†]uhˆMTh‰hhŠ]r6 (h“XSo to ensure that we use r7 …�r8 }r9 (hlXSo to ensure that we use hmj3 ubj)�r: }r; (hlX**usb\_ether**h~}r< (h€]h�]h‚]hƒ]h†]uhmj3 hŠ]r= h“X usb_etherr> …�r? }r@ (hlUhmj: ubah|j'ubh“X# first issue the following command:rA …�rB }rC (hlX# first issue the following command:hmj3 ubeubjr)�rD }rE (hlX U-Boot # setenv ethact usb_etherhmj hwh›h|juh~}rF (hŸh hƒ]h‚]h€]h�]h†]uhˆMdh‰hhŠ]rG h“X U-Boot # setenv ethact usb_etherrH …�rI }rJ (hlUhmjD ubaubeubhn)�rK }rL (hlUhmj¼hwh›h|h}h~}rM (h€]h�]h‚]hƒ]rN Unetwork-configuration-via-dhcprO ah†]rP hauhˆM\h‰hhŠ]rQ (hŒ)�rR }rS (hlXNetwork configuration via DHCPrT hmjK hwh›h|h�h~}rU (h€]h�]h‚]hƒ]h†]uhˆM\h‰hhŠ]rV h“XNetwork configuration via DHCPrW …�rX }rY (hljT hmjR ubaubhÊ)�rZ }r[ (hlX>To configure the network via DHCP, use the following commands:r\ hmjK hwh›h|hÍh~}r] (h€]h�]h‚]hƒ]h†]uhˆM^h‰hhŠ]r^ h“X>To configure the network via DHCP, use the following commands:r_ …�r` }ra (hlj\ hmjZ ubaubjr)�rb }rc (hlX)U-Boot # setenv autoload no U-Boot # dhcphmjK hwh›h|juh~}rd (hŸh hƒ]h‚]h€]h�]h†]uhˆMmh‰hhŠ]re h“X)U-Boot # setenv autoload no U-Boot # dhcprf …�rg }rh (hlUhmjb ubaubhÊ)�ri }rj (hlXdAnd ensure that a DHCP server is configured to serve addresses for the network you are connected to.rk hmjK hwh›h|hÍh~}rl (h€]h�]h‚]hƒ]h†]uhˆMeh‰hhŠ]rm h“XdAnd ensure that a DHCP server is configured to serve addresses for the network you are connected to.rn …�ro }rp (hljk hmji ubaubeubhn)�rq }rr (hlUhmj¼hwh›h|h}h~}rs (h€]h�]h‚]hƒ]rt Umanual-network-configurationru ah†]rv hauhˆMih‰hhŠ]rw (hŒ)�rx }ry (hlXManual network configurationrz hmjq hwh›h|h�h~}r{ (h€]h�]h‚]hƒ]h†]uhˆMih‰hhŠ]r| h“XManual network configurationr} …�r~ }r (hljz hmjx ubaubhÊ)�r€ }r� (hlX_To configure the network manually, the **ipaddr**, **serverip**, **gatewayip** and **netmask**:hmjq hwh›h|hÍh~}r‚ (h€]h�]h‚]hƒ]h†]uhˆMkh‰hhŠ]rƒ (h“X'To configure the network manually, the r„ …�r… }r† (hlX'To configure the network manually, the hmj€ ubj)�r‡ }rˆ (hlX **ipaddr**h~}r‰ (h€]h�]h‚]hƒ]h†]uhmj€ hŠ]rŠ h“Xipaddrr‹ …�rŒ }r� (hlUhmj‡ ubah|j'ubh“X, rŽ …�r� }r� (hlX, hmj€ ubj)�r‘ }r’ (hlX **serverip**h~}r“ (h€]h�]h‚]hƒ]h†]uhmj€ hŠ]r” h“Xserveripr• …�r– }r— (hlUhmj‘ ubah|j'ubh“X, r˜ …�r™ }rš (hlX, hmj€ ubj)�r› }rœ (hlX **gatewayip**h~}r� (h€]h�]h‚]hƒ]h†]uhmj€ hŠ]rž h“X gatewayiprŸ …�r  }r¡ (hlUhmj› ubah|j'ubh“X and r¢ …�r£ }r¤ (hlX and hmj€ ubj)�r¥ }r¦ (hlX **netmask**h~}r§ (h€]h�]h‚]hƒ]h†]uhmj€ hŠ]r¨ h“Xnetmaskr© …�rª }r« (hlUhmj¥ ubah|j'ubh“X:…�r¬ }r­ (hlX:hmj€ ubeubjr)�r® }r¯ (hlX“U-Boot # setenv ipaddr 192.168.1.2 U-Boot # setenv serverip 192.168.1.1 U-Boot # setenv gatewayip 192.168.1.1 U-Boot # setenv netmask 255.255.255.0hmjq hwh›h|juh~}r° (hŸh hƒ]h‚]h€]h�]h†]uhˆM{h‰hhŠ]r± h“X“U-Boot # setenv ipaddr 192.168.1.2 U-Boot # setenv serverip 192.168.1.1 U-Boot # setenv gatewayip 192.168.1.1 U-Boot # setenv netmask 255.255.255.0r² …�r³ }r´ (hlUhmj® ubaubeubhn)�rµ }r¶ (hlUhmj¼hwh›h|h}h~}r· (h€]h�]h‚]hƒ]r¸ U!disabling-gigabit-phy-advertisingr¹ ah†]rº h7auhˆMvh‰hhŠ]r» (hŒ)�r¼ }r½ (hlX!Disabling Gigabit Phy Advertisingr¾ hmjµ hwh›h|h�h~}r¿ (h€]h�]h‚]hƒ]h†]uhˆMvh‰hhŠ]rÀ h“X!Disabling Gigabit Phy AdvertisingrÁ …�r }rà (hlj¾ hmj¼ ubaubhÊ)�rÄ }rÅ (hlXSOn some boards like DRA72x Rev B or earlier, there is an issue like ethernet doesn't connect to 1Gbps switch. This issue is due to the use of an old ti phy with history of bad behaviour, due to this several J6 EVMs have been marked 100M only. So here is the U-Boot command to disable phy's 1Gbps support and connect as 100Mbps max capable.rÆ hmjµ hwh›h|hÍh~}rÇ (h€]h�]h‚]hƒ]h†]uhˆMwh‰hhŠ]rÈ h“XSOn some boards like DRA72x Rev B or earlier, there is an issue like ethernet doesn't connect to 1Gbps switch. This issue is due to the use of an old ti phy with history of bad behaviour, due to this several J6 EVMs have been marked 100M only. So here is the U-Boot command to disable phy's 1Gbps support and connect as 100Mbps max capable.rÉ …�rÊ }rË (hljÆ hmjÄ ubaubjr)�rÌ }rÍ (hlXÍ=> mii modify 0x3 0x9 0x0 0x300 /* Disable Gigabit advertising */ => mii modify 0x3 0x0 0x0 0x1000 /* Disable Auto Negotiation */ => mii modify 0x3 0x0 0x1000 0x1000 /* Enable Auto Negotiation */hmjµ hwh›h|juh~}rÎ (hŸh hƒ]h‚]h€]h�]h†]uhˆMŠh‰hhŠ]rÏ h“XÍ=> mii modify 0x3 0x9 0x0 0x300 /* Disable Gigabit advertising */ => mii modify 0x3 0x0 0x0 0x1000 /* Disable Auto Negotiation */ => mii modify 0x3 0x0 0x1000 0x1000 /* Enable Auto Negotiation */rÐ …�rÑ }rÒ (hlUhmjÌ ubaubeubhn)�rÓ }rÔ (hlUhmj¼hwh›h|h}h~}rÕ (h€]h�]h‚]hƒ]rÖ Ubooting-linux-from-the-networkr× ah†]rØ hauhˆM„h‰hhŠ]rÙ (hŒ)�rÚ }rÛ (hlXBooting Linux from the networkrÜ hmjÓ hwh›h|h�h~}rÝ (h€]h�]h‚]hƒ]h†]uhˆM„h‰hhŠ]rÞ h“XBooting Linux from the networkrß …�rà }rá (hljÜ hmjÚ ubaubhÊ)�râ }rã (hlXÚWithin the default environment for each board that supports networking there is a boot command called **netboot** in AM EVMs and **boot=net** in KS2 EVMs that will automatically load the kernel and boot. For the exact details of each use **printenv** on the **netboot** variable and then in turn **printenv** other sub-sections of the command. The most important variables in AM57x/DRA7x are **rootpath** and **nfsopts**, and **tftp\_root** and **nfs\_root** in K2H/K/E/L/G.hmjÓ hwh›h|hÍh~}rä (h€]h�]h‚]hƒ]h†]uhˆM†h‰hhŠ]rå (h“XfWithin the default environment for each board that supports networking there is a boot command called ræ …�rç }rè (hlXfWithin the default environment for each board that supports networking there is a boot command called hmjâ ubj)�ré }rê (hlX **netboot**h~}rë (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]rì h“Xnetbootrí …�rî }rï (hlUhmjé ubah|j'ubh“X in AM EVMs and rð …�rñ }rò (hlX in AM EVMs and hmjâ ubj)�ró }rô (hlX **boot=net**h~}rõ (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]rö h“Xboot=netr÷ …�rø }rù (hlUhmjó ubah|j'ubh“Xa in KS2 EVMs that will automatically load the kernel and boot. For the exact details of each use rú …�rû }rü (hlXa in KS2 EVMs that will automatically load the kernel and boot. For the exact details of each use hmjâ ubj)�rý }rþ (hlX **printenv**h~}rÿ (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r h“Xprintenvr …�r }r (hlUhmjý ubah|j'ubh“X on the r …�r }r (hlX on the hmjâ ubj)�r }r (hlX **netboot**h~}r (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r h“Xnetbootr …�r }r (hlUhmj ubah|j'ubh“X variable and then in turn r …�r }r (hlX variable and then in turn hmjâ ubj)�r }r (hlX **printenv**h~}r (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r h“Xprintenvr …�r }r (hlUhmj ubah|j'ubh“XT other sub-sections of the command. The most important variables in AM57x/DRA7x are r …�r }r (hlXT other sub-sections of the command. The most important variables in AM57x/DRA7x are hmjâ ubj)�r }r (hlX **rootpath**h~}r (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r h“Xrootpathr …�r }r! (hlUhmj ubah|j'ubh“X and r" …�r# }r$ (hlX and hmjâ ubj)�r% }r& (hlX **nfsopts**h~}r' (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r( h“Xnfsoptsr) …�r* }r+ (hlUhmj% ubah|j'ubh“X, and r, …�r- }r. (hlX, and hmjâ ubj)�r/ }r0 (hlX**tftp\_root**h~}r1 (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r2 h“X tftp_rootr3 …�r4 }r5 (hlUhmj/ ubah|j'ubh“X and r6 …�r7 }r8 (hlX and hmjâ ubj)�r9 }r: (hlX **nfs\_root**h~}r; (h€]h�]h‚]hƒ]h†]uhmjâ hŠ]r< h“Xnfs_rootr= …�r> }r? (hlUhmj9 ubah|j'ubh“X in K2H/K/E/L/G.r@ …�rA }rB (hlX in K2H/K/E/L/G.hmjâ ubeubhÊ)�rC }rD (hlXOn AM65x GP and IDK boards, Linux kernel can be booted over PRU-ICSSG Ethernet port as well. In the release u-boot image, only first port (MII port 0) of ICSSG0, ICSSG1 and ICSSG2 are enabled. To use second port (MII port 1), user needs to edit the DTS file to enable second port instead of first port and rebuild u-boot images using the updated DTS file. First port is marked as Eth0 on base board (ICSSG2), Eth0 (ICSSG0) and Eth2 (ICSSG1) on IDK Application board. User needs to load and run pru/rtu firmware on ICSSG using env script as shown below before doing network operations such as dhcp, tftp over ICSSG ports. The firmware is loaded from the rootfs/lib/firmware/ti-pruss/ folder for this purpose. For more information on using rproc/RemoteProc in Uboot, see section `here `__. A sample U-Boot env script for AM65x EVM/IDK is shown below for ICSSG0, ICSSG1 and ICSSG2. User needs to customize the serverip and bootdir env variable to that of the tftp server used in the setup.hmjÓ hwh›h|hÍh~}rE (h€]h�]h‚]hƒ]h†]uhˆMŽh‰hhŠ]rF (h“X On AM65x GP and IDK boards, Linux kernel can be booted over PRU-ICSSG Ethernet port as well. In the release u-boot image, only first port (MII port 0) of ICSSG0, ICSSG1 and ICSSG2 are enabled. To use second port (MII port 1), user needs to edit the DTS file to enable second port instead of first port and rebuild u-boot images using the updated DTS file. First port is marked as Eth0 on base board (ICSSG2), Eth0 (ICSSG0) and Eth2 (ICSSG1) on IDK Application board. User needs to load and run pru/rtu firmware on ICSSG using env script as shown below before doing network operations such as dhcp, tftp over ICSSG ports. The firmware is loaded from the rootfs/lib/firmware/ti-pruss/ folder for this purpose. For more information on using rproc/RemoteProc in Uboot, see section rG …�rH }rI (hlX On AM65x GP and IDK boards, Linux kernel can be booted over PRU-ICSSG Ethernet port as well. In the release u-boot image, only first port (MII port 0) of ICSSG0, ICSSG1 and ICSSG2 are enabled. To use second port (MII port 1), user needs to edit the DTS file to enable second port instead of first port and rebuild u-boot images using the updated DTS file. First port is marked as Eth0 on base board (ICSSG2), Eth0 (ICSSG0) and Eth2 (ICSSG1) on IDK Application board. User needs to load and run pru/rtu firmware on ICSSG using env script as shown below before doing network operations such as dhcp, tftp over ICSSG ports. The firmware is loaded from the rootfs/lib/firmware/ti-pruss/ folder for this purpose. For more information on using rproc/RemoteProc in Uboot, see section hmjC ubhÓ)�rJ }rK (hlX9`here `__h~}rL (UnameXhereh×X.Foundational_Components_U-Boot.html#remoteprochƒ]h‚]h€]h�]h†]uhmjC hŠ]rM h“XhererN …�rO }rP (hlUhmjJ ubah|hÜubh“XÈ. A sample U-Boot env script for AM65x EVM/IDK is shown below for ICSSG0, ICSSG1 and ICSSG2. User needs to customize the serverip and bootdir env variable to that of the tftp server used in the setup.rQ …�rR }rS (hlXÈ. A sample U-Boot env script for AM65x EVM/IDK is shown below for ICSSG0, ICSSG1 and ICSSG2. User needs to customize the serverip and bootdir env variable to that of the tftp server used in the setup.hmjC ubeubj®)�rT }rU (hlX¯Currently only 100Mbps and 1Gbps Full Duplex (FD) links are supported for ICSSG ports. Linux Kernel boot with NFS rootfs over PRUETH Ethernet interface has not been validated.rV hmjÓ hwh›h|j²h~}rW (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rX hÊ)�rY }rZ (hljV hmjT hwh›h|hÍh~}r[ (h€]h�]h‚]hƒ]h†]uhˆMžhŠ]r\ h“X¯Currently only 100Mbps and 1Gbps Full Duplex (FD) links are supported for ICSSG ports. Linux Kernel boot with NFS rootfs over PRUETH Ethernet interface has not been validated.r] …�r^ }r_ (hljV hmjY ubaubaubhÊ)�r` }ra (hlX ICSSG0 port 0rb hmjÓ hwh›h|hÍh~}rc (h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rd h“X ICSSG0 port 0re …�rf }rg (hljb hmj` ubaubjr)�rh }ri (hlX–setenv start_icssg0 'rproc start 2; rproc start 3' setenv stop_icssg0 'rproc stop 2; rproc stop 3' setenv firmware_dir '/lib/firmware/ti-pruss' setenv get_fdt_net 'run start_icssg0; tftp ${fdtaddr} ${serverip}:${bootdir}/${name_fdt}; run stop_icssg0' setenv get_kern_net 'run start_icssg0; tftp ${loadaddr} ${serverip}:${bootdir}/${name_kern}; run stop_icssg0' setenv get_overlay_net 'fdt address ${fdtaddr};fdt resize 0x0fffff;for overlay in $overlay_files;do; run start_icssg0; \ tftp ${overlayaddr} ${bootdir}/${overlay};fdt apply ${overlayaddr}; run stop_icssg0; done;' setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}' setenv serverip 158.218.113.14 setenv bootdir 06.02.00.58-am6 setenv name_fdt k3-am654-base-board.dtb setenv name_kern Image-am65xx-evm.bin setenv overlay_files 'k3-am654-idk.dtbo k3-am654-pcie-usb2.dtbo' setenv init_icssg0 'setenv ethact pruss0_eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \ setenv firmware_file 'am65x-pru0-prueth-fw.elf'; run get_firmware_mmc; rproc load 2 0x80000000 13040; rproc start 2; \ setenv loadaddr 0x89000000; setenv firmware_file am65x-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 3 0x89000000 5676; \ rproc start 3; dhcp; run stop_icssg0;' setenv bootcmd 'run init_mmc; run init_icssg0; run get_kern_net; run get_fdt_net ; run get_overlay_net ; run run_kern' saveenv boothmjÓ hwh›h|juh~}rj (hŸh hƒ]h‚]h€]h�]h†]uhˆM¯h‰hhŠ]rk h“X–setenv start_icssg0 'rproc start 2; rproc start 3' setenv stop_icssg0 'rproc stop 2; rproc stop 3' setenv firmware_dir '/lib/firmware/ti-pruss' setenv get_fdt_net 'run start_icssg0; tftp ${fdtaddr} ${serverip}:${bootdir}/${name_fdt}; run stop_icssg0' setenv get_kern_net 'run start_icssg0; tftp ${loadaddr} ${serverip}:${bootdir}/${name_kern}; run stop_icssg0' setenv get_overlay_net 'fdt address ${fdtaddr};fdt resize 0x0fffff;for overlay in $overlay_files;do; run start_icssg0; \ tftp ${overlayaddr} ${bootdir}/${overlay};fdt apply ${overlayaddr}; run stop_icssg0; done;' setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}' setenv serverip 158.218.113.14 setenv bootdir 06.02.00.58-am6 setenv name_fdt k3-am654-base-board.dtb setenv name_kern Image-am65xx-evm.bin setenv overlay_files 'k3-am654-idk.dtbo k3-am654-pcie-usb2.dtbo' setenv init_icssg0 'setenv ethact pruss0_eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \ setenv firmware_file 'am65x-pru0-prueth-fw.elf'; run get_firmware_mmc; rproc load 2 0x80000000 13040; rproc start 2; \ setenv loadaddr 0x89000000; setenv firmware_file am65x-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 3 0x89000000 5676; \ rproc start 3; dhcp; run stop_icssg0;' setenv bootcmd 'run init_mmc; run init_icssg0; run get_kern_net; run get_fdt_net ; run get_overlay_net ; run run_kern' saveenv bootrl …�rm }rn (hlUhmjh ubaubhÊ)�ro }rp (hlX ICSSG1 port 0rq hmjÓ hwh›h|hÍh~}rr (h€]h�]h‚]hƒ]h†]uhˆM¹h‰hhŠ]rs h“X ICSSG1 port 0rt …�ru }rv (hljq hmjo ubaubjr)�rw }rx (hlXŽsetenv start_icssg1 'rproc start 6; rproc start 7' setenv stop_icssg1 'rproc stop 6; rproc stop 7' setenv firmware_dir '/lib/firmware/ti-pruss' setenv get_fdt_net 'run start_icssg1; tftp ${fdtaddr} ${serverip}:${bootdir}/${name_fdt}; run stop_icssg1' setenv get_kern_net 'run start_icssg1; tftp ${loadaddr} ${serverip}:${bootdir}/${name_kern}; run stop_icssg1' setenv get_overlay_net 'fdt address ${fdtaddr};fdt resize 0x0fffff;for overlay in $overlay_files;do; run start_icssg1; \ tftp ${overlayaddr} ${bootdir}/${overlay};fdt apply ${overlayaddr}; run stop_icssg1; done;' setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}' setenv serverip 158.218.113.14 setenv bootdir 06.02.00.58-am6 setenv name_fdt k3-am654-base-board.dtb setenv name_kern Image-am65xx-evm.bin setenv overlay_files 'k3-am654-idk.dtbo k3-am654-pcie-usb2.dtbo' setenv init_icssg1 'setenv ethact pruss1_eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \ setenv firmware_file 'am65x-pru0-prueth-fw.elf'; run get_firmware_mmc; rproc load 6 0x80000000 13040; rproc start 6; \ setenv loadaddr 0x89000000; setenv firmware_file am65x-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 7 0x89000000 5676; \ rproc start 7; dhcp; run stop_icssg1;' setenv bootcmd 'run init_mmc; run init_icssg1; run get_kern_net; run get_fdt_net ; run get_overlay_net ; run run_kern' saveenv boothmjÓ hwh›h|juh~}ry (hŸh hƒ]h‚]h€]h�]h†]uhˆMÈh‰hhŠ]rz h“XŽsetenv start_icssg1 'rproc start 6; rproc start 7' setenv stop_icssg1 'rproc stop 6; rproc stop 7' setenv firmware_dir '/lib/firmware/ti-pruss' setenv get_fdt_net 'run start_icssg1; tftp ${fdtaddr} ${serverip}:${bootdir}/${name_fdt}; run stop_icssg1' setenv get_kern_net 'run start_icssg1; tftp ${loadaddr} ${serverip}:${bootdir}/${name_kern}; run stop_icssg1' setenv get_overlay_net 'fdt address ${fdtaddr};fdt resize 0x0fffff;for overlay in $overlay_files;do; run start_icssg1; \ tftp ${overlayaddr} ${bootdir}/${overlay};fdt apply ${overlayaddr}; run stop_icssg1; done;' setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}' setenv serverip 158.218.113.14 setenv bootdir 06.02.00.58-am6 setenv name_fdt k3-am654-base-board.dtb setenv name_kern Image-am65xx-evm.bin setenv overlay_files 'k3-am654-idk.dtbo k3-am654-pcie-usb2.dtbo' setenv init_icssg1 'setenv ethact pruss1_eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \ setenv firmware_file 'am65x-pru0-prueth-fw.elf'; run get_firmware_mmc; rproc load 6 0x80000000 13040; rproc start 6; \ setenv loadaddr 0x89000000; setenv firmware_file am65x-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 7 0x89000000 5676; \ rproc start 7; dhcp; run stop_icssg1;' setenv bootcmd 'run init_mmc; run init_icssg1; run get_kern_net; run get_fdt_net ; run get_overlay_net ; run run_kern' saveenv bootr{ …�r| }r} (hlUhmjw ubaubhÊ)�r~ }r (hlX ICSSG2 port 0r€ hmjÓ hwh›h|hÍh~}r� (h€]h�]h‚]hƒ]h†]uhˆMÒh‰hhŠ]r‚ h“X ICSSG2 port 0rƒ …�r„ }r… (hlj€ hmj~ ubaubjr)�r† }r‡ (hlX’setenv start_icssg2 'rproc start 10; rproc start 11' setenv stop_icssg2 'rproc stop 10; rproc stop 11' setenv firmware_dir '/lib/firmware/ti-pruss' setenv get_fdt_net 'run start_icssg2; tftp ${fdtaddr} ${serverip}:${bootdir}/${name_fdt}; run stop_icssg2' setenv get_kern_net 'run start_icssg2; tftp ${loadaddr} ${serverip}:${bootdir}/${name_kern}; run stop_icssg2' setenv get_overlay_net 'fdt address ${fdtaddr};fdt resize 0x0fffff;for overlay in $overlay_files;do; run start_icssg2; \ tftp ${overlayaddr} ${bootdir}/${overlay};fdt apply ${overlayaddr}; run stop_icssg2; done;' setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}' setenv serverip 158.218.113.14 setenv bootdir 06.02.00.58-am6 setenv name_fdt k3-am654-base-board.dtb setenv name_kern Image-am65xx-evm.bin setenv overlay_files 'k3-am654-idk.dtbo k3-am654-pcie-usb2.dtbo' setenv init_icssg2 'setenv ethact pruss2_eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \ setenv firmware_file 'am65x-pru0-prueth-fw.elf'; run get_firmware_mmc; rproc load 10 0x80000000 13040; rproc start 10; \ setenv loadaddr 0x89000000; setenv firmware_file am65x-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 11 0x89000000 5676; \ rproc start 11; dhcp; run stop_icssg2;' setenv bootcmd 'run init_mmc; run init_icssg2; run get_kern_net; run get_fdt_net ; run get_overlay_net ; run run_kern' saveenv boothmjÓ hwh›h|juh~}rˆ (hŸh hƒ]h‚]h€]h�]h†]uhˆMáh‰hhŠ]r‰ h“X’setenv start_icssg2 'rproc start 10; rproc start 11' setenv stop_icssg2 'rproc stop 10; rproc stop 11' setenv firmware_dir '/lib/firmware/ti-pruss' setenv get_fdt_net 'run start_icssg2; tftp ${fdtaddr} ${serverip}:${bootdir}/${name_fdt}; run stop_icssg2' setenv get_kern_net 'run start_icssg2; tftp ${loadaddr} ${serverip}:${bootdir}/${name_kern}; run stop_icssg2' setenv get_overlay_net 'fdt address ${fdtaddr};fdt resize 0x0fffff;for overlay in $overlay_files;do; run start_icssg2; \ tftp ${overlayaddr} ${bootdir}/${overlay};fdt apply ${overlayaddr}; run stop_icssg2; done;' setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}' setenv serverip 158.218.113.14 setenv bootdir 06.02.00.58-am6 setenv name_fdt k3-am654-base-board.dtb setenv name_kern Image-am65xx-evm.bin setenv overlay_files 'k3-am654-idk.dtbo k3-am654-pcie-usb2.dtbo' setenv init_icssg2 'setenv ethact pruss2_eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \ setenv firmware_file 'am65x-pru0-prueth-fw.elf'; run get_firmware_mmc; rproc load 10 0x80000000 13040; rproc start 10; \ setenv loadaddr 0x89000000; setenv firmware_file am65x-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 11 0x89000000 5676; \ rproc start 11; dhcp; run stop_icssg2;' setenv bootcmd 'run init_mmc; run init_icssg2; run get_kern_net; run get_fdt_net ; run get_overlay_net ; run run_kern' saveenv bootrŠ …�r‹ }rŒ (hlUhmj† ubaubj®)�r� }rŽ (hlXETo boot over second port (MII port 1) of ICSSG2, user needs to edit arch/arm/dts/k3-am654-base-board-u-boot.dtsi in the U-Boot source tree. See DTS file for instruction. For example, user needs to comment pruss2_emac0 DT node and uncomment pruss2_emac1 node. Similarly to enable second port for ICSSG0 and ICSSG1, user needs to edit arch/arm/dts/k3-am654-idk.dtso and enable pruss0_emac1 and pruss1_emac1 nodes respectives. After this rebuild u-boot images and use it. Port 1 is marked as by Eth1 on on base board (ICSSG2), Eth1 (ICSSG0) and Eth3 (ICSSG1) on IDK Application board.r� hmjÓ hwh›h|j²h~}r� (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r‘ hÊ)�r’ }r“ (hlj� hmj� hwh›h|hÍh~}r” (h€]h�]h‚]hƒ]h†]uhˆMëhŠ]r• h“XETo boot over second port (MII port 1) of ICSSG2, user needs to edit arch/arm/dts/k3-am654-base-board-u-boot.dtsi in the U-Boot source tree. See DTS file for instruction. For example, user needs to comment pruss2_emac0 DT node and uncomment pruss2_emac1 node. Similarly to enable second port for ICSSG0 and ICSSG1, user needs to edit arch/arm/dts/k3-am654-idk.dtso and enable pruss0_emac1 and pruss1_emac1 nodes respectives. After this rebuild u-boot images and use it. Port 1 is marked as by Eth1 on on base board (ICSSG2), Eth1 (ICSSG0) and Eth3 (ICSSG1) on IDK Application board.r– …�r— }r˜ (hlj� hmj’ ubaubaubjC)�r™ }rš (hlUhmjÓ hwh›h|jZh~}r› (h€]h�]h‚]hƒ]h†]uhˆMíh‰hhŠ]rœ jH)�r� }rž (hlUjLKhmj™ hwh›h|hˆh~}rŸ (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�r  }r¡ (hlUhmhshwh›h|h}h~}r¢ (h€]h�]h‚]hƒ]r£ Unandr¤ ah†]r¥ h auhˆMðh‰hhŠ]r¦ (hŒ)�r§ }r¨ (hlXNANDr© hmj  hwh›h|h�h~}rª (h€]h�]h‚]hƒ]h†]uhˆMðh‰hhŠ]r« h“XNANDr¬ …�r­ }r® (hlj© hmj§ ubaubhÃ)�r¯ }r° (hlUhmj  hwh›h|hÆh~}r± (hÈX#CONFIG_part_family in ('J7_family')hƒ]h‚]h€]h�]h†]uhˆMòh‰hhŠ]r² j®)�r³ }r´ (hlX(NAND is not supported on J721E platform.rµ hmj¯ hwh›h|j²h~}r¶ (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r· hÊ)�r¸ }r¹ (hljµ hmj³ hwh›h|hÍh~}rº (h€]h�]h‚]hƒ]h†]uhˆMõhŠ]r» h“X(NAND is not supported on J721E platform.r¼ …�r½ }r¾ (hljµ hmj¸ ubaubaubaubhÊ)�r¿ }rÀ (hlXšThis section documents how to write files to the NAND device and use it to load and then boot the Linux Kernel using a root filesystem also found on NAND.rÁ hmj  hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM÷h‰hhŠ]rà h“XšThis section documents how to write files to the NAND device and use it to load and then boot the Linux Kernel using a root filesystem also found on NAND.rÄ …�rÅ }rÆ (hljÁ hmj¿ ubaubhn)�rÇ }rÈ (hlUhmj  hwh›h|h}h~}rÉ (h€]h�]h‚]hƒ]rÊ U3erasing-reading-and-writing-to-from-nand-partitionsrË ah†]rÌ h, # parts = 10 #: name size offset mask_flags 0: NAND.SPL 0x00020000 0x00000000 0 1: NAND.SPL.backup1 0x00020000 0x00020000 0 2: NAND.SPL.backup2 0x00020000 0x00040000 0 3: NAND.SPL.backup3 0x00020000 0x00060000 0 4: NAND.u-boot-spl-os 0x00040000 0x00080000 0 5: NAND.u-boot 0x00100000 0x000c0000 0 6: NAND.u-boot-env 0x00020000 0x001c0000 0 7: NAND.u-boot-env.backup10x00020000 0x001e0000 0 8: NAND.kernel 0x00800000 0x00200000 0 9: NAND.file-system 0x0f600000 0x00a00000 0hmjÇ hwh›h|juh~}rú (hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]rû h“Xªdevice nand0 , # parts = 10 #: name size offset mask_flags 0: NAND.SPL 0x00020000 0x00000000 0 1: NAND.SPL.backup1 0x00020000 0x00020000 0 2: NAND.SPL.backup2 0x00020000 0x00040000 0 3: NAND.SPL.backup3 0x00020000 0x00060000 0 4: NAND.u-boot-spl-os 0x00040000 0x00080000 0 5: NAND.u-boot 0x00100000 0x000c0000 0 6: NAND.u-boot-env 0x00020000 0x001c0000 0 7: NAND.u-boot-env.backup10x00020000 0x001e0000 0 8: NAND.kernel 0x00800000 0x00200000 0 9: NAND.file-system 0x0f600000 0x00a00000 0rü …�rý }rþ (hlUhmjø ubaubhÊ)�rÿ }r (hlXˆNote: In later sections the symbol should be replaced with the partition name seen when executing the mtdparts command.r hmjÇ hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r h“XˆNote: In later sections the symbol should be replaced with the partition name seen when executing the mtdparts command.r …�r }r (hlj hmjÿ ubaubjC)�r }r (hlXErasing Partitionr hmjÇ hwh›h|jGh~}r (hƒ]r Uerasing-partitionr ah‚]h€]h�]h†]r h;auhˆNh‰hhŠ]r h“XErasing Partitionr …�r }r (hlj hmj ubaubjr)�r }r (hlX nand erase.part hmjÇ hwh›h|juh~}r (hŸh hƒ]h‚]h€]h�]h†]uhˆM+h‰hhŠ]r h“X nand erase.part r …�r }r (hlUhmj ubaubjC)�r }r (hlXWriting to Partitionr hmjÇ hwh›h|jGh~}r (hƒ]r Uwriting-to-partitionr ah‚]h€]h�]h†]r hcauhˆNh‰hhŠ]r h“XWriting to Partitionr! …�r" }r# (hlj hmj ubaubhÊ)�r$ }r% (hlXaWhen writing to NAND partition the file to be written must have previously been copied to memory.r& hmjÇ hwh›h|hÍh~}r' (h€]h�]h‚]hƒ]h†]uhˆM%h‰hhŠ]r( h“XaWhen writing to NAND partition the file to be written must have previously been copied to memory.r) …�r* }r+ (hlj& hmj$ ubaubjr)�r, }r- (hlX5nand write hmjÇ hwh›h|juh~}r. (hŸh hƒ]h‚]h€]h�]h†]uhˆM5h‰hhŠ]r/ h“X5nand write r0 …�r1 }r2 (hlUhmj, ubaubhÊ)�r3 }r4 (hlX‚The symbol refers to the location in memory that a file was read into DDR memory. The symbol represents the amount of bytes (in hex) of the file to write into the NAND partition. Note: When reading a file into DDR, U-boot by default sets the value of environment variable "filesize" to the number of bytes (in hex) that was read via the last read/load command.r5 hmjÇ hwh›h|hÍh~}r6 (h€]h�]h‚]hƒ]h†]uhˆM,h‰hhŠ]r7 h“X‚The symbol refers to the location in memory that a file was read into DDR memory. The symbol represents the amount of bytes (in hex) of the file to write into the NAND partition. Note: When reading a file into DDR, U-boot by default sets the value of environment variable "filesize" to the number of bytes (in hex) that was read via the last read/load command.r8 …�r9 }r: (hlj5 hmj3 ubaubjC)�r; }r< (hlUhmjÇ hwh›h|jZh~}r= (h€]h�]h‚]hƒ]h†]uhˆM3h‰hhŠ]r> (jH)�r? }r@ (hlUjLKhmj; hwh›h|hˆh~}rA (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubjH)�rB }rC (hlXØAs an example below shows the process of writing a kernel (zImage) into the NAND's kernel partition. The zImage to be written is loaded from the SD card's rootfs (2nd) partition. Loading zImage from MMC to DDR memoryrD jLKhmj; hwh›h|hˆh~}rE (h€]h�]h‚]hƒ]h†]uhˆM7h‰hhŠ]rF h“XØAs an example below shows the process of writing a kernel (zImage) into the NAND's kernel partition. The zImage to be written is loaded from the SD card's rootfs (2nd) partition. Loading zImage from MMC to DDR memoryrG …�rH }rI (hljD hmjB ubaubeubjr)�rJ }rK (hlX’U-Boot # mmc dev 0; U-Boot # setenv devnum 0 U-Boot # setenv devtype mmc U-Boot # mmc rescan U-Boot # load ${devtype} 1:2 ${loadaddr} /boot/zImagehmjÇ hwh›h|juh~}rL (hŸh hƒ]h‚]h€]h�]h†]uhˆMFh‰hhŠ]rM h“X’U-Boot # mmc dev 0; U-Boot # setenv devnum 0 U-Boot # setenv devtype mmc U-Boot # mmc rescan U-Boot # load ${devtype} 1:2 ${loadaddr} /boot/zImagerN …�rO }rP (hlUhmjJ ubaubhÊ)�rQ }rR (hlXNNow that zImage is loaded into memory time to write it into the NAND partitionrS hmjÇ hwh›h|hÍh~}rT (h€]h�]h‚]hƒ]h†]uhˆMAh‰hhŠ]rU h“XNNow that zImage is loaded into memory time to write it into the NAND partitionrV …�rW }rX (hljS hmjQ ubaubjr)�rY }rZ (hlX\U-Boot # nand erase.part NAND.kernel U-Boot # nand write ${loadaddr} NAND.kernel ${filesize}hmjÇ hwh›h|juh~}r[ (hŸh hƒ]h‚]h€]h�]h†]uhˆMQh‰hhŠ]r\ h“X\U-Boot # nand erase.part NAND.kernel U-Boot # nand write ${loadaddr} NAND.kernel ${filesize}r] …�r^ }r_ (hlUhmjY ubaubjC)�r` }ra (hlXReading from Partitionrb hmjÇ hwh›h|jGh~}rc (hƒ]rd Ureading-from-partitionre ah‚]h€]h�]h†]rf hauhˆNh‰hhŠ]rg h“XReading from Partitionrh …�ri }rj (hljb hmj` ubaubjr)�rk }rl (hlX(nand read hmjÇ hwh›h|juh~}rm (hŸh hƒ]h‚]h€]h�]h†]uhˆMYh‰hhŠ]rn h“X(nand read ro …�rp }rq (hlUhmjk ubaubhÊ)�rr }rs (hlXÚThe symbol should be replaced with the location in DDR that you want the contents of the NAND partition to be copied to. The symbol contains the NAND partition name you want to read from.rt hmjÇ hwh›h|hÍh~}ru (h€]h�]h‚]hƒ]h†]uhˆMPh‰hhŠ]rv h“XÚThe symbol should be replaced with the location in DDR that you want the contents of the NAND partition to be copied to. The symbol contains the NAND partition name you want to read from.rw …�rx }ry (hljt hmjr ubaubjC)�rz }r{ (hlUhmjÇ hwh›h|jZh~}r| (h€]h�]h‚]hƒ]h†]uhˆMUh‰hhŠ]r} jH)�r~ }r (hlUjLKhmjz hwh›h|hˆh~}r€ (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�r� }r‚ (hlUhmj  hwh›h|h}h~}rƒ (h€]h�]h‚]hƒ]r„ Uwriting-to-nand-via-dfur… ah†]r† h,auhˆMXh‰hhŠ]r‡ (hŒ)�rˆ }r‰ (hlXWriting to NAND via DFUrŠ hmj� hwh›h|h�h~}r‹ (h€]h�]h‚]hƒ]h†]uhˆMXh‰hhŠ]rŒ h“XWriting to NAND via DFUr� …�rŽ }r� (hljŠ hmjˆ ubaubhÊ)�r� }r‘ (hlX]Currently in boards that support using DFU, the default build supports writing to NAND, so no custom build is required. To see the list of available places to write to (in DFU terms, altsettings) use the **mtdparts** command to list the known MTD partitions and **printenv dfu\_alt\_settings** to see how they are mapped and exposed to **dfu-util**.hmj� hwh›h|hÍh~}r’ (h€]h�]h‚]hƒ]h†]uhˆMZh‰hhŠ]r“ (h“XÌCurrently in boards that support using DFU, the default build supports writing to NAND, so no custom build is required. To see the list of available places to write to (in DFU terms, altsettings) use the r” …�r• }r– (hlXÌCurrently in boards that support using DFU, the default build supports writing to NAND, so no custom build is required. To see the list of available places to write to (in DFU terms, altsettings) use the hmj� ubj)�r— }r˜ (hlX **mtdparts**h~}r™ (h€]h�]h‚]hƒ]h†]uhmj� hŠ]rš h“Xmtdpartsr› …�rœ }r� (hlUhmj— ubah|j'ubh“X. command to list the known MTD partitions and rž …�rŸ }r  (hlX. command to list the known MTD partitions and hmj� ubj)�r¡ }r¢ (hlX**printenv dfu\_alt\_settings**h~}r£ (h€]h�]h‚]hƒ]h†]uhmj� hŠ]r¤ h“Xprintenv dfu_alt_settingsr¥ …�r¦ }r§ (hlUhmj¡ ubah|j'ubh“X+ to see how they are mapped and exposed to r¨ …�r© }rª (hlX+ to see how they are mapped and exposed to hmj� ubj)�r« }r¬ (hlX **dfu-util**h~}r­ (h€]h�]h‚]hƒ]h†]uhmj� hŠ]r® h“Xdfu-utilr¯ …�r° }r± (hlUhmj« ubah|j'ubh“X.…�r² }r³ (hlX.hmj� ubeubjr)�r´ }rµ (hlXWU-Boot # mtdparts device nand0 , # parts = 8 #: name size offset mask_flags 0: NAND.SPL 0x00020000 0x00000000 0 1: NAND.SPL.backup1 0x00020000 0x00020000 0 2: NAND.SPL.backup2 0x00020000 0x00040000 0 3: NAND.SPL.backup3 0x00020000 0x00060000 0 4: NAND.u-boot 0x001e0000 0x00080000 0 5: NAND.u-boot-env 0x00020000 0x00260000 0 6: NAND.kernel 0x00500000 0x00280000 0 7: NAND.file-system 0x0f880000 0x00780000 0 active partition: nand0,0 - (SPL) 0x00080000 @ 0x00000000 U-Boot # printenv dfu_alt_info_nand dfu_alt_info=NAND.SPL part 0 1;NAND.SPL.backup1 part 0 2;NAND.SPL.backup2 part 0 3;NAND.SPL.backup3 part 0 4;NAND.u-boot part 0 5;NAND.kernel part 0 7;NAND.file-system part 0 8hmj� hwh›h|juh~}r¶ (hŸh hƒ]h‚]h€]h�]h†]uhˆMnh‰hhŠ]r· h“XWU-Boot # mtdparts device nand0 , # parts = 8 #: name size offset mask_flags 0: NAND.SPL 0x00020000 0x00000000 0 1: NAND.SPL.backup1 0x00020000 0x00020000 0 2: NAND.SPL.backup2 0x00020000 0x00040000 0 3: NAND.SPL.backup3 0x00020000 0x00060000 0 4: NAND.u-boot 0x001e0000 0x00080000 0 5: NAND.u-boot-env 0x00020000 0x00260000 0 6: NAND.kernel 0x00500000 0x00280000 0 7: NAND.file-system 0x0f880000 0x00780000 0 active partition: nand0,0 - (SPL) 0x00080000 @ 0x00000000 U-Boot # printenv dfu_alt_info_nand dfu_alt_info=NAND.SPL part 0 1;NAND.SPL.backup1 part 0 2;NAND.SPL.backup2 part 0 3;NAND.SPL.backup3 part 0 4;NAND.u-boot part 0 5;NAND.kernel part 0 7;NAND.file-system part 0 8r¸ …�r¹ }rº (hlUhmj´ ubaubhÊ)�r» }r¼ (hlXBThis means that you can tell dfu-util to write anything to any of:r½ hmj� hwh›h|hÍh~}r¾ (h€]h�]h‚]hƒ]h†]uhˆMth‰hhŠ]r¿ h“XBThis means that you can tell dfu-util to write anything to any of:rÀ …�rÁ }r (hlj½ hmj» ubaubj#)�rà }rÄ (hlUhmj� hwh›h|j&h~}rÅ (j(X-hƒ]h‚]h€]h�]h†]uhˆMvh‰hhŠ]rÆ (j )�rÇ }rÈ (hlXNAND.SPLrÉ hmjà hwh›h|jh~}rÊ (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rË hÊ)�rÌ }rÍ (hljÉ hmjÇ hwh›h|hÍh~}rÎ (h€]h�]h‚]hƒ]h†]uhˆMvhŠ]rÏ h“XNAND.SPLrÐ …�rÑ }rÒ (hljÉ hmjÌ ubaubaubj )�rÓ }rÔ (hlXNAND.SPL.backup1rÕ hmjà hwh›h|jh~}rÖ (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r× hÊ)�rØ }rÙ (hljÕ hmjÓ hwh›h|hÍh~}rÚ (h€]h�]h‚]hƒ]h†]uhˆMwhŠ]rÛ h“XNAND.SPL.backup1rÜ …�rÝ }rÞ (hljÕ hmjØ ubaubaubj )�rß }rà (hlXNAND.SPL.backup2rá hmjà hwh›h|jh~}râ (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rã hÊ)�rä }rå (hljá hmjß hwh›h|hÍh~}ræ (h€]h�]h‚]hƒ]h†]uhˆMxhŠ]rç h“XNAND.SPL.backup2rè …�ré }rê (hljá hmjä ubaubaubj )�rë }rì (hlXNAND.SPL.backup3rí hmjà hwh›h|jh~}rî (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rï hÊ)�rð }rñ (hljí hmjë hwh›h|hÍh~}rò (h€]h�]h‚]hƒ]h†]uhˆMyhŠ]ró h“XNAND.SPL.backup3rô …�rõ }rö (hljí hmjð ubaubaubj )�r÷ }rø (hlX NAND.u-bootrù hmjà hwh›h|jh~}rú (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rû hÊ)�rü }rý (hljù hmj÷ hwh›h|hÍh~}rþ (h€]h�]h‚]hƒ]h†]uhˆMzhŠ]rÿ h“X NAND.u-bootr …�r }r (hljù hmjü ubaubaubj )�r }r (hlX NAND.kernelr hmjà hwh›h|jh~}r (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r hÊ)�r }r (hlj hmj hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM{hŠ]r h“X NAND.kernelr …�r }r (hlj hmj ubaubaubj )�r }r (hlXNAND.file-system hmjà hwh›h|jh~}r (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r hÊ)�r }r (hlXNAND.file-systemr hmj hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM|hŠ]r h“XNAND.file-systemr …�r }r (hlj hmj ubaubaubeubhÊ)�r }r (hlX{Before writing you must erase at least the area to be written to. Then to start DFU on the target on the first NAND device:r hmj� hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM~h‰hhŠ]r h“X{Before writing you must erase at least the area to be written to. Then to start DFU on the target on the first NAND device:r …�r! }r" (hlj hmj ubaubjr)�r# }r$ (hlX`U-Boot # nand erase.chip U-Boot # setenv dfu_alt_info ${dfu_alt_info_nand} U-Boot # dfu 0 nand 0hmj� hwh›h|juh~}r% (hŸh hƒ]h‚]h€]h�]h†]uhˆMŽh‰hhŠ]r& h“X`U-Boot # nand erase.chip U-Boot # setenv dfu_alt_info ${dfu_alt_info_nand} U-Boot # dfu 0 nand 0r' …�r( }r) (hlUhmj# ubaubhÊ)�r* }r+ (hlX@Then on the host PC to write **MLO** to the first SPL partition:r, hmj� hwh›h|hÍh~}r- (h€]h�]h‚]hƒ]h†]uhˆM‡h‰hhŠ]r. (h“XThen on the host PC to write r/ …�r0 }r1 (hlXThen on the host PC to write hmj* ubj)�r2 }r3 (hlX**MLO**h~}r4 (h€]h�]h‚]hƒ]h†]uhmj* hŠ]r5 h“XMLOr6 …�r7 }r8 (hlUhmj2 ubah|j'ubh“X to the first SPL partition:r9 …�r: }r; (hlX to the first SPL partition:hmj* ubeubjr)�r< }r= (hlX"$ sudo dfu-util -D MLO -a NAND.SPLhmj� hwh›h|juh~}r> (hŸh hƒ]h‚]h€]h�]h†]uhˆM–h‰hhŠ]r? h“X"$ sudo dfu-util -D MLO -a NAND.SPLr@ …�rA }rB (hlUhmj< ubaubeubhn)�rC }rD (hlUhmj  hwh›h|h}h~}rE (h€]h�]h‚]hƒ]rF U nand-bootrG ah†]rH hMauhˆMŽh‰hhŠ]rI (hŒ)�rJ }rK (hlX NAND BootrL hmjC hwh›h|h�h~}rM (h€]h�]h‚]hƒ]h†]uhˆMŽh‰hhŠ]rN h“X NAND BootrO …�rP }rQ (hljL hmjJ ubaubhÊ)�rR }rS (hlX‚If you want to load and run U-Boot from NAND the first step is insuring that the appropriate U-boot files are loaded in the correct partition. For AM335x, AM437x, DRA7x devices this means writing the file MLO to the NAND's SPL partition. For OMAP-L138 device, write the .ais image to the NAND's partition. For all devices this requires writing u-boot.img to the NAND's U-Boot partition.rT hmjC hwh›h|hÍh~}rU (h€]h�]h‚]hƒ]h†]uhˆM�h‰hhŠ]rV h“X‚If you want to load and run U-Boot from NAND the first step is insuring that the appropriate U-boot files are loaded in the correct partition. For AM335x, AM437x, DRA7x devices this means writing the file MLO to the NAND's SPL partition. For OMAP-L138 device, write the .ais image to the NAND's partition. For all devices this requires writing u-boot.img to the NAND's U-Boot partition.rW …�rX }rY (hljT hmjR ubaubj®)�rZ }r[ (hlXvThe NAND partition of OMAP-L138 is different from other devices, please use the following commands to program the NANDhmjC hwh›h|j²h~}r\ (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r] hÊ)�r^ }r_ (hlXvThe NAND partition of OMAP-L138 is different from other devices, please use the following commands to program the NANDr` hmjZ hwh›h|hÍh~}ra (h€]h�]h‚]hƒ]h†]uhˆM˜hŠ]rb h“XvThe NAND partition of OMAP-L138 is different from other devices, please use the following commands to program the NANDrc …�rd }re (hlj` hmj^ ubaubaubjr)�rf }rg (hlX_=> setenv ipaddr => setenv serverip => tftp ${loadaddr} ${serverip}:u-boot-omapl138-lcdk.ais => print filesize => nand erase 0x20000 => nand write ${loadaddr} 0x20000 * hex_len is next sector boundary of the filesize. The sector size is 0x10000. set dip switch to NAND boot and power cycle the EVMhmjC hwh›h|juh~}rh (hŸh hƒ]h‚]h€]h�]h†]uhˆM¨h‰hhŠ]ri h“X_=> setenv ipaddr => setenv serverip => tftp ${loadaddr} ${serverip}:u-boot-omapl138-lcdk.ais => print filesize => nand erase 0x20000 => nand write ${loadaddr} 0x20000 * hex_len is next sector boundary of the filesize. The sector size is 0x10000. set dip switch to NAND boot and power cycle the EVMrj …�rk }rl (hlUhmjf ubaubhÊ)�rm }rn (hlXñOnce the file(s) have been written to NAND the board should then be powered off. Next evm's boot switches need to be configured for NAND booting. To understand the appropriate boot switches settings please see the evm's hardware setup guide.ro hmjC hwh›h|hÍh~}rp (h€]h�]h‚]hƒ]h†]uhˆM§h‰hhŠ]rq h“XñOnce the file(s) have been written to NAND the board should then be powered off. Next evm's boot switches need to be configured for NAND booting. To understand the appropriate boot switches settings please see the evm's hardware setup guide.rr …�rs }rt (hljo hmjm ubaubjC)�ru }rv (hlUhmjC hwh›h|jZh~}rw (h€]h�]h‚]hƒ]h†]uhˆM¬h‰hhŠ]rx jH)�ry }rz (hlUjLKhmju hwh›h|hˆh~}r{ (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�r| }r} (hlUhmj  hwh›h|h}h~}r~ (h€]h�]h‚]hƒ]r U'booting-kernel-and-filesystem-from-nandr€ ah†]r� hKauhˆM¯h‰hhŠ]r‚ (hŒ)�rƒ }r„ (hlX'Booting Kernel and Filesystem from NANDr… hmj| hwh›h|h�h~}r† (h€]h�]h‚]hƒ]h†]uhˆM¯h‰hhŠ]r‡ h“X'Booting Kernel and Filesystem from NANDrˆ …�r‰ }rŠ (hlj… hmjƒ ubaubhÊ)�r‹ }rŒ (hlXAIf a user wants to use NAND as their primary storage then the NAND flash must have individual partitions for all the critical software needed to boot the kernel. At a minimum this includes kernel, dtb, file system. Some SoCs require additional files and firmware which also need to be stored in different NAND partitions.r� hmj| hwh›h|hÍh~}rŽ (h€]h�]h‚]hƒ]h†]uhˆM±h‰hhŠ]r� h“XAIf a user wants to use NAND as their primary storage then the NAND flash must have individual partitions for all the critical software needed to boot the kernel. At a minimum this includes kernel, dtb, file system. Some SoCs require additional files and firmware which also need to be stored in different NAND partitions.r� …�r‘ }r’ (hlj� hmj‹ ubaubhÊ)�r“ }r” (hlXTSimilar to booting the kernel from any interface the user must insure that all required files needed for booting are loaded in DDR memory. The only exception is the filesystem which will be loaded by the kernel via the bootargs parameters. Bootargs contains information passed to the kernel including where and how to mount the file system.r• hmj| hwh›h|hÍh~}r– (h€]h�]h‚]hƒ]h†]uhˆM·h‰hhŠ]r— h“XTSimilar to booting the kernel from any interface the user must insure that all required files needed for booting are loaded in DDR memory. The only exception is the filesystem which will be loaded by the kernel via the bootargs parameters. Bootargs contains information passed to the kernel including where and how to mount the file system.r˜ …�r™ }rš (hlj• hmj“ ubaubhÊ)�r› }rœ (hlXRThe below contains example bootargs used by DRA7x evm for using a ubifs filesystemr� hmj| hwh›h|hÍh~}rž (h€]h�]h‚]hƒ]h†]uhˆM½h‰hhŠ]rŸ h“XRThe below contains example bootargs used by DRA7x evm for using a ubifs filesystemr  …�r¡ }r¢ (hlj� hmj› ubaubjr)�r£ }r¤ (hlX{setenv bootargs console=${console} ${optargs} root=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048 rootfstype=ubifs rootwait=1hmj| hwh›h|juh~}r¥ (hŸh hƒ]h‚]h€]h�]h†]uhˆMÍh‰hhŠ]r¦ h“X{setenv bootargs console=${console} ${optargs} root=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048 rootfstype=ubifs rootwait=1r§ …�r¨ }r© (hlUhmj£ ubaubhÊ)�rª }r« (hlX@In the above example bootargs, "rootfs" stands for the value specified by in the "vol\_name" parameter defined in the ubinize.cfg file. In ubi.mtd "NAND.file-system" and "2048" represents the name of the partition that contains the ubifs and page size. Rootfstype simply tells the kernel what type of file system to use.hmj| hwh›h|hÍh~}r¬ (h€]h�]h‚]hƒ]h†]uhˆMÄh‰hhŠ]r­ h“X?In the above example bootargs, "rootfs" stands for the value specified by in the "vol_name" parameter defined in the ubinize.cfg file. In ubi.mtd "NAND.file-system" and "2048" represents the name of the partition that contains the ubifs and page size. Rootfstype simply tells the kernel what type of file system to use.r® …�r¯ }r° (hlX@In the above example bootargs, "rootfs" stands for the value specified by in the "vol\_name" parameter defined in the ubinize.cfg file. In ubi.mtd "NAND.file-system" and "2048" represents the name of the partition that contains the ubifs and page size. Rootfstype simply tells the kernel what type of file system to use.hmjª ubaubhÊ)�r± }r² (hlXBy default for our evms properly loading, setting bootargs and booting the kernel is handled by running "run nandboot" in U-boot. Information on creating a UBIFS can be found `here `__.hmj| hwh›h|hÍh~}r³ (h€]h�]h‚]hƒ]h†]uhˆMÊh‰hhŠ]r´ (h“X¯By default for our evms properly loading, setting bootargs and booting the kernel is handled by running "run nandboot" in U-boot. Information on creating a UBIFS can be found rµ …�r¶ }r· (hlX¯By default for our evms properly loading, setting bootargs and booting the kernel is handled by running "run nandboot" in U-boot. Information on creating a UBIFS can be found hmj± ubhÓ)�r¸ }r¹ (hlXc`here `__h~}rº (UnameXhereh×XXFoundational_Components/Kernel/Kernel_Drivers/Storage/NAND.html#building-ubi-file-systemhƒ]h‚]h€]h�]h†]uhmj± hŠ]r» h“Xherer¼ …�r½ }r¾ (hlUhmj¸ ubah|hÜubh“X.…�r¿ }rÀ (hlX.hmj± ubeubjC)�rÁ }r (hlUhmj| hwh›h|jZh~}rà (h€]h�]h‚]hƒ]h†]uhˆMÏh‰hhŠ]rÄ jH)�rÅ }rÆ (hlUjLKhmjÁ hwh›h|hˆh~}rÇ (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�rÈ }rÉ (hlUhmhshwh›h|h}h~}rÊ (h€]h�]h‚]hƒ]rË Usd-emmc-or-usb-storagerÌ ah†]rÍ hTauhˆMÒh‰hhŠ]rÎ (hŒ)�rÏ }rÐ (hlXSD, eMMC or USB StoragerÑ hmjÈ hwh›h|h�h~}rÒ (h€]h�]h‚]hƒ]h†]uhˆMÒh‰hhŠ]rÓ h“XSD, eMMC or USB StoragerÔ …�rÕ }rÖ (hljÑ hmjÏ ubaubhÊ)�r× }rØ (hlXxThe commands for using SD cards, eMMC flash and USB mass storage devices (hard drives, flash drives, card readers, etc) are all very similar. The biggest difference is that on some hardware we may not be able to run U-Boot out of ROM from the storage device as it is unsupported. Once U-Boot is running however, any of these may be used for the kernel and the root filesystem.rÙ hmjÈ hwh›h|hÍh~}rÚ (h€]h�]h‚]hƒ]h†]uhˆMÔh‰hhŠ]rÛ h“XxThe commands for using SD cards, eMMC flash and USB mass storage devices (hard drives, flash drives, card readers, etc) are all very similar. The biggest difference is that on some hardware we may not be able to run U-Boot out of ROM from the storage device as it is unsupported. Once U-Boot is running however, any of these may be used for the kernel and the root filesystem.rÜ …�rÝ }rÞ (hljÙ hmj× ubaubhn)�rß }rà (hlUhmjÈ hwh›h|h}h~}rá (h€]h�]h‚]hƒ]râ Upartitioning-emmc-from-u-bootrã ah†]rä h/auhˆMÜh‰hhŠ]rå (hŒ)�ræ }rç (hlXPartitioning eMMC from U-Bootrè hmjß hwh›h|h�h~}ré (h€]h�]h‚]hƒ]h†]uhˆMÜh‰hhŠ]rê h“XPartitioning eMMC from U-Bootrë …�rì }rí (hljè hmjæ ubaubhÊ)�rî }rï (hlXThe eMMC device typically ships without any partition table. We make use of the GPT support in U-Boot to write a GPT partition table to eMMC. In this case we need to use the **uuidgen** program on the host to create the UUIDs used for the disk and each partition.hmjß hwh›h|hÍh~}rð (h€]h�]h‚]hƒ]h†]uhˆMÞh‰hhŠ]rñ (h“X®The eMMC device typically ships without any partition table. We make use of the GPT support in U-Boot to write a GPT partition table to eMMC. In this case we need to use the rò …�ró }rô (hlX®The eMMC device typically ships without any partition table. We make use of the GPT support in U-Boot to write a GPT partition table to eMMC. In this case we need to use the hmjî ubj)�rõ }rö (hlX **uuidgen**h~}r÷ (h€]h�]h‚]hƒ]h†]uhmjî hŠ]rø h“Xuuidgenrù …�rú }rû (hlUhmjõ ubah|j'ubh“XN program on the host to create the UUIDs used for the disk and each partition.rü …�rý }rþ (hlXN program on the host to create the UUIDs used for the disk and each partition.hmjî ubeubjr)�rÿ }r (hlX6$ uuidgen ...first uuid... $ uuidgen ...second uuid...hmjß hwh›h|juh~}r (hŸh hƒ]h‚]h€]h�]h†]uhˆMðh‰hhŠ]r h“X6$ uuidgen ...first uuid... $ uuidgen ...second uuid...r …�r }r (hlUhmjÿ ubaubjr)�r }r (hlXõU-Boot # printenv partitions uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs} U-Boot # setenv uuid_gpt_disk ...first uuid... U-Boot # setenv uuid_gpt_rootfs ...second uuid... U-Boot # gpt write mmc 1 ${partitions}hmjß hwh›h|juh~}r (hŸh hƒ]h‚]h€]h�]h†]uhˆM÷h‰hhŠ]r h“XõU-Boot # printenv partitions uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs} U-Boot # setenv uuid_gpt_disk ...first uuid... U-Boot # setenv uuid_gpt_rootfs ...second uuid... U-Boot # gpt write mmc 1 ${partitions}r …�r }r (hlUhmj ubaubhÊ)�r }r (hlX:A reset is required for the partition table to be visible.r hmjß hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMòh‰hhŠ]r h“X:A reset is required for the partition table to be visible.r …�r }r (hlj hmj ubaubeubhn)�r }r (hlUhmjÈ hwh›h|h}h~}r (h€]h�]h‚]hƒ]r U"updating-an-sd-card-from-a-host-pcr ah†]r h.auhˆMõh‰hhŠ]r (hŒ)�r }r (hlX"Updating an SD card from a host PCr hmj hwh›h|h�h~}r (h€]h�]h‚]hƒ]h†]uhˆMõh‰hhŠ]r h“X"Updating an SD card from a host PCr! …�r" }r# (hlj hmj ubaubhÊ)�r$ }r% (hlXœThis section assume that you have created an SD card following the instructions on `Processor SDK Linux Create SD Card Script `__ or have made a compatible layout by hand. In this case, you will need to copy the all the boot images (**MLO** and **u-boot.img** for 32-bit platforms, **tiboot3.bin**, **sysfw.itb**, **tispl.bin**, **u-boot.img** for K3 based platforms) files to the *boot* partition. At this point, the card is now bootable in the SD card slot. We default to using **/boot/${bootfile}** on the *rootfs* partition and the device tree file loaded from **/boot** with the same name as in the kernel.hmj hwh›h|hÍh~}r& (h€]h�]h‚]hƒ]h†]uhˆM÷h‰hhŠ]r' (h“XSThis section assume that you have created an SD card following the instructions on r( …�r) }r* (hlXSThis section assume that you have created an SD card following the instructions on hmj$ ubhÓ)�r+ }r, (hlXg`Processor SDK Linux Create SD Card Script `__h~}r- (UnameX)Processor SDK Linux Create SD Card Scripth×X7Overview/Processor_SDK_Linux_create_SD_card_script.htmlhƒ]h‚]h€]h�]h†]uhmj$ hŠ]r. h“X)Processor SDK Linux Create SD Card Scriptr/ …�r0 }r1 (hlUhmj+ ubah|hÜubh“Xh or have made a compatible layout by hand. In this case, you will need to copy the all the boot images (r2 …�r3 }r4 (hlXh or have made a compatible layout by hand. In this case, you will need to copy the all the boot images (hmj$ ubj)�r5 }r6 (hlX**MLO**h~}r7 (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]r8 h“XMLOr9 …�r: }r; (hlUhmj5 ubah|j'ubh“X and r< …�r= }r> (hlX and hmj$ ubj)�r? }r@ (hlX**u-boot.img**h~}rA (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]rB h“X u-boot.imgrC …�rD }rE (hlUhmj? ubah|j'ubh“X for 32-bit platforms, rF …�rG }rH (hlX for 32-bit platforms, hmj$ ubj)�rI }rJ (hlX**tiboot3.bin**h~}rK (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]rL h“X tiboot3.binrM …�rN }rO (hlUhmjI ubah|j'ubh“X, rP …�rQ }rR (hlX, hmj$ ubj)�rS }rT (hlX **sysfw.itb**h~}rU (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]rV h“X sysfw.itbrW …�rX }rY (hlUhmjS ubah|j'ubh“X, rZ …�r[ }r\ (hlX, hmj$ ubj)�r] }r^ (hlX **tispl.bin**h~}r_ (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]r` h“X tispl.binra …�rb }rc (hlUhmj] ubah|j'ubh“X, rd …�re }rf (hlX, hmj$ ubj)�rg }rh (hlX**u-boot.img**h~}ri (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]rj h“X u-boot.imgrk …�rl }rm (hlUhmjg ubah|j'ubh“X& for K3 based platforms) files to the rn …�ro }rp (hlX& for K3 based platforms) files to the hmj$ ubcdocutils.nodes emphasis rq )�rr }rs (hlX*boot*h~}rt (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]ru h“Xbootrv …�rw }rx (hlUhmjr ubah|Uemphasisry ubh“X] partition. At this point, the card is now bootable in the SD card slot. We default to using rz …�r{ }r| (hlX] partition. At this point, the card is now bootable in the SD card slot. We default to using hmj$ ubj)�r} }r~ (hlX**/boot/${bootfile}**h~}r (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]r€ h“X/boot/${bootfile}r� …�r‚ }rƒ (hlUhmj} ubah|j'ubh“X on the r„ …�r… }r† (hlX on the hmj$ ubjq )�r‡ }rˆ (hlX*rootfs*h~}r‰ (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]rŠ h“Xrootfsr‹ …�rŒ }r� (hlUhmj‡ ubah|jy ubh“X0 partition and the device tree file loaded from rŽ …�r� }r� (hlX0 partition and the device tree file loaded from hmj$ ubj)�r‘ }r’ (hlX **/boot**h~}r“ (h€]h�]h‚]hƒ]h†]uhmj$ hŠ]r” h“X/bootr• …�r– }r— (hlUhmj‘ ubah|j'ubh“X% with the same name as in the kernel.r˜ …�r™ }rš (hlX% with the same name as in the kernel.hmj$ ubeubhÊ)�r› }rœ (hlXŸHowever, if you are using OMAP-L138 based board (like the LCDK), then you need to write the generated ``u-boot.ais`` image to the SD card using ``dd`` command.hmj hwh›h|hÍh~}r� (h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rž (h“XfHowever, if you are using OMAP-L138 based board (like the LCDK), then you need to write the generated rŸ …�r  }r¡ (hlXfHowever, if you are using OMAP-L138 based board (like the LCDK), then you need to write the generated hmj› ubjß)�r¢ }r£ (hlX``u-boot.ais``h~}r¤ (h€]h�]h‚]hƒ]h†]uhmj› hŠ]r¥ h“X u-boot.aisr¦ …�r§ }r¨ (hlUhmj¢ ubah|jçubh“X image to the SD card using r© …�rª }r« (hlX image to the SD card using hmj› ubjß)�r¬ }r­ (hlX``dd``h~}r® (h€]h�]h‚]hƒ]h†]uhmj› hŠ]r¯ h“Xddr° …�r± }r² (hlUhmj¬ ubah|jçubh“X command.r³ …�r´ }rµ (hlX command.hmj› ubeubjr)�r¶ }r· (hlX@$ sudo dd if=u-boot.ais of=/dev/sd seek=117 bs=512 conv=fsynchmj hwh›h|juh~}r¸ (hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r¹ h“X@$ sudo dd if=u-boot.ais of=/dev/sd seek=117 bs=512 conv=fsyncrº …�r» }r¼ (hlUhmj¶ ubaubeubhn)�r½ }r¾ (hlUhmjÈ hwh›h|h}h~}r¿ (h€]h�]h‚]hƒ]rÀ U%updating-an-sd-card-or-emmc-using-dfurÁ ah†]r hauhˆM h‰hhŠ]rà (hŒ)�rÄ }rÅ (hlX%Updating an SD card or eMMC using DFUrÆ hmj½ hwh›h|h�h~}rÇ (h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rÈ h“X%Updating an SD card or eMMC using DFUrÉ …�rÊ }rË (hljÆ hmjÄ ubaubhÊ)�rÌ }rÍ (hlXTo see the list of available places to write to (in DFU terms, altsettings) use the **mmc part** command to list the partitions on the MMC device and **printenv dfu\_alt\_settings\_mmc** or **dfu\_alt\_settings\_emmc** to see how they are mapped and exposed to **dfu-util**.hmj½ hwh›h|hÍh~}rÎ (h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rÏ (h“XTTo see the list of available places to write to (in DFU terms, altsettings) use the rÐ …�rÑ }rÒ (hlXTTo see the list of available places to write to (in DFU terms, altsettings) use the hmjÌ ubj)�rÓ }rÔ (hlX **mmc part**h~}rÕ (h€]h�]h‚]hƒ]h†]uhmjÌ hŠ]rÖ h“Xmmc partr× …�rØ }rÙ (hlUhmjÓ ubah|j'ubh“X6 command to list the partitions on the MMC device and rÚ …�rÛ }rÜ (hlX6 command to list the partitions on the MMC device and hmjÌ ubj)�rÝ }rÞ (hlX$**printenv dfu\_alt\_settings\_mmc**h~}rß (h€]h�]h‚]hƒ]h†]uhmjÌ hŠ]rà h“Xprintenv dfu_alt_settings_mmcrá …�râ }rã (hlUhmjÝ ubah|j'ubh“X or rä …�rå }ræ (hlX or hmjÌ ubj)�rç }rè (hlX**dfu\_alt\_settings\_emmc**h~}ré (h€]h�]h‚]hƒ]h†]uhmjÌ hŠ]rê h“Xdfu_alt_settings_emmcrë …�rì }rí (hlUhmjç ubah|j'ubh“X+ to see how they are mapped and exposed to rî …�rï }rð (hlX+ to see how they are mapped and exposed to hmjÌ ubj)�rñ }rò (hlX **dfu-util**h~}ró (h€]h�]h‚]hƒ]h†]uhmjÌ hŠ]rô h“Xdfu-utilrõ …�rö }r÷ (hlUhmjñ ubah|j'ubh“X.…�rø }rù (hlX.hmjÌ ubeubjr)�rú }rû (hlX›U-Boot# mmc part Partition Map for MMC device 0 -- Partition Type: DOS Partition Start Sector Num Sectors Type 1 63 144522 c Boot 2 160650 1847475 83 3 2024190 1815345 83 U-Boot# printenv dfu_alt_info_mmc dfu_alt_info=boot part 0 1;rootfs part 0 2;MLO fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1"hmj½ hwh›h|juh~}rü (hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]rý h“X›U-Boot# mmc part Partition Map for MMC device 0 -- Partition Type: DOS Partition Start Sector Num Sectors Type 1 63 144522 c Boot 2 160650 1847475 83 3 2024190 1815345 83 U-Boot# printenv dfu_alt_info_mmc dfu_alt_info=boot part 0 1;rootfs part 0 2;MLO fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1"rþ …�rÿ }r(hlUhmjú ubaubhÊ)�r}r(hlXBThis means that you can tell dfu-util to write anything to any of:rhmj½ hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rh“XBThis means that you can tell dfu-util to write anything to any of:r…�r}r(hljhmjubaubj#)�r }r (hlUhmj½ hwh›h|j&h~}r (j(X-hƒ]h‚]h€]h�]h†]uhˆM!h‰hhŠ]r (j )�r }r(hlXbootrhmj hwh›h|jh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r}r(hljhmj hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM!hŠ]rh“Xbootr…�r}r(hljhmjubaubaubj )�r}r(hlXrootfsrhmj hwh›h|jh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r}r(hljhmjhwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM"hŠ]r!h“Xrootfsr"…�r#}r$(hljhmjubaubaubj )�r%}r&(hlXMLOr'hmj hwh›h|jh~}r((h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r)hÊ)�r*}r+(hlj'hmj%hwh›h|hÍh~}r,(h€]h�]h‚]hƒ]h†]uhˆM#hŠ]r-h“XMLOr.…�r/}r0(hlj'hmj*ubaubaubj )�r1}r2(hlX u-boot.imgr3hmj hwh›h|jh~}r4(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r5hÊ)�r6}r7(hlj3hmj1hwh›h|hÍh~}r8(h€]h�]h‚]hƒ]h†]uhˆM$hŠ]r9h“X u-boot.imgr:…�r;}r<(hlj3hmj6ubaubaubj )�r=}r>(hlX uEnv.txt hmj hwh›h|jh~}r?(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r@hÊ)�rA}rB(hlXuEnv.txtrChmj=hwh›h|hÍh~}rD(h€]h�]h‚]hƒ]h†]uhˆM%hŠ]rEh“XuEnv.txtrF…�rG}rH(hljChmjAubaubaubeubhÊ)�rI}rJ(hlXbAnd that the **MLO**, **u-boot.img** and **uEnv.txt** files are to be written to a FAT filesystem.hmj½ hwh›h|hÍh~}rK(h€]h�]h‚]hƒ]h†]uhˆM'h‰hhŠ]rL(h“X And that the rM…�rN}rO(hlX And that the hmjIubj)�rP}rQ(hlX**MLO**h~}rR(h€]h�]h‚]hƒ]h†]uhmjIhŠ]rSh“XMLOrT…�rU}rV(hlUhmjPubah|j'ubh“X, rW…�rX}rY(hlX, hmjIubj)�rZ}r[(hlX**u-boot.img**h~}r\(h€]h�]h‚]hƒ]h†]uhmjIhŠ]r]h“X u-boot.imgr^…�r_}r`(hlUhmjZubah|j'ubh“X and ra…�rb}rc(hlX and hmjIubj)�rd}re(hlX **uEnv.txt**h~}rf(h€]h�]h‚]hƒ]h†]uhmjIhŠ]rgh“XuEnv.txtrh…�ri}rj(hlUhmjdubah|j'ubh“X- files are to be written to a FAT filesystem.rk…�rl}rm(hlX- files are to be written to a FAT filesystem.hmjIubeubhÊ)�rn}ro(hlX3To start DFU on the target on the first MMC device:rphmj½ hwh›h|hÍh~}rq(h€]h�]h‚]hƒ]h†]uhˆM*h‰hhŠ]rrh“X3To start DFU on the target on the first MMC device:rs…�rt}ru(hljphmjnubaubjr)�rv}rw(hlXEU-Boot # setenv dfu_alt_info ${dfu_alt_info_mmc} U-Boot # dfu 0 mmc 0hmj½ hwh›h|juh~}rx(hŸh hƒ]h‚]h€]h�]h†]uhˆM9h‰hhŠ]ryh“XEU-Boot # setenv dfu_alt_info ${dfu_alt_info_mmc} U-Boot # dfu 0 mmc 0rz…�r{}r|(hlUhmjvubaubhÊ)�r}}r~(hlX}On boards like AM57x GP EVM or BeagleBoard x15, where the second USB instance is used as USB client, the dfu command becomes:rhmj½ hwh›h|hÍh~}r€(h€]h�]h‚]hƒ]h†]uhˆM1h‰hhŠ]r�h“X}On boards like AM57x GP EVM or BeagleBoard x15, where the second USB instance is used as USB client, the dfu command becomes:r‚…�rƒ}r„(hljhmj}ubaubjr)�r…}r†(hlXU-Boot # dfu 1 mmc 0hmj½ hwh›h|juh~}r‡(hŸh hƒ]h‚]h€]h�]h†]uhˆMAh‰hhŠ]rˆh“XU-Boot # dfu 1 mmc 0r‰…�rŠ}r‹(hlUhmj…ubaubhÊ)�rŒ}r�(hlXCThen on the host PC to write **MLO** to an existing boot partition:rŽhmj½ hwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆM8h‰hhŠ]r�(h“XThen on the host PC to write r‘…�r’}r“(hlXThen on the host PC to write hmjŒubj)�r”}r•(hlX**MLO**h~}r–(h€]h�]h‚]hƒ]h†]uhmjŒhŠ]r—h“XMLOr˜…�r™}rš(hlUhmj”ubah|j'ubh“X to an existing boot partition:r›…�rœ}r�(hlX to an existing boot partition:hmjŒubeubjr)�rž}rŸ(hlX$ sudo dfu-util -D MLO -a MLOhmj½ hwh›h|juh~}r (hŸh hƒ]h‚]h€]h�]h†]uhˆMGh‰hhŠ]r¡h“X$ sudo dfu-util -D MLO -a MLOr¢…�r£}r¤(hlUhmjžubaubhÊ)�r¥}r¦(hlXtOn the host PC to overwrite the current boot partition contents with a new created on the host FAT filesystem image:r§hmj½ hwh›h|hÍh~}r¨(h€]h�]h‚]hƒ]h†]uhˆM>h‰hhŠ]r©h“XtOn the host PC to overwrite the current boot partition contents with a new created on the host FAT filesystem image:rª…�r«}r¬(hlj§hmj¥ubaubjr)�r­}r®(hlX"$ sudo dfu-util -D fat.img -a boothmj½ hwh›h|juh~}r¯(hŸh hƒ]h‚]h€]h�]h†]uhˆMNh‰hhŠ]r°h“X"$ sudo dfu-util -D fat.img -a bootr±…�r²}r³(hlUhmj­ubaubeubhn)�r´}rµ(hlUhmjÈ hwh›h|h}h~}r¶(h€]h�]h‚]hƒ]r·U+updating-an-sd-card-or-emmc-with-raw-writesr¸ah†]r¹h(auhˆMFh‰hhŠ]rº(hŒ)�r»}r¼(hlX+Updating an SD card or eMMC with RAW writesr½hmj´hwh›h|h�h~}r¾(h€]h�]h‚]hƒ]h†]uhˆMFh‰hhŠ]r¿h“X+Updating an SD card or eMMC with RAW writesrÀ…�rÁ}rÂ(hlj½hmj»ubaubhÊ)�rÃ}rÄ(hlXŸIn some cases it is desirable to write **MLO** and **u-boot.img** as raw images to the MMC device rather than in a filesystem. eMMC requires this, for example. In that case, the following is how to program these files and not overwrite the partition table on the device. We assume that the files exist on a SD card. In addition you may wish to write a filesystem image to the device, so an example is also provided.hmj´hwh›h|hÍh~}rÅ(h€]h�]h‚]hƒ]h†]uhˆMHh‰hhŠ]rÆ(h“X'In some cases it is desirable to write rÇ…�rÈ}rÉ(hlX'In some cases it is desirable to write hmjÃubj)�rÊ}rË(hlX**MLO**h~}rÌ(h€]h�]h‚]hƒ]h†]uhmjÃhŠ]rÍh“XMLOrÎ…�rÏ}rÐ(hlUhmjÊubah|j'ubh“X and rÑ…�rÒ}rÓ(hlX and hmjÃubj)�rÔ}rÕ(hlX**u-boot.img**h~}rÖ(h€]h�]h‚]hƒ]h†]uhmjÃhŠ]r×h“X u-boot.imgrØ…�rÙ}rÚ(hlUhmjÔubah|j'ubh“X^ as raw images to the MMC device rather than in a filesystem. eMMC requires this, for example. In that case, the following is how to program these files and not overwrite the partition table on the device. We assume that the files exist on a SD card. In addition you may wish to write a filesystem image to the device, so an example is also provided.rÛ…�rÜ}rÝ(hlX^ as raw images to the MMC device rather than in a filesystem. eMMC requires this, for example. In that case, the following is how to program these files and not overwrite the partition table on the device. We assume that the files exist on a SD card. In addition you may wish to write a filesystem image to the device, so an example is also provided.hmjÃubeubjr)�rÞ}rß(hlX›U-Boot # mmc dev 0 U-Boot # mmc rescan U-Boot # mmc dev 1 U-Boot # fatload mmc 0 ${loadaddr} MLO U-Boot # mmc write ${loadaddr} 0x100 0x100 U-Boot # mmc write ${loadaddr} 0x200 0x100 U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # mmc write ${loadaddr} 0x300 0x400 U-Boot # fatload mmc 0 ${loadaddr} rootfs.ext4 U-Boot # mmc write ${loadaddr} 0x1000 ...rootfs.ext4 size in bytes divided by 512, in hex...hmj´hwh›h|juh~}rà(hŸh hƒ]h‚]h€]h�]h†]uhˆM\h‰hhŠ]ráh“X›U-Boot # mmc dev 0 U-Boot # mmc rescan U-Boot # mmc dev 1 U-Boot # fatload mmc 0 ${loadaddr} MLO U-Boot # mmc write ${loadaddr} 0x100 0x100 U-Boot # mmc write ${loadaddr} 0x200 0x100 U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # mmc write ${loadaddr} 0x300 0x400 U-Boot # fatload mmc 0 ${loadaddr} rootfs.ext4 U-Boot # mmc write ${loadaddr} 0x1000 ...rootfs.ext4 size in bytes divided by 512, in hex...râ…�rã}rä(hlUhmjÞubaubeubhn)�rå}ræ(hlUhmjÈ hwh›h|h}h~}rç(h€]h�]h‚]hƒ]rèU"booting-linux-from-sd-card-or-emmcréah†]rêh8auhˆM]h‰hhŠ]rë(hŒ)�rì}rí(hlX"Booting Linux from SD card or eMMCrîhmjåhwh›h|h�h~}rï(h€]h�]h‚]hƒ]h†]uhˆM]h‰hhŠ]rðh“X"Booting Linux from SD card or eMMCrñ…�rò}ró(hljîhmjìubaubhÊ)�rô}rõ(hlXWithin the default environment for each board that supports SD/MMC there is a boot command called **mmcboot** that will set the boot arguments correctly and start the kernel. In this case however, you must first run **loaduimagefat** or **loaduimage** to first load the kernel into memory. For the exact details of each use **printenv** on the **mmcboot**, **loaduimagefat** and **loaduimage** variables and then in turn **printenv** other sub-sections of the command. The most important variables here are **mmcroot** and **mmcrootfstype**.hmjåhwh›h|hÍh~}rö(h€]h�]h‚]hƒ]h†]uhˆM_h‰hhŠ]r÷(h“XbWithin the default environment for each board that supports SD/MMC there is a boot command called rø…�rù}rú(hlXbWithin the default environment for each board that supports SD/MMC there is a boot command called hmjôubj)�rû}rü(hlX **mmcboot**h~}rý(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rþh“Xmmcbootrÿ…�r}r(hlUhmjûubah|j'ubh“Xk that will set the boot arguments correctly and start the kernel. In this case however, you must first run r…�r}r(hlXk that will set the boot arguments correctly and start the kernel. In this case however, you must first run hmjôubj)�r}r(hlX**loaduimagefat**h~}r(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rh“X loaduimagefatr …�r }r (hlUhmjubah|j'ubh“X or r …�r }r(hlX or hmjôubj)�r}r(hlX**loaduimage**h~}r(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rh“X loaduimager…�r}r(hlUhmjubah|j'ubh“XI to first load the kernel into memory. For the exact details of each use r…�r}r(hlXI to first load the kernel into memory. For the exact details of each use hmjôubj)�r}r(hlX **printenv**h~}r(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rh“Xprintenvr…�r}r(hlUhmjubah|j'ubh“X on the r …�r!}r"(hlX on the hmjôubj)�r#}r$(hlX **mmcboot**h~}r%(h€]h�]h‚]hƒ]h†]uhmjôhŠ]r&h“Xmmcbootr'…�r(}r)(hlUhmj#ubah|j'ubh“X, r*…�r+}r,(hlX, hmjôubj)�r-}r.(hlX**loaduimagefat**h~}r/(h€]h�]h‚]hƒ]h†]uhmjôhŠ]r0h“X loaduimagefatr1…�r2}r3(hlUhmj-ubah|j'ubh“X and r4…�r5}r6(hlX and hmjôubj)�r7}r8(hlX**loaduimage**h~}r9(h€]h�]h‚]hƒ]h†]uhmjôhŠ]r:h“X loaduimager;…�r<}r=(hlUhmj7ubah|j'ubh“X variables and then in turn r>…�r?}r@(hlX variables and then in turn hmjôubj)�rA}rB(hlX **printenv**h~}rC(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rDh“XprintenvrE…�rF}rG(hlUhmjAubah|j'ubh“XJ other sub-sections of the command. The most important variables here are rH…�rI}rJ(hlXJ other sub-sections of the command. The most important variables here are hmjôubj)�rK}rL(hlX **mmcroot**h~}rM(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rNh“XmmcrootrO…�rP}rQ(hlUhmjKubah|j'ubh“X and rR…�rS}rT(hlX and hmjôubj)�rU}rV(hlX**mmcrootfstype**h~}rW(h€]h�]h‚]hƒ]h†]uhmjôhŠ]rXh“X mmcrootfstyperY…�rZ}r[(hlUhmjUubah|j'ubh“X.…�r\}r](hlX.hmjôubeubeubhn)�r^}r_(hlUhmjÈ hwh›h|h}h~}r`(h€]h�]h‚]hƒ]raU/booting-mlo-and-u-boot-from-emmc-boot-partitionrbah†]rchbauhˆMih‰hhŠ]rd(hŒ)�re}rf(hlX/Booting MLO and u-boot from eMMC boot partitionrghmj^hwh›h|h�h~}rh(h€]h�]h‚]hƒ]h†]uhˆMih‰hhŠ]rih“X/Booting MLO and u-boot from eMMC boot partitionrj…�rk}rl(hljghmjeubaubj>)�rm}rn(hlUhmj^hwNh|j[h~}ro(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rpcdocutils.nodes field_list rq)�rr}rs(hlUh~}rt(h€]h�]h‚]hƒ]h†]uhmjmhŠ]rucdocutils.nodes field rv)�rw}rx(hlUhmjrhwh›h|Ufieldryh~}rz(h€]h�]h‚]hƒ]h†]uhˆMjhŠ]r{(cdocutils.nodes field_name r|)�r}}r~(hlXnamerh~}r€(h€]h�]h‚]hƒ]h†]uhmjwhŠ]r�h“Xnamer‚…�rƒ}r„(hljhmj}ubah|U field_namer…ubcdocutils.nodes field_body r†)�r‡}rˆ(hlX0booting-mlo-and-u-boot-from-emmc-boot-partition h~}r‰(h€]h�]h‚]hƒ]h†]uhmjwhŠ]rŠhÊ)�r‹}rŒ(hlX/booting-mlo-and-u-boot-from-emmc-boot-partitionr�hmj‡hwh›h|hÍh~}rŽ(h€]h�]h‚]hƒ]h†]uhˆMjhŠ]r�h“X/booting-mlo-and-u-boot-from-emmc-boot-partitionr�…�r‘}r’(hlj�hmj‹ubaubah|U field_bodyr“ubeubah|U field_listr”ubaubhÊ)�r•}r–(hlX°The dra7xx and am57xx processors support booting from the eMMC boot partition. The following commands load the boot images from network and write them into the boot0 partition.r—hmj^hwh›h|hÍh~}r˜(h€]h�]h‚]hƒ]h†]uhˆMlh‰hhŠ]r™h“X°The dra7xx and am57xx processors support booting from the eMMC boot partition. The following commands load the boot images from network and write them into the boot0 partition.rš…�r›}rœ(hlj—hmj•ubaubjr)�r�}rž(hlXãU-boot # setenv autoload no U-boot # dhcp U-boot # mmc dev 1 1 U-boot # tftp ${loadaddr} dra7xx/MLO U-boot # mmc write ${loadaddr} 0x0 0x300 U-boot # tftp ${loadaddr} dra7xx/u-boot.img U-boot # mmc write ${loadaddr} 0x300 0x400hmj^hwh›h|juh~}rŸ(hŸh hƒ]h‚]h€]h�]h†]uhˆM{h‰hhŠ]r h“XãU-boot # setenv autoload no U-boot # dhcp U-boot # mmc dev 1 1 U-boot # tftp ${loadaddr} dra7xx/MLO U-boot # mmc write ${loadaddr} 0x0 0x300 U-boot # tftp ${loadaddr} dra7xx/u-boot.img U-boot # mmc write ${loadaddr} 0x300 0x400r¡…�r¢}r£(hlUhmj�ubaubhÊ)�r¤}r¥(hlXWe also need to configure the eMMC using the bootbus and partconf commands. The bootbus command sets the eMMC into dual data rate mode with a bus width of 8 to match with the bus configuration supported by the Boot ROM. The partconf command gives access to the boot0 partition during boot operation. Note that these configurations are limited to boot operation and the eMMC can be set to its highest speed mode once boot operation is complete. All these are non-volatile configurations that need to be done **once per eMMC/board** .r¦hmj^hwh›h|hÍh~}r§(h€]h�]h‚]hƒ]h†]uhˆMxh‰hhŠ]r¨(h“XûWe also need to configure the eMMC using the bootbus and partconf commands. The bootbus command sets the eMMC into dual data rate mode with a bus width of 8 to match with the bus configuration supported by the Boot ROM. The partconf command gives access to the boot0 partition during boot operation. Note that these configurations are limited to boot operation and the eMMC can be set to its highest speed mode once boot operation is complete. All these are non-volatile configurations that need to be done r©…�rª}r«(hlXûWe also need to configure the eMMC using the bootbus and partconf commands. The bootbus command sets the eMMC into dual data rate mode with a bus width of 8 to match with the bus configuration supported by the Boot ROM. The partconf command gives access to the boot0 partition during boot operation. Note that these configurations are limited to boot operation and the eMMC can be set to its highest speed mode once boot operation is complete. All these are non-volatile configurations that need to be done hmj¤ubj)�r¬}r­(hlX**once per eMMC/board**h~}r®(h€]h�]h‚]hƒ]h†]uhmj¤hŠ]r¯h“Xonce per eMMC/boardr°…�r±}r²(hlUhmj¬ubah|j'ubh“X .r³…�r´}rµ(hlX .hmj¤ubeubjr)�r¶}r·(hlXXU-boot # mmc bootbus 1 2 0 2 U-boot # mmc partconf 1 1 1 0 U-boot # mmc rst-function 1 1hmj^hwh›h|juh~}r¸(hŸh hƒ]h‚]h€]h�]h†]uhˆM‡h‰hhŠ]r¹h“XXU-boot # mmc bootbus 1 2 0 2 U-boot # mmc partconf 1 1 1 0 U-boot # mmc rst-function 1 1rº…�r»}r¼(hlUhmj¶ubaubjC)�r½}r¾(hlUhmj^hwh›h|jZh~}r¿(h€]h�]h‚]hƒ]h†]uhˆM€h‰hhŠ]rÀjH)�rÁ}rÂ(hlUjLKhmj½hwh›h|hˆh~}rÃ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�rÄ}rÅ(hlUhmjÈ hwh›h|h}h~}rÆ(h€]h�]h‚]hƒ]rÇUEbooting-tiboot3-bin-tispl-bin-and-u-boot-img-from-emmc-boot-partitionrÈah†]rÉh auhˆMƒh‰hhŠ]rÊ(hŒ)�rË}rÌ(hlXFBooting tiboot3.bin, tispl.bin and u-boot.img from eMMC boot partitionrÍhmjÄhwh›h|h�h~}rÎ(h€]h�]h‚]hƒ]h†]uhˆMƒh‰hhŠ]rÏh“XFBooting tiboot3.bin, tispl.bin and u-boot.img from eMMC boot partitionrÐ…�rÑ}rÒ(hljÍhmjËubaubhÊ)�rÓ}rÔ(hlXîThe K3 based processors support booting from the eMMC boot partition. The following commands can be used to download tiboot3.bin, tispl.bin and u-boot.img from an SD card and write them to the eMMC boot0 partition at respective addresses.rÕhmjÄhwh›h|hÍh~}rÖ(h€]h�]h‚]hƒ]h†]uhˆM…h‰hhŠ]r×h“XîThe K3 based processors support booting from the eMMC boot partition. The following commands can be used to download tiboot3.bin, tispl.bin and u-boot.img from an SD card and write them to the eMMC boot0 partition at respective addresses.rØ…�rÙ}rÚ(hljÕhmjÓubaubjr)�rÛ}rÜ(hlXC=> mmc dev 0 1 => fatload mmc 1 ${loadaddr} tiboot3.bin => mmc write ${loadaddr} 0x0 0x400 => fatload mmc 1 ${loadaddr} tispl.bin => mmc write ${loadaddr} 0x400 0x1000 => fatload mmc 1 ${loadaddr} u-boot.img => mmc write ${loadaddr} 0x1400 0x2000 => fatload mmc 1 ${loadaddr} sysfw.itb => mmc write ${loadaddr} 0x3600 0x800hmjÄhwh›h|juh~}rÝ(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMŠh‰hhŠ]rÞh“XC=> mmc dev 0 1 => fatload mmc 1 ${loadaddr} tiboot3.bin => mmc write ${loadaddr} 0x0 0x400 => fatload mmc 1 ${loadaddr} tispl.bin => mmc write ${loadaddr} 0x400 0x1000 => fatload mmc 1 ${loadaddr} u-boot.img => mmc write ${loadaddr} 0x1400 0x2000 => fatload mmc 1 ${loadaddr} sysfw.itb => mmc write ${loadaddr} 0x3600 0x800rß…�rà}rá(hlUhmjÛubaubhÊ)�râ}rã(hlXeTo give the ROM access to the boot partition, the following commands must be used for the first time:rähmjÄhwh›h|hÍh~}rå(h€]h�]h‚]hƒ]h†]uhˆM–h‰hhŠ]ræh“XeTo give the ROM access to the boot partition, the following commands must be used for the first time:rç…�rè}ré(hljähmjâubaubjr)�rê}rë(hlX.=> mmc partconf 0 1 1 1 => mmc bootbus 0 2 0 0hmjÄhwh›h|juh~}rì(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆM™h‰hhŠ]ríh“X.=> mmc partconf 0 1 1 1 => mmc bootbus 0 2 0 0rî…�rï}rð(hlUhmjêubaubjC)�rñ}rò(hlUhmjÄhwh›h|jZh~}ró(h€]h�]h‚]hƒ]h†]uhˆMžh‰hhŠ]rôjH)�rõ}rö(hlUjLKhmjñhwh›h|hˆh~}r÷(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�rø}rù(hlUhmjÈ hwh›h|h}h~}rú(h€]h�]h‚]hƒ]rûUbooting-linux-from-usb-storagerüah†]rýhOauhˆM¡h‰hhŠ]rþ(hŒ)�rÿ}r(hlXBooting Linux from USB storagerhmjøhwh›h|h�h~}r(h€]h�]h‚]hƒ]h†]uhˆM¡h‰hhŠ]rh“XBooting Linux from USB storager…�r}r(hljhmjÿubaubj>)�r}r(hlUhmjøhwNh|j[h~}r (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r jq)�r }r (hlUh~}r (h€]h�]h‚]hƒ]h†]uhmjhŠ]rjv)�r}r(hlUhmj hwh›h|jyh~}r(h€]h�]h‚]hƒ]h†]uhˆM¢hŠ]r(j|)�r}r(hlXnamerh~}r(h€]h�]h‚]hƒ]h†]uhmjhŠ]rh“Xnamer…�r}r(hljhmjubah|j…ubj†)�r}r(hlXbooting-linux-from-usb-storage h~}r(h€]h�]h‚]hƒ]h†]uhmjhŠ]rhÊ)�r}r (hlXbooting-linux-from-usb-storager!hmjhwh›h|hÍh~}r"(h€]h�]h‚]hƒ]h†]uhˆM¢hŠ]r#h“Xbooting-linux-from-usb-storager$…�r%}r&(hlj!hmjubaubah|j“ubeubah|j”ubaubhÊ)�r'}r((hlXTo load the Linux Kernel and rootfs from USB rather than SD/MMC card on AMx/DRA7x EVMs, if we assume that the USB device is partitioned the same way as an SD/MMC card is, we can utilize the **mmcboot** command to boot. To do this, perform the following steps:hmjøhwh›h|hÍh~}r)(h€]h�]h‚]hƒ]h†]uhˆM¤h‰hhŠ]r*(h“X¾To load the Linux Kernel and rootfs from USB rather than SD/MMC card on AMx/DRA7x EVMs, if we assume that the USB device is partitioned the same way as an SD/MMC card is, we can utilize the r+…�r,}r-(hlX¾To load the Linux Kernel and rootfs from USB rather than SD/MMC card on AMx/DRA7x EVMs, if we assume that the USB device is partitioned the same way as an SD/MMC card is, we can utilize the hmj'ubj)�r.}r/(hlX **mmcboot**h~}r0(h€]h�]h‚]hƒ]h†]uhmj'hŠ]r1h“Xmmcbootr2…�r3}r4(hlUhmj.ubah|j'ubh“X: command to boot. To do this, perform the following steps:r5…�r6}r7(hlX: command to boot. To do this, perform the following steps:hmj'ubeubjr)�r8}r9(hlXeU-Boot # usb start U-Boot # setenv mmcroot /dev/sda2 ro U-Boot # run mmcargs U-Boot # run bootcmd_usbhmjøhwh›h|juh~}r:(hŸh hƒ]h‚]h€]h�]h†]uhˆM¶h‰hhŠ]r;h“XeU-Boot # usb start U-Boot # setenv mmcroot /dev/sda2 ro U-Boot # run mmcargs U-Boot # run bootcmd_usbr<…�r=}r>(hlUhmj8ubaubhÊ)�r?}r@(hlXsOn K2H/K/E/L EVMs, the USB drivers in Kernel needs to be built-in (default modules). The configuration changes are:rAhmjøhwh›h|hÍh~}rB(h€]h�]h‚]hƒ]h†]uhˆM°h‰hhŠ]rCh“XsOn K2H/K/E/L EVMs, the USB drivers in Kernel needs to be built-in (default modules). The configuration changes are:rD…�rE}rF(hljAhmj?ubaubjr)�rG}rH(hlX CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_PCI=y CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_STORAGE=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_HOST=y CONFIG_USB_DWC3_KEYSTONE=y CONFIG_EXTCON=y CONFIG_EXTCON_USB_GPIO=y CONFIG_SCSI_MOD=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=yhmjøhwh›h|juh~}rI(hŸh hƒ]h‚]h€]h�]h†]uhˆMÀh‰hhŠ]rJh“X CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_PCI=y CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_STORAGE=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_HOST=y CONFIG_USB_DWC3_KEYSTONE=y CONFIG_EXTCON=y CONFIG_EXTCON_USB_GPIO=y CONFIG_SCSI_MOD=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=yrK…�rL}rM(hlUhmjGubaubhÊ)�rN}rO(hlXŽThe USB should have boot partition of FAT32 format, and rootfs partition of EXT4 format. The boot partition must contain the following images:rPhmjøhwh›h|hÍh~}rQ(h€]h�]h‚]hƒ]h†]uhˆMÃh‰hhŠ]rRh“XŽThe USB should have boot partition of FAT32 format, and rootfs partition of EXT4 format. The boot partition must contain the following images:rS…�rT}rU(hljPhmjNubaubjr)�rV}rW(hlXmkeystone--evm.dtb skern-.bin k2-fw-initrd.cpio.gz zImage where =k2hk, k2e, k2lhmjøhwh›h|juh~}rX(hŸh hƒ]h‚]h€]h�]h†]uhˆMÓh‰hhŠ]rYh“Xmkeystone--evm.dtb skern-.bin k2-fw-initrd.cpio.gz zImage where =k2hk, k2e, k2lrZ…�r[}r\(hlUhmjVubaubhÊ)�r]}r^(hlXJThe rootfs partition contains the filesystem from ProcSDK release package.r_hmjøhwh›h|hÍh~}r`(h€]h�]h‚]hƒ]h†]uhˆMÏh‰hhŠ]rah“XJThe rootfs partition contains the filesystem from ProcSDK release package.rb…�rc}rd(hlj_hmj]ubaubjr)�re}rf(hlX·# mkdir /mnt/temp # mount -t ext4 /dev/sdb2 /mnt/temp # cd /mnt/temp # tar xvf /filesyste/tisdk-server-rootfs-image-k2hk-evm.tar.xz # cd /mnt # umount temphmjøhwh›h|juh~}rg(hŸh hƒ]h‚]h€]h�]h†]uhˆMßh‰hhŠ]rhh“X·# mkdir /mnt/temp # mount -t ext4 /dev/sdb2 /mnt/temp # cd /mnt/temp # tar xvf /filesyste/tisdk-server-rootfs-image-k2hk-evm.tar.xz # cd /mnt # umount tempri…�rj}rk(hlUhmjeubaubhÊ)�rl}rm(hlX2Set up the following u-boot environment variables:rnhmjøhwh›h|hÍh~}ro(h€]h�]h‚]hƒ]h†]uhˆMÛh‰hhŠ]rph“X2Set up the following u-boot environment variables:rq…�rr}rs(hljnhmjlubaubjr)�rt}ru(hlXsetenv args_all 'setenv bootargs console=ttyS0,115200n8 rootwait' setenv args_usb 'setenv bootargs ${bootargs} rootdelay=3 rootfstype=ext4 root=/dev/sda2 rw' setenv get_fdt_usb 'fatload usb 0:1 ${fdtaddr} ${name_fdt}' setenv get_kern_usb 'fatload usb 0:1 ${loadaddr} ${name_kern}' setenv get_mon_usb 'fatload usb 0:1 ${addr_mon} ${name_mon}' setenv init_fw_rd_usb 'fatload usb 0:1 ${rdaddr} ${name_fw_rd}; setenv filesize ; run set_rd_spec' setenv init_usb 'usb start; run args_all args_usb' setenv boot usb saveenv boothmjøhwh›h|juh~}rv(hŸh hƒ]h‚]h€]h�]h†]uhˆMêh‰hhŠ]rwh“Xsetenv args_all 'setenv bootargs console=ttyS0,115200n8 rootwait' setenv args_usb 'setenv bootargs ${bootargs} rootdelay=3 rootfstype=ext4 root=/dev/sda2 rw' setenv get_fdt_usb 'fatload usb 0:1 ${fdtaddr} ${name_fdt}' setenv get_kern_usb 'fatload usb 0:1 ${loadaddr} ${name_kern}' setenv get_mon_usb 'fatload usb 0:1 ${addr_mon} ${name_mon}' setenv init_fw_rd_usb 'fatload usb 0:1 ${rdaddr} ${name_fw_rd}; setenv filesize ; run set_rd_spec' setenv init_usb 'usb start; run args_all args_usb' setenv boot usb saveenv bootrx…�ry}rz(hlUhmjtubaubhÊ)�r{}r|(hlXZ**Note:**: must be at least the hex size of the k2-fw-initrd.cpio.gz file size.r}hmjøhwh›h|hÍh~}r~(h€]h�]h‚]hƒ]h†]uhˆMêh‰hhŠ]r(j)�r€}r�(hlX **Note:**h~}r‚(h€]h�]h‚]hƒ]h†]uhmj{hŠ]rƒh“XNote:r„…�r…}r†(hlUhmj€ubah|j'ubh“XP: must be at least the hex size of the k2-fw-initrd.cpio.gz file size.r‡…�rˆ}r‰(hlXQ: must be at least the hex size of the k2-fw-initrd.cpio.gz file size.hmj{ubeubhÃ)�rŠ}r‹(hlUhmjøhwh›h|hÆh~}rŒ(hÈX#CONFIG_part_family in ('J7_family')hƒ]h‚]h€]h�]h†]uhˆMìh‰hhŠ]r�(jC)�rŽ}r�(hlX'Enabling USB 3.0 host port on J721e EVMr�hmjŠhwh›h|jGh~}r‘(hƒ]r’Uj721e-evm-usb-30-hostr“ah‚]h€]h�]h†]r”h auhˆNh‰hhŠ]r•h“X'Enabling USB 3.0 host port on J721e EVMr–…�r—}r˜(hlj�hmjŽubaubj®)�r™}rš(hlXuJ721e SoC does not support booting from USB mass storage devices. But can be used as storage device at U-Boot prompt.r›hmjŠhwh›h|j²h~}rœ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r�hÊ)�rž}rŸ(hlj›hmj™hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMóhŠ]r¡h“XuJ721e SoC does not support booting from USB mass storage devices. But can be used as storage device at U-Boot prompt.r¢…�r£}r¤(hlj›hmjžubaubaubhÊ)�r¥}r¦(hlXiUSB0 instance on J721e base board is connected to TypeC port that can be used both as host port and device port. By default, USB0 is port is configured to be in **peripheral mode**. Since U-Boot does not support dynamic switching of USB roles, below DT fragment needs to be applied and U-Boot image needs to be rebuilt to make USB0 port to be USB 3.0 host port.hmjŠhwh›h|hÍh~}r§(h€]h�]h‚]hƒ]h†]uhˆMõh‰hhŠ]r¨(h“X¡USB0 instance on J721e base board is connected to TypeC port that can be used both as host port and device port. By default, USB0 is port is configured to be in r©…�rª}r«(hlX¡USB0 instance on J721e base board is connected to TypeC port that can be used both as host port and device port. By default, USB0 is port is configured to be in hmj¥ubj)�r¬}r­(hlX**peripheral mode**h~}r®(h€]h�]h‚]hƒ]h†]uhmj¥hŠ]r¯h“Xperipheral moder°…�r±}r²(hlUhmj¬ubah|j'ubh“Xµ. Since U-Boot does not support dynamic switching of USB roles, below DT fragment needs to be applied and U-Boot image needs to be rebuilt to make USB0 port to be USB 3.0 host port.r³…�r´}rµ(hlXµ. Since U-Boot does not support dynamic switching of USB roles, below DT fragment needs to be applied and U-Boot image needs to be rebuilt to make USB0 port to be USB 3.0 host port.hmj¥ubeubjr)�r¶}r·(hlXÄdiff --git a/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi b/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi index 50effb4812b2..28986c4d2c2a 100644 --- a/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi +++ b/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi @@ -184,11 +184,10 @@ &usbss0 { u-boot,dm-spl; - ti,usb2-only; }; &usb0 { - dr_mode = "peripheral"; + dr_mode = "host"; u-boot,dm-spl; };hmjŠhwh›h|juh~}r¸(hŸh hƒ]h‚]h€]h�]h†]uhˆM h‰hhŠ]r¹h“XÄdiff --git a/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi b/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi index 50effb4812b2..28986c4d2c2a 100644 --- a/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi +++ b/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi @@ -184,11 +184,10 @@ &usbss0 { u-boot,dm-spl; - ti,usb2-only; }; &usb0 { - dr_mode = "peripheral"; + dr_mode = "host"; u-boot,dm-spl; };rº…�r»}r¼(hlUhmj¶ubaubeubeubhn)�r½}r¾(hlUhmjÈ hwh›h|h}h~}r¿(h€]h�]h‚]hƒ]rÀU9booting-from-sd-emmc-from-spl-single-stage-or-falcon-moderÁah†]rÂhauhˆMh‰hhŠ]rÃ(hŒ)�rÄ}rÅ(hlX;Booting from SD/eMMC from SPL (Single stage or Falcon mode)rÆhmj½hwh›h|h�h~}rÇ(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rÈh“X;Booting from SD/eMMC from SPL (Single stage or Falcon mode)rÉ…�rÊ}rË(hljÆhmjÄubaubhÊ)�rÌ}rÍ(hlX*In this boot mode SPL (first stage bootloader) directly boots the Linux kernel. Optionally, in order to enter into U-Boot, reset the board while keeping 'c' key on the serial terminal pressed. When falcon mode is enabled in U-Boot build (usually enabled by default), ``MLO`` checks if there is a valid ``uImage`` present at a defined offset. If ``uImage`` is present, it is booted directly. If valid ``uImage`` is not found, ``MLO`` falls back to checking if the ``uImage`` exists in a FAT partition. If it fails, it falls back to booting ``u-boot.img``.hmj½hwh›h|hÍh~}rÎ(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rÏ(h“X In this boot mode SPL (first stage bootloader) directly boots the Linux kernel. Optionally, in order to enter into U-Boot, reset the board while keeping 'c' key on the serial terminal pressed. When falcon mode is enabled in U-Boot build (usually enabled by default), rÐ…�rÑ}rÒ(hlX In this boot mode SPL (first stage bootloader) directly boots the Linux kernel. Optionally, in order to enter into U-Boot, reset the board while keeping 'c' key on the serial terminal pressed. When falcon mode is enabled in U-Boot build (usually enabled by default), hmjÌubjß)�rÓ}rÔ(hlX``MLO``h~}rÕ(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rÖh“XMLOr×…�rØ}rÙ(hlUhmjÓubah|jçubh“X checks if there is a valid rÚ…�rÛ}rÜ(hlX checks if there is a valid hmjÌubjß)�rÝ}rÞ(hlX ``uImage``h~}rß(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]ràh“XuImagerá…�râ}rã(hlUhmjÝubah|jçubh“X! present at a defined offset. If rä…�rå}ræ(hlX! present at a defined offset. If hmjÌubjß)�rç}rè(hlX ``uImage``h~}ré(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rêh“XuImagerë…�rì}rí(hlUhmjçubah|jçubh“X- is present, it is booted directly. If valid rî…�rï}rð(hlX- is present, it is booted directly. If valid hmjÌubjß)�rñ}rò(hlX ``uImage``h~}ró(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rôh“XuImagerõ…�rö}r÷(hlUhmjñubah|jçubh“X is not found, rø…�rù}rú(hlX is not found, hmjÌubjß)�rû}rü(hlX``MLO``h~}rý(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rþh“XMLOrÿ…�r}r(hlUhmjûubah|jçubh“X falls back to checking if the r…�r}r(hlX falls back to checking if the hmjÌubjß)�r}r(hlX ``uImage``h~}r(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rh“XuImager …�r }r (hlUhmjubah|jçubh“XB exists in a FAT partition. If it fails, it falls back to booting r …�r }r(hlXB exists in a FAT partition. If it fails, it falls back to booting hmjÌubjß)�r}r(hlX``u-boot.img``h~}r(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rh“X u-boot.imgr…�r}r(hlUhmjubah|jçubh“X.…�r}r(hlX.hmjÌubeubhÊ)�r}r(hlX„The falcon boot uses ``uImage``. To build the kernel ``uImage``, you will need to keep the U-Boot tool ``mkimage`` in your ``$PATH``hmj½hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r(h“XThe falcon boot uses r…�r}r(hlXThe falcon boot uses hmjubjß)�r}r (hlX ``uImage``h~}r!(h€]h�]h‚]hƒ]h†]uhmjhŠ]r"h“XuImager#…�r$}r%(hlUhmjubah|jçubh“X. To build the kernel r&…�r'}r((hlX. To build the kernel hmjubjß)�r)}r*(hlX ``uImage``h~}r+(h€]h�]h‚]hƒ]h†]uhmjhŠ]r,h“XuImager-…�r.}r/(hlUhmj)ubah|jçubh“X(, you will need to keep the U-Boot tool r0…�r1}r2(hlX(, you will need to keep the U-Boot tool hmjubjß)�r3}r4(hlX ``mkimage``h~}r5(h€]h�]h‚]hƒ]h†]uhmjhŠ]r6h“Xmkimager7…�r8}r9(hlUhmj3ubah|jçubh“X in your r:…�r;}r<(hlX in your hmjubjß)�r=}r>(hlX ``$PATH``h~}r?(h€]h�]h‚]hƒ]h†]uhmjhŠ]r@h“X$PATHrA…�rB}rC(hlUhmj=ubah|jçubeubjr)�rD}rE(hlX,# make uImage modules dtbs LOADADDR=80008000hmj½hwh›h|juh~}rF(hŸh hƒ]h‚]h€]h�]h†]uhˆM+h‰hhŠ]rGh“X,# make uImage modules dtbs LOADADDR=80008000rH…�rI}rJ(hlUhmjDubaubhÊ)�rK}rL(hlXÄIf kernel is not build with ``CONFIG_CMDLINE`` to set correct bootargs, then add the needed ``bootargs`` in ``chosen`` node in DTB file, using ``fdtput`` host utility. For example, for DRA74x EVM:hmj½hwh›h|hÍh~}rM(h€]h�]h‚]hƒ]h†]uhˆM"h‰hhŠ]rN(h“XIf kernel is not build with rO…�rP}rQ(hlXIf kernel is not build with hmjKubjß)�rR}rS(hlX``CONFIG_CMDLINE``h~}rT(h€]h�]h‚]hƒ]h†]uhmjKhŠ]rUh“XCONFIG_CMDLINErV…�rW}rX(hlUhmjRubah|jçubh“X. to set correct bootargs, then add the needed rY…�rZ}r[(hlX. to set correct bootargs, then add the needed hmjKubjß)�r\}r](hlX ``bootargs``h~}r^(h€]h�]h‚]hƒ]h†]uhmjKhŠ]r_h“Xbootargsr`…�ra}rb(hlUhmj\ubah|jçubh“X in rc…�rd}re(hlX in hmjKubjß)�rf}rg(hlX ``chosen``h~}rh(h€]h�]h‚]hƒ]h†]uhmjKhŠ]rih“Xchosenrj…�rk}rl(hlUhmjfubah|jçubh“X node in DTB file, using rm…�rn}ro(hlX node in DTB file, using hmjKubjß)�rp}rq(hlX ``fdtput``h~}rr(h€]h�]h‚]hƒ]h†]uhmjKhŠ]rsh“Xfdtputrt…�ru}rv(hlUhmjpubah|jçubh“X+ host utility. For example, for DRA74x EVM:rw…�rx}ry(hlX+ host utility. For example, for DRA74x EVM:hmjKubeubjr)�rz}r{(hlXi# fdtput -v -t s arch/arm/boot/dts/dra7-evm.dtb "/chosen" bootargs "console=ttyO0,115200n8 root="hmj½hwh›h|juh~}r|(hŸh hƒ]h‚]h€]h�]h†]uhˆM3h‰hhŠ]r}h“Xi# fdtput -v -t s arch/arm/boot/dts/dra7-evm.dtb "/chosen" bootargs "console=ttyO0,115200n8 root="r~…�r}r€(hlUhmjzubaubhÊ)�r�}r‚(hlX²``MLO``, ``u-boot.img`` (optional), DTB, ``uImage`` are all stored on the same medium, either the SD or the eMMC. There are two ways to store the binaries in the SD (resp. eMMC):hmj½hwh›h|hÍh~}rƒ(h€]h�]h‚]hƒ]h†]uhˆM*h‰hhŠ]r„(jß)�r…}r†(hlX``MLO``h~}r‡(h€]h�]h‚]hƒ]h†]uhmj�hŠ]rˆh“XMLOr‰…�rŠ}r‹(hlUhmj…ubah|jçubh“X, rŒ…�r�}rŽ(hlX, hmj�ubjß)�r�}r�(hlX``u-boot.img``h~}r‘(h€]h�]h‚]hƒ]h†]uhmj�hŠ]r’h“X u-boot.imgr“…�r”}r•(hlUhmj�ubah|jçubh“X (optional), DTB, r–…�r—}r˜(hlX (optional), DTB, hmj�ubjß)�r™}rš(hlX ``uImage``h~}r›(h€]h�]h‚]hƒ]h†]uhmj�hŠ]rœh“XuImager�…�rž}rŸ(hlUhmj™ubah|jçubh“X are all stored on the same medium, either the SD or the eMMC. There are two ways to store the binaries in the SD (resp. eMMC):r …�r¡}r¢(hlX are all stored on the same medium, either the SD or the eMMC. There are two ways to store the binaries in the SD (resp. eMMC):hmj�ubeubjr)�r£}r¤(hlXn* raw: binaries are stored at fixed offset in the medium * fat: binaries are stored as file in a FAT partitionhmj½hwh›h|juh~}r¥(hŸh hƒ]h‚]h€]h�]h†]uhˆM;h‰hhŠ]r¦h“Xn* raw: binaries are stored at fixed offset in the medium * fat: binaries are stored as file in a FAT partitionr§…�r¨}r©(hlUhmj£ubaubhÊ)�rª}r«(hlXQTo flash binaries to SD or eMMC, you can use DFU. For SD boot, from u-boot promptr¬hmj½hwh›h|hÍh~}r­(h€]h�]h‚]hƒ]h†]uhˆM3h‰hhŠ]r®h“XQTo flash binaries to SD or eMMC, you can use DFU. For SD boot, from u-boot promptr¯…�r°}r±(hlj¬hmjªubaubjr)�r²}r³(hlXG=> env default -a; setenv dfu_alt_info ${dfu_alt_info_mmc}; dfu 0 mmc 0hmj½hwh›h|juh~}r´(hŸh hƒ]h‚]h€]h�]h†]uhˆMCh‰hhŠ]rµh“XG=> env default -a; setenv dfu_alt_info ${dfu_alt_info_mmc}; dfu 0 mmc 0r¶…�r·}r¸(hlUhmj²ubaubhÊ)�r¹}rº(hlX!For eMMC boot, from u-boot promptr»hmj½hwh›h|hÍh~}r¼(h€]h�]h‚]hƒ]h†]uhˆM:h‰hhŠ]r½h“X!For eMMC boot, from u-boot promptr¾…�r¿}rÀ(hlj»hmj¹ubaubjr)�rÁ}rÂ(hlXH=> env default -a; setenv dfu_alt_info ${dfu_alt_info_emmc}; dfu 0 mmc 1hmj½hwh›h|juh~}rÃ(hŸh hƒ]h‚]h€]h�]h†]uhˆMIh‰hhŠ]rÄh“XH=> env default -a; setenv dfu_alt_info ${dfu_alt_info_emmc}; dfu 0 mmc 1rÅ…�rÆ}rÇ(hlUhmjÁubaubhÊ)�rÈ}rÉ(hlX“Note: On boards like AM57x GP EVM or BeagleBoard x15, where the second USB instance is used as USB client, replace "dfu 0 mmc X" with "dfu 1 mmc X"rÊhmj½hwh›h|hÍh~}rË(h€]h�]h‚]hƒ]h†]uhˆM@h‰hhŠ]rÌh“X“Note: On boards like AM57x GP EVM or BeagleBoard x15, where the second USB instance is used as USB client, replace "dfu 0 mmc X" with "dfu 1 mmc X"rÍ…�rÎ}rÏ(hljÊhmjÈubaubhÊ)�rÐ}rÑ(hlX"On the host side: binaries in FAT:rÒhmj½hwh›h|hÍh~}rÓ(h€]h�]h‚]hƒ]h†]uhˆMDh‰hhŠ]rÔh“X"On the host side: binaries in FAT:rÕ…�rÖ}r×(hljÒhmjÐubaubjr)�rØ}rÙ(hlX¢$ sudo dfu-util -D MLO -a MLO $ sudo dfu-util -D u-boot.img -a u-boot.img $ sudo dfu-util -D dra7-evm.dtb -a spl-os-args $ sudo dfu-util -D uImage -a spl-os-imagehmj½hwh›h|juh~}rÚ(hŸh hƒ]h‚]h€]h�]h†]uhˆMSh‰hhŠ]rÛh“X¢$ sudo dfu-util -D MLO -a MLO $ sudo dfu-util -D u-boot.img -a u-boot.img $ sudo dfu-util -D dra7-evm.dtb -a spl-os-args $ sudo dfu-util -D uImage -a spl-os-imagerÜ…�rÝ}rÞ(hlUhmjØubaubhÊ)�rß}rà(hlX raw binaries:ráhmj½hwh›h|hÍh~}râ(h€]h�]h‚]hƒ]h†]uhˆMMh‰hhŠ]rãh“X raw binaries:rä…�rå}ræ(hljáhmjßubaubjr)�rç}rè(hlX²$ sudo dfu-util -D MLO -a MLO.raw $ sudo dfu-util -D u-boot.img -a u-boot.img.raw $ sudo dfu-util -D dra7-evm.dtb -a spl-os-args.raw $ sudo dfu-util -D uImage -a spl-os-image.rawhmj½hwh›h|juh~}ré(hŸh hƒ]h‚]h€]h�]h†]uhˆM\h‰hhŠ]rêh“X²$ sudo dfu-util -D MLO -a MLO.raw $ sudo dfu-util -D u-boot.img -a u-boot.img.raw $ sudo dfu-util -D dra7-evm.dtb -a spl-os-args.raw $ sudo dfu-util -D uImage -a spl-os-image.rawrë…�rì}rí(hlUhmjçubaubhÊ)�rî}rï(hlX If the binaries are files in a fat partition, you need to specify their name if they differ from the default values ("uImage" and "args"). Note that DFU uses the names "spl-os-image" and "spl-os-args", so this step is required in the case of DFU. From u-boot promptrðhmj½hwh›h|hÍh~}rñ(h€]h�]h‚]hƒ]h†]uhˆMVh‰hhŠ]ròh“X If the binaries are files in a fat partition, you need to specify their name if they differ from the default values ("uImage" and "args"). Note that DFU uses the names "spl-os-image" and "spl-os-args", so this step is required in the case of DFU. From u-boot promptró…�rô}rõ(hljðhmjîubaubjr)�rö}r÷(hlXZ=> setenv falcon_image_file spl-os-image => setenv falcon_args_file spl-os-args => saveenvhmj½hwh›h|juh~}rø(hŸh hƒ]h‚]h€]h�]h†]uhˆMhh‰hhŠ]rùh“XZ=> setenv falcon_image_file spl-os-image => setenv falcon_args_file spl-os-args => saveenvrú…�rû}rü(hlUhmjöubaubhÊ)�rý}rþ(hlX@Set the environment variable "boot\_os" to 1. From u-boot promptrÿhmj½hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMah‰hhŠ]rh“X?Set the environment variable "boot_os" to 1. From u-boot promptr…�r}r(hlX@Set the environment variable "boot\_os" to 1. From u-boot prompthmjýubaubjr)�r}r(hlX=> setenv boot_os 1 => saveenvhmj½hwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆMph‰hhŠ]rh“X=> setenv boot_os 1 => saveenvr …�r }r (hlUhmjubaubhÊ)�r }r (hlXSet the board boot from SD (or eMMC respectively) and reset the EVM. The SPL directly boots the kernel image from SD (or eMMC).rhmj½hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMhh‰hhŠ]rh“XSet the board boot from SD (or eMMC respectively) and reset the EVM. The SPL directly boots the kernel image from SD (or eMMC).r…�r}r(hljhmj ubaubjC)�r}r(hlUhmj½hwh›h|jZh~}r(h€]h�]h‚]hƒ]h†]uhˆMkh‰hhŠ]rjH)�r}r(hlUjLKhmjhwh›h|hˆh~}r(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�r}r(hlUhmhshwh›h|h}h~}r(h€]h�]h‚]hƒ]rUspirah†]r hJauhˆMnh‰hhŠ]r!(hŒ)�r"}r#(hlXSPIr$hmjhwh›h|h�h~}r%(h€]h�]h‚]hƒ]h†]uhˆMnh‰hhŠ]r&h“XSPIr'…�r(}r)(hlj$hmj"ubaubhÃ)�r*}r+(hlUhmjhwh›h|hÆh~}r,(hÈX#CONFIG_part_family in ('J7_family')hƒ]h‚]h€]h�]h†]uhˆMph‰hhŠ]r-j®)�r.}r/(hlXHSPI is not supported on J721E platform (not be confused with QSPI/OSPI).r0hmj*hwh›h|j²h~}r1(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r2hÊ)�r3}r4(hlj0hmj.hwh›h|hÍh~}r5(h€]h�]h‚]hƒ]h†]uhˆMshŠ]r6h“XHSPI is not supported on J721E platform (not be confused with QSPI/OSPI).r7…�r8}r9(hlj0hmj3ubaubaubaubhÊ)�r:}r;(hlXaThis section documents how to write files to the SPI device and use it to load and then boot the Linux Kernel using a root filesystem also found on SPI. At this time, no special builds of U-Boot are required to perform these operations on the supported hardware. The table below however, lists builds that will also use the SPI flash for the environment instead of the default, which typically is NAND in AM57x and DRA7x EVMs, but in Keystone-2 EVMs, it is only NOR. Finally, for simplicity we assume the files are being loaded from an SD card. Using the network interface (if applicable) is documented above.r<hmjhwh›h|hÍh~}r=(h€]h�]h‚]hƒ]h†]uhˆMuh‰hhŠ]r>h“XaThis section documents how to write files to the SPI device and use it to load and then boot the Linux Kernel using a root filesystem also found on SPI. At this time, no special builds of U-Boot are required to perform these operations on the supported hardware. The table below however, lists builds that will also use the SPI flash for the environment instead of the default, which typically is NAND in AM57x and DRA7x EVMs, but in Keystone-2 EVMs, it is only NOR. Finally, for simplicity we assume the files are being loaded from an SD card. Using the network interface (if applicable) is documented above.r?…�r@}rA(hlj<hmj:ubaubhn)�rB}rC(hlUhmjhwh›h|h}h~}rD(h€]h�]h‚]hƒ]rEUwriting-to-spi-from-u-bootrFah†]rGh#auhˆM€h‰hhŠ]rH(hŒ)�rI}rJ(hlXWriting to SPI from U-BootrKhmjBhwh›h|h�h~}rL(h€]h�]h‚]hƒ]h†]uhˆM€h‰hhŠ]rMh“XWriting to SPI from U-BootrN…�rO}rP(hljKhmjIubaubhÊ)�rQ}rR(hlX#Note for AM57x and DRA7x platforms:rShmjBhwh›h|hÍh~}rT(h€]h�]h‚]hƒ]h†]uhˆM‚h‰hhŠ]rUh“X#Note for AM57x and DRA7x platforms:rV…�rW}rX(hljShmjQubaubj#)�rY}rZ(hlUhmjBhwh›h|j&h~}r[(j(X-hƒ]h‚]h€]h�]h†]uhˆM„h‰hhŠ]r\(j )�r]}r^(hlX`From the U-Boot build, the **MLO.byteswap** and **u-boot.img** files are the ones to be written.hmjYhwh›h|jh~}r_(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r`hÊ)�ra}rb(hlX`From the U-Boot build, the **MLO.byteswap** and **u-boot.img** files are the ones to be written.hmj]hwh›h|hÍh~}rc(h€]h�]h‚]hƒ]h†]uhˆM„hŠ]rd(h“XFrom the U-Boot build, the re…�rf}rg(hlXFrom the U-Boot build, the hmjaubj)�rh}ri(hlX**MLO.byteswap**h~}rj(h€]h�]h‚]hƒ]h†]uhmjahŠ]rkh“X MLO.byteswaprl…�rm}rn(hlUhmjhubah|j'ubh“X and ro…�rp}rq(hlX and hmjaubj)�rr}rs(hlX**u-boot.img**h~}rt(h€]h�]h‚]hƒ]h†]uhmjahŠ]ruh“X u-boot.imgrv…�rw}rx(hlUhmjrubah|j'ubh“X" files are the ones to be written.ry…�rz}r{(hlX" files are the ones to be written.hmjaubeubaubj )�r|}r}(hlX–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.hmjYhwh›h|jh~}r~(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r€}r�(hlX–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r‚hmj|hwh›h|hÍh~}rƒ(h€]h�]h‚]hƒ]h†]uhˆM†hŠ]r„h“X–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r……�r†}r‡(hlj‚hmj€ubaubaubj )�rˆ}r‰(hlXtAt this time the SPI mtd partition map has not yet been updated to include an example location for the device tree. hmjYhwh›h|jh~}rŠ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r‹hÊ)�rŒ}r�(hlXsAt this time the SPI mtd partition map has not yet been updated to include an example location for the device tree.rŽhmjˆhwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆM‰hŠ]r�h“XsAt this time the SPI mtd partition map has not yet been updated to include an example location for the device tree.r‘…�r’}r“(hljŽhmjŒubaubaubeubjr)�r”}r•(hlX‡U-Boot # mmc rescan U-Boot # sf probe 0 U-Boot # sf erase 0 +80000 U-Boot # fatload mmc 0 ${loadaddr} MLO.byteswap U-Boot # sf write ${loadaddr} 0 ${filesize} U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # sf write ${loadaddr} 0x20000 ${filesize} U-Boot # sf erase 80000 +${spiimgsize} U-Boot # fatload mmc 0 ${loadaddr} zImage U-Boot # sf write ${loadaddr} ${spisrcaddr} ${filesize}hmjBhwh›h|juh~}r–(hŸh hƒ]h‚]h€]h�]h†]uhˆM™h‰hhŠ]r—h“X‡U-Boot # mmc rescan U-Boot # sf probe 0 U-Boot # sf erase 0 +80000 U-Boot # fatload mmc 0 ${loadaddr} MLO.byteswap U-Boot # sf write ${loadaddr} 0 ${filesize} U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # sf write ${loadaddr} 0x20000 ${filesize} U-Boot # sf erase 80000 +${spiimgsize} U-Boot # fatload mmc 0 ${loadaddr} zImage U-Boot # sf write ${loadaddr} ${spisrcaddr} ${filesize}r˜…�r™}rš(hlUhmj”ubaubhÊ)�r›}rœ(hlX,Note for Keystone-2 (K2H/K/E/L/G) platforms:r�hmjBhwh›h|hÍh~}rž(h€]h�]h‚]hƒ]h†]uhˆM™h‰hhŠ]rŸh“X,Note for Keystone-2 (K2H/K/E/L/G) platforms:r …�r¡}r¢(hlj�hmj›ubaubj#)�r£}r¤(hlUhmjBhwh›h|j&h~}r¥(j(X-hƒ]h‚]h€]h�]h†]uhˆM›h‰hhŠ]r¦(j )�r§}r¨(hlXLFrom the U-Boot build, the **u-boot-spi.gph** file is the one to be written.hmj£hwh›h|jh~}r©(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rªhÊ)�r«}r¬(hlXLFrom the U-Boot build, the **u-boot-spi.gph** file is the one to be written.hmj§hwh›h|hÍh~}r­(h€]h�]h‚]hƒ]h†]uhˆM›hŠ]r®(h“XFrom the U-Boot build, the r¯…�r°}r±(hlXFrom the U-Boot build, the hmj«ubj)�r²}r³(hlX**u-boot-spi.gph**h~}r´(h€]h�]h‚]hƒ]h†]uhmj«hŠ]rµh“Xu-boot-spi.gphr¶…�r·}r¸(hlUhmj²ubah|j'ubh“X file is the one to be written.r¹…�rº}r»(hlX file is the one to be written.hmj«ubeubaubj )�r¼}r½(hlX@We load the file from a tftp server via netowrk in this example.r¾hmj£hwh›h|jh~}r¿(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÀhÊ)�rÁ}rÂ(hlj¾hmj¼hwh›h|hÍh~}rÃ(h€]h�]h‚]hƒ]h†]uhˆM�hŠ]rÄh“X@We load the file from a tftp server via netowrk in this example.rÅ…�rÆ}rÇ(hlj¾hmjÁubaubaubj )�rÈ}rÉ(hlX@The series commands burns the u-boot image to the SPI NOR flash hmj£hwh›h|jh~}rÊ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rËhÊ)�rÌ}rÍ(hlX?The series commands burns the u-boot image to the SPI NOR flashrÎhmjÈhwh›h|hÍh~}rÏ(h€]h�]h‚]hƒ]h†]uhˆMžhŠ]rÐh“X?The series commands burns the u-boot image to the SPI NOR flashrÑ…�rÒ}rÓ(hljÎhmjÌubaubaubeubjr)�rÔ}rÕ(hlXàU-Boot # env default -f -a U-Boot # setenv serverip U-Boot # setenv tftp_root U-Boot # setenv name_uboot u-boot-spi.gph U-Boot # run get_uboot_net U-Boot # run burn_uboot_spihmjBhwh›h|juh~}rÖ(hŸh hƒ]h‚]h€]h�]h†]uhˆM­h‰hhŠ]r×h“XàU-Boot # env default -f -a U-Boot # setenv serverip U-Boot # setenv tftp_root U-Boot # setenv name_uboot u-boot-spi.gph U-Boot # run get_uboot_net U-Boot # run burn_uboot_spirØ…�rÙ}rÚ(hlUhmjÔubaubjC)�rÛ}rÜ(hlUhmjBhwh›h|jZh~}rÝ(h€]h�]h‚]hƒ]h†]uhˆM©h‰hhŠ]rÞjH)�rß}rà(hlUjLKhmjÛhwh›h|hˆh~}rá(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�râ}rã(hlUhmjhwh›h|h}h~}rä(h€]h�]h‚]hƒ]råUbooting-from-spiræah†]rçhRauhˆM¬h‰hhŠ]rè(hŒ)�ré}rê(hlXBooting from SPIrëhmjâhwh›h|h�h~}rì(h€]h�]h‚]hƒ]h†]uhˆM¬h‰hhŠ]ríh“XBooting from SPIrî…�rï}rð(hljëhmjéubaubhÊ)�rñ}rò(hlXWithin the default environment for each board that supports SPI there is a boot command called **spiboot** that will automatically load the kernel and boot. For the exact details of each use **printenv** on the **spiboot** variable and then in turn **printenv** other sub-sections of the command. The most important variables here are **spiroot** and **spirootfstype**. For Keystone-2 platforms, it is configured to be **ARM SPI** boot mode using SW1 dip switch setting. Please refer to the Hardware Setup of each Keystone-2 EVM.hmjâhwh›h|hÍh~}ró(h€]h�]h‚]hƒ]h†]uhˆM­h‰hhŠ]rô(h“X_Within the default environment for each board that supports SPI there is a boot command called rõ…�rö}r÷(hlX_Within the default environment for each board that supports SPI there is a boot command called hmjñubj)�rø}rù(hlX **spiboot**h~}rú(h€]h�]h‚]hƒ]h†]uhmjñhŠ]rûh“Xspibootrü…�rý}rþ(hlUhmjøubah|j'ubh“XU that will automatically load the kernel and boot. For the exact details of each use rÿ…�r}r(hlXU that will automatically load the kernel and boot. For the exact details of each use hmjñubj)�r}r(hlX **printenv**h~}r(h€]h�]h‚]hƒ]h†]uhmjñhŠ]rh“Xprintenvr…�r}r(hlUhmjubah|j'ubh“X on the r …�r }r (hlX on the hmjñubj)�r }r (hlX **spiboot**h~}r(h€]h�]h‚]hƒ]h†]uhmjñhŠ]rh“Xspibootr…�r}r(hlUhmj ubah|j'ubh“X variable and then in turn r…�r}r(hlX variable and then in turn hmjñubj)�r}r(hlX **printenv**h~}r(h€]h�]h‚]hƒ]h†]uhmjñhŠ]rh“Xprintenvr…�r}r(hlUhmjubah|j'ubh“XJ other sub-sections of the command. The most important variables here are r…�r}r(hlXJ other sub-sections of the command. The most important variables here are hmjñubj)�r }r!(hlX **spiroot**h~}r"(h€]h�]h‚]hƒ]h†]uhmjñhŠ]r#h“Xspirootr$…�r%}r&(hlUhmj ubah|j'ubh“X and r'…�r(}r)(hlX and hmjñubj)�r*}r+(hlX**spirootfstype**h~}r,(h€]h�]h‚]hƒ]h†]uhmjñhŠ]r-h“X spirootfstyper.…�r/}r0(hlUhmj*ubah|j'ubh“X3. For Keystone-2 platforms, it is configured to be r1…�r2}r3(hlX3. For Keystone-2 platforms, it is configured to be hmjñubj)�r4}r5(hlX **ARM SPI**h~}r6(h€]h�]h‚]hƒ]h†]uhmjñhŠ]r7h“XARM SPIr8…�r9}r:(hlUhmj4ubah|j'ubh“Xc boot mode using SW1 dip switch setting. Please refer to the Hardware Setup of each Keystone-2 EVM.r;…�r<}r=(hlXc boot mode using SW1 dip switch setting. Please refer to the Hardware Setup of each Keystone-2 EVM.hmjñubeubjC)�r>}r?(hlUhmjâhwh›h|jZh~}r@(h€]h�]h‚]hƒ]h†]uhˆM¶h‰hhŠ]rAjH)�rB}rC(hlUjLKhmj>hwh›h|hˆh~}rD(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�rE}rF(hlUhmhshwh›h|h}h~}rG(h€]h�]h‚]hƒ]rHU ospi-qspirIah†]rJhFauhˆM¹h‰hhŠ]rK(hŒ)�rL}rM(hlX OSPI/QSPIrNhmjEhwh›h|h�h~}rO(h€]h�]h‚]hƒ]h†]uhˆM¹h‰hhŠ]rPh“X OSPI/QSPIrQ…�rR}rS(hljNhmjLubaubhÊ)�rT}rU(hlXLOSPI/QSPI is a serial peripheral interface like SPI the major difference being the support for Octal/Quad read, uses 8/4 data lines for read compared to 2 lines used by the traditional SPI. This section documents how to write files to the QSPI device and use it to load and then boot the Linux Kernel using a root filesystem also found on QSPI. At this time, no special builds of U-Boot are required to perform these operations on the supported hardware. For simplicity we assume the files are being loaded from an SD card. Using the network interface (if applicable) is documented above.rVhmjEhwh›h|hÍh~}rW(h€]h�]h‚]hƒ]h†]uhˆM»h‰hhŠ]rXh“XLOSPI/QSPI is a serial peripheral interface like SPI the major difference being the support for Octal/Quad read, uses 8/4 data lines for read compared to 2 lines used by the traditional SPI. This section documents how to write files to the QSPI device and use it to load and then boot the Linux Kernel using a root filesystem also found on QSPI. At this time, no special builds of U-Boot are required to perform these operations on the supported hardware. For simplicity we assume the files are being loaded from an SD card. Using the network interface (if applicable) is documented above.rY…�rZ}r[(hljVhmjTubaubhn)�r\}r](hlUhmjEhwh›h|h}h~}r^(h€]h�]h‚]hƒ]r_Uam654-j721e-supportr`ah†]rah\auhˆMÆh‰hhŠ]rb(hŒ)�rc}rd(hlXAM654/J721E Supportrehmj\hwh›h|h�h~}rf(h€]h�]h‚]hƒ]h†]uhˆMÆh‰hhŠ]rgh“XAM654/J721E Supportrh…�ri}rj(hljehmjcubaubhÊ)�rk}rl(hlX/ROM supports booting from OSPI from offset 0x0.rmhmj\hwh›h|hÍh~}rn(h€]h�]h‚]hƒ]h†]uhˆMÇh‰hhŠ]roh“X/ROM supports booting from OSPI from offset 0x0.rp…�rq}rr(hljmhmjkubaubhÊ)�rs}rt(hlX**Flashing Images to OSPI**ruhmj\hwh›h|hÍh~}rv(h€]h�]h‚]hƒ]h†]uhˆMÉh‰hhŠ]rwj)�rx}ry(hljuh~}rz(h€]h�]h‚]hƒ]h†]uhmjshŠ]r{h“XFlashing Images to OSPIr|…�r}}r~(hlUhmjxubah|j'ubaubhÊ)�r}r€(hlX‰Below commands can be used to download tiboot3.bin, tispl.bin and u-boot.img over tftp and then flash it to OSPI at respective addresses.r�hmj\hwh›h|hÍh~}r‚(h€]h�]h‚]hƒ]h†]uhˆMËh‰hhŠ]rƒh“X‰Below commands can be used to download tiboot3.bin, tispl.bin and u-boot.img over tftp and then flash it to OSPI at respective addresses.r„…�r…}r†(hlj�hmjubaubjr)�r‡}rˆ(hlX(=> sf probe => tftp ${loadaddr} tiboot3.bin => sf update $loadaddr 0x0 $filesize => tftp ${loadaddr} tispl.bin => sf update $loadaddr 0x80000 $filesize => tftp ${loadaddr} u-boot.img => sf update $loadaddr 0x280000 $filesize => tftp ${loadaddr} sysfw.itb => sf update $loadaddr 0x6C0000 $filesizehmj\hwh›h|juh~}r‰(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMÎh‰hhŠ]rŠh“X(=> sf probe => tftp ${loadaddr} tiboot3.bin => sf update $loadaddr 0x0 $filesize => tftp ${loadaddr} tispl.bin => sf update $loadaddr 0x80000 $filesize => tftp ${loadaddr} u-boot.img => sf update $loadaddr 0x280000 $filesize => tftp ${loadaddr} sysfw.itb => sf update $loadaddr 0x6C0000 $filesizer‹…�rŒ}r�(hlUhmj‡ubaubhÊ)�rŽ}r�(hlX**Flash Layout for OSPI**r�hmj\hwh›h|hÍh~}r‘(h€]h�]h‚]hƒ]h†]uhˆMÚh‰hhŠ]r’j)�r“}r”(hlj�h~}r•(h€]h�]h‚]hƒ]h†]uhmjŽhŠ]r–h“XFlash Layout for OSPIr—…�r˜}r™(hlUhmj“ubah|j'ubaubjr)�rš}r›(hlX¿ 0x0 +----------------------------+ | ospi.tiboot3(512K) | | | 0x80000 +----------------------------+ | ospi.tispl(2M) | | | 0x280000 +----------------------------+ | ospi.u-boot(4M) | | | 0x680000 +----------------------------+ | ospi.env(128K) | | | 0x6A0000 +----------------------------+ | ospi.env.backup (128K) | | | 0x6C0000 +----------------------------+ | ospi.sysfw(1M) | | | 0x7C0000 +----------------------------+ | padding (256k) | 0x800000 +----------------------------+ | ospi.rootfs(UBIFS) | | | +----------------------------+hmj\hwh›h|juh~}rœ(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMÜh‰hhŠ]r�h“X¿ 0x0 +----------------------------+ | ospi.tiboot3(512K) | | | 0x80000 +----------------------------+ | ospi.tispl(2M) | | | 0x280000 +----------------------------+ | ospi.u-boot(4M) | | | 0x680000 +----------------------------+ | ospi.env(128K) | | | 0x6A0000 +----------------------------+ | ospi.env.backup (128K) | | | 0x6C0000 +----------------------------+ | ospi.sysfw(1M) | | | 0x7C0000 +----------------------------+ | padding (256k) | 0x800000 +----------------------------+ | ospi.rootfs(UBIFS) | | | +----------------------------+rž…�rŸ}r (hlUhmjšubaubhÊ)�r¡}r¢(hlX©Kernel Image and DT are expected to be present in the /boot folder of UBIFS ospi.rootfs just like in SD card case. U-Boot looks for UBI volume named "rootfs" for rootfs.r£hmj\hwh›h|hÍh~}r¤(h€]h�]h‚]hƒ]h†]uhˆM÷h‰hhŠ]r¥h“X©Kernel Image and DT are expected to be present in the /boot folder of UBIFS ospi.rootfs just like in SD card case. U-Boot looks for UBI volume named "rootfs" for rootfs.r¦…�r§}r¨(hlj£hmj¡ubaubhÊ)�r©}rª(hlX/To boot kernel from OSPI, at the U-Boot prompt:r«hmj\hwh›h|hÍh~}r¬(h€]h�]h‚]hƒ]h†]uhˆMûh‰hhŠ]r­h“X/To boot kernel from OSPI, at the U-Boot prompt:r®…�r¯}r°(hlj«hmj©ubaubjr)�r±}r²(hlX=> setenv boot ubi => boothmj\hwh›h|juh~}r³(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMýh‰hhŠ]r´h“X=> setenv boot ubi => bootrµ…�r¶}r·(hlUhmj±ubaubeubhn)�r¸}r¹(hlUhmjEhwh›h|h}h~}rº(h€]h�]h‚]hƒ]r»Udra7xx-supportr¼ah†]r½hauhˆMh‰hhŠ]r¾(hŒ)�r¿}rÀ(hlXDRA7xx supportrÁhmj¸hwh›h|h�h~}rÂ(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rÃh“XDRA7xx supportrÄ…�rÅ}rÆ(hljÁhmj¿ubaubhÊ)�rÇ}rÈ(hlXMemory Layout of QSPI FlashrÉhmj¸hwh›h|hÍh~}rÊ(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rËh“XMemory Layout of QSPI FlashrÌ…�rÍ}rÎ(hljÉhmjÇubaubjr)�rÏ}rÐ(hlXò+----------------+ 0x00000 | MLO | | | +----------------+ 0x040000 | u-boot.img | | | +----------------+ 0x140000 | DTB blob | +----------------+ 0x1c0000 | u-boot env | +----------------+ 0x1d0000 | u-boot env | | (backup) | +----------------+ 0x1e0000 | | | uImage | | | | | +----------------+ 0x9e0000 | | | other data | | | +----------------+hmj¸hwh›h|juh~}rÑ(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]rÒh“Xò+----------------+ 0x00000 | MLO | | | +----------------+ 0x040000 | u-boot.img | | | +----------------+ 0x140000 | DTB blob | +----------------+ 0x1c0000 | u-boot env | +----------------+ 0x1d0000 | u-boot env | | (backup) | +----------------+ 0x1e0000 | | | uImage | | | | | +----------------+ 0x9e0000 | | | other data | | | +----------------+rÓ…�rÔ}rÕ(hlUhmjÏubaubjC)�rÖ}r×(hlXWriting to QSPI from U-BootrØhmj¸hwh›h|jGh~}rÙ(hƒ]rÚUwriting-to-qspi-from-u-bootrÛah‚]h€]h�]h†]rÜh&auhˆNh‰hhŠ]rÝh“XWriting to QSPI from U-BootrÞ…�rß}rà(hljØhmjÖubaubhÊ)�rá}râ(hlXNote:rãhmj¸hwh›h|hÍh~}rä(h€]h�]h‚]hƒ]h†]uhˆM%h‰hhŠ]råh“XNote:ræ…�rç}rè(hljãhmjáubaubj#)�ré}rê(hlUhmj¸hwh›h|j&h~}rë(j(X-hƒ]h‚]h€]h�]h†]uhˆM'h‰hhŠ]rì(j )�rí}rî(hlXWFrom the U-Boot build, the **MLO** and **u-boot.img** files are the ones to be written.hmjéhwh›h|jh~}rï(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rðhÊ)�rñ}rò(hlXWFrom the U-Boot build, the **MLO** and **u-boot.img** files are the ones to be written.hmjíhwh›h|hÍh~}ró(h€]h�]h‚]hƒ]h†]uhˆM'hŠ]rô(h“XFrom the U-Boot build, the rõ…�rö}r÷(hlXFrom the U-Boot build, the hmjñubj)�rø}rù(hlX**MLO**h~}rú(h€]h�]h‚]hƒ]h†]uhmjñhŠ]rûh“XMLOrü…�rý}rþ(hlUhmjøubah|j'ubh“X and rÿ…�r}r(hlX and hmjñubj)�r}r(hlX**u-boot.img**h~}r(h€]h�]h‚]hƒ]h†]uhmjñhŠ]rh“X u-boot.imgr…�r}r(hlUhmjubah|j'ubh“X" files are the ones to be written.r …�r }r (hlX" files are the ones to be written.hmjñubeubaubj )�r }r (hlX—We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists. hmjéhwh›h|jh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r}r(hlX–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.rhmj hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM)hŠ]rh“X–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r…�r}r(hljhmjubaubaubeubhÊ)�r}r(hlX$Writing MLO and u-boot.img binaries.rhmj¸hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM-h‰hhŠ]rh“X$Writing MLO and u-boot.img binaries.r…�r}r(hljhmjubaubhÊ)�r }r!(hlX3For QSPI\_1 build U-Boot with ``dra7xx_evm_config``r"hmj¸hwh›h|hÍh~}r#(h€]h�]h‚]hƒ]h†]uhˆM/h‰hhŠ]r$(h“XFor QSPI_1 build U-Boot with r%…�r&}r'(hlXFor QSPI\_1 build U-Boot with hmj ubjß)�r(}r)(hlX``dra7xx_evm_config``h~}r*(h€]h�]h‚]hƒ]h†]uhmj hŠ]r+h“Xdra7xx_evm_configr,…�r-}r.(hlUhmj(ubah|jçubeubjr)�r/}r0(hlXU-Boot # mmc rescan U-Boot # fatload mmc 0 ${loadaddr} MLO U-Boot # sf probe 0 U-Boot # sf erase 0x00000 0x100000 U-Boot # sf write ${loadaddr} 0x00000 ${filesize} U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # sf write ${loadaddr} 0x40000 ${filesize}hmj¸hwh›h|juh~}r1(hŸh hƒ]h‚]h€]h�]h†]uhˆM>h‰hhŠ]r2h“XU-Boot # mmc rescan U-Boot # fatload mmc 0 ${loadaddr} MLO U-Boot # sf probe 0 U-Boot # sf erase 0x00000 0x100000 U-Boot # sf write ${loadaddr} 0x00000 ${filesize} U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # sf write ${loadaddr} 0x40000 ${filesize}r3…�r4}r5(hlUhmj/ubaubhÊ)�r6}r7(hlX'change SW2[5:0] = 110110 for qspi boot.r8hmj¸hwh›h|hÍh~}r9(h€]h�]h‚]hƒ]h†]uhˆM;h‰hhŠ]r:h“X'change SW2[5:0] = 110110 for qspi boot.r;…�r<}r=(hlj8hmj6ubaubhÊ)�r>}r?(hlX<For QSPI\_4 build U-Boot with ``dra7xx_evm_qspiboot_config``r@hmj¸hwh›h|hÍh~}rA(h€]h�]h‚]hƒ]h†]uhˆM=h‰hhŠ]rB(h“XFor QSPI_4 build U-Boot with rC…�rD}rE(hlXFor QSPI\_4 build U-Boot with hmj>ubjß)�rF}rG(hlX``dra7xx_evm_qspiboot_config``h~}rH(h€]h�]h‚]hƒ]h†]uhmj>hŠ]rIh“Xdra7xx_evm_qspiboot_configrJ…�rK}rL(hlUhmjFubah|jçubeubjr)�rM}rN(hlXûU-Boot # mmc rescan U-Boot # fatload mmc 0 ${loadaddr} MLO U-Boot # sf probe 0 U-Boot # sf erase 0x00000 0x100000 U-Boot # sf write ${loadaddr} 0x00000 0x10000 U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # sf write ${loadaddr} 0x40000 0x60000hmj¸hwh›h|juh~}rO(hŸh hƒ]h‚]h€]h�]h†]uhˆMLh‰hhŠ]rPh“XûU-Boot # mmc rescan U-Boot # fatload mmc 0 ${loadaddr} MLO U-Boot # sf probe 0 U-Boot # sf erase 0x00000 0x100000 U-Boot # sf write ${loadaddr} 0x00000 0x10000 U-Boot # fatload mmc 0 ${loadaddr} u-boot.img U-Boot # sf write ${loadaddr} 0x40000 0x60000rQ…�rR}rS(hlUhmjMubaubhÊ)�rT}rU(hlX'change SW2[5:0] = 110111 for qspi boot.rVhmj¸hwh›h|hÍh~}rW(h€]h�]h‚]hƒ]h†]uhˆMIh‰hhŠ]rXh“X'change SW2[5:0] = 110111 for qspi boot.rY…�rZ}r[(hljVhmjTubaubjC)�r\}r](hlUhmj¸hwh›h|jZh~}r^(h€]h�]h‚]hƒ]h†]uhˆMKh‰hhŠ]r_jH)�r`}ra(hlUjLKhmj\hwh›h|hˆh~}rb(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubjC)�rc}rd(hlXWriting to QSPI using DFUrehmj¸hwh›h|jGh~}rf(hƒ]rgUwriting-to-qspi-using-dfurhah‚]h€]h�]h†]rih%auhˆNh‰hhŠ]rjh“XWriting to QSPI using DFUrk…�rl}rm(hljehmjcubaubhÊ)�rn}ro(hlX\Setup: Connect the usb0 port of EVM to ubuntu host PC. Make sure dfu-util tool is installed.rphmj¸hwh›h|hÍh~}rq(h€]h�]h‚]hƒ]h†]uhˆMPh‰hhŠ]rrh“X\Setup: Connect the usb0 port of EVM to ubuntu host PC. Make sure dfu-util tool is installed.rs…�rt}ru(hljphmjnubaubjr)�rv}rw(hlX#sudo apt-get install dfu-utilhmj¸hwh›h|juh~}rx(hŸh hƒ]h‚]h€]h�]h†]uhˆM`h‰hhŠ]ryh“X#sudo apt-get install dfu-utilrz…�r{}r|(hlUhmjvubaubhÊ)�r}}r~(hlX From u-boot:rhmj¸hwh›h|hÍh~}r€(h€]h�]h‚]hƒ]h†]uhˆMWh‰hhŠ]r�h“X From u-boot:r‚…�rƒ}r„(hljhmj}ubaubjr)�r…}r†(hlXdU-Boot # env default -a U-Boot # setenv dfu_alt_info ${dfu_alt_info_qspi}; dfu 0 sf "0:0:64000000:0"hmj¸hwh›h|juh~}r‡(hŸh hƒ]h‚]h€]h�]h†]uhˆMfh‰hhŠ]rˆh“XdU-Boot # env default -a U-Boot # setenv dfu_alt_info ${dfu_alt_info_qspi}; dfu 0 sf "0:0:64000000:0"r‰…�rŠ}r‹(hlUhmj…ubaubhÊ)�rŒ}r�(hlXLFrom ubuntu PC: Using dfu-util utilities to flash the binares to QSPI flash.rŽhmj¸hwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆM^h‰hhŠ]r�h“XLFrom ubuntu PC: Using dfu-util utilities to flash the binares to QSPI flash.r‘…�r’}r“(hljŽhmjŒubaubjr)�r”}r•(hlX¥# sudo dfu-util -l (C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc. (C) 2010-2011 Tormod Volden (DfuSe support) This program is Free Software and has ABSOLUTELY NO WARRANTY dfu-util does currently only support DFU version 1.0 Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=0, name="MLO" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=1, name="u-boot.img" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=2, name="u-boot-spl-os" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=3, name="u-boot-env" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=4, name="u-boot-env.backup" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=5, name="kernel"hmj¸hwh›h|juh~}r–(hŸh hƒ]h‚]h€]h�]h†]uhˆMnh‰hhŠ]r—h“X¥# sudo dfu-util -l (C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc. (C) 2010-2011 Tormod Volden (DfuSe support) This program is Free Software and has ABSOLUTELY NO WARRANTY dfu-util does currently only support DFU version 1.0 Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=0, name="MLO" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=1, name="u-boot.img" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=2, name="u-boot-spl-os" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=3, name="u-boot-env" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=4, name="u-boot-env.backup" Found DFU: [0451:d022] devnum=0, cfg=1, intf=0, alt=5, name="kernel"r˜…�r™}rš(hlUhmj”ubaubhÊ)�r›}rœ(hlXXFlash the binaries to the respective regions using alternate interface number (alt=).r�hmj¸hwh›h|hÍh~}rž(h€]h�]h‚]hƒ]h†]uhˆMoh‰hhŠ]rŸh“XXFlash the binaries to the respective regions using alternate interface number (alt=).r …�r¡}r¢(hlj�hmj›ubaubjr)�r£}r¤(hlX¨# sudo dfu-util -c 1 -i 0 -a 0 -D MLO # sudo dfu-util -c 1 -i 0 -a 1 -D u-boot.img # sudo dfu-util -c 1 -i 0 -a 2 -D # sudo dfu-util -c 1 -i 0 -a 5 -D uImagehmj¸hwh›h|juh~}r¥(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r¦h“X¨# sudo dfu-util -c 1 -i 0 -a 0 -D MLO # sudo dfu-util -c 1 -i 0 -a 1 -D u-boot.img # sudo dfu-util -c 1 -i 0 -a 2 -D # sudo dfu-util -c 1 -i 0 -a 5 -D uImager§…�r¨}r©(hlUhmj£ubaubjC)�rª}r«(hlXBooting from QSPI from u-bootr¬hmj¸hwh›h|jGh~}r­(hƒ]r®Ubooting-from-qspi-from-u-bootr¯ah‚]h€]h�]h†]r°hUauhˆNh‰hhŠ]r±h“XBooting from QSPI from u-bootr²…�r³}r´(hlj¬hmjªubaubhÊ)�rµ}r¶(hlX�The default environment does not contain a QSPI boot command. The following example uses the partition table found in the kernel.r·hmj¸hwh›h|hÍh~}r¸(h€]h�]h‚]hƒ]h†]uhˆM|h‰hhŠ]r¹h“X�The default environment does not contain a QSPI boot command. The following example uses the partition table found in the kernel.rº…�r»}r¼(hlj·hmjµubaubjr)�r½}r¾(hlXéU-Boot # sf probe 0 U-Boot # sf read ${loadaddr} 0x1e0000 0x800000 U-Boot # sf read ${fdtaddr} 0x140000 0x80000 U-Boot # setenv bootargs console=${console} root=/dev/mtdblock19 rootfstype=jffs2 U-Boot # bootz ${loadaddr} - ${fdtaddr}hmj¸hwh›h|juh~}r¿(hŸh hƒ]h‚]h€]h�]h†]uhˆMŒh‰hhŠ]rÀh“XéU-Boot # sf probe 0 U-Boot # sf read ${loadaddr} 0x1e0000 0x800000 U-Boot # sf read ${fdtaddr} 0x140000 0x80000 U-Boot # setenv bootargs console=${console} root=/dev/mtdblock19 rootfstype=jffs2 U-Boot # bootz ${loadaddr} - ${fdtaddr}rÁ…�rÂ}rÃ(hlUhmj½ubaubjC)�rÄ}rÅ(hlX8Booting from QSPI from SPL (Single stage or Falcon mode)rÆhmj¸hwh›h|jGh~}rÇ(hƒ]rÈU6booting-from-qspi-from-spl-single-stage-or-falcon-moderÉah‚]h€]h�]h†]rÊh1auhˆNh‰hhŠ]rËh“X8Booting from QSPI from SPL (Single stage or Falcon mode)rÌ…�rÍ}rÎ(hljÆhmjÄubaubhÊ)�rÏ}rÐ(hlX¾In this boot mode SPL (first stage bootloader) directly boots the Linux kernel. Optionally, in order to enter into U-Boot, reset the board while keeping 'c' key on the serial terminal pressed. When falcon mode is enabled in U-Boot build (usually enabled by default), MLO checks if there is a valid uImage present at a defined offset. If uImage is present, it is booted directly. If valid uImage is not found, MLO falls back to booting u-boot.img.rÑhmj¸hwh›h|hÍh~}rÒ(h€]h�]h‚]hƒ]h†]uhˆMŠh‰hhŠ]rÓh“X¾In this boot mode SPL (first stage bootloader) directly boots the Linux kernel. Optionally, in order to enter into U-Boot, reset the board while keeping 'c' key on the serial terminal pressed. When falcon mode is enabled in U-Boot build (usually enabled by default), MLO checks if there is a valid uImage present at a defined offset. If uImage is present, it is booted directly. If valid uImage is not found, MLO falls back to booting u-boot.img.rÔ…�rÕ}rÖ(hljÑhmjÏubaubhÊ)�r×}rØ(hlXKFor QSPI single stage or Falcon mode, the CONFIG\_QSPI\_BOOT shall enabled.hmj¸hwh›h|hÍh~}rÙ(h€]h�]h‚]hƒ]h†]uhˆM’h‰hhŠ]rÚh“XIFor QSPI single stage or Falcon mode, the CONFIG_QSPI_BOOT shall enabled.rÛ…�rÜ}rÝ(hlXKFor QSPI single stage or Falcon mode, the CONFIG\_QSPI\_BOOT shall enabled.hmj×ubaubjr)�rÞ}rß(hlXžMenuconfig->Bood media [ ] Support for booting from NAND flash .. [*] Support for booting from QSPI flash [ ] Support for booting from SATA ...hmj¸hwh›h|juh~}rà(hŸh hƒ]h‚]h€]h�]h†]uhˆM¢h‰hhŠ]ráh“XžMenuconfig->Bood media [ ] Support for booting from NAND flash .. [*] Support for booting from QSPI flash [ ] Support for booting from SATA ...râ…�rã}rä(hlUhmjÞubaubhÊ)�rå}ræ(hlXûMLO, u-boot.img (optional), DTB, uImage are stored in QSPI flash memory. Refer the "Memory Layout" section for offset details. To flash binaries to QSPI, you can use `DFU `__, for example.hmj¸hwh›h|hÍh~}rç(h€]h�]h‚]hƒ]h†]uhˆMžh‰hhŠ]rè(h“X¦MLO, u-boot.img (optional), DTB, uImage are stored in QSPI flash memory. Refer the "Memory Layout" section for offset details. To flash binaries to QSPI, you can use ré…�rê}rë(hlX¦MLO, u-boot.img (optional), DTB, uImage are stored in QSPI flash memory. Refer the "Memory Layout" section for offset details. To flash binaries to QSPI, you can use hmjåubhÓ)�rì}rí(hlXG`DFU `__h~}rî(UnameXDFUh×X=Foundational_Components_U-Boot.html#writing-to-qspi-using-dfuhƒ]h‚]h€]h�]h†]uhmjåhŠ]rïh“XDFUrð…�rñ}rò(hlUhmjìubah|hÜubh“X, for example.ró…�rô}rõ(hlX, for example.hmjåubeubhÊ)�rö}r÷(hlXwThe QSPI boot uses uImage. Build the kernel uImage. You will need to keep the U-Boot tool ``mkimage`` in your ``$PATH``hmj¸hwh›h|hÍh~}rø(h€]h�]h‚]hƒ]h†]uhˆM¤h‰hhŠ]rù(h“XZThe QSPI boot uses uImage. Build the kernel uImage. You will need to keep the U-Boot tool rú…�rû}rü(hlXZThe QSPI boot uses uImage. Build the kernel uImage. You will need to keep the U-Boot tool hmjöubjß)�rý}rþ(hlX ``mkimage``h~}rÿ(h€]h�]h‚]hƒ]h†]uhmjöhŠ]rh“Xmkimager…�r}r(hlUhmjýubah|jçubh“X in your r…�r}r(hlX in your hmjöubjß)�r}r(hlX ``$PATH``h~}r (h€]h�]h‚]hƒ]h†]uhmjöhŠ]r h“X$PATHr …�r }r (hlUhmjubah|jçubeubjr)�r}r(hlX,# make uImage modules dtbs LOADADDR=80008000hmj¸hwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆM´h‰hhŠ]rh“X,# make uImage modules dtbs LOADADDR=80008000r…�r}r(hlUhmjubaubhÊ)�r}r(hlX¸If kernel is not build with ``CONFIG_CMDLINE`` to set correct bootargs, then add the needed bootargs in chosen node in DTB file, using fdtput host utility. For example, for DRA74x EVM:hmj¸hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM«h‰hhŠ]r(h“XIf kernel is not build with r…�r}r(hlXIf kernel is not build with hmjubjß)�r}r(hlX``CONFIG_CMDLINE``h~}r(h€]h�]h‚]hƒ]h†]uhmjhŠ]rh“XCONFIG_CMDLINEr …�r!}r"(hlUhmjubah|jçubh“XŠ to set correct bootargs, then add the needed bootargs in chosen node in DTB file, using fdtput host utility. For example, for DRA74x EVM:r#…�r$}r%(hlXŠ to set correct bootargs, then add the needed bootargs in chosen node in DTB file, using fdtput host utility. For example, for DRA74x EVM:hmjubeubjr)�r&}r'(hlXi# fdtput -v -t s arch/arm/boot/dts/dra7-evm.dtb "/chosen" bootargs "console=ttyO0,115200n8 root="hmj¸hwh›h|juh~}r((hŸh hƒ]h‚]h€]h�]h†]uhˆM¼h‰hhŠ]r)h“Xi# fdtput -v -t s arch/arm/boot/dts/dra7-evm.dtb "/chosen" bootargs "console=ttyO0,115200n8 root="r*…�r+}r,(hlUhmj&ubaubhÊ)�r-}r.(hlX-Set the environment variable "boot\_os" to 1.r/hmj¸hwh›h|hÍh~}r0(h€]h�]h‚]hƒ]h†]uhˆM³h‰hhŠ]r1h“X,Set the environment variable "boot_os" to 1.r2…�r3}r4(hlX-Set the environment variable "boot\_os" to 1.hmj-ubaubhÊ)�r5}r6(hlXFrom u-boot promptr7hmj¸hwh›h|hÍh~}r8(h€]h�]h‚]hƒ]h†]uhˆMµh‰hhŠ]r9h“XFrom u-boot promptr:…�r;}r<(hlj7hmj5ubaubjr)�r=}r>(hlX=> setenv boot_os 1 => saveenvhmj¸hwh›h|juh~}r?(hŸh hƒ]h‚]h€]h�]h†]uhˆMÄh‰hhŠ]r@h“X=> setenv boot_os 1 => saveenvrA…�rB}rC(hlUhmj=ubaubhÊ)�rD}rE(hlX¨Set the `board boot from QSPI `__ and reset the EVM. The SPL directly boots the kernel image from QSPI.hmj¸hwh›h|hÍh~}rF(h€]h�]h‚]hƒ]h†]uhˆM¼h‰hhŠ]rG(h“XSet the rH…�rI}rJ(hlXSet the hmjDubhÓ)�rK}rL(hlXZ`board boot from QSPI `__h~}rM(UnameXboard boot from QSPIh×X?Foundational_Components_U-Boot.html#writing-to-qspi-from-u-boothƒ]h‚]h€]h�]h†]uhmjDhŠ]rNh“Xboard boot from QSPIrO…�rP}rQ(hlUhmjKubah|hÜubh“XF and reset the EVM. The SPL directly boots the kernel image from QSPI.rR…�rS}rT(hlXF and reset the EVM. The SPL directly boots the kernel image from QSPI.hmjDubeubjC)�rU}rV(hlUhmj¸hwh›h|jZh~}rW(h€]h�]h‚]hƒ]h†]uhˆMÀh‰hhŠ]rXjH)�rY}rZ(hlUjLKhmjUhwh›h|hˆh~}r[(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�r\}r](hlUhmjEhwh›h|h}h~}r^(h€]h�]h‚]hƒ]r_Uam43xx-supportr`ah†]rah5auhˆMÃh‰hhŠ]rb(hŒ)�rc}rd(hlXAM43xx supportrehmj\hwh›h|h�h~}rf(h€]h�]h‚]hƒ]h†]uhˆMÃh‰hhŠ]rgh“XAM43xx supportrh…�ri}rj(hljehmjcubaubhÊ)�rk}rl(hlXYUsing QSPI on AM43xx platforms is done as eXecute In Place and U-Boot is directly booted.rmhmj\hwh›h|hÍh~}rn(h€]h�]h‚]hƒ]h†]uhˆMÅh‰hhŠ]roh“XYUsing QSPI on AM43xx platforms is done as eXecute In Place and U-Boot is directly booted.rp…�rq}rr(hljmhmjkubaubjC)�rs}rt(hlXWriting to QSPI from U-Bootruhmj\hwh›h|jGh~}rv(hƒ]rwUwriting-to-qspi-from-u-boot-1rxah‚]h€]h�]h†]ryh auhˆNh‰hhŠ]rzh“XWriting to QSPI from U-Bootr{…�r|}r}(hljuhmjsubaubhÊ)�r~}r(hlXNote:r€hmj\hwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆMËh‰hhŠ]r‚h“XNote:rƒ…�r„}r…(hlj€hmj~ubaubj#)�r†}r‡(hlUhmj\hwh›h|j&h~}rˆ(j(X-hƒ]h‚]h€]h�]h†]uhˆMÍh‰hhŠ]r‰(j )�rŠ}r‹(hlXGFrom the U-Boot build the **u-boot.bin** file is the one to be written.hmj†hwh›h|jh~}rŒ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r�hÊ)�rŽ}r�(hlXGFrom the U-Boot build the **u-boot.bin** file is the one to be written.hmjŠhwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆMÍhŠ]r‘(h“XFrom the U-Boot build the r’…�r“}r”(hlXFrom the U-Boot build the hmjŽubj)�r•}r–(hlX**u-boot.bin**h~}r—(h€]h�]h‚]hƒ]h†]uhmjŽhŠ]r˜h“X u-boot.binr™…�rš}r›(hlUhmj•ubah|j'ubh“X file is the one to be written.rœ…�r�}rž(hlX file is the one to be written.hmjŽubeubaubj )�rŸ}r (hlX—We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists. hmj†hwh›h|jh~}r¡(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¢hÊ)�r£}r¤(hlX–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r¥hmjŸhwh›h|hÍh~}r¦(h€]h�]h‚]hƒ]h†]uhˆMÏhŠ]r§h“X–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r¨…�r©}rª(hlj¥hmj£ubaubaubeubjr)�r«}r¬(hlX¢U-Boot # mmc rescan U-Boot # fatload mmc 0 ${loadaddr} u-boot.bin U-Boot # sf probe 0 U-Boot # sf erase 0x0 0x100000 U-Boot # sf write ${loadaddr} 0x0 ${filesize}hmj\hwh›h|juh~}r­(hŸh hƒ]h‚]h€]h�]h†]uhˆMàh‰hhŠ]r®h“X¢U-Boot # mmc rescan U-Boot # fatload mmc 0 ${loadaddr} u-boot.bin U-Boot # sf probe 0 U-Boot # sf erase 0x0 0x100000 U-Boot # sf write ${loadaddr} 0x0 ${filesize}r¯…�r°}r±(hlUhmj«ubaubjC)�r²}r³(hlXBooting from QSPIr´hmj\hwh›h|jGh~}rµ(hƒ]r¶Ubooting-from-qspir·ah‚]h€]h�]h†]r¸h'auhˆNh‰hhŠ]r¹h“XBooting from QSPIrº…�r»}r¼(hlj´hmj²ubaubhÊ)�r½}r¾(hlX�The default environment does not contain a QSPI boot command. The following example uses the partition table found in the kernel.r¿hmj\hwh›h|hÍh~}rÀ(h€]h�]h‚]hƒ]h†]uhˆMÞh‰hhŠ]rÁh“X�The default environment does not contain a QSPI boot command. The following example uses the partition table found in the kernel.rÂ…�rÃ}rÄ(hlj¿hmj½ubaubjr)�rÅ}rÆ(hlXU-Boot # sf probe 0 U-Boot # sf read ${loadaddr} 0x1a0000 0x800000 U-Boot # sf read ${fdtaddr} 0x100000 0x80000 U-Boot # setenv bootargs console=${console} spi-ti-qspi.enable_qspi=1 root=/dev/mtdblock6 rootfstype=jffs2 U-Boot # bootz ${loadaddr} - ${fdtaddr}hmj\hwh›h|juh~}rÇ(hŸh hƒ]h‚]h€]h�]h†]uhˆMîh‰hhŠ]rÈh“XU-Boot # sf probe 0 U-Boot # sf read ${loadaddr} 0x1a0000 0x800000 U-Boot # sf read ${fdtaddr} 0x100000 0x80000 U-Boot # setenv bootargs console=${console} spi-ti-qspi.enable_qspi=1 root=/dev/mtdblock6 rootfstype=jffs2 U-Boot # bootz ${loadaddr} - ${fdtaddr}rÉ…�rÊ}rË(hlUhmjÅubaubjC)�rÌ}rÍ(hlUhmj\hwh›h|jZh~}rÎ(h€]h�]h‚]hƒ]h†]uhˆMéh‰hhŠ]rÏjH)�rÐ}rÑ(hlUjLKhmjÌhwh›h|hˆh~}rÒ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�rÓ}rÔ(hlUhmhshwh›h|h}h~}rÕ(h€]h�]h‚]hƒ]rÖUnorr×ah†]rØhauhˆMìh‰hhŠ]rÙ(hŒ)�rÚ}rÛ(hlXNORrÜhmjÓhwh›h|h�h~}rÝ(h€]h�]h‚]hƒ]h†]uhˆMìh‰hhŠ]rÞh“XNORrß…�rà}rá(hljÜhmjÚubaubhÃ)�râ}rã(hlUhmjÓhwh›h|hÆh~}rä(hÈX#CONFIG_part_family in ('J7_family')hƒ]h‚]h€]h�]h†]uhˆMîh‰hhŠ]råj®)�ræ}rç(hlX0Parallel NOR is not supported on J721E platform.rèhmjâhwh›h|j²h~}ré(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rêhÊ)�rë}rì(hljèhmjæhwh›h|hÍh~}rí(h€]h�]h‚]hƒ]h†]uhˆMñhŠ]rîh“X0Parallel NOR is not supported on J721E platform.rï…�rð}rñ(hljèhmjëubaubaubaubhÊ)�rò}ró(hlX!This section documents how to write files to the NOR device and use it to load and then boot the Linux Kernel using a root filesystem also found on NOR. In order for NOR to be visible to U-Boot a special build of U-Boot is required on the supported hardware. The table below lists builds that see NOR and in some cases also use theit for the environment instead of the default, which typically is NAND. Finally, for simplicity we assume the files are being loaded from an SD card. Using the network interface (if applicable) is documented above.rôhmjÓhwh›h|hÍh~}rõ(h€]h�]h‚]hƒ]h†]uhˆMóh‰hhŠ]röh“X!This section documents how to write files to the NOR device and use it to load and then boot the Linux Kernel using a root filesystem also found on NOR. In order for NOR to be visible to U-Boot a special build of U-Boot is required on the supported hardware. The table below lists builds that see NOR and in some cases also use theit for the environment instead of the default, which typically is NAND. Finally, for simplicity we assume the files are being loaded from an SD card. Using the network interface (if applicable) is documented above.r÷…�rø}rù(hljôhmjòubaubhn)�rú}rû(hlUhmjÓhwh›h|h}h~}rü(h€]h�]h‚]hƒ]rýUwriting-to-nor-from-u-bootrþah†]rÿhZauhˆMýh‰hhŠ]r(hŒ)�r}r(hlXWriting to NOR from U-Bootrhmjúhwh›h|h�h~}r(h€]h�]h‚]hƒ]h†]uhˆMýh‰hhŠ]rh“XWriting to NOR from U-Bootr…�r}r(hljhmjubaubhÊ)�r }r (hlXNote:r hmjúhwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMÿh‰hhŠ]r h“XNote:r…�r}r(hlj hmj ubaubj#)�r}r(hlUhmjúhwh›h|j&h~}r(j(X-hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r(j )�r}r(hlXHFrom the U-Boot build, the **u-boot.bin** file is the one to be written.hmjhwh›h|jh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r}r(hlXHFrom the U-Boot build, the **u-boot.bin** file is the one to be written.hmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r(h“XFrom the U-Boot build, the r…�r}r(hlXFrom the U-Boot build, the hmjubj)�r }r!(hlX**u-boot.bin**h~}r"(h€]h�]h‚]hƒ]h†]uhmjhŠ]r#h“X u-boot.binr$…�r%}r&(hlUhmj ubah|j'ubh“X file is the one to be written.r'…�r(}r)(hlX file is the one to be written.hmjubeubaubj )�r*}r+(hlX–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.hmjhwh›h|jh~}r,(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r-hÊ)�r.}r/(hlX–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r0hmj*hwh›h|hÍh~}r1(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r2h“X–We load all files from an SD card in this example but they can just as easily be loaded via network (documented above) or other interface that exists.r3…�r4}r5(hlj0hmj.ubaubaubj )�r6}r7(hlXtAt this time the NOR mtd partition map has not yet been updated to include an example location for the device tree. hmjhwh›h|jh~}r8(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r9hÊ)�r:}r;(hlXsAt this time the NOR mtd partition map has not yet been updated to include an example location for the device tree.r<hmj6hwh›h|hÍh~}r=(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r>h“XsAt this time the NOR mtd partition map has not yet been updated to include an example location for the device tree.r?…�r@}rA(hlj<hmj:ubaubaubeubj)�rB}rC(hlUhmjúhwh›h|jh~}rD(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rEj)�rF}rG(hlUh~}rH(hƒ]h‚]h€]h�]h†]UcolsKuhmjBhŠ]rI(j)�rJ}rK(hlUh~}rL(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjFhŠ]h|j"ubj)�rM}rN(hlUh~}rO(hƒ]h‚]h€]h�]h†]UcolwidthK;uhmjFhŠ]h|j"ubj/)�rP}rQ(hlUh~}rR(h€]h�]h‚]hƒ]h†]uhmjFhŠ]rSj4)�rT}rU(hlUh~}rV(h€]h�]h‚]hƒ]h†]uhmjPhŠ]rW(j9)�rX}rY(hlUh~}rZ(h€]h�]h‚]hƒ]h†]uhmjThŠ]r[hÊ)�r\}r](hlXBoardr^hmjXhwh›h|hÍh~}r_(h€]h�]h‚]hƒ]h†]uhˆM hŠ]r`h“XBoardra…�rb}rc(hlj^hmj\ubaubah|jFubj9)�rd}re(hlUh~}rf(h€]h�]h‚]hƒ]h†]uhmjThŠ]rghÊ)�rh}ri(hlX Config targetrjhmjdhwh›h|hÍh~}rk(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rlh“X Config targetrm…�rn}ro(hljjhmjhubaubah|jFubeh|jwubah|jxubjy)�rp}rq(hlUh~}rr(h€]h�]h‚]hƒ]h†]uhmjFhŠ]rsj4)�rt}ru(hlUh~}rv(h€]h�]h‚]hƒ]h†]uhmjphŠ]rw(j9)�rx}ry(hlUh~}rz(h€]h�]h‚]hƒ]h†]uhmjthŠ]r{hÊ)�r|}r}(hlX AM335x EVMr~hmjxhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM hŠ]r€h“X AM335x EVMr�…�r‚}rƒ(hlj~hmj|ubaubah|jFubj9)�r„}r…(hlUh~}r†(h€]h�]h‚]hƒ]h†]uhmjthŠ]r‡hÊ)�rˆ}r‰(hlX7am335x\_evm\_nor\_config / am335x\_evm\_norboot\_confighmj„hwh›h|hÍh~}rŠ(h€]h�]h‚]hƒ]h†]uhˆM hŠ]r‹h“X1am335x_evm_nor_config / am335x_evm_norboot_configrŒ…�r�}rŽ(hlX7am335x\_evm\_nor\_config / am335x\_evm\_norboot\_confighmjˆubaubah|jFubeh|jwubah|j¹ubeh|jºubaubjr)�r�}r�(hlX U-Boot # mmc rescan U-Boot # load mmc 0 ${loadaddr} u-boot.bin U-Boot # protect off 08000000 +4c0000 U-Boot # erase 08000000 +4c0000 U-Boot # cp.b ${loadaddr} 08000000 ${filesize} U-Boot # fatload mmc 0 ${loadaddr} zImage U-Boot # cp.b ${loadaddr} 080c0000 ${filesize}hmjúhwh›h|juh~}r‘(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r’h“X U-Boot # mmc rescan U-Boot # load mmc 0 ${loadaddr} u-boot.bin U-Boot # protect off 08000000 +4c0000 U-Boot # erase 08000000 +4c0000 U-Boot # cp.b ${loadaddr} 08000000 ${filesize} U-Boot # fatload mmc 0 ${loadaddr} zImage U-Boot # cp.b ${loadaddr} 080c0000 ${filesize}r“…�r”}r•(hlUhmj�ubaubeubhn)�r–}r—(hlUhmjÓhwh›h|h}h~}r˜(h€]h�]h‚]hƒ]r™Ubooting-from-norršah†]r›h]auhˆMh‰hhŠ]rœ(hŒ)�r�}rž(hlXBooting from NORrŸhmj–hwh›h|h�h~}r (h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r¡h“XBooting from NORr¢…�r£}r¤(hljŸhmj�ubaubhÊ)�r¥}r¦(hlX¬Within the default environment there is not a shortcut for booting. One needs to pass **root=/dev/mtdblockN** where N is the number of the rootfs partition in **bootargs**.hmj–hwh›h|hÍh~}r§(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r¨(h“XVWithin the default environment there is not a shortcut for booting. One needs to pass r©…�rª}r«(hlXVWithin the default environment there is not a shortcut for booting. One needs to pass hmj¥ubj)�r¬}r­(hlX**root=/dev/mtdblockN**h~}r®(h€]h�]h‚]hƒ]h†]uhmj¥hŠ]r¯h“Xroot=/dev/mtdblockNr°…�r±}r²(hlUhmj¬ubah|j'ubh“X2 where N is the number of the rootfs partition in r³…�r´}rµ(hlX2 where N is the number of the rootfs partition in hmj¥ubj)�r¶}r·(hlX **bootargs**h~}r¸(h€]h�]h‚]hƒ]h†]uhmj¥hŠ]r¹h“Xbootargsrº…�r»}r¼(hlUhmj¶ubah|j'ubh“X.…�r½}r¾(hlX.hmj¥ubeubjC)�r¿}rÀ(hlUhmj–hwh›h|jZh~}rÁ(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rÂjH)�rÃ}rÄ(hlUjLKhmj¿hwh›h|hˆh~}rÅ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�rÆ}rÇ(hlUhmhshwh›h|h}h~}rÈ(h€]h�]h‚]hƒ]rÉUuartrÊah†]rËhCauhˆM#h‰hhŠ]rÌ(hŒ)�rÍ}rÎ(hlXUARTrÏhmjÆhwh›h|h�h~}rÐ(h€]h�]h‚]hƒ]h†]uhˆM#h‰hhŠ]rÑh“XUARTrÒ…�rÓ}rÔ(hljÏhmjÍubaubhÊ)�rÕ}rÖ(hlX¨This section documents how to use the UART to load files to boot the board into U-Boot. After that the user is expected to know how they want to continue loading files.r×hmjÆhwh›h|hÍh~}rØ(h€]h�]h‚]hƒ]h†]uhˆM&h‰hhŠ]rÙh“X¨This section documents how to use the UART to load files to boot the board into U-Boot. After that the user is expected to know how they want to continue loading files.rÚ…�rÛ}rÜ(hlj×hmjÕubaubhn)�rÝ}rÞ(hlUhmjÆhwh›h|h}h~}rß(h€]h�]h‚]hƒ]ràU$booting-u-boot-from-the-console-uartráah†]râh`auhˆM+h‰hhŠ]rã(hŒ)�rä}rå(hlX$Booting U-Boot from the console UARTræhmjÝhwh›h|h�h~}rç(h€]h�]h‚]hƒ]h†]uhˆM+h‰hhŠ]rèh“X$Booting U-Boot from the console UARTré…�rê}rë(hljæhmjäubaubhÊ)�rì}rí(hlXúIn some cases we support loading SPL and U-Boot over the console UART. You will need to use the **spl/u-boot-spl.bin** and **u-boot.img** files to boot. As per the TRM, the file is to be loaded via the X-MODEM protocol at 115200 baud 8 stop bits no parity (same as using it for console). SPL in turn expects to be sent **u-boot.img** at the same rate but via Y-MODEM. An example session from the host PC, assuming console is on ttyUSB0 and already configured would be and the **lrzsz** package is installedhmjÝhwh›h|hÍh~}rî(h€]h�]h‚]hƒ]h†]uhˆM-h‰hhŠ]rï(h“X`In some cases we support loading SPL and U-Boot over the console UART. You will need to use the rð…�rñ}rò(hlX`In some cases we support loading SPL and U-Boot over the console UART. You will need to use the hmjìubj)�ró}rô(hlX**spl/u-boot-spl.bin**h~}rõ(h€]h�]h‚]hƒ]h†]uhmjìhŠ]röh“Xspl/u-boot-spl.binr÷…�rø}rù(hlUhmjóubah|j'ubh“X and rú…�rû}rü(hlX and hmjìubj)�rý}rþ(hlX**u-boot.img**h~}rÿ(h€]h�]h‚]hƒ]h†]uhmjìhŠ]rh“X u-boot.imgr…�r}r(hlUhmjýubah|j'ubh“X¶ files to boot. As per the TRM, the file is to be loaded via the X-MODEM protocol at 115200 baud 8 stop bits no parity (same as using it for console). SPL in turn expects to be sent r…�r}r(hlX¶ files to boot. As per the TRM, the file is to be loaded via the X-MODEM protocol at 115200 baud 8 stop bits no parity (same as using it for console). SPL in turn expects to be sent hmjìubj)�r}r(hlX**u-boot.img**h~}r (h€]h�]h‚]hƒ]h†]uhmjìhŠ]r h“X u-boot.imgr …�r }r (hlUhmjubah|j'ubh“X� at the same rate but via Y-MODEM. An example session from the host PC, assuming console is on ttyUSB0 and already configured would be and the r…�r}r(hlX� at the same rate but via Y-MODEM. An example session from the host PC, assuming console is on ttyUSB0 and already configured would be and the hmjìubj)�r}r(hlX **lrzsz**h~}r(h€]h�]h‚]hƒ]h†]uhmjìhŠ]rh“Xlrzszr…�r}r(hlUhmjubah|j'ubh“X package is installedr…�r}r(hlX package is installedhmjìubeubjr)�r}r(hlX‚$ sx -kb /path/to/u-boot-spl.bin < /dev/ttyUSB0 > /dev/ttyUSB0 $ sx -kb --ymodem /path/to/u-boot.img < /dev/ttyUSB0 > /dev/ttyUSB0hmjÝhwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆMCh‰hhŠ]rh“X‚$ sx -kb /path/to/u-boot-spl.bin < /dev/ttyUSB0 > /dev/ttyUSB0 $ sx -kb --ymodem /path/to/u-boot.img < /dev/ttyUSB0 > /dev/ttyUSB0r…�r }r!(hlUhmjubaubhÊ)�r"}r#(hlXÞIn K3 based platforms, ROM supports booting from MCU_UART0 via X-Modem protocol. The entire UART-based boot process up to U-Boot (proper) prompt goes through different stages and uses different UART peripherals as follows:r$hmjÝhwh›h|hÍh~}r%(h€]h�]h‚]hƒ]h†]uhˆM;h‰hhŠ]r&h“XÞIn K3 based platforms, ROM supports booting from MCU_UART0 via X-Modem protocol. The entire UART-based boot process up to U-Boot (proper) prompt goes through different stages and uses different UART peripherals as follows:r'…�r(}r)(hlj$hmj"ubaubj)�r*}r+(hlUhmjÝhwh›h|jh~}r,(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r-j)�r.}r/(hlUh~}r0(hƒ]h‚]h€]h�]h†]UcolsKuhmj*hŠ]r1(j)�r2}r3(hlUh~}r4(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj.hŠ]h|j"ubj)�r5}r6(hlUh~}r7(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj.hŠ]h|j"ubj)�r8}r9(hlUh~}r:(hƒ]h‚]h€]h�]h†]UcolwidthK uhmj.hŠ]h|j"ubj)�r;}r<(hlUh~}r=(hƒ]h‚]h€]h�]h†]UcolwidthK uhmj.hŠ]h|j"ubj/)�r>}r?(hlUh~}r@(h€]h�]h‚]hƒ]h†]uhmj.hŠ]rAj4)�rB}rC(hlUh~}rD(h€]h�]h‚]hƒ]h†]uhmj>hŠ]rE(j9)�rF}rG(hlUh~}rH(h€]h�]h‚]hƒ]h†]uhmjBhŠ]rIhÊ)�rJ}rK(hlXWHOrLhmjFhwh›h|hÍh~}rM(h€]h�]h‚]hƒ]h†]uhˆM@hŠ]rNh“XWHOrO…�rP}rQ(hljLhmjJubaubah|jFubj9)�rR}rS(hlUh~}rT(h€]h�]h‚]hƒ]h†]uhmjBhŠ]rUhÊ)�rV}rW(hlX Loading WHATrXhmjRhwh›h|hÍh~}rY(h€]h�]h‚]hƒ]h†]uhˆM@hŠ]rZh“X Loading WHATr[…�r\}r](hljXhmjVubaubah|jFubj9)�r^}r_(hlUh~}r`(h€]h�]h‚]hƒ]h†]uhmjBhŠ]rahÊ)�rb}rc(hlX HW Modulerdhmj^hwh›h|hÍh~}re(h€]h�]h‚]hƒ]h†]uhˆM@hŠ]rfh“X HW Modulerg…�rh}ri(hljdhmjbubaubah|jFubj9)�rj}rk(hlUh~}rl(h€]h�]h‚]hƒ]h†]uhmjBhŠ]rmhÊ)�rn}ro(hlXProtocolrphmjjhwh›h|hÍh~}rq(h€]h�]h‚]hƒ]h†]uhˆM@hŠ]rrh“XProtocolrs…�rt}ru(hljphmjnubaubah|jFubeh|jwubah|jxubjy)�rv}rw(hlUh~}rx(h€]h�]h‚]hƒ]h†]uhmj.hŠ]ry(j4)�rz}r{(hlUh~}r|(h€]h�]h‚]hƒ]h†]uhmjvhŠ]r}(j9)�r~}r(hlUh~}r€(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r�hÊ)�r‚}rƒ(hlXBoot ROMr„hmj~hwh›h|hÍh~}r…(h€]h�]h‚]hƒ]h†]uhˆMBhŠ]r†h“XBoot ROMr‡…�rˆ}r‰(hlj„hmj‚ubaubah|jFubj9)�rŠ}r‹(hlUh~}rŒ(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r�hÊ)�rŽ}r�(hlX tiboot3.binr�hmjŠhwh›h|hÍh~}r‘(h€]h�]h‚]hƒ]h†]uhˆMBhŠ]r’h“X tiboot3.binr“…�r”}r•(hlj�hmjŽubaubah|jFubj9)�r–}r—(hlUh~}r˜(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r™hÊ)�rš}r›(hlX MCU_UART0rœhmj–hwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆMBhŠ]ržh“X MCU_UART0rŸ…�r }r¡(hljœhmjšubaubah|jFubj9)�r¢}r£(hlUh~}r¤(h€]h�]h‚]hƒ]h†]uhmjzhŠ]r¥hÊ)�r¦}r§(hlXX-Modemr¨hmj¢hwh›h|hÍh~}r©(h€]h�]h‚]hƒ]h†]uhˆMBhŠ]rªh“XX-Modemr«…�r¬}r­(hlj¨hmj¦ubaubah|jFubeh|jwubj4)�r®}r¯(hlUh~}r°(h€]h�]h‚]hƒ]h†]uhmjvhŠ]r±(j9)�r²}r³(hlUh~}r´(h€]h�]h‚]hƒ]h†]uhmj®hŠ]rµhÊ)�r¶}r·(hlXR5 SPLr¸hmj²hwh›h|hÍh~}r¹(h€]h�]h‚]hƒ]h†]uhˆMDhŠ]rºh“XR5 SPLr»…�r¼}r½(hlj¸hmj¶ubaubah|jFubj9)�r¾}r¿(hlUh~}rÀ(h€]h�]h‚]hƒ]h†]uhmj®hŠ]rÁhÊ)�rÂ}rÃ(hlX sysfw.itbrÄhmj¾hwh›h|hÍh~}rÅ(h€]h�]h‚]hƒ]h†]uhˆMDhŠ]rÆh“X sysfw.itbrÇ…�rÈ}rÉ(hljÄhmjÂubaubah|jFubj9)�rÊ}rË(hlUh~}rÌ(h€]h�]h‚]hƒ]h†]uhmj®hŠ]rÍhÊ)�rÎ}rÏ(hlX MCU_UART0rÐhmjÊhwh›h|hÍh~}rÑ(h€]h�]h‚]hƒ]h†]uhˆMDhŠ]rÒh“X MCU_UART0rÓ…�rÔ}rÕ(hljÐhmjÎubaubah|jFubj9)�rÖ}r×(hlUh~}rØ(h€]h�]h‚]hƒ]h†]uhmj®hŠ]rÙhÊ)�rÚ}rÛ(hlXY-ModemrÜhmjÖhwh›h|hÍh~}rÝ(h€]h�]h‚]hƒ]h†]uhˆMDhŠ]rÞh“XY-Modemrß…�rà}rá(hljÜhmjÚubaubah|jFubeh|jwubj4)�râ}rã(hlUh~}rä(h€]h�]h‚]hƒ]h†]uhmjvhŠ]rå(j9)�ræ}rç(hlUh~}rè(h€]h�]h‚]hƒ]h†]uhmjâhŠ]réhÊ)�rê}rë(hlXR5 SPLrìhmjæhwh›h|hÍh~}rí(h€]h�]h‚]hƒ]h†]uhˆMFhŠ]rîh“XR5 SPLrï…�rð}rñ(hljìhmjêubaubah|jFubj9)�rò}ró(hlUh~}rô(h€]h�]h‚]hƒ]h†]uhmjâhŠ]rõhÊ)�rö}r÷(hlX tispl.binrøhmjòhwh›h|hÍh~}rù(h€]h�]h‚]hƒ]h†]uhˆMFhŠ]rúh“X tispl.binrû…�rü}rý(hljøhmjöubaubah|jFubj9)�rþ}rÿ(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjâhŠ]rhÊ)�r}r(hlX MAIN_UART0rhmjþhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMFhŠ]rh“X MAIN_UART0r…�r}r (hljhmjubaubah|jFubj9)�r }r (hlUh~}r (h€]h�]h‚]hƒ]h†]uhmjâhŠ]r hÊ)�r}r(hlXY-Modemrhmj hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMFhŠ]rh“XY-Modemr…�r}r(hljhmjubaubah|jFubeh|jwubj4)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjvhŠ]r(j9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjhŠ]rhÊ)�r}r(hlX A53/A72 SPLr hmjhwh›h|hÍh~}r!(h€]h�]h‚]hƒ]h†]uhˆMHhŠ]r"h“X A53/A72 SPLr#…�r$}r%(hlj hmjubaubah|jFubj9)�r&}r'(hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjhŠ]r)hÊ)�r*}r+(hlX u-boot.imgr,hmj&hwh›h|hÍh~}r-(h€]h�]h‚]hƒ]h†]uhˆMHhŠ]r.h“X u-boot.imgr/…�r0}r1(hlj,hmj*ubaubah|jFubj9)�r2}r3(hlUh~}r4(h€]h�]h‚]hƒ]h†]uhmjhŠ]r5hÊ)�r6}r7(hlX MAIN_UART0r8hmj2hwh›h|hÍh~}r9(h€]h�]h‚]hƒ]h†]uhˆMHhŠ]r:h“X MAIN_UART0r;…�r<}r=(hlj8hmj6ubaubah|jFubj9)�r>}r?(hlUh~}r@(h€]h�]h‚]hƒ]h†]uhmjhŠ]rAhÊ)�rB}rC(hlXY-ModemrDhmj>hwh›h|hÍh~}rE(h€]h�]h‚]hƒ]h†]uhˆMHhŠ]rFh“XY-ModemrG…�rH}rI(hljDhmjBubaubah|jFubeh|jwubeh|j¹ubeh|jºubaubhÊ)�rJ}rK(hlX^UART_BOOT_MAIN_UART and UART_BOOT_MCU_UART should be set to serial ports such as /dev/ttyUSBx.rLhmjÝhwh›h|hÍh~}rM(h€]h�]h‚]hƒ]h†]uhˆMKh‰hhŠ]rNh“X^UART_BOOT_MAIN_UART and UART_BOOT_MCU_UART should be set to serial ports such as /dev/ttyUSBx.rO…�rP}rQ(hljLhmjJubaubjr)�rR}rS(hlX1$ sb --xmodem $OUT_R5/tiboot3.bin > $UART_BOOT_MCU_UART < $UART_BOOT_MCU_UART $ sb --ymodem $SYSFW_ITB > $UART_BOOT_MCU_UART < $UART_BOOT_MCU_UART $ sb --ymodem $OUT_AXX/tispl.bin > $UART_BOOT_MAIN_UART < $UART_BOOT_MAIN_UART $ sb --xmodem $OUT_AXX/u-boot.img > $UART_BOOT_MAIN_UART < $UART_BOOT_MAIN_UARThmjÝhwh›h|juh~}rT(hŸh hƒ]h‚]h€]h�]h†]uhˆMZh‰hhŠ]rUh“X1$ sb --xmodem $OUT_R5/tiboot3.bin > $UART_BOOT_MCU_UART < $UART_BOOT_MCU_UART $ sb --ymodem $SYSFW_ITB > $UART_BOOT_MCU_UART < $UART_BOOT_MCU_UART $ sb --ymodem $OUT_AXX/tispl.bin > $UART_BOOT_MAIN_UART < $UART_BOOT_MAIN_UART $ sb --xmodem $OUT_AXX/u-boot.img > $UART_BOOT_MAIN_UART < $UART_BOOT_MAIN_UARTrV…�rW}rX(hlUhmjRubaubeubeubhn)�rY}rZ(hlUhmhshwh›h|h}h~}r[(h€]h�]h‚]hƒ]r\Usatar]ah†]r^hQauhˆMUh‰hhŠ]r_(hŒ)�r`}ra(hlXSATArbhmjYhwh›h|h�h~}rc(h€]h�]h‚]hƒ]h†]uhˆMUh‰hhŠ]rdh“XSATAre…�rf}rg(hljbhmj`ubaubj®)�rh}ri(hlX(SATA is not supported on J721E platform.rjhmjYhwh›h|j²h~}rk(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rlhÊ)�rm}rn(hljjhmjhhwh›h|hÍh~}ro(h€]h�]h‚]hƒ]h†]uhˆMXhŠ]rph“X(SATA is not supported on J721E platform.rq…�rr}rs(hljjhmjmubaubaubhÊ)�rt}ru(hlX9SATA and eSATA devices show up as SCSI devices in U-boot.rvhmjYhwh›h|hÍh~}rw(h€]h�]h‚]hƒ]h†]uhˆMZh‰hhŠ]rxh“X9SATA and eSATA devices show up as SCSI devices in U-boot.ry…�rz}r{(hljvhmjtubaubhn)�r|}r}(hlUhmjYhwh›h|h}h~}r~(h€]h�]h‚]hƒ]rUviewing-sata-devicesr€ah†]r�hauhˆM]h‰hhŠ]r‚(hŒ)�rƒ}r„(hlXViewing SATA Devicesr…hmj|hwh›h|h�h~}r†(h€]h�]h‚]hƒ]h†]uhˆM]h‰hhŠ]r‡h“XViewing SATA Devicesrˆ…�r‰}rŠ(hlj…hmjƒubaubhÊ)�r‹}rŒ(hlXNTo view all SCSI devices that U-boot sees the command "scsi info" can be used.r�hmj|hwh›h|hÍh~}rŽ(h€]h�]h‚]hƒ]h†]uhˆM^h‰hhŠ]r�h“XNTo view all SCSI devices that U-boot sees the command "scsi info" can be used.r�…�r‘}r’(hlj�hmj‹ubaubhÊ)�r“}r”(hlXOOutput of this command when ran on AM57x General Purpose EVM can be seen below.r•hmj|hwh›h|hÍh~}r–(h€]h�]h‚]hƒ]h†]uhˆMah‰hhŠ]r—h“XOOutput of this command when ran on AM57x General Purpose EVM can be seen below.r˜…�r™}rš(hlj•hmj“ubaubjr)�r›}rœ(hlX scsi part Device 0: (0:0) Vendor: ATA Prod.: PLEXTOR PX-64M6M Rev: 1.08 Type: Hard Disk Capacity: 61057.3 MB = 59.6 GB (125045424 x 512)hmj|hwh›h|juh~}r�(hŸh hƒ]h‚]h€]h�]h†]uhˆMqh‰hhŠ]ržh“X scsi part Device 0: (0:0) Vendor: ATA Prod.: PLEXTOR PX-64M6M Rev: 1.08 Type: Hard Disk Capacity: 61057.3 MB = 59.6 GB (125045424 x 512)rŸ…�r }r¡(hlUhmj›ubaubhÊ)�r¢}r£(hlX¡Device 0 represents the instance of the scsi device. Therefore, in later commands when a "" parameter is seen replace it with the appropriate device number.r¤hmj|hwh›h|hÍh~}r¥(h€]h�]h‚]hƒ]h†]uhˆMkh‰hhŠ]r¦h“X¡Device 0 represents the instance of the scsi device. Therefore, in later commands when a "" parameter is seen replace it with the appropriate device number.r§…�r¨}r©(hlj¤hmj¢ubaubeubhn)�rª}r«(hlUhmjYhwh›h|h}h~}r¬(h€]h�]h‚]hƒ]r­Uviewing-partitionsr®ah†]r¯hNauhˆMph‰hhŠ]r°(hŒ)�r±}r²(hlXViewing Partitionsr³hmjªhwh›h|h�h~}r´(h€]h�]h‚]hƒ]h†]uhˆMph‰hhŠ]rµh“XViewing Partitionsr¶…�r·}r¸(hlj³hmj±ubaubhÊ)�r¹}rº(hlX^To view all the partitions found on the SATA device the command "scsi part " can be used.r»hmjªhwh›h|hÍh~}r¼(h€]h�]h‚]hƒ]h†]uhˆMqh‰hhŠ]r½h“X^To view all the partitions found on the SATA device the command "scsi part " can be used.r¾…�r¿}rÀ(hlj»hmj¹ubaubhÊ)�rÁ}rÂ(hlXOOutput of this command when ran on AM57x General Purpose EVM can be seen below.rÃhmjªhwh›h|hÍh~}rÄ(h€]h�]h‚]hƒ]h†]uhˆMth‰hhŠ]rÅh“XOOutput of this command when ran on AM57x General Purpose EVM can be seen below.rÆ…�rÇ}rÈ(hljÃhmjÁubaubjr)�rÉ}rÊ(hlX-Partition Map for SCSI device 0 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type 1 2048 161793 6cc50771-01 0c Boot 2 165888 33552385 6cc50771-02 83 3 33720320 91325104 6cc50771-03 83hmjªhwh›h|juh~}rË(hŸh hƒ]h‚]h€]h�]h†]uhˆM„h‰hhŠ]rÌh“X-Partition Map for SCSI device 0 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type 1 2048 161793 6cc50771-01 0c Boot 2 165888 33552385 6cc50771-02 83 3 33720320 91325104 6cc50771-03 83rÍ…�rÎ}rÏ(hlUhmjÉubaubhÊ)�rÐ}rÑ(hlX"All entries above represent different partitions that exist on the particular scsi device. To reference a particular partition a user will reference it the part number shown above. In commands shown below should be replaced with the appropriate partition number seen from this table.rÒhmjªhwh›h|hÍh~}rÓ(h€]h�]h‚]hƒ]h†]uhˆM€h‰hhŠ]rÔh“X"All entries above represent different partitions that exist on the particular scsi device. To reference a particular partition a user will reference it the part number shown above. In commands shown below should be replaced with the appropriate partition number seen from this table.rÕ…�rÖ}r×(hljÒhmjÐubaubeubhn)�rØ}rÙ(hlUhmjYhwh›h|h}h~}rÚ(h€]h�]h‚]hƒ]rÛU%identifying-partition-filesystem-typerÜah†]rÝh"auhˆM‡h‰hhŠ]rÞ(hŒ)�rß}rà(hlX%Identifying Partition Filesystem TyperáhmjØhwh›h|h�h~}râ(h€]h�]h‚]hƒ]h†]uhˆM‡h‰hhŠ]rãh“X%Identifying Partition Filesystem Typerä…�rå}ræ(hljáhmjßubaubhÊ)�rç}rè(hlXåAs shown above the "scsi part " command can be used to view all the partitions available on the particular scsi device. However, the proper commands to use depend on the filesystem type each partition have been formatted to.réhmjØhwh›h|hÍh~}rê(h€]h�]h‚]hƒ]h†]uhˆM‰h‰hhŠ]rëh“XåAs shown above the "scsi part " command can be used to view all the partitions available on the particular scsi device. However, the proper commands to use depend on the filesystem type each partition have been formatted to.rì…�rí}rî(hljéhmjçubaubhÊ)�rï}rð(hlXIn the "scsi part " command the partition type can be found under the type column. The values under the Type column are referred to as partition id. Depending on the partition id will dedicate which commands to use to read and write partition. Partition id of "0c" refers to a FAT32 partition. Partition id of "83" refers to a native Linux file system which ext2,ext3 and ext4 fall under. Go `here `__ to find a complete list of partition ids.hmjØhwh›h|hÍh~}rñ(h€]h�]h‚]hƒ]h†]uhˆMŽh‰hhŠ]rò(h“X�In the "scsi part " command the partition type can be found under the type column. The values under the Type column are referred to as partition id. Depending on the partition id will dedicate which commands to use to read and write partition. Partition id of "0c" refers to a FAT32 partition. Partition id of "83" refers to a native Linux file system which ext2,ext3 and ext4 fall under. Go ró…�rô}rõ(hlX�In the "scsi part " command the partition type can be found under the type column. The values under the Type column are referred to as partition id. Depending on the partition id will dedicate which commands to use to read and write partition. Partition id of "0c" refers to a FAT32 partition. Partition id of "83" refers to a native Linux file system which ext2,ext3 and ext4 fall under. Go hmjïubhÓ)�rö}r÷(hlXM`here `__h~}rø(UnameXhereh×XBhttps://en.wikipedia.org/wiki/Partition_type#List_of_partition_IDshƒ]h‚]h€]h�]h†]uhmjïhŠ]rùh“Xhererú…�rû}rü(hlUhmjöubah|hÜubh“X* to find a complete list of partition ids.rý…�rþ}rÿ(hlX* to find a complete list of partition ids.hmjïubeubjC)�r}r(hlUhmjØhwh›h|jZh~}r(h€]h�]h‚]hƒ]h†]uhˆM—h‰hhŠ]rjH)�r}r(hlUjLKhmjhwh›h|hˆh~}r(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhn)�r}r(hlUhmjYhwh›h|h}h~}r (h€]h�]h‚]hƒ]r U(viewing-reading-and-writing-to-partitionr ah†]r hauhˆMšh‰hhŠ]r (hŒ)�r}r(hlX)Viewing, Reading and Writing to Partitionrhmjhwh›h|h�h~}r(h€]h�]h‚]hƒ]h†]uhˆMšh‰hhŠ]rh“X)Viewing, Reading and Writing to Partitionr…�r}r(hljhmjubaubhÊ)�r}r(hlX¸Depending on the filesystem type of the partition will depend on the exact commands to use to read and write to the partition. The two most common partitions are FAT32, EXT2 and EXT4. Luckily the commands to view, read and write to the partition all look the same. Viewing partition uses ls, reading files is load and writing files is write. Replace with fat, ext2 and ext4 depending on the filesystem type.rhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM›h‰hhŠ]rh“X¸Depending on the filesystem type of the partition will depend on the exact commands to use to read and write to the partition. The two most common partitions are FAT32, EXT2 and EXT4. Luckily the commands to view, read and write to the partition all look the same. Viewing partition uses ls, reading files is load and writing files is write. Replace with fat, ext2 and ext4 depending on the filesystem type.r…�r}r(hljhmjubaubeubhn)�r}r(hlUhmjYhwh›h|h}h~}r (h€]h�]h‚]hƒ]r!Uview-partition-contentsr"ah†]r#hauhˆM¤h‰hhŠ]r$(hŒ)�r%}r&(hlXView Partition Contentsr'hmjhwh›h|h�h~}r((h€]h�]h‚]hƒ]h†]uhˆM¤h‰hhŠ]r)h“XView Partition Contentsr*…�r+}r,(hlj'hmj%ubaubhÊ)�r-}r.(hlX[To view the contents of a FAT32 partition the user would use "fatls scsi :"r/hmjhwh›h|hÍh~}r0(h€]h�]h‚]hƒ]h†]uhˆM¦h‰hhŠ]r1h“X[To view the contents of a FAT32 partition the user would use "fatls scsi :"r2…�r3}r4(hlj/hmj-ubaubhÊ)�r5}r6(hlXZBelow command list the contents of SCSI device 0 partition 1 on AM57x General Purpose EVM:r7hmjhwh›h|hÍh~}r8(h€]h�]h‚]hƒ]h†]uhˆM©h‰hhŠ]r9h“XZBelow command list the contents of SCSI device 0 partition 1 on AM57x General Purpose EVM:r:…�r;}r<(hlj7hmj5ubaubjr)�r=}r>(hlX6=> fatls scsi 0:1 110578 test 1 file(s), 0 dir(s)hmjhwh›h|juh~}r?(hŸh hƒ]h‚]h€]h�]h†]uhˆM¹h‰hhŠ]r@h“X6=> fatls scsi 0:1 110578 test 1 file(s), 0 dir(s)rA…�rB}rC(hlUhmj=ubaubjC)�rD}rE(hlXWrite File to PartitionrFhmjhwh›h|jGh~}rG(hƒ]rHUwrite-file-to-partitionrIah‚]h€]h�]h†]rJhVauhˆNh‰hhŠ]rKh“XWrite File to PartitionrL…�rM}rN(hljFhmjDubaubhÊ)�rO}rP(hlX"To write a file on a EXT4 partition the user must have first read the file to be written into memory and then also know the size of the file. Luckily U-boot automatically sets the environment variable "filesize" to the filesize of a file that was loaded into memory via U-boot load command.rQhmjhwh›h|hÍh~}rR(h€]h�]h‚]hƒ]h†]uhˆMµh‰hhŠ]rSh“X"To write a file on a EXT4 partition the user must have first read the file to be written into memory and then also know the size of the file. Luckily U-boot automatically sets the environment variable "filesize" to the filesize of a file that was loaded into memory via U-boot load command.rT…�rU}rV(hljQhmjOubaubhÊ)�rW}rX(hlX™To write to a ext4 partition the user would execute the below command: ext4write scsi : rYhmjhwh›h|hÍh~}rZ(h€]h�]h‚]hƒ]h†]uhˆM»h‰hhŠ]r[h“X™To write to a ext4 partition the user would execute the below command: ext4write scsi : r\…�r]}r^(hljYhmjWubaubhÊ)�r_}r`(hlX×In the above command refers to the address in memory the file has already been loaded into. Absolute filename path must start with / to indicate the root. Filesize is the amount in bytes to be written.rahmjhwh›h|hÍh~}rb(h€]h�]h‚]hƒ]h†]uhˆM¿h‰hhŠ]rch“X×In the above command refers to the address in memory the file has already been loaded into. Absolute filename path must start with / to indicate the root. Filesize is the amount in bytes to be written.rd…�re}rf(hljahmj_ubaubhÊ)�rg}rh(hlXdBelow is an example of writing the file "tester" previously loaded into memory onto a EXT4 partitionrihmjhwh›h|hÍh~}rj(h€]h�]h‚]hƒ]h†]uhˆMÄh‰hhŠ]rkh“XdBelow is an example of writing the file "tester" previously loaded into memory onto a EXT4 partitionrl…�rm}rn(hljihmjgubaubjr)�ro}rp(hlX’=> ext4write scsi 0:3 ${loadaddr} /tester ${filesize} File System is consistent update journal finished 110578 bytes written in 2650 ms (40 KiB/s)hmjhwh›h|juh~}rq(hŸh hƒ]h‚]h€]h�]h†]uhˆMÔh‰hhŠ]rrh“X’=> ext4write scsi 0:3 ${loadaddr} /tester ${filesize} File System is consistent update journal finished 110578 bytes written in 2650 ms (40 KiB/s)rs…�rt}ru(hlUhmjoubaubjC)�rv}rw(hlUhmjhwh›h|jZh~}rx(h€]h�]h‚]hƒ]h†]uhˆMÎh‰hhŠ]ryjH)�rz}r{(hlUjLKhmjvhwh›h|hˆh~}r|(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�r}}r~(hlUhmhshwh›h|h}h~}r(h€]h�]h‚]hƒ]r€Uufsr�ah†]r‚h+auhˆMÑh‰hhŠ]rƒ(hŒ)�r„}r…(hlXUFSr†hmj}hwh›h|h�h~}r‡(h€]h�]h‚]hƒ]h†]uhˆMÑh‰hhŠ]rˆh“XUFSr‰…�rŠ}r‹(hlj†hmj„ubaubhÊ)�rŒ}r�(hlXÐUniversal Flash Subsystem (UFS) devices show up as scsi devices similar to SATA in the `previous section `__. One additional command to initialize all ufs devices is:hmj}hwh›h|hÍh~}rŽ(h€]h�]h‚]hƒ]h†]uhˆMÓh‰hhŠ]r�(h“XWUniversal Flash Subsystem (UFS) devices show up as scsi devices similar to SATA in the r�…�r‘}r’(hlXWUniversal Flash Subsystem (UFS) devices show up as scsi devices similar to SATA in the hmjŒubhÓ)�r“}r”(hlX?`previous section `__h~}r•(UnameXprevious sectionh×X(Foundational_Components_U-Boot.html#satahƒ]h‚]h€]h�]h†]uhmjŒhŠ]r–h“Xprevious sectionr—…�r˜}r™(hlUhmj“ubah|hÜubh“X:. One additional command to initialize all ufs devices is:rš…�r›}rœ(hlX:. One additional command to initialize all ufs devices is:hmjŒubeubcdocutils.nodes definition_list r�)�rž}rŸ(hlUhmj}hwh›h|Udefinition_listr h~}r¡(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¢cdocutils.nodes definition_list_item r£)�r¤}r¥(hlXr:: => ufs init Device at ufs@4e84000 up at:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2 hmjžhwh›h|Udefinition_list_itemr¦h~}r§(h€]h�]h‚]hƒ]h†]uhˆMÙhŠ]r¨(cdocutils.nodes term r©)�rª}r«(hlX::r¬hmj¤hwh›h|Utermr­h~}r®(h€]h�]h‚]hƒ]h†]uhˆMÙhŠ]r¯h“X::r°…�r±}r²(hlj¬hmjªubaubcdocutils.nodes definition r³)�r´}rµ(hlUh~}r¶(h€]h�]h‚]hƒ]h†]uhmj¤hŠ]r·hÊ)�r¸}r¹(hlXn=> ufs init Device at ufs@4e84000 up at:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2hmj´hwh›h|hÍh~}rº(h€]h�]h‚]hƒ]h†]uhˆMØhŠ]r»(h“X=> ufs init Device at r¼…�r½}r¾(hlX=> ufs init Device at hmj¸ubhÓ)�r¿}rÀ(hlX ufs@4e84000h~}rÁ(UrefuriXmailto:ufs@4e84000hƒ]h‚]h€]h�]h†]uhmj¸hŠ]rÂh“X ufs@4e84000rÃ…�rÄ}rÅ(hlUhmj¿ubah|hÜubh“XM up at:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2rÆ…�rÇ}rÈ(hlXM up at:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2hmj¸ubeubah|U definitionrÉubeubaubjC)�rÊ}rË(hlUhmj}hwh›h|jZh~}rÌ(h€]h�]h‚]hƒ]h†]uhˆMÛh‰hhŠ]rÍjH)�rÎ}rÏ(hlUjLKhmjÊhwh›h|hˆh~}rÐ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubhÊ)�rÑ}rÒ(hlXBThen we can go ahead with 'scsi scan' to see the attached devices:rÓhmj}hwh›h|hÍh~}rÔ(h€]h�]h‚]hƒ]h†]uhˆMÝh‰hhŠ]rÕh“XBThen we can go ahead with 'scsi scan' to see the attached devices:rÖ…�r×}rØ(hljÓhmjÑubaubjr)�rÙ}rÚ(hlXQ => scsi scan scanning bus for devices... Device 0: (0:0) Vendor: TOSHIBA Prod.: THGAF8G8T23BAILB Rev: 0300 Type: Hard Disk Capacity: 31.9 MB = 0.0 GB (8191 x 4096) Device 0: (0:1) Vendor: TOSHIBA Prod.: THGAF8G8T23BAILB Rev: 0300 Type: Hard Disk Capacity: 30499.9 MB = 29.7 GB (7807999 x 4096)hmj}hwh›h|juh~}rÛ(hŸh hƒ]h‚]h€]h�]h†]uhˆMìh‰hhŠ]rÜh“XQ => scsi scan scanning bus for devices... Device 0: (0:0) Vendor: TOSHIBA Prod.: THGAF8G8T23BAILB Rev: 0300 Type: Hard Disk Capacity: 31.9 MB = 0.0 GB (8191 x 4096) Device 0: (0:1) Vendor: TOSHIBA Prod.: THGAF8G8T23BAILB Rev: 0300 Type: Hard Disk Capacity: 30499.9 MB = 29.7 GB (7807999 x 4096)rÝ…�rÞ}rß(hlUhmjÙubaubjC)�rà}rá(hlUhmj}hwh›h|jZh~}râ(h€]h�]h‚]hƒ]h†]uhˆMêh‰hhŠ]rãjH)�rä}rå(hlUjLKhmjàhwh›h|hˆh~}ræ(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubhÊ)�rç}rè(hlX„All the remaining scsi commands detailed in the `previous section `__ are also applicable.hmj}hwh›h|hÍh~}ré(h€]h�]h‚]hƒ]h†]uhˆMìh‰hhŠ]rê(h“X0All the remaining scsi commands detailed in the rë…�rì}rí(hlX0All the remaining scsi commands detailed in the hmjçubhÓ)�rî}rï(hlX?`previous section `__h~}rð(UnameXprevious sectionh×X(Foundational_Components_U-Boot.html#satahƒ]h‚]h€]h�]h†]uhmjçhŠ]rñh“Xprevious sectionrò…�ró}rô(hlUhmjîubah|hÜubh“X are also applicable.rõ…�rö}r÷(hlX are also applicable.hmjçubeubhÊ)�rø}rù(hlXjFor more information about UFS see `Kernel UFS Guide `__.hmj}hwh›h|hÍh~}rú(h€]h�]h‚]hƒ]h†]uhˆMðh‰hhŠ]rû(h“X#For more information about UFS see rü…�rý}rþ(hlX#For more information about UFS see hmjøubhÓ)�rÿ}r(hlXF`Kernel UFS Guide `__h~}r(UnameXKernel UFS Guideh×X/Foundational_Components_Kernel_Drivers.html#ufshƒ]h‚]h€]h�]h†]uhmjøhŠ]rh“XKernel UFS Guider…�r}r(hlUhmjÿubah|hÜubh“X.…�r}r(hlX.hmjøubeubeubhn)�r}r (hlUhmhshwh›h|h}h~}r (h€]h�]h‚]hƒ]r Uddr3-eccr ah†]r hDauhˆMôh‰hhŠ]r(hŒ)�r}r(hlXDDR3 ECCrhmjhwh›h|h�h~}r(h€]h�]h‚]hƒ]h†]uhˆMôh‰hhŠ]rh“XDDR3 ECCr…�r}r(hljhmjubaubj®)�r}r(hlXDDDR3 ECC feature described below is enabled for Keystone-II devices.rhmjhwh›h|j²h~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rhÊ)�r}r(hljhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM÷hŠ]rh“XDDDR3 ECC feature described below is enabled for Keystone-II devices.r …�r!}r"(hljhmjubaubaubhn)�r#}r$(hlUhmjhwh›h|h}h~}r%(h€]h�]h‚]hƒ]r&Uddr3-ecc-in-keystone-iir'ah†]r(hPauhˆMúh‰hhŠ]r)(hŒ)�r*}r+(hlXDDR3 ECC in Keystone-IIr,hmj#hwh›h|h�h~}r-(h€]h�]h‚]hƒ]h†]uhˆMúh‰hhŠ]r.h“XDDR3 ECC in Keystone-IIr/…�r0}r1(hlj,hmj*ubaubhÊ)�r2}r3(hlXtSome of the TI SoC devices have DDR ECC enabled. Keystone-II devices (K2H/K2E/K2G) enable the DDR3 error detection and correction feature. The DDR3 controller supports ECC on the data written or read from the SDRAM and is enabled by programming the ECC Control register. 8-bit ECC is calculated over 64-bit data quanta for K2H and K2E, but 4-bit ECC over 32-bit data for K2G. The ECC is calculated for all accesses that are within the address ranges protected by ECC. 1-bit error is correctable by ECC and 2-bit error is not correctable and will be treated as unrecoverable error by software and trigger the reset of the device.r4hmj#hwh›h|hÍh~}r5(h€]h�]h‚]hƒ]h†]uhˆMüh‰hhŠ]r6h“XtSome of the TI SoC devices have DDR ECC enabled. Keystone-II devices (K2H/K2E/K2G) enable the DDR3 error detection and correction feature. The DDR3 controller supports ECC on the data written or read from the SDRAM and is enabled by programming the ECC Control register. 8-bit ECC is calculated over 64-bit data quanta for K2H and K2E, but 4-bit ECC over 32-bit data for K2G. The ECC is calculated for all accesses that are within the address ranges protected by ECC. 1-bit error is correctable by ECC and 2-bit error is not correctable and will be treated as unrecoverable error by software and trigger the reset of the device.r7…�r8}r9(hlj4hmj2ubaubhn)�r:}r;(hlUhmj#hwh›h|h}h~}r<(h€]h�]h‚]hƒ]r=Uddr3-ecc-handlingr>ah†]r?hXauhˆM h‰hhŠ]r@(hŒ)�rA}rB(hlXDDR3 ECC HandlingrChmj:hwh›h|h�h~}rD(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rEh“XDDR3 ECC HandlingrF…�rG}rH(hljChmjAubaubhÊ)�rI}rJ(hlXêKeystone-II U-boot checks if the DDR3 controller supports ECC RMW or not. If ECC RMW is not supported (in K2H PG1.x devices), U-boot will disable the ECC by default, otherwise it always enables ECC (in K2H PG2.0, K2E, and K2G devices)rKhmj:hwh›h|hÍh~}rL(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rMh“XêKeystone-II U-boot checks if the DDR3 controller supports ECC RMW or not. If ECC RMW is not supported (in K2H PG1.x devices), U-boot will disable the ECC by default, otherwise it always enables ECC (in K2H PG2.0, K2E, and K2G devices)rN…�rO}rP(hljKhmjIubaubhÊ)�rQ}rR(hlX²During the ECC initialization, U-boot fills the entire memory (up to 8GB) to zeros using an EDMA channel after ECC is enabled. For K2H device, U-boot configures the chip level interrupt controller to route the DDR3 ECC error interrupt to ARM interrupt controller. For K2E and K2G devices, since DDR3 ECC error interrupt is directly routed to ARM interrupt controller, there is no need to configure the chip level interrupt controller.rShmj:hwh›h|hÍh~}rT(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rUh“X²During the ECC initialization, U-boot fills the entire memory (up to 8GB) to zeros using an EDMA channel after ECC is enabled. For K2H device, U-boot configures the chip level interrupt controller to route the DDR3 ECC error interrupt to ARM interrupt controller. For K2E and K2G devices, since DDR3 ECC error interrupt is directly routed to ARM interrupt controller, there is no need to configure the chip level interrupt controller.rV…�rW}rX(hljShmjQubaubhÊ)�rY}rZ(hlX�A DDR3 command is added to simulate the ECC error by generating bit errors in DDR data at certain address. The command format is:r[hmj:hwh›h|hÍh~}r\(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]r]h“X�A DDR3 command is added to simulate the ECC error by generating bit errors in DDR data at certain address. The command format is:r^…�r_}r`(hlj[hmjYubaubjr)�ra}rb(hlX*ddr ecc_err hmj:hwh›h|juh~}rc(hŸh hƒ]h‚]h€]h�]h†]uhˆM h‰hhŠ]rdh“X*ddr ecc_err re…�rf}rg(hlUhmjaubaubhÊ)�rh}ri(hlXZThe command will read a 32-bit data from , and write (data ^ bit_err) back to rjhmj:hwh›h|hÍh~}rk(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rlh“XZThe command will read a 32-bit data from , and write (data ^ bit_err) back to rm…�rn}ro(hljjhmjhubaubjr)�rp}rq(hlXèE.g.: ddr ecc_err 0x90000000 0x1 (this will genereate a 1-bit error on bit 0 of the data in ddr address 0x9000_0000) ddr ecc_err 0xa0000000 0x1001 (this will genereate 2-bit error on bit 0 & 3 of the data in ddr address 0xa000_0000)hmj:hwh›h|juh~}rr(hŸh hƒ]h‚]h€]h�]h†]uhˆM& h‰hhŠ]rsh“XèE.g.: ddr ecc_err 0x90000000 0x1 (this will genereate a 1-bit error on bit 0 of the data in ddr address 0x9000_0000) ddr ecc_err 0xa0000000 0x1001 (this will genereate 2-bit error on bit 0 & 3 of the data in ddr address 0xa000_0000)rt…�ru}rv(hlUhmjpubaubhÊ)�rw}rx(hlX(A new environment variable "ecc_test" is also introduced to test ECC. By default, ecc_test = 0, and any detection of 2-bit error will reset the device. If ecc_test = 1, U-boot will bypass the error and continues to boot Linux kernel so that Linux kernel can handle the error in interrupt service.ryhmj:hwh›h|hÍh~}rz(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]r{h“X(A new environment variable "ecc_test" is also introduced to test ECC. By default, ecc_test = 0, and any detection of 2-bit error will reset the device. If ecc_test = 1, U-boot will bypass the error and continues to boot Linux kernel so that Linux kernel can handle the error in interrupt service.r|…�r}}r~(hljyhmjwubaubj®)�r}r€(hlXÒ**DDR3 ECC Handling in Keystone-II Linux kernel** Linux kernel requests an IRQ handler for DDR3 ECC error interrupt, the handler checks the DDR3 controller interrupt status register, if the error is 2-bit error, Linux kernel will reboot the device. User can also use a user mode command to read the DDR3 ECC registers (e.g. 1-bit error count register, etc.), the DDR3 controller register and interrupt mapping are defined in the sysctrl node of device tree binding:hmj:hwh›h|j²h~}r�(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r‚(hÊ)�rƒ}r„(hlX1**DDR3 ECC Handling in Keystone-II Linux kernel**r…hmjhwh›h|hÍh~}r†(h€]h�]h‚]hƒ]h†]uhˆM" hŠ]r‡j)�rˆ}r‰(hlj…h~}rŠ(h€]h�]h‚]hƒ]h†]uhmjƒhŠ]r‹h“X-DDR3 ECC Handling in Keystone-II Linux kernelrŒ…�r�}rŽ(hlUhmjˆubah|j'ubaubhÊ)�r�}r�(hlXŸLinux kernel requests an IRQ handler for DDR3 ECC error interrupt, the handler checks the DDR3 controller interrupt status register, if the error is 2-bit error, Linux kernel will reboot the device. User can also use a user mode command to read the DDR3 ECC registers (e.g. 1-bit error count register, etc.), the DDR3 controller register and interrupt mapping are defined in the sysctrl node of device tree binding:r‘hmjhwh›h|hÍh~}r’(h€]h�]h‚]hƒ]h†]uhˆM$ hŠ]r“h“XŸLinux kernel requests an IRQ handler for DDR3 ECC error interrupt, the handler checks the DDR3 controller interrupt status register, if the error is 2-bit error, Linux kernel will reboot the device. User can also use a user mode command to read the DDR3 ECC registers (e.g. 1-bit error count register, etc.), the DDR3 controller register and interrupt mapping are defined in the sysctrl node of device tree binding:r”…�r•}r–(hlj‘hmj�ubaubeubjr)�r—}r˜(hlXãE.g. K2H SOC device tree: sysctrl { reg = <0x21010000 0x0200>; /* DDR3 controller reg */ interrupts = <0 24 0xf01 /* L1L2 ECC error interrupt */ 0 448 0xf01>; /* DDR3 ECC error interrupt */ };hmj:hwh›h|juh~}r™(hŸh hƒ]h‚]h€]h�]h†]uhˆM6 h‰hhŠ]ršh“XãE.g. K2H SOC device tree: sysctrl { reg = <0x21010000 0x0200>; /* DDR3 controller reg */ interrupts = <0 24 0xf01 /* L1L2 ECC error interrupt */ 0 448 0xf01>; /* DDR3 ECC error interrupt */ };r›…�rœ}r�(hlUhmj—ubaubjC)�rž}rŸ(hlUhmj:hwh›h|jZh~}r (h€]h�]h‚]hƒ]h†]uhˆM2 h‰hhŠ]r¡jH)�r¢}r£(hlUjLKhmjžhwh›h|hˆh~}r¤(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubeubhn)�r¥}r¦(hlUhmhshwh›h|h}h~}r§(h€]h�]h‚]hƒ]r¨Uhyperbus-and-hyperflashr©ah†]rªhIauhˆM5 h‰hhŠ]r«(hŒ)�r¬}r­(hlXHyperBus and HyperFlashr®hmj¥hwh›h|h�h~}r¯(h€]h�]h‚]hƒ]h†]uhˆM5 h‰hhŠ]r°h“XHyperBus and HyperFlashr±…�r²}r³(hlj®hmj¬ubaubhÊ)�r´}rµ(hlX´HyperBus is Low Signal Count, High Performance Double Data Rate (DDR) Bus interface between a host system master and one or more slave interfaces. Its a 8-bit data bus (DQ[7:0]) with Read-Write Data Strobe (RWDS) signal and either Single-ended clock(3.0V parts) or Differential clock (1.8V parts). It uses ChipSelect lines to select b/w multiple slaves. At bus level, it follows a separate protocol described in HyperBus specification.r¶hmj¥hwh›h|hÍh~}r·(h€]h�]h‚]hƒ]h†]uhˆM6 h‰hhŠ]r¸h“X´HyperBus is Low Signal Count, High Performance Double Data Rate (DDR) Bus interface between a host system master and one or more slave interfaces. Its a 8-bit data bus (DQ[7:0]) with Read-Write Data Strobe (RWDS) signal and either Single-ended clock(3.0V parts) or Differential clock (1.8V parts). It uses ChipSelect lines to select b/w multiple slaves. At bus level, it follows a separate protocol described in HyperBus specification.r¹…�rº}r»(hlj¶hmj´ubaubhÊ)�r¼}r½(hlX3HyperFlash is a NOR flash based device storage over HyperBus. HyperFlash follows CFI AMD/Fujitsu Extended Command Set (0x0002) similar to that of existing parallel NORs. Since Hyperbus is x8 DDR bus, its equivalent to x16 parallel NOR flash wrt bits per clk. But Hyperbus operates at very high frequencies.r¾hmj¥hwh›h|hÍh~}r¿(h€]h�]h‚]hƒ]h†]uhˆM8 h‰hhŠ]rÀh“X3HyperFlash is a NOR flash based device storage over HyperBus. HyperFlash follows CFI AMD/Fujitsu Extended Command Set (0x0002) similar to that of existing parallel NORs. Since Hyperbus is x8 DDR bus, its equivalent to x16 parallel NOR flash wrt bits per clk. But Hyperbus operates at very high frequencies.rÁ…�rÂ}rÃ(hlj¾hmj¼ubaubhÊ)�rÄ}rÅ(hlXçHyperFlash on TI's J721E EVM is connected to HyperBus Memory Controller that supports memory mapped IO access to flash. HyperFlash is supported under MTD framework and U-Boot's standard MTD commands can be used to access HyperFlashrÆhmj¥hwh›h|hÍh~}rÇ(h€]h�]h‚]hƒ]h†]uhˆM: h‰hhŠ]rÈh“XçHyperFlash on TI's J721E EVM is connected to HyperBus Memory Controller that supports memory mapped IO access to flash. HyperFlash is supported under MTD framework and U-Boot's standard MTD commands can be used to access HyperFlashrÉ…�rÊ}rË(hljÆhmjÄubaubhÊ)�rÌ}rÍ(hlX!**Supported Devices** - J721E EVMhmj¥hwh›h|hÍh~}rÎ(h€]h�]h‚]hƒ]h†]uhˆM< h‰hhŠ]rÏ(j)�rÐ}rÑ(hlX**Supported Devices**h~}rÒ(h€]h�]h‚]hƒ]h†]uhmjÌhŠ]rÓh“XSupported DevicesrÔ…�rÕ}rÖ(hlUhmjÐubah|j'ubh“X - J721E EVMr×…�rØ}rÙ(hlX - J721E EVMhmjÌubeubhÊ)�rÚ}rÛ(hlX$To list detected HyperFlash devices:rÜhmj¥hwh›h|hÍh~}rÝ(h€]h�]h‚]hƒ]h†]uhˆM? h‰hhŠ]rÞh“X$To list detected HyperFlash devices:rß…�rà}rá(hljÜhmjÚubaubjr)�râ}rã(hlXî=> mtd list List of MTD devices: * nor0 - type: NOR flash - block size: 0x40000 bytes /* Each erase sector size is of 256KB */ - min I/O: 0x1 bytes - 0x000000000000-0x000004000000 : "nor0" /* Detected 64MB devices labeled as "nor0" */hmj¥hwh›h|juh~}rä(hŸh hƒ]h‚]h€]h�]h†]uhˆMN h‰hhŠ]råh“Xî=> mtd list List of MTD devices: * nor0 - type: NOR flash - block size: 0x40000 bytes /* Each erase sector size is of 256KB */ - min I/O: 0x1 bytes - 0x000000000000-0x000004000000 : "nor0" /* Detected 64MB devices labeled as "nor0" */ræ…�rç}rè(hlUhmjâubaubj®)�ré}rê(hlXFOn J721E EVM, SW3.1 should be set to ON position to select HyperFlash.rëhmj¥hwh›h|j²h~}rì(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]ríhÊ)�rî}rï(hljëhmjéhwh›h|hÍh~}rð(h€]h�]h‚]hƒ]h†]uhˆMM hŠ]rñh“XFOn J721E EVM, SW3.1 should be set to ON position to select HyperFlash.rò…�ró}rô(hljëhmjîubaubaubhÊ)�rõ}rö(hlX–Below Example shows how to erase and write different boot images to HyperFlash from U-Boot prompt. Erase has to be a multiple of erase sector size. ::hmj¥hwh›h|hÍh~}r÷(h€]h�]h‚]hƒ]h†]uhˆMO h‰hhŠ]røh“X“Below Example shows how to erase and write different boot images to HyperFlash from U-Boot prompt. Erase has to be a multiple of erase sector size.rù…�rú}rû(hlX“Below Example shows how to erase and write different boot images to HyperFlash from U-Boot prompt. Erase has to be a multiple of erase sector size.hmjõubaubjr)�rü}rý(hlX®=> mtd erase nor0 0 0x40000 /* Erase from offset 0 to 256KB of HyperFlash labeled nor0 */ Erasing 0x00000000 ... 0x0003ffff (1 eraseblock(s)) => fatload mmc 1 0x82000000 tiboot3.bin /* Load an img from SD into DDR to flash into HyperFlash */ 180932 bytes read in 10 ms (17.3 MiB/s) => mtd write nor0 0x82000000 0x0 $filesize /* Write the loaded image into HyperFlash labeled nor0 */ Writing 180932 byte(s) at offset 0x00000000 =>hmj¥hwh›h|juh~}rþ(hŸh hƒ]h‚]h€]h�]h†]uhˆM^ h‰hhŠ]rÿh“X®=> mtd erase nor0 0 0x40000 /* Erase from offset 0 to 256KB of HyperFlash labeled nor0 */ Erasing 0x00000000 ... 0x0003ffff (1 eraseblock(s)) => fatload mmc 1 0x82000000 tiboot3.bin /* Load an img from SD into DDR to flash into HyperFlash */ 180932 bytes read in 10 ms (17.3 MiB/s) => mtd write nor0 0x82000000 0x0 $filesize /* Write the loaded image into HyperFlash labeled nor0 */ Writing 180932 byte(s) at offset 0x00000000 =>r…�r}r(hlUhmjüubaubhÊ)�r}r(hlX-Below Example shows how to read back the datarhmj¥hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM[ h‰hhŠ]rh“X-Below Example shows how to read back the datar…�r }r (hljhmjubaubjr)�r }r (hlXš=> mtd read nor0 0x82000000 0x0 0x40000 /* Read from offset 0 to 0x4000 to DDR address 0x82000000 from nor0 */ Reading 262144 byte(s) at offset 0x00000000hmj¥hwh›h|juh~}r (hŸh hƒ]h‚]h€]h�]h†]uhˆMj h‰hhŠ]rh“Xš=> mtd read nor0 0x82000000 0x0 0x40000 /* Read from offset 0 to 0x4000 to DDR address 0x82000000 from nor0 */ Reading 262144 byte(s) at offset 0x00000000r…�r}r(hlUhmj ubaubhÊ)�r}r(hlX!**Flashing Images to HyperFlash**rhmj¥hwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆMb h‰hhŠ]rj)�r}r(hljh~}r(h€]h�]h‚]hƒ]h†]uhmjhŠ]rh“XFlashing Images to HyperFlashr…�r}r(hlUhmjubah|j'ubaubhÊ)�r}r(hlX�Below commands can be used to download tiboot3.bin, tispl.bin and u-boot.img over tftp and then flash it to HyperFlash at respective addresses.r hmj¥hwh›h|hÍh~}r!(h€]h�]h‚]hƒ]h†]uhˆMd h‰hhŠ]r"h“X�Below commands can be used to download tiboot3.bin, tispl.bin and u-boot.img over tftp and then flash it to HyperFlash at respective addresses.r#…�r$}r%(hlj hmjubaubjr)�r&}r'(hlXM=> mtd erase nor0 0 0x800000 => tftp ${loadaddr} tiboot3.bin => mtd write nor0 $loadaddr 0x0 $filesize => tftp ${loadaddr} tispl.bin => mtd write nor0 $loadaddr 0x80000 $filesize => tftp ${loadaddr} u-boot.img => mtd write nor0 $loadaddr 0x280000 $filesize => tftp ${loadaddr} sysfw.itb => mtd write nor0 $loadaddr 0x6C0000 $filesizehmj¥hwh›h|juh~}r((jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMg h‰hhŠ]r)h“XM=> mtd erase nor0 0 0x800000 => tftp ${loadaddr} tiboot3.bin => mtd write nor0 $loadaddr 0x0 $filesize => tftp ${loadaddr} tispl.bin => mtd write nor0 $loadaddr 0x80000 $filesize => tftp ${loadaddr} u-boot.img => mtd write nor0 $loadaddr 0x280000 $filesize => tftp ${loadaddr} sysfw.itb => mtd write nor0 $loadaddr 0x6C0000 $filesizer*…�r+}r,(hlUhmj&ubaubj�)�r-}r.(hlUhmj¥hwh›h|j h~}r/(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r0j£)�r1}r2(hlXe**Flash Layout for HyperFlash** Below is the layout for HyperFlash in order to boot from HyperFlash: hmj-hwh›h|j¦h~}r3(h€]h�]h‚]hƒ]h†]uhˆMt hŠ]r4(j©)�r5}r6(hlX**Flash Layout for HyperFlash**r7hmj1hwh›h|j­h~}r8(h€]h�]h‚]hƒ]h†]uhˆMt hŠ]r9j)�r:}r;(hlj7h~}r<(h€]h�]h‚]hƒ]h†]uhmj5hŠ]r=h“XFlash Layout for HyperFlashr>…�r?}r@(hlUhmj:ubah|j'ubaubj³)�rA}rB(hlUh~}rC(h€]h�]h‚]hƒ]h†]uhmj1hŠ]rDhÊ)�rE}rF(hlXDBelow is the layout for HyperFlash in order to boot from HyperFlash:rGhmjAhwh›h|hÍh~}rH(h€]h�]h‚]hƒ]h†]uhˆMt hŠ]rIh“XDBelow is the layout for HyperFlash in order to boot from HyperFlash:rJ…�rK}rL(hljGhmjEubaubah|jÉubeubaubjr)�rM}rN(hlXG 0x0 +----------------------------+ | hbmc.tiboot3(512K) | | | 0x80000 +----------------------------+ | hbmc.tispl(2M) | | | 0x280000 +----------------------------+ | hbmc.u-boot(4M) | | | 0x680000 +----------------------------+ | hbmc.env(128K) | | | 0x6C0000 +----------------------------+ | hbmc.sysfw(1M) | | | 0x7C0000 +----------------------------+ | padding (256k) | 0x800000 +----------------------------+ | hbmc.rootfs(UBIFS) | | | +----------------------------+hmj¥hwh›h|juh~}rO(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMv h‰hhŠ]rPh“XG 0x0 +----------------------------+ | hbmc.tiboot3(512K) | | | 0x80000 +----------------------------+ | hbmc.tispl(2M) | | | 0x280000 +----------------------------+ | hbmc.u-boot(4M) | | | 0x680000 +----------------------------+ | hbmc.env(128K) | | | 0x6C0000 +----------------------------+ | hbmc.sysfw(1M) | | | 0x7C0000 +----------------------------+ | padding (256k) | 0x800000 +----------------------------+ | hbmc.rootfs(UBIFS) | | | +----------------------------+rQ…�rR}rS(hlUhmjMubaubhÊ)�rT}rU(hlX***Bootmode Switch Settings for J721E EVM**rVhmj¥hwh›h|hÍh~}rW(h€]h�]h‚]hƒ]h†]uhˆMŽ h‰hhŠ]rXj)�rY}rZ(hljVh~}r[(h€]h�]h‚]hƒ]h†]uhmjThŠ]r\h“X&Bootmode Switch Settings for J721E EVMr]…�r^}r_(hlUhmjYubah|j'ubaubhÊ)�r`}ra(hlX}After writing the images, change the bootmode switches on the EVM to the following in order to boot from HyperFlash at 83MHz:rbhmj¥hwh›h|hÍh~}rc(h€]h�]h‚]hƒ]h†]uhˆM� h‰hhŠ]rdh“X}After writing the images, change the bootmode switches on the EVM to the following in order to boot from HyperFlash at 83MHz:re…�rf}rg(hljbhmj`ubaubj)�rh}ri(hlUhmj¥hwh›h|jh~}rj(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rkj)�rl}rm(hlUh~}rn(hƒ]h‚]h€]h�]h†]UcolsK uhmjhhŠ]ro(j)�rp}rq(hlUh~}rr(hƒ]h‚]h€]h�]h†]UcolwidthK uhmjlhŠ]h|j"ubj)�rs}rt(hlUh~}ru(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�rv}rw(hlUh~}rx(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�ry}rz(hlUh~}r{(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�r|}r}(hlUh~}r~(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�r}r€(hlUh~}r�(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�r‚}rƒ(hlUh~}r„(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�r…}r†(hlUh~}r‡(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�rˆ}r‰(hlUh~}rŠ(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�r‹}rŒ(hlUh~}r�(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubj)�rŽ}r�(hlUh~}r�(hƒ]h‚]h€]h�]h†]UcolwidthKuhmjlhŠ]h|j"ubjy)�r‘}r’(hlUh~}r“(h€]h�]h‚]hƒ]h†]uhmjlhŠ]r”(j4)�r•}r–(hlUh~}r—(h€]h�]h‚]hƒ]h†]uhmj‘hŠ]r˜(j9)�r™}rš(hlUh~}r›(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rœhÊ)�r�}rž(hlX Switch No.rŸhmj™hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM” hŠ]r¡h“X Switch No.r¢…�r£}r¤(hljŸhmj�ubaubah|jFubj9)�r¥}r¦(hlUh~}r§(h€]h�]h‚]hƒ]h†]uhmj•hŠ]r¨hÊ)�r©}rª(hlX1hmj¥hwh›h|hÍh~}r«(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]r¬h“X1…�r­}r®(hlX1hmj©ubaubah|jFubj9)�r¯}r°(hlUh~}r±(h€]h�]h‚]hƒ]h†]uhmj•hŠ]r²hÊ)�r³}r´(hlX2hmj¯hwh›h|hÍh~}rµ(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]r¶h“X2…�r·}r¸(hlX2hmj³ubaubah|jFubj9)�r¹}rº(hlUh~}r»(h€]h�]h‚]hƒ]h†]uhmj•hŠ]r¼hÊ)�r½}r¾(hlX3hmj¹hwh›h|hÍh~}r¿(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rÀh“X3…�rÁ}rÂ(hlX3hmj½ubaubah|jFubj9)�rÃ}rÄ(hlUh~}rÅ(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rÆhÊ)�rÇ}rÈ(hlX4hmjÃhwh›h|hÍh~}rÉ(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rÊh“X4…�rË}rÌ(hlX4hmjÇubaubah|jFubj9)�rÍ}rÎ(hlUh~}rÏ(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rÐhÊ)�rÑ}rÒ(hlX5hmjÍhwh›h|hÍh~}rÓ(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rÔh“X5…�rÕ}rÖ(hlX5hmjÑubaubah|jFubj9)�r×}rØ(hlUh~}rÙ(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rÚhÊ)�rÛ}rÜ(hlX6hmj×hwh›h|hÍh~}rÝ(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rÞh“X6…�rß}rà(hlX6hmjÛubaubah|jFubj9)�rá}râ(hlUh~}rã(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rähÊ)�rå}ræ(hlX7hmjáhwh›h|hÍh~}rç(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rèh“X7…�ré}rê(hlX7hmjåubaubah|jFubj9)�rë}rì(hlUh~}rí(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rîhÊ)�rï}rð(hlX8hmjëhwh›h|hÍh~}rñ(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]ròh“X8…�ró}rô(hlX8hmjïubaubah|jFubj9)�rõ}rö(hlUh~}r÷(h€]h�]h‚]hƒ]h†]uhmj•hŠ]røhÊ)�rù}rú(hlX9hmjõhwh›h|hÍh~}rû(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rüh“X9…�rý}rþ(hlX9hmjùubaubah|jFubj9)�rÿ}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmj•hŠ]rhÊ)�r}r(hlX10rhmjÿhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM” hŠ]rh“X10r…�r }r (hljhmjubaubah|jFubeh|jwubj4)�r }r (hlUh~}r (h€]h�]h‚]hƒ]h†]uhmj‘hŠ]r(j9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmj hŠ]rhÊ)�r}r(hlXSW8rhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]rh“XSW8r…�r}r(hljhmjubaubah|jFubj9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmj hŠ]rhÊ)�r}r (hlXOFFr!hmjhwh›h|hÍh~}r"(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]r#h“XOFFr$…�r%}r&(hlj!hmjubaubah|jFubj9)�r'}r((hlUh~}r)(h€]h�]h‚]hƒ]h†]uhmj hŠ]r*hÊ)�r+}r,(hlXOFFr-hmj'hwh›h|hÍh~}r.(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]r/h“XOFFr0…�r1}r2(hlj-hmj+ubaubah|jFubj9)�r3}r4(hlUh~}r5(h€]h�]h‚]hƒ]h†]uhmj hŠ]r6hÊ)�r7}r8(hlXOFFr9hmj3hwh›h|hÍh~}r:(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]r;h“XOFFr<…�r=}r>(hlj9hmj7ubaubah|jFubj9)�r?}r@(hlUh~}rA(h€]h�]h‚]hƒ]h†]uhmj hŠ]rBhÊ)�rC}rD(hlXOFFrEhmj?hwh›h|hÍh~}rF(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]rGh“XOFFrH…�rI}rJ(hljEhmjCubaubah|jFubj9)�rK}rL(hlUh~}rM(h€]h�]h‚]hƒ]h†]uhmj hŠ]rNhÊ)�rO}rP(hlXOFFrQhmjKhwh›h|hÍh~}rR(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]rSh“XOFFrT…�rU}rV(hljQhmjOubaubah|jFubj9)�rW}rX(hlUh~}rY(h€]h�]h‚]hƒ]h†]uhmj hŠ]rZhÊ)�r[}r\(hlXOFFr]hmjWhwh›h|hÍh~}r^(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]r_h“XOFFr`…�ra}rb(hlj]hmj[ubaubah|jFubj9)�rc}rd(hlUh~}re(h€]h�]h‚]hƒ]h†]uhmj hŠ]rfhÊ)�rg}rh(hlXOFFrihmjchwh›h|hÍh~}rj(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]rkh“XOFFrl…�rm}rn(hljihmjgubaubah|jFubj9)�ro}rp(hlUh~}rq(h€]h�]h‚]hƒ]h†]uhmj hŠ]rrhÊ)�rs}rt(hlXOFFruhmjohwh›h|hÍh~}rv(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]rwh“XOFFrx…�ry}rz(hljuhmjsubaubah|jFubj9)�r{}r|(hlUh~}r}(h€]h�]h‚]hƒ]h†]uhmj hŠ]r~hÊ)�r}r€(hlXOFFr�hmj{hwh›h|hÍh~}r‚(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]rƒh“XOFFr„…�r…}r†(hlj�hmjubaubah|jFubj9)�r‡}rˆ(hlUh~}r‰(h€]h�]h‚]hƒ]h†]uhmj hŠ]rŠhÊ)�r‹}rŒ(hlXOFFr�hmj‡hwh›h|hÍh~}rŽ(h€]h�]h‚]hƒ]h†]uhˆM– hŠ]r�h“XOFFr�…�r‘}r’(hlj�hmj‹ubaubah|jFubeh|jwubj4)�r“}r”(hlUh~}r•(h€]h�]h‚]hƒ]h†]uhmj‘hŠ]r–(j9)�r—}r˜(hlUh~}r™(h€]h�]h‚]hƒ]h†]uhmj“hŠ]ršhÊ)�r›}rœ(hlXSW9r�hmj—hwh›h|hÍh~}rž(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rŸh“XSW9r …�r¡}r¢(hlj�hmj›ubaubah|jFubj9)�r£}r¤(hlUh~}r¥(h€]h�]h‚]hƒ]h†]uhmj“hŠ]r¦hÊ)�r§}r¨(hlXOFFr©hmj£hwh›h|hÍh~}rª(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]r«h“XOFFr¬…�r­}r®(hlj©hmj§ubaubah|jFubj9)�r¯}r°(hlUh~}r±(h€]h�]h‚]hƒ]h†]uhmj“hŠ]r²hÊ)�r³}r´(hlXOFFrµhmj¯hwh›h|hÍh~}r¶(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]r·h“XOFFr¸…�r¹}rº(hljµhmj³ubaubah|jFubj9)�r»}r¼(hlUh~}r½(h€]h�]h‚]hƒ]h†]uhmj“hŠ]r¾hÊ)�r¿}rÀ(hlXOFFrÁhmj»hwh›h|hÍh~}rÂ(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rÃh“XOFFrÄ…�rÅ}rÆ(hljÁhmj¿ubaubah|jFubj9)�rÇ}rÈ(hlUh~}rÉ(h€]h�]h‚]hƒ]h†]uhmj“hŠ]rÊhÊ)�rË}rÌ(hlXOFFrÍhmjÇhwh›h|hÍh~}rÎ(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rÏh“XOFFrÐ…�rÑ}rÒ(hljÍhmjËubaubah|jFubj9)�rÓ}rÔ(hlUh~}rÕ(h€]h�]h‚]hƒ]h†]uhmj“hŠ]rÖhÊ)�r×}rØ(hlXOFFrÙhmjÓhwh›h|hÍh~}rÚ(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rÛh“XOFFrÜ…�rÝ}rÞ(hljÙhmj×ubaubah|jFubj9)�rß}rà(hlUh~}rá(h€]h�]h‚]hƒ]h†]uhmj“hŠ]râhÊ)�rã}rä(hlXOFFråhmjßhwh›h|hÍh~}ræ(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rçh“XOFFrè…�ré}rê(hljåhmjãubaubah|jFubj9)�rë}rì(hlUh~}rí(h€]h�]h‚]hƒ]h†]uhmj“hŠ]rîhÊ)�rï}rð(hlXOFFrñhmjëhwh›h|hÍh~}rò(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]róh“XOFFrô…�rõ}rö(hljñhmjïubaubah|jFubj9)�r÷}rø(hlUh~}rù(h€]h�]h‚]hƒ]h†]uhmj“hŠ]rúhÊ)�rû}rü(hlXOFFrýhmj÷hwh›h|hÍh~}rþ(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rÿh“XOFFr…�r}r(hljýhmjûubaubah|jFubj9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmj“hŠ]rhÊ)�r}r(hlXOFFr hmjhwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]r h“XOFFr …�r }r(hlj hmjubaubah|jFubj9)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmj“hŠ]rhÊ)�r}r(hlXOFFrhmjhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM˜ hŠ]rh“XOFFr…�r}r(hljhmjubaubah|jFubeh|jwubj4)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmj‘hŠ]r(j9)�r}r (hlUh~}r!(h€]h�]h‚]hƒ]h†]uhmjhŠ]r"hÊ)�r#}r$(hlXSW3r%hmjhwh›h|hÍh~}r&(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]r'h“XSW3r(…�r)}r*(hlj%hmj#ubaubah|jFubj9)�r+}r,(hlUh~}r-(h€]h�]h‚]hƒ]h†]uhmjhŠ]r.hÊ)�r/}r0(hlXONr1hmj+hwh›h|hÍh~}r2(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]r3h“XONr4…�r5}r6(hlj1hmj/ubaubah|jFubj9)�r7}r8(hlUh~}r9(h€]h�]h‚]hƒ]h†]uhmjhŠ]r:hÊ)�r;}r<(hlXONr=hmj7hwh›h|hÍh~}r>(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]r?h“XONr@…�rA}rB(hlj=hmj;ubaubah|jFubj9)�rC}rD(hlUh~}rE(h€]h�]h‚]hƒ]h†]uhmjhŠ]rFhÊ)�rG}rH(hlXONrIhmjChwh›h|hÍh~}rJ(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]rKh“XONrL…�rM}rN(hljIhmjGubaubah|jFubj9)�rO}rP(hlUh~}rQ(h€]h�]h‚]hƒ]h†]uhmjhŠ]rRhÊ)�rS}rT(hlXONrUhmjOhwh›h|hÍh~}rV(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]rWh“XONrX…�rY}rZ(hljUhmjSubaubah|jFubj9)�r[}r\(hlUh~}r](h€]h�]h‚]hƒ]h†]uhmjhŠ]r^hÊ)�r_}r`(hlXOFFrahmj[hwh›h|hÍh~}rb(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]rch“XOFFrd…�re}rf(hljahmj_ubaubah|jFubj9)�rg}rh(hlUh~}ri(h€]h�]h‚]hƒ]h†]uhmjhŠ]rjhÊ)�rk}rl(hlXOFFrmhmjghwh›h|hÍh~}rn(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]roh“XOFFrp…�rq}rr(hljmhmjkubaubah|jFubj9)�rs}rt(hlUh~}ru(h€]h�]h‚]hƒ]h†]uhmjhŠ]rvhÊ)�rw}rx(hlXONryhmjshwh›h|hÍh~}rz(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]r{h“XONr|…�r}}r~(hljyhmjwubaubah|jFubj9)�r}r€(hlUh~}r�(h€]h�]h‚]hƒ]h†]uhmjhŠ]r‚hÊ)�rƒ}r„(hlXOFFr…hmjhwh›h|hÍh~}r†(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]r‡h“XOFFrˆ…�r‰}rŠ(hlj…hmjƒubaubah|jFubj9)�r‹}rŒ(hlUh~}r�(h€]h�]h‚]hƒ]h†]uhmjhŠ]rŽhÊ)�r�}r�(hlXONr‘hmj‹hwh›h|hÍh~}r’(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]r“h“XONr”…�r•}r–(hlj‘hmj�ubaubah|jFubj9)�r—}r˜(hlUh~}r™(h€]h�]h‚]hƒ]h†]uhmjhŠ]ršhÊ)�r›}rœ(hlXOFFr�hmj—hwh›h|hÍh~}rž(h€]h�]h‚]hƒ]h†]uhˆMš hŠ]rŸh“XOFFr …�r¡}r¢(hlj�hmj›ubaubah|jFubeh|jwubeh|j¹ubeh|jºubaubeubhn)�r£}r¤(hlUhmhshwh›h|h}h~}r¥(h€]h�]h‚]hƒ]r¦U remoteprocr§ah†]r¨hLauhˆMž h‰hhŠ]r©(hŒ)�rª}r«(hlX REMOTEPROCr¬hmj£hwh›h|h�h~}r­(h€]h�]h‚]hƒ]h†]uhˆMž h‰hhŠ]r®h“X REMOTEPROCr¯…�r°}r±(hlj¬hmjªubaubhÊ)�r²}r³(hlX•This section documents how to initialize, load, start and stop remote cores from U-Boot prompt. Following remotecores support is available in U-boot:r´hmj£hwh›h|hÍh~}rµ(h€]h�]h‚]hƒ]h†]uhˆM  h‰hhŠ]r¶h“X•This section documents how to initialize, load, start and stop remote cores from U-Boot prompt. Following remotecores support is available in U-boot:r·…�r¸}r¹(hlj´hmj²ubaubj#)�rº}r»(hlUhmj£hwh›h|j&h~}r¼(j(X-hƒ]h‚]h€]h�]h†]uhˆM£ h‰hhŠ]r½(j )�r¾}r¿(hlXCortex-R5F in Lockstep morerÀhmjºhwh›h|jh~}rÁ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÂhÊ)�rÃ}rÄ(hljÀhmj¾hwh›h|hÍh~}rÅ(h€]h�]h‚]hƒ]h†]uhˆM£ hŠ]rÆh“XCortex-R5F in Lockstep morerÇ…�rÈ}rÉ(hljÀhmjÃubaubaubj )�rÊ}rË(hlXCortex-R5F in split moderÌhmjºhwh›h|jh~}rÍ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÎhÊ)�rÏ}rÐ(hljÌhmjÊhwh›h|hÍh~}rÑ(h€]h�]h‚]hƒ]h†]uhˆM¤ hŠ]rÒh“XCortex-R5F in split moderÓ…�rÔ}rÕ(hljÌhmjÏubaubaubj )�rÖ}r×(hlXC66x DSPrØhmjºhwh›h|jh~}rÙ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÚhÊ)�rÛ}rÜ(hljØhmjÖhwh›h|hÍh~}rÝ(h€]h�]h‚]hƒ]h†]uhˆM¥ hŠ]rÞh“XC66x DSPrß…�rà}rá(hljØhmjÛubaubaubj )�râ}rã(hlX C71x DSP hmjºhwh›h|jh~}rä(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]råhÊ)�ræ}rç(hlXC71x DSPrèhmjâhwh›h|hÍh~}ré(h€]h�]h‚]hƒ]h†]uhˆM¦ hŠ]rêh“XC71x DSPrë…�rì}rí(hljèhmjæubaubaubeubhn)�rî}rï(hlUhmj£hwh›h|h}h~}rð(h€]h�]h‚]hƒ]rñUinitializationròah†]róhYauhˆM© h‰hhŠ]rô(hŒ)�rõ}rö(hlXInitializationr÷hmjîhwh›h|h�h~}rø(h€]h�]h‚]hƒ]h†]uhˆM© h‰hhŠ]rùh“XInitializationrú…�rû}rü(hlj÷hmjõubaubhÊ)�rý}rþ(hlX€U-Boot supports for initializing all the available remotecores in one go or initialize individual core based on the DT alias id.rÿhmjîhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM« h‰hhŠ]rh“X€U-Boot supports for initializing all the available remotecores in one go or initialize individual core based on the DT alias id.r…�r}r(hljÿhmjýubaubhÊ)�r}r(hlXAThe below command will initialize all the available remote cores:rhmjîhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM® h‰hhŠ]r h“XAThe below command will initialize all the available remote cores:r …�r }r (hljhmjubaubjr)�r }r(hlX => rproc inithmjîhwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆM½ h‰hhŠ]rh“X => rproc initr…�r}r(hlUhmj ubaubhÊ)�r}r(hlX<The below command will initialize just the given remote corerhmjîhwh›h|hÍh~}r(h€]h�]h‚]hƒ]h†]uhˆM´ h‰hhŠ]rh“X<The below command will initialize just the given remote corer…�r}r(hljhmjubaubjr)�r}r(hlX=> rproc init hmjîhwh›h|juh~}r(hŸh hƒ]h‚]h€]h�]h†]uhˆMà h‰hhŠ]rh“X=> rproc init r …�r!}r"(hlUhmjubaubhÊ)�r#}r$(hlXPThe below command lists all the available/initialized remotecores in the system.r%hmjîhwh›h|hÍh~}r&(h€]h�]h‚]hƒ]h†]uhˆMº h‰hhŠ]r'h“XPThe below command lists all the available/initialized remotecores in the system.r(…�r)}r*(hlj%hmj#ubaubjr)�r+}r,(hlX=> rproc list 0 - Name:'r5f@41000000' type:'internal memory mapped' supports: load start stop reset 1 - Name:'r5f@41400000' type:'internal memory mapped' supports: load start stop reset 2 - Name:'r5f@5c00000' type:'internal memory mapped' supports: load start stop reset 3 - Name:'r5f@5d00000' type:'internal memory mapped' supports: load start stop reset 4 - Name:'r5f@5e00000' type:'internal memory mapped' supports: load start stop reset 5 - Name:'r5f@5f00000' type:'internal memory mapped' supports: load start stop reset 6 - Name:'dsp@4d80800000' type:'internal memory mapped' supports: load start stop reset 7 - Name:'dsp@4d81800000' type:'internal memory mapped' supports: load start stop reset 8 - Name:'dsp@64800000' type:'internal memory mapped' supports: load start stop resethmjîhwh›h|juh~}r-(hŸh hƒ]h‚]h€]h�]h†]uhˆMÉ h‰hhŠ]r.h“X=> rproc list 0 - Name:'r5f@41000000' type:'internal memory mapped' supports: load start stop reset 1 - Name:'r5f@41400000' type:'internal memory mapped' supports: load start stop reset 2 - Name:'r5f@5c00000' type:'internal memory mapped' supports: load start stop reset 3 - Name:'r5f@5d00000' type:'internal memory mapped' supports: load start stop reset 4 - Name:'r5f@5e00000' type:'internal memory mapped' supports: load start stop reset 5 - Name:'r5f@5f00000' type:'internal memory mapped' supports: load start stop reset 6 - Name:'dsp@4d80800000' type:'internal memory mapped' supports: load start stop reset 7 - Name:'dsp@4d81800000' type:'internal memory mapped' supports: load start stop reset 8 - Name:'dsp@64800000' type:'internal memory mapped' supports: load start stop resetr/…�r0}r1(hlUhmj+ubaubeubhn)�r2}r3(hlUhmj£hwh›h|h}h~}r4(h€]h�]h‚]hƒ]r5Uloadingr6ah†]r7hauhˆMË h‰hhŠ]r8(hŒ)�r9}r:(hlXLoadingr;hmj2hwh›h|h�h~}r<(h€]h�]h‚]hƒ]h†]uhˆMË h‰hhŠ]r=h“XLoadingr>…�r?}r@(hlj;hmj9ubaubhÊ)�rA}rB(hlX~Once Initialized, remotecores can be loaded with a relevant image. Make sure image is loaded only after initializing the core.rChmj2hwh›h|hÍh~}rD(h€]h�]h‚]hƒ]h†]uhˆMÍ h‰hhŠ]rEh“X~Once Initialized, remotecores can be loaded with a relevant image. Make sure image is loaded only after initializing the core.rF…�rG}rH(hljChmjAubaubjr)�rI}rJ(hlX×=> load mmc 1:2 0x90000000 /lib/firmware/j7-main-r5f0_0-fw 2536540 bytes read in 112 ms (21.6 MiB/s) => rproc load 2 0x90000000 0x${filesize} Load Remote Processor 2 with data@addr=0x90000000 2536540 bytes: Success!hmj2hwh›h|juh~}rK(hŸh hƒ]h‚]h€]h�]h†]uhˆMÝ h‰hhŠ]rLh“X×=> load mmc 1:2 0x90000000 /lib/firmware/j7-main-r5f0_0-fw 2536540 bytes read in 112 ms (21.6 MiB/s) => rproc load 2 0x90000000 0x${filesize} Load Remote Processor 2 with data@addr=0x90000000 2536540 bytes: Success!rM…�rN}rO(hlUhmjIubaubeubhn)�rP}rQ(hlUhmj£hwh›h|h}h~}rR(h€]h�]h‚]hƒ]rSUstartingrTah†]rUhdauhˆMÙ h‰hhŠ]rV(hŒ)�rW}rX(hlXStartingrYhmjPhwh›h|h�h~}rZ(h€]h�]h‚]hƒ]h†]uhˆMÙ h‰hhŠ]r[h“XStartingr\…�r]}r^(hljYhmjWubaubhÊ)�r_}r`(hlXJSuccessfully loaded remotecore can be started using the following command.rahmjPhwh›h|hÍh~}rb(h€]h�]h‚]hƒ]h†]uhˆMÛ h‰hhŠ]rch“XJSuccessfully loaded remotecore can be started using the following command.rd…�re}rf(hljahmj_ubaubjr)�rg}rh(hlX=> rproc start 2hmjPhwh›h|juh~}ri(hŸh hƒ]h‚]h€]h�]h†]uhˆMê h‰hhŠ]rjh“X=> rproc start 2rk…�rl}rm(hlUhmjgubaubeubhn)�rn}ro(hlUhmj£hwh›h|h}h~}rp(h€]h�]h‚]hƒ]rqUstoprrah†]rshauhˆMâ h‰hhŠ]rt(hŒ)�ru}rv(hlXStoprwhmjnhwh›h|h�h~}rx(h€]h�]h‚]hƒ]h†]uhˆMâ h‰hhŠ]ryh“XStoprz…�r{}r|(hljwhmjuubaubhÊ)�r}}r~(hlX@A running remotecore can be stopped using the following command.rhmjnhwh›h|hÍh~}r€(h€]h�]h‚]hƒ]h†]uhˆMä h‰hhŠ]r�h“X@A running remotecore can be stopped using the following command.r‚…�rƒ}r„(hljhmj}ubaubjr)�r…}r†(hlX=> rproc stop 2hmjnhwh›h|juh~}r‡(hŸh hƒ]h‚]h€]h�]h†]uhˆMó h‰hhŠ]rˆh“X=> rproc stop 2r‰…�rŠ}r‹(hlUhmj…ubaubhÊ)�rŒ}r�(hlXiMake sure all the commands are run in the above given sequence. Currently IPC is not supported in U-boot.rŽhmjnhwh›h|hÍh~}r�(h€]h�]h‚]hƒ]h†]uhˆMê h‰hhŠ]r�h“XiMake sure all the commands are run in the above given sequence. Currently IPC is not supported in U-boot.r‘…�r’}r“(hljŽhmjŒubaubjC)�r”}r•(hlUhmjnhwh›h|jZh~}r–(h€]h�]h‚]hƒ]h†]uhˆMí h‰hhŠ]r—jH)�r˜}r™(hlUjLKhmj”hwh›h|hˆh~}rš(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubeubhn)�r›}rœ(hlUhmhshwh›h|h}h~}r�(h€]h�]h‚]hƒ]ržUuboot-spl-debugging-tipsrŸah†]r h6auhˆMð h‰hhŠ]r¡(hŒ)�r¢}r£(hlXUboot SPL Debugging Tipsr¤hmj›hwh›h|h�h~}r¥(h€]h�]h‚]hƒ]h†]uhˆMð h‰hhŠ]r¦h“XUboot SPL Debugging Tipsr§…�r¨}r©(hlj¤hmj¢ubaubhÊ)�rª}r«(hlX¹The following section demonstrates how to connect a board to CCS and load the SPL symbols for debugging. For the experiment below, users are expected to boot their board from a SD card.r¬hmj›hwh›h|hÍh~}r­(h€]h�]h‚]hƒ]h†]uhˆMò h‰hhŠ]r®h“X¹The following section demonstrates how to connect a board to CCS and load the SPL symbols for debugging. For the experiment below, users are expected to boot their board from a SD card.r¯…�r°}r±(hlj¬hmjªubaubhn)�r²}r³(hlUhmj›hwh›h|h}h~}r´(h€]h�]h‚]hƒ]rµUstep-1-downloading-ccsr¶ah†]r·hauhˆMõ h‰hhŠ]r¸(hŒ)�r¹}rº(hlXStep 1: Downloading CCSr»hmj²hwh›h|h�h~}r¼(h€]h�]h‚]hƒ]h†]uhˆMõ h‰hhŠ]r½h“XStep 1: Downloading CCSr¾…�r¿}rÀ(hlj»hmj¹ubaubj)�rÁ}rÂ(hlUhmj²hwh›h|jh~}rÃ(jU.hƒ]h‚]h€]j Uh�]h†]j j uhˆMö h‰hhŠ]rÄj )�rÅ}rÆ(hlXpPlease download the CCS from the following link: http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html hmjÁhwh›h|jh~}rÇ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÈhÊ)�rÉ}rÊ(hlXoPlease download the CCS from the following link: http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.htmlhmjÅhwh›h|hÍh~}rË(h€]h�]h‚]hƒ]h†]uhˆMö hŠ]rÌ(h“X1Please download the CCS from the following link: rÍ…�rÎ}rÏ(hlX1Please download the CCS from the following link: hmjÉubhÓ)�rÐ}rÑ(hlX>http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.htmlrÒh~}rÓ(UrefurijÒhƒ]h‚]h€]h�]h†]uhmjÉhŠ]rÔh“X>http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.htmlrÕ…�rÖ}r×(hlUhmjÐubah|hÜubeubaubaubhÊ)�rØ}rÙ(hlXY**NOTE**: We will be building Uboot on a Linux machine and it is recommended to install CCS on the same operating system (OS). If CCS is not installed on the same OS, CCS will not be able to locate the code files. Please follow the Linux instructions on the following link: http://software-dl.ti.com/ccs/esd/documents/ccs_linux_host_support.htmlrÚhmj²hwh›h|hÍh~}rÛ(h€]h�]h‚]hƒ]h†]uhˆMø h‰hhŠ]rÜ(j)�rÝ}rÞ(hlX**NOTE**h~}rß(h€]h�]h‚]hƒ]h†]uhmjØhŠ]ràh“XNOTErá…�râ}rã(hlUhmjÝubah|j'ubh“X : We will be building Uboot on a Linux machine and it is recommended to install CCS on the same operating system (OS). If CCS is not installed on the same OS, CCS will not be able to locate the code files. Please follow the Linux instructions on the following link: rä…�rå}ræ(hlX : We will be building Uboot on a Linux machine and it is recommended to install CCS on the same operating system (OS). If CCS is not installed on the same OS, CCS will not be able to locate the code files. Please follow the Linux instructions on the following link: hmjØubhÓ)�rç}rè(hlXGhttp://software-dl.ti.com/ccs/esd/documents/ccs_linux_host_support.htmlréh~}rê(Urefurijéhƒ]h‚]h€]h�]h†]uhmjØhŠ]rëh“XGhttp://software-dl.ti.com/ccs/esd/documents/ccs_linux_host_support.htmlrì…�rí}rî(hlUhmjçubah|hÜubeubeubhn)�rï}rð(hlUhmj›hwh›h|h}h~}rñ(h€]h�]h‚]hƒ]ròU+step-2-creating-a-target-configuration-fileróah†]rôh_auhˆMû h‰hhŠ]rõ(hŒ)�rö}r÷(hlX,Step 2: Creating a Target Configuration Filerøhmjïhwh›h|h�h~}rù(h€]h�]h‚]hƒ]h†]uhˆMû h‰hhŠ]rúh“X,Step 2: Creating a Target Configuration Filerû…�rü}rý(hljøhmjöubaubj)�rþ}rÿ(hlUhmjïhwh›h|jh~}r(jU.hƒ]h‚]h€]j Uh�]h†]j j uhˆMý h‰hhŠ]r(j )�r}r(hlX™The first step is to create a target configuration file in CCS. Navigate to "View"-> "Target Configurations": .. Image:: ../images/Uboot_Image1.pnghmjþhwh›h|jh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r(hÊ)�r}r(hlXmThe first step is to create a target configuration file in CCS. Navigate to "View"-> "Target Configurations":rhmjhwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆMý hŠ]r h“XmThe first step is to create a target configuration file in CCS. Navigate to "View"-> "Target Configurations":r …�r }r (hljhmjubaubj>)�r}r(hlUh~}r(h€]h�]h‚]hƒ]h†]uhmjhŠ]rcdocutils.nodes image r)�r}r(hlX%.. Image:: ../images/Uboot_Image1.pngh~}r(UuriX linux/../images/Uboot_Image1.pngrhƒ]h‚]h€]h�]U candidatesr}rU*jsh†]uhmjhŠ]h|Uimagerubah|j[ubeubj )�r}r(hlX„Right click on the "Target Configurations" window and select "New Target Configuration": .. Image:: ../images/Uboot_Image2.pnghmjþhwh›h|jh~}r(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r(hÊ)�r}r(hlXXRight click on the "Target Configurations" window and select "New Target Configuration":r hmjhwh›h|hÍh~}r!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]r"h“XXRight click on the "Target Configurations" window and select "New Target Configuration":r#…�r$}r%(hlj hmjubaubj>)�r&}r'(hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjhŠ]r)j)�r*}r+(hlX%.. Image:: ../images/Uboot_Image2.pngh~}r,(UuriX linux/../images/Uboot_Image2.pngr-hƒ]h‚]h€]h�]j}r.U*j-sh†]uhmj&hŠ]h|jubah|j[ubeubj )�r/}r0(hlXSCreate a name for target configuration: .. Image:: ../images/Uboot_Image3.pnghmjþhwh›h|jh~}r1(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r2(hÊ)�r3}r4(hlX'Create a name for target configuration:r5hmj/hwh›h|hÍh~}r6(h€]h�]h‚]hƒ]h†]uhˆM hŠ]r7h“X'Create a name for target configuration:r8…�r9}r:(hlj5hmj3ubaubj>)�r;}r<(hlUh~}r=(h€]h�]h‚]hƒ]h†]uhmj/hŠ]r>j)�r?}r@(hlX%.. Image:: ../images/Uboot_Image3.pngh~}rA(UuriX linux/../images/Uboot_Image3.pngrBhƒ]h‚]h€]h�]j}rCU*jBsh†]uhmj;hŠ]h|jubah|j[ubeubj )�rD}rE(hlXáSelect the appropriate SoC and JTAG. **Note**: If we select the SoC name, the GEL files will not be loaded. However, if we select the board options, the GEL files will be loaded by default. In the below example, if GPEVM_AM65x or IDK_AM65x is selected, the GEL files are automatically enabled in the configuration. While debugging Uboot, it is recommended to avoid GEL files because Uboot is responsible for initializing the peripherals: .. Image:: ../images/Uboot_Image4.pnghmjþhwh›h|jh~}rF(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rG(hÊ)�rH}rI(hlXµSelect the appropriate SoC and JTAG. **Note**: If we select the SoC name, the GEL files will not be loaded. However, if we select the board options, the GEL files will be loaded by default. In the below example, if GPEVM_AM65x or IDK_AM65x is selected, the GEL files are automatically enabled in the configuration. While debugging Uboot, it is recommended to avoid GEL files because Uboot is responsible for initializing the peripherals:hmjDhwh›h|hÍh~}rJ(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rK(h“X%Select the appropriate SoC and JTAG. rL…�rM}rN(hlX%Select the appropriate SoC and JTAG. hmjHubj)�rO}rP(hlX**Note**h~}rQ(h€]h�]h‚]hƒ]h†]uhmjHhŠ]rRh“XNoterS…�rT}rU(hlUhmjOubah|j'ubh“Xˆ: If we select the SoC name, the GEL files will not be loaded. However, if we select the board options, the GEL files will be loaded by default. In the below example, if GPEVM_AM65x or IDK_AM65x is selected, the GEL files are automatically enabled in the configuration. While debugging Uboot, it is recommended to avoid GEL files because Uboot is responsible for initializing the peripherals:rV…�rW}rX(hlXˆ: If we select the SoC name, the GEL files will not be loaded. However, if we select the board options, the GEL files will be loaded by default. In the below example, if GPEVM_AM65x or IDK_AM65x is selected, the GEL files are automatically enabled in the configuration. While debugging Uboot, it is recommended to avoid GEL files because Uboot is responsible for initializing the peripherals:hmjHubeubj>)�rY}rZ(hlUh~}r[(h€]h�]h‚]hƒ]h†]uhmjDhŠ]r\j)�r]}r^(hlX%.. Image:: ../images/Uboot_Image4.pngh~}r_(UuriX linux/../images/Uboot_Image4.pngr`hƒ]h‚]h€]h�]j}raU*j`sh†]uhmjYhŠ]h|jubah|j[ubeubj )�rb}rc(hlX‰Next, click save and test connection to ensure CCS is able to communicate with the debugger: .. Image:: ../images/Uboot_Image5.png hmjþhwh›h|jh~}rd(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]re(hÊ)�rf}rg(hlX\Next, click save and test connection to ensure CCS is able to communicate with the debugger:rhhmjbhwh›h|hÍh~}ri(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rjh“X\Next, click save and test connection to ensure CCS is able to communicate with the debugger:rk…�rl}rm(hljhhmjfubaubj>)�rn}ro(hlUh~}rp(h€]h�]h‚]hƒ]h†]uhmjbhŠ]rqj)�rr}rs(hlX&.. Image:: ../images/Uboot_Image5.png h~}rt(UuriX linux/../images/Uboot_Image5.pngruhƒ]h‚]h€]h�]j}rvU*jush†]uhmjnhŠ]h|jubah|j[ubeubeubeubhn)�rw}rx(hlUhmj›hwh›h|h}h~}ry(h€]h�]h‚]hƒ]rzUstep-3-loading-symbol-filesr{ah†]r|hauhˆM h‰hhŠ]r}(hŒ)�r~}r(hlXStep 3: Loading Symbol filesr€hmjwhwh›h|h�h~}r�(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]r‚h“XStep 3: Loading Symbol filesrƒ…�r„}r…(hlj€hmj~ubaubhÊ)�r†}r‡(hlXÁBefore the symbols are loaded, a test code will be added to the SPL code. The test code will loop within itself and the only way to break the loop is to change the Program Counter via the CCS. For the current experiment, the AM65EVM is used but the same experiment could be performed on other boards. The following test code is added to the "board_init_f" function in the file /board-support//arch/arm/mach-k3/am6_init.c:rˆhmjwhwh›h|hÍh~}r‰(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]rŠh“XÁBefore the symbols are loaded, a test code will be added to the SPL code. The test code will loop within itself and the only way to break the loop is to change the Program Counter via the CCS. For the current experiment, the AM65EVM is used but the same experiment could be performed on other boards. The following test code is added to the "board_init_f" function in the file /board-support//arch/arm/mach-k3/am6_init.c:r‹…�rŒ}r�(hljˆhmj†ubaubjr)�rŽ}r�(hlX×store_boot_index_from_rom(); /* Make all control module registers accessible */ ctrl_mmr_unlock(); asm("test: nop"); asm(" nop"); asm(" b test "); asm(" nop"); asm(" nop"); setup_am654_navss_northbridge();hmjwhwh›h|juh~}r�(jw‰jxXchŸh hƒ]h‚]h€]jy}h�]h†]uhˆM h‰hhŠ]r‘h“X×store_boot_index_from_rom(); /* Make all control module registers accessible */ ctrl_mmr_unlock(); asm("test: nop"); asm(" nop"); asm(" b test "); asm(" nop"); asm(" nop"); setup_am654_navss_northbridge();r’…�r“}r”(hlUhmjŽubaubhÊ)�r•}r–(hlX>If a user is working with AM335x/AM437x/AM57xx, the test code could be added in the "early_system_init" function in the file /board-support//arch/arm/mach-omap2/hwinit-common.c. The location of the test code on all platforms will vary based on the section of the SPL we are trying to debug.r—hmjwhwh›h|hÍh~}r˜(h€]h�]h‚]hƒ]h†]uhˆM! h‰hhŠ]r™h“X>If a user is working with AM335x/AM437x/AM57xx, the test code could be added in the "early_system_init" function in the file /board-support//arch/arm/mach-omap2/hwinit-common.c. The location of the test code on all platforms will vary based on the section of the SPL we are trying to debug.rš…�r›}rœ(hlj—hmj•ubaubj)�r�}rž(hlUhmjwhwh›h|jh~}rŸ(jU.hƒ]h‚]h€]j Uh�]h†]j j uhˆM# h‰hhŠ]r (j )�r¡}r¢(hlXThere are two methods of compiling Uboot: `method1 `__ and `method2 `__. Both methods will generate the necessary symbol file required for SPL debugging. hmj�hwh›h|jh~}r£(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¤hÊ)�r¥}r¦(hlXThere are two methods of compiling Uboot: `method1 `__ and `method2 `__. Both methods will generate the necessary symbol file required for SPL debugging.hmj¡hwh›h|hÍh~}r§(h€]h�]h‚]hƒ]h†]uhˆM# hŠ]r¨(h“X*There are two methods of compiling Uboot: r©…�rª}r«(hlX*There are two methods of compiling Uboot: hmj¥ubhÓ)�r¬}r­(hlXD`method1 `__h~}r®(UnameXmethod1h×X6Overview_Getting_Started_Guide.html#top-level-makefilehƒ]h‚]h€]h�]h†]uhmj¥hŠ]r¯h“Xmethod1r°…�r±}r²(hlUhmj¬ubah|hÜubh“X and r³…�r´}rµ(hlX and hmj¥ubhÓ)�r¶}r·(hlXI`method2 `__h~}r¸(UnameXmethod2h×X;Foundational_Components_U-Boot.html#building-mlo-and-u-boothƒ]h‚]h€]h�]h†]uhmj¥hŠ]r¹h“Xmethod2rº…�r»}r¼(hlUhmj¶ubah|hÜubh“XR. Both methods will generate the necessary symbol file required for SPL debugging.r½…�r¾}r¿(hlXR. Both methods will generate the necessary symbol file required for SPL debugging.hmj¥ubeubaubj )�rÀ}rÁ(hlX On AM335x/AM437x/AM57xx, the symbol file is located in the following directory "/board-support//spl/u-boot-spl". For AM654x, the symbol file is located in the following directory "/board-support/u-boot_build/r5/spl/u-boot-spl". hmj�hwh›h|jh~}rÂ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÃhÊ)�rÄ}rÅ(hlX On AM335x/AM437x/AM57xx, the symbol file is located in the following directory "/board-support//spl/u-boot-spl". For AM654x, the symbol file is located in the following directory "/board-support/u-boot_build/r5/spl/u-boot-spl".rÆhmjÀhwh›h|hÍh~}rÇ(h€]h�]h‚]hƒ]h†]uhˆM% hŠ]rÈh“X On AM335x/AM437x/AM57xx, the symbol file is located in the following directory "/board-support//spl/u-boot-spl". For AM654x, the symbol file is located in the following directory "/board-support/u-boot_build/r5/spl/u-boot-spl".rÉ…�rÊ}rË(hljÆhmjÄubaubaubj )�rÌ}rÍ(hlXÒAfter building Uboot, copy the relevant images on the SD card. For AM335x/AM437x/AM57xx, copy MLO and u-boot.img to the SD card. For AM65x, copy sysfw.itb, tiboot3.bin, tispl.bin and u-boot.img to the SD card. hmj�hwh›h|jh~}rÎ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÏhÊ)�rÐ}rÑ(hlXÑAfter building Uboot, copy the relevant images on the SD card. For AM335x/AM437x/AM57xx, copy MLO and u-boot.img to the SD card. For AM65x, copy sysfw.itb, tiboot3.bin, tispl.bin and u-boot.img to the SD card.rÒhmjÌhwh›h|hÍh~}rÓ(h€]h�]h‚]hƒ]h†]uhˆM' hŠ]rÔh“XÑAfter building Uboot, copy the relevant images on the SD card. For AM335x/AM437x/AM57xx, copy MLO and u-boot.img to the SD card. For AM65x, copy sysfw.itb, tiboot3.bin, tispl.bin and u-boot.img to the SD card.rÕ…�rÖ}r×(hljÒhmjÐubaubaubj )�rØ}rÙ(hlX,Install the SD card and power on the board. hmj�hwh›h|jh~}rÚ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÛhÊ)�rÜ}rÝ(hlX+Install the SD card and power on the board.rÞhmjØhwh›h|hÍh~}rß(h€]h�]h‚]hƒ]h†]uhˆM) hŠ]ràh“X+Install the SD card and power on the board.rá…�râ}rã(hljÞhmjÜubaubaubj )�rä}rå(hlXkOn CCS, launch the target configuration file created in Step2: .. Image:: ../images/Uboot_Image6.png hmj�hwh›h|jh~}ræ(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rç(hÊ)�rè}ré(hlX>On CCS, launch the target configuration file created in Step2:rêhmjähwh›h|hÍh~}rë(h€]h�]h‚]hƒ]h†]uhˆM+ hŠ]rìh“X>On CCS, launch the target configuration file created in Step2:rí…�rî}rï(hljêhmjèubaubj>)�rð}rñ(hlUh~}rò(h€]h�]h‚]hƒ]h†]uhmjähŠ]rój)�rô}rõ(hlX&.. Image:: ../images/Uboot_Image6.png h~}rö(UuriX linux/../images/Uboot_Image6.pngr÷hƒ]h‚]h€]h�]j}røU*j÷sh†]uhmjðhŠ]h|jubah|j[ubeubj )�rù}rú(hlXAfter successful launch, connect to one of the ARM cores. On AM65x, the inital SPL code is executed on the R5 so the user would connect to the R5 core. For the AM335x/AM437/AM57xx, please connect to the A8/A9/A15 core. .. Image:: ../images/Uboot_Image7.png hmj�hwh›h|jh~}rû(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rü(hÊ)�rý}rþ(hlXÚAfter successful launch, connect to one of the ARM cores. On AM65x, the inital SPL code is executed on the R5 so the user would connect to the R5 core. For the AM335x/AM437/AM57xx, please connect to the A8/A9/A15 core.rÿhmjùhwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM/ hŠ]r h“XÚAfter successful launch, connect to one of the ARM cores. On AM65x, the inital SPL code is executed on the R5 so the user would connect to the R5 core. For the AM335x/AM437/AM57xx, please connect to the A8/A9/A15 core.r …�r }r (hljÿhmjýubaubj>)�r }r (hlUh~}r (h€]h�]h‚]hƒ]h†]uhmjùhŠ]r j)�r }r (hlX&.. Image:: ../images/Uboot_Image7.png h~}r (UuriX linux/../images/Uboot_Image7.pngr hƒ]h‚]h€]h�]j}r U*j sh†]uhmj hŠ]h|jubah|j[ubeubj )�r }r (hlXÍAfter connecting to the core, click on "Run"-> "Load"->"Load Symbols...": .. Image:: ../images/Uboot_Image8.png .. Image:: ../images/Uboot_Image9.png .. Image:: ../images/Uboot_Image10.png hmj�hwh›h|jh~}r (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r (hÊ)�r }r (hlXIAfter connecting to the core, click on "Run"-> "Load"->"Load Symbols...":r hmj hwh›h|hÍh~}r (h€]h�]h‚]hƒ]h†]uhˆM3 hŠ]r h“XIAfter connecting to the core, click on "Run"-> "Load"->"Load Symbols...":r …�r }r (hlj hmj ubaubj>)�r }r (hlUh~}r (h€]h�]h‚]hƒ]h†]uhmj hŠ]r (j)�r }r (hlX%.. Image:: ../images/Uboot_Image8.pngh~}r (UuriX linux/../images/Uboot_Image8.pngr! hƒ]h‚]h€]h�]j}r" U*j! sh†]uhmj hŠ]h|jubj)�r# }r$ (hlX%.. Image:: ../images/Uboot_Image9.pngh~}r% (UuriX linux/../images/Uboot_Image9.pngr& hƒ]h‚]h€]h�]j}r' U*j& sh†]uhmj hŠ]h|jubj)�r( }r) (hlX'.. Image:: ../images/Uboot_Image10.png h~}r* (UuriX!linux/../images/Uboot_Image10.pngr+ hƒ]h‚]h€]h�]j}r, U*j+ sh†]uhmj hŠ]h|jubeh|j[ubeubj )�r- }r. (hlXŸAfter loading the code, CCS should find the source code file and it should be stuck at the code previously added: .. Image:: ../images/Uboot_Image11.png hmj�hwh›h|jh~}r/ (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r0 (hÊ)�r1 }r2 (hlXqAfter loading the code, CCS should find the source code file and it should be stuck at the code previously added:r3 hmj- hwh›h|hÍh~}r4 (h€]h�]h‚]hƒ]h†]uhˆM9 hŠ]r5 h“XqAfter loading the code, CCS should find the source code file and it should be stuck at the code previously added:r6 …�r7 }r8 (hlj3 hmj1 ubaubj>)�r9 }r: (hlUh~}r; (h€]h�]h‚]hƒ]h†]uhmj- hŠ]r< j)�r= }r> (hlX'.. Image:: ../images/Uboot_Image11.png h~}r? (UuriX!linux/../images/Uboot_Image11.pngr@ hƒ]h‚]h€]h�]j}rA U*j@ sh†]uhmj9 hŠ]h|jubah|j[ubeubj )�rB }rC (hlXzTo break out of the loop, change the program counter in the Register Window: .. Image:: ../images/Uboot_Image12.png hmj�hwh›h|jh~}rD (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rE (hÊ)�rF }rG (hlXLTo break out of the loop, change the program counter in the Register Window:rH hmjB hwh›h|hÍh~}rI (h€]h�]h‚]hƒ]h†]uhˆM= hŠ]rJ h“XLTo break out of the loop, change the program counter in the Register Window:rK …�rL }rM (hljH hmjF ubaubj>)�rN }rO (hlUh~}rP (h€]h�]h‚]hƒ]h†]uhmjB hŠ]rQ j)�rR }rS (hlX'.. Image:: ../images/Uboot_Image12.png h~}rT (UuriX!linux/../images/Uboot_Image12.pngrU hƒ]h‚]h€]h�]j}rV U*jU sh†]uhmjN hŠ]h|jubah|j[ubeubeubhÊ)�rW }rX (hlXaAt this point, the user has the ability to step through the SPL code and debug issues in the SPL.rY hmjwhwh›h|hÍh~}rZ (h€]h�]h‚]hƒ]h†]uhˆMA h‰hhŠ]r[ h“XaAt this point, the user has the ability to step through the SPL code and debug issues in the SPL.r\ …�r] }r^ (hljY hmjW ubaubhÊ)�r_ }r` (hlX­**NOTE**: On K3 family of devices such as AM654x, a watchdog timer part of the DMSC is enabled by default by the ROM bootcode with a timeout of 3 minutes. The watchdog timer is serviced by System Firmware (SYSFW) during normal operation. If one is debugging SPL before the SYSFW is loaded, the watchdog timer will not get serviced automatically and the debug session will reset after 3 minutes. Therefore, it is recommended to start debugging SPL code only after the startup of SYSFW to avoid running into the watchdog timer reset. Similarly, the watchdog timer is also enabled on the AM335x/AM437x/AM57xx devices and please refer to the "Disable_Watchdog()" function in our gel files.ra hmjwhwh›h|hÍh~}rb (h€]h�]h‚]hƒ]h†]uhˆMC h‰hhŠ]rc (j)�rd }re (hlX**NOTE**h~}rf (h€]h�]h‚]hƒ]h†]uhmj_ hŠ]rg h“XNOTErh …�ri }rj (hlUhmjd ubah|j'ubh“X¥: On K3 family of devices such as AM654x, a watchdog timer part of the DMSC is enabled by default by the ROM bootcode with a timeout of 3 minutes. The watchdog timer is serviced by System Firmware (SYSFW) during normal operation. If one is debugging SPL before the SYSFW is loaded, the watchdog timer will not get serviced automatically and the debug session will reset after 3 minutes. Therefore, it is recommended to start debugging SPL code only after the startup of SYSFW to avoid running into the watchdog timer reset. Similarly, the watchdog timer is also enabled on the AM335x/AM437x/AM57xx devices and please refer to the "Disable_Watchdog()" function in our gel files.rk …�rl }rm (hlX¥: On K3 family of devices such as AM654x, a watchdog timer part of the DMSC is enabled by default by the ROM bootcode with a timeout of 3 minutes. The watchdog timer is serviced by System Firmware (SYSFW) during normal operation. If one is debugging SPL before the SYSFW is loaded, the watchdog timer will not get serviced automatically and the debug session will reset after 3 minutes. Therefore, it is recommended to start debugging SPL code only after the startup of SYSFW to avoid running into the watchdog timer reset. Similarly, the watchdog timer is also enabled on the AM335x/AM437x/AM57xx devices and please refer to the "Disable_Watchdog()" function in our gel files.hmj_ ubeubeubeubeubhwh›h|h}h~}rn (h€]h�]h‚]hƒ]ro Ugeneral-informationrp ah†]rq h!auhˆK.h‰hhŠ]rr (hŒ)�rs }rt (hlXGeneral Informationru hmhqhwh›h|h�h~}rv (h€]h�]h‚]hƒ]h†]uhˆK.h‰hhŠ]rw h“XGeneral Informationrx …�ry }rz (hlju hmjs ubaubhn)�r{ }r| (hlUhmhqhwh›h|h}h~}r} (h€]h�]h‚]hƒ]r~ Ugetting-the-u-boot-source-coder ah†]r€ hGauhˆK1h‰hhŠ]r� (hŒ)�r‚ }rƒ (hlXGetting the U-Boot Source Coder„ hmj{ hwh›h|h�h~}r… (h€]h�]h‚]hƒ]h†]uhˆK1h‰hhŠ]r† h“XGetting the U-Boot Source Coder‡ …�rˆ }r‰ (hlj„ hmj‚ ubaubjC)�rŠ }r‹ (hlUhmj{ hwh›h|jZh~}rŒ (h€]h�]h‚]hƒ]h†]uhˆK3h‰hhŠ]r� (jH)�rŽ }r� (hlX/The easiest way to get access to the U-boot source code is by downloading and installing the Processor SDK Linux. Once installed, the U-Boot source code is included in the SDK's board-support directory. For your convenience the sources also includes the U-Boot's git repository including commit history.r� jLKhmjŠ hwh›h|hˆh~}r‘ (h€]h�]h‚]hƒ]h†]uhˆK7h‰hhŠ]r’ h“X/The easiest way to get access to the U-boot source code is by downloading and installing the Processor SDK Linux. Once installed, the U-Boot source code is included in the SDK's board-support directory. For your convenience the sources also includes the U-Boot's git repository including commit history.r“ …�r” }r• (hlj� hmjŽ ubaubjH)�r– }r— (hlX?Alternatively, U-Boot sources can directly be fetched from GIT.r˜ jLKhmjŠ hwh›h|hˆh~}r™ (h€]h�]h‚]hƒ]h†]uhˆK8h‰hhŠ]rš h“X?Alternatively, U-Boot sources can directly be fetched from GIT.r› …�rœ }r� (hlj˜ hmj– ubaubeubj>)�rž }rŸ (hlUhmj{ hwNh|j[h~}r  (h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¡ hÃ)�r¢ }r£ (hlUhmjž hwh›h|hÆh~}r¤ (hÈXCONFIG_sdk in ('PLSDK')hƒ]h‚]h€]h�]h†]uhˆK:h‰hhŠ]r¥ hÊ)�r¦ }r§ (hlX—The GIT repo URL, branch and commit id can be found in the `Processor\_SDK\_Linux\_Release\_Notes `__hmj¢ hwh›h|hÍh~}r¨ (h€]h�]h‚]hƒ]h†]uhˆK`__h~}r¯ (UnameX!Processor_SDK_Linux_Release_Notesh×X0Release_Specific_PLSDK_Release_Notes.html#u-boothƒ]h‚]h€]h�]h†]uhmj¦ hŠ]r° h“X!Processor_SDK_Linux_Release_Notesr± …�r² }r³ (hlUhmj­ ubah|hÜubeubaubaubjC)�r´ }rµ (hlUhmj{ hwh›h|jZh~}r¶ (h€]h�]h‚]hƒ]h†]uhˆK?h‰hhŠ]r· jH)�r¸ }r¹ (hlUjLKhmj´ hwh›h|hˆh~}rº (h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubeubhohn)�r» }r¼ (hlUhmhqhwh›h|h}h~}r½ (h€]h�]h‚]hƒ]r¾ U@build-and-boot-flow-on-64-bit-platforms-based-on-k3-architecturer¿ ah†]rÀ h4auhˆKóh‰hhŠ]rÁ (hŒ)�r }rà (hlXBBuild and Boot Flow on 64-bit platforms (based on K3 architecture)rÄ hmj» hwh›h|h�h~}rÅ (h€]h�]h‚]hƒ]h†]uhˆKóh‰hhŠ]rÆ h“XBBuild and Boot Flow on 64-bit platforms (based on K3 architecture)rÇ …�rÈ }rÉ (hljÄ hmj ubaubhÊ)�rÊ }rË (hlXÃSeveral prebuilt images are required from the TI Processor SDK for building U-Boot on K3 based platforms. Go `here `__ to download and install the SDK.hmj» hwh›h|hÍh~}rÌ (h€]h�]h‚]hƒ]h†]uhˆKõh‰hhŠ]rÍ (h“XmSeveral prebuilt images are required from the TI Processor SDK for building U-Boot on K3 based platforms. Go rÎ …�rÏ }rÐ (hlXmSeveral prebuilt images are required from the TI Processor SDK for building U-Boot on K3 based platforms. Go hmjÊ ubhÓ)�rÑ }rÒ (hlX5`here `__h~}rÓ (UnameXhereh×X*Overview/Download_and_Install_the_SDK.htmlhƒ]h‚]h€]h�]h†]uhmjÊ hŠ]rÔ h“XhererÕ …�rÖ }r× (hlUhmjÑ ubah|hÜubh“X! to download and install the SDK.rØ …�rÙ }rÚ (hlX! to download and install the SDK.hmjÊ ubeubhÊ)�rÛ }rÜ (hlX¼TI-u-boot is included in the SDK in /board-support. Ensure that the u-boot version matches the `build information `__.hmj» hwh›h|hÍh~}rÝ (h€]h�]h‚]hƒ]h†]uhˆKøh‰hhŠ]rÞ (h“XnTI-u-boot is included in the SDK in /board-support. Ensure that the u-boot version matches the rß …�rà }rá (hlXnTI-u-boot is included in the SDK in /board-support. Ensure that the u-boot version matches the hmjÛ ubhÓ)�râ }rã (hlXM`build information `__h~}rä (UnameXbuild informationh×X5Release_Specific_Release_Notes.html#build-informationhƒ]h‚]h€]h�]h†]uhmjÛ hŠ]rå h“Xbuild informationræ …�rç }rè (hlUhmjâ ubah|hÜubh“X.…�ré }rê (hlX.hmjÛ ubeubjC)�rë }rì (hlXSetting the tool chain pathrí hmj» hwh›h|jGh~}rî (hƒ]rï U setting-the-full-tool-chain-pathrð ah‚]h€]h�]h†]rñ h)auhˆNh‰hhŠ]rò h“XSetting the tool chain pathró …�rô }rõ (hljí hmjë ubaubhÊ)�rö }r÷ (hlX�We strongly recommend using the toolchain that came with the Linux Core release that corresponds to this U-Boot release. For e.g:rø hmj» hwh›h|hÍh~}rù (h€]h�]h‚]hƒ]h†]uhˆKþh‰hhŠ]rú h“X�We strongly recommend using the toolchain that came with the Linux Core release that corresponds to this U-Boot release. For e.g:rû …�rü }rý (hljø hmjö ubaubjr)�rþ }rÿ (hlX“export PATH=$HOME/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:$PATH export PATH=$HOME/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin:$PATHhmj» hwh›h|juh~}r!(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r!h“X“export PATH=$HOME/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:$PATH export PATH=$HOME/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin:$PATHr!…�r!}r!(hlUhmjþ ubaubjC)�r!}r!(hlXCompiling R5 and ARM64 imagesr!hmj» hwh›h|jGh~}r!(hƒ]r !Ucompiling-r5-and-arm64-imagesr !ah‚]h€]h�]h†]r !h@auhˆNh‰hhŠ]r !h“XCompiling R5 and ARM64 imagesr !…�r!}r!(hlj!hmj!ubaubhÊ)�r!}r!(hlXMUse the following table to determine what defconfig to use to configure with:r!hmj» hwh›h|hÍh~}r!(h€]h�]h‚]hƒ]h†]uhˆM h‰hhŠ]r!h“XMUse the following table to determine what defconfig to use to configure with:r!…�r!}r!(hlj!hmj!ubaubj)�r!}r!(hlUhmj» hwh›h|jh~}r!(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r!j)�r!}r!(hlUh~}r!(hƒ]h‚]h€]h�]h†]UcolsKuhmj!hŠ]r!(j)�r !}r!!(hlUh~}r"!(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj!hŠ]h|j"ubj)�r#!}r$!(hlUh~}r%!(hƒ]h‚]h€]h�]h†]UcolwidthK!uhmj!hŠ]h|j"ubj)�r&!}r'!(hlUh~}r(!(hƒ]h‚]h€]h�]h†]UcolwidthK uhmj!hŠ]h|j"ubj)�r)!}r*!(hlUh~}r+!(hƒ]h‚]h€]h�]h†]UcolwidthK uhmj!hŠ]h|j"ubj)�r,!}r-!(hlUh~}r.!(hƒ]h‚]h€]h�]h†]UcolwidthK uhmj!hŠ]h|j"ubj)�r/!}r0!(hlUh~}r1!(hƒ]h‚]h€]h�]h†]UcolwidthK uhmj!hŠ]h|j"ubj/)�r2!}r3!(hlUh~}r4!(h€]h�]h‚]hƒ]h†]uhmj!hŠ]r5!j4)�r6!}r7!(hlUh~}r8!(h€]h�]h‚]hƒ]h†]uhmj2!hŠ]r9!(j9)�r:!}r;!(hlUh~}r!}r?!(hlXBoardr@!hmj:!hwh›h|hÍh~}rA!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rB!h“XBoardrC!…�rD!}rE!(hlj@!hmj>!ubaubah|jFubj9)�rF!}rG!(hlUh~}rH!(h€]h�]h‚]hƒ]h†]uhmj6!hŠ]rI!hÊ)�rJ!}rK!(hlX SD/eMMC BootrL!hmjF!hwh›h|hÍh~}rM!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rN!h“X SD/eMMC BootrO!…�rP!}rQ!(hljL!hmjJ!ubaubah|jFubj9)�rR!}rS!(hlUh~}rT!(h€]h�]h‚]hƒ]h†]uhmj6!hŠ]rU!hÊ)�rV!}rW!(hlX UART bootrX!hmjR!hwh›h|hÍh~}rY!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rZ!h“X UART bootr[!…�r\!}r]!(hljX!hmjV!ubaubah|jFubj9)�r^!}r_!(hlUh~}r`!(h€]h�]h‚]hƒ]h†]uhmj6!hŠ]ra!hÊ)�rb!}rc!(hlX OSPI bootrd!hmj^!hwh›h|hÍh~}re!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rf!h“X OSPI bootrg!…�rh!}ri!(hljd!hmjb!ubaubah|jFubj9)�rj!}rk!(hlUh~}rl!(h€]h�]h‚]hƒ]h†]uhmj6!hŠ]rm!hÊ)�rn!}ro!(hlX Hyper Flashrp!hmjj!hwh›h|hÍh~}rq!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]rr!h“X Hyper Flashrs!…�rt!}ru!(hljp!hmjn!ubaubah|jFubj9)�rv!}rw!(hlUh~}rx!(h€]h�]h‚]hƒ]h†]uhmj6!hŠ]ry!hÊ)�rz!}r{!(hlXUSB DFUr|!hmjv!hwh›h|hÍh~}r}!(h€]h�]h‚]hƒ]h†]uhˆM hŠ]r~!h“XUSB DFUr!…�r€!}r�!(hlj|!hmjz!ubaubah|jFubeh|jwubah|jxubjy)�r‚!}rƒ!(hlUh~}r„!(h€]h�]h‚]hƒ]h†]uhmj!hŠ]r…!(j4)�r†!}r‡!(hlUh~}rˆ!(h€]h�]h‚]hƒ]h†]uhmj‚!hŠ]r‰!(j9)�rŠ!}r‹!(hlUh~}rŒ!(h€]h�]h‚]hƒ]h†]uhmj†!hŠ]r�!hÊ)�rŽ!}r�!(hlX AM65x EVM/IDKr�!hmjŠ!hwh›h|hÍh~}r‘!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r’!h“X AM65x EVM/IDKr“!…�r”!}r•!(hlj�!hmjŽ!ubaubah|jFubj9)�r–!}r—!(hlUh~}r˜!(h€]h�]h‚]hƒ]h†]uhmj†!hŠ]r™!hÊ)�rš!}r›!(hlX4am65x\_evm\_r5\_defconfig am65x\_evm\_a53\_defconfighmj–!hwh›h|hÍh~}rœ!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r�!h“X.am65x_evm_r5_defconfig am65x_evm_a53_defconfigrž!…�rŸ!}r !(hlX4am65x\_evm\_r5\_defconfig am65x\_evm\_a53\_defconfighmjš!ubaubah|jFubj9)�r¡!}r¢!(hlUh~}r£!(h€]h�]h‚]hƒ]h†]uhmj†!hŠ]r¤!hÊ)�r¥!}r¦!(hlX4am65x\_evm\_r5\_defconfig am65x\_evm\_a53\_defconfighmj¡!hwh›h|hÍh~}r§!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r¨!h“X.am65x_evm_r5_defconfig am65x_evm_a53_defconfigr©!…�rª!}r«!(hlX4am65x\_evm\_r5\_defconfig am65x\_evm\_a53\_defconfighmj¥!ubaubah|jFubj9)�r¬!}r­!(hlUh~}r®!(h€]h�]h‚]hƒ]h†]uhmj†!hŠ]r¯!hÊ)�r°!}r±!(hlX3am65x\_evm\_r5_defconfig am65x\_evm\_a53\_defconfighmj¬!hwh›h|hÍh~}r²!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r³!h“X.am65x_evm_r5_defconfig am65x_evm_a53_defconfigr´!…�rµ!}r¶!(hlX3am65x\_evm\_r5_defconfig am65x\_evm\_a53\_defconfighmj°!ubaubah|jFubj9)�r·!}r¸!(hlUh~}r¹!(h€]h�]h‚]hƒ]h†]uhmj†!hŠ]h|jFubj9)�rº!}r»!(hlUh~}r¼!(h€]h�]h‚]hƒ]h†]uhmj†!hŠ]h|jFubeh|jwubj4)�r½!}r¾!(hlUh~}r¿!(h€]h�]h‚]hƒ]h†]uhmj‚!hŠ]rÀ!(j9)�rÁ!}rÂ!(hlUh~}rÃ!(h€]h�]h‚]hƒ]h†]uhmj½!hŠ]rÄ!hÊ)�rÅ!}rÆ!(hlX J721E EVMrÇ!hmjÁ!hwh›h|hÍh~}rÈ!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]rÉ!h“X J721E EVMrÊ!…�rË!}rÌ!(hljÇ!hmjÅ!ubaubah|jFubj9)�rÍ!}rÎ!(hlUh~}rÏ!(h€]h�]h‚]hƒ]h†]uhmj½!hŠ]rÐ!hÊ)�rÑ!}rÒ!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjÍ!hwh›h|hÍh~}rÓ!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]rÔ!h“X.j721e_evm_r5_defconfig j721e_evm_a72_defconfigrÕ!…�rÖ!}r×!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjÑ!ubaubah|jFubj9)�rØ!}rÙ!(hlUh~}rÚ!(h€]h�]h‚]hƒ]h†]uhmj½!hŠ]rÛ!hÊ)�rÜ!}rÝ!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjØ!hwh›h|hÍh~}rÞ!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]rß!h“X.j721e_evm_r5_defconfig j721e_evm_a72_defconfigrà!…�rá!}râ!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjÜ!ubaubah|jFubj9)�rã!}rä!(hlUh~}rå!(h€]h�]h‚]hƒ]h†]uhmj½!hŠ]ræ!hÊ)�rç!}rè!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjã!hwh›h|hÍh~}ré!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]rê!h“X.j721e_evm_r5_defconfig j721e_evm_a72_defconfigrë!…�rì!}rí!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjç!ubaubah|jFubj9)�rî!}rï!(hlUh~}rð!(h€]h�]h‚]hƒ]h†]uhmj½!hŠ]rñ!hÊ)�rò!}ró!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjî!hwh›h|hÍh~}rô!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]rõ!h“X.j721e_evm_r5_defconfig j721e_evm_a72_defconfigrö!…�r÷!}rø!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjò!ubaubah|jFubj9)�rù!}rú!(hlUh~}rû!(h€]h�]h‚]hƒ]h†]uhmj½!hŠ]rü!hÊ)�rý!}rþ!(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjù!hwh›h|hÍh~}rÿ!(h€]h�]h‚]hƒ]h†]uhˆMhŠ]r"h“X.j721e_evm_r5_defconfig j721e_evm_a72_defconfigr"…�r"}r"(hlX4j721e\_evm\_r5\_defconfig j721e\_evm\_a72\_defconfighmjý!ubaubah|jFubeh|jwubeh|j¹ubeh|jºubaubhÊ)�r"}r"(hlX�Below are the steps for building images for AM65x IDK (substitute with the right config for the board that you are building for).r"hmj» hwh›h|hÍh~}r"(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r"h“X�Below are the steps for building images for AM65x IDK (substitute with the right config for the board that you are building for).r "…�r "}r "(hlj"hmj"ubaubhÊ)�r "}r "(hlX**R5**r"hmj» hwh›h|hÍh~}r"(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r"j)�r"}r"(hlj"h~}r"(h€]h�]h‚]hƒ]h†]uhmj "hŠ]r"h“XR5r"…�r"}r"(hlUhmj"ubah|j'ubaubjr)�r"}r"(hlX¬$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am65x_evm_r5_defconfig O=/r5 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=/r5hmj» hwh›h|juh~}r"(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMh‰hhŠ]r"h“X¬$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am65x_evm_r5_defconfig O=/r5 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=/r5r"…�r"}r"(hlUhmj"ubaubhÊ)�r"}r "(hlX **ARM64**r!"hmj» hwh›h|hÍh~}r""(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r#"j)�r$"}r%"(hlj!"h~}r&"(h€]h�]h‚]hƒ]h†]uhmj"hŠ]r'"h“XARM64r("…�r)"}r*"(hlUhmj$"ubah|j'ubaubjr)�r+"}r,"(hlX!$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- am65x_evm_a53_defconfig O=/a53 $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- ATF=/board-support/prebuilt-images/bl31.bin TEE=/board-support/prebuilt-images/bl32.bin O=/a53hmj» hwh›h|juh~}r-"(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆM!h‰hhŠ]r."h“X!$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- am65x_evm_a53_defconfig O=/a53 $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- ATF=/board-support/prebuilt-images/bl31.bin TEE=/board-support/prebuilt-images/bl32.bin O=/a53r/"…�r0"}r1"(hlUhmj+"ubaubjC)�r2"}r3"(hlX Target Imagesr4"hmj» hwh›h|jGh~}r5"(h€]h�]h‚]hƒ]h†]uhˆM'h‰hhŠ]r6"h“X Target Imagesr7"…�r8"}r9"(hlj4"hmj2"ubaubhÊ)�r:"}r;"(hlX·Copy the below images to the boot partition of an SD card and boot. Instructions to format the SD card can be found `here `__.hmj» hwh›h|hÍh~}r<"(h€]h�]h‚]hƒ]h†]uhˆM(h‰hhŠ]r="(h“XtCopy the below images to the boot partition of an SD card and boot. Instructions to format the SD card can be found r>"…�r?"}r@"(hlXtCopy the below images to the boot partition of an SD card and boot. Instructions to format the SD card can be found hmj:"ubhÓ)�rA"}rB"(hlXB`here `__h~}rC"(UnameXhereh×X7Overview/Processor_SDK_Linux_create_SD_card_script.htmlhƒ]h‚]h€]h�]h†]uhmj:"hŠ]rD"h“XhererE"…�rF"}rG"(hlUhmjA"ubah|hÜubh“X.…�rH"}rI"(hlX.hmj:"ubeubj#)�rJ"}rK"(hlUhmj» hwh›h|j&h~}rL"(j(X-hƒ]h‚]h€]h�]h†]uhˆM+h‰hhŠ]rM"(j )�rN"}rO"(hlX&tiboot3.bin from /r5rP"hmjJ"hwh›h|jh~}rQ"(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rR"hÊ)�rS"}rT"(hljP"hmjN"hwh›h|hÍh~}rU"(h€]h�]h‚]hƒ]h†]uhˆM+hŠ]rV"h“X&tiboot3.bin from /r5rW"…�rX"}rY"(hljP"hmjS"ubaubaubj )�rZ"}r["(hlX1tispl.bin, u-boot.img from /a53r\"hmjJ"hwh›h|jh~}r]"(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r^"hÊ)�r_"}r`"(hlj\"hmjZ"hwh›h|hÍh~}ra"(h€]h�]h‚]hƒ]h†]uhˆM,hŠ]rb"h“X1tispl.bin, u-boot.img from /a53rc"…�rd"}re"(hlj\"hmj_"ubaubaubj )�rf"}rg"(hlX>sysfw.itb from /board-support/prebuilt-images/ hmjJ"hwh›h|jh~}rh"(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]ri"hÊ)�rj"}rk"(hlX=sysfw.itb from /board-support/prebuilt-images/rl"hmjf"hwh›h|hÍh~}rm"(h€]h�]h‚]hƒ]h†]uhˆM-hŠ]rn"h“X=sysfw.itb from /board-support/prebuilt-images/ro"…�rp"}rq"(hljl"hmjj"ubaubaubeubjC)�rr"}rs"(hlX Image Formatsrt"hmj» hwh›h|jGh~}ru"(h€]h�]h‚]hƒ]h†]uhˆM0h‰hhŠ]rv"h“X Image Formatsrw"…�rx"}ry"(hljt"hmjr"ubaubj#)�rz"}r{"(hlUhmj» hwh›h|j&h~}r|"(j(X-hƒ]h‚]h€]h�]h†]uhˆM1h‰hhŠ]r}"j )�r~"}r"(hlX tiboot3.bin hmjz"hwh›h|jh~}r€"(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r�"hÊ)�r‚"}rƒ"(hlX tiboot3.binr„"hmj~"hwh›h|hÍh~}r…"(h€]h�]h‚]hƒ]h†]uhˆM1hŠ]r†"h“X tiboot3.binr‡"…�rˆ"}r‰"(hlj„"hmj‚"ubaubaubaubjr)�rŠ"}r‹"(hlX¹+-----------------------+ | X.509 | | Certificate | | +-------------------+ | | | | | | | R5 | | | | u-boot-spl.bin | | | | | | | +-------------------+ | | | | | | | FIT header | | | | +---------------+ | | | | | | | | | | | DTB 1...N | | | | | +---------------+ | | | +-------------------+ | +-----------------------+hmj» hwh›h|juh~}rŒ"(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆM3h‰hhŠ]r�"h“X¹+-----------------------+ | X.509 | | Certificate | | +-------------------+ | | | | | | | R5 | | | | u-boot-spl.bin | | | | | | | +-------------------+ | | | | | | | FIT header | | | | +---------------+ | | | | | | | | | | | DTB 1...N | | | | | +---------------+ | | | +-------------------+ | +-----------------------+rŽ"…�r�"}r�"(hlUhmjŠ"ubaubj#)�r‘"}r’"(hlUhmj» hwh›h|j&h~}r“"(j(X-hƒ]h‚]h€]h�]h†]uhˆMHh‰hhŠ]r”"j )�r•"}r–"(hlX tispl.bin hmj‘"hwh›h|jh~}r—"(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r˜"hÊ)�r™"}rš"(hlX tispl.binr›"hmj•"hwh›h|hÍh~}rœ"(h€]h�]h‚]hƒ]h†]uhˆMHhŠ]r�"h“X tispl.binrž"…�rŸ"}r "(hlj›"hmj™"ubaubaubaubjr)�r¡"}r¢"(hlX¹+-----------------------+ | | | FIT HEADER | | +-------------------+ | | | | | | | ARM64 ATF | | | +-------------------+ | | | | | | | ARM64 OPTEE | | | +-------------------+ | | | | | | | ARM64 SPL | | | +-------------------+ | | | | | | | SPL DTB 1...N | | | +-------------------+ | +-----------------------+hmj» hwh›h|juh~}r£"(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMJh‰hhŠ]r¤"h“X¹+-----------------------+ | | | FIT HEADER | | +-------------------+ | | | | | | | ARM64 ATF | | | +-------------------+ | | | | | | | ARM64 OPTEE | | | +-------------------+ | | | | | | | ARM64 SPL | | | +-------------------+ | | | | | | | SPL DTB 1...N | | | +-------------------+ | +-----------------------+r¥"…�r¦"}r§"(hlUhmj¡"ubaubj#)�r¨"}r©"(hlUhmj» hwh›h|j&h~}rª"(j(X-hƒ]h‚]h€]h�]h†]uhˆM^h‰hhŠ]r«"j )�r¬"}r­"(hlX sysfw.itb hmj¨"hwh›h|jh~}r®"(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¯"hÊ)�r°"}r±"(hlX sysfw.itbr²"hmj¬"hwh›h|hÍh~}r³"(h€]h�]h‚]hƒ]h†]uhˆM^hŠ]r´"h“X sysfw.itbrµ"…�r¶"}r·"(hlj²"hmj°"ubaubaubaubjr)�r¸"}r¹"(hlX+-----------------------+ | | | FIT HEADER | | +-------------------+ | | | | | | | sysfw.bin | | | +-------------------+ | | | | | | | board config | | | +-------------------+ | | | | | | | PM config | | | +-------------------+ | | | | | | | RM config | | | +-------------------+ | | | | | | | Secure config | | | +-------------------+ | +-----------------------+hmj» hwh›h|juh~}rº"(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆM`h‰hhŠ]r»"h“X+-----------------------+ | | | FIT HEADER | | +-------------------+ | | | | | | | sysfw.bin | | | +-------------------+ | | | | | | | board config | | | +-------------------+ | | | | | | | PM config | | | +-------------------+ | | | | | | | RM config | | | +-------------------+ | | | | | | | Secure config | | | +-------------------+ | +-----------------------+r¼"…�r½"}r¾"(hlUhmj¸"ubaubjC)�r¿"}rÀ"(hlX Boot FlowrÁ"hmj» hwh›h|jGh~}rÂ"(hƒ]rÃ"U k3-boot-flowrÄ"ah‚]h€]h�]h†]rÅ"h$auhˆNh‰hhŠ]rÆ"h“X Boot FlowrÇ"…�rÈ"}rÉ"(hljÁ"hmj¿"ubaubhÊ)�rÊ"}rË"(hlXOn K3 architecture based devices, ROM supports boot only via MCU(R5). This means that bootloader has to run on R5 core. In order to meet this constraint, keeping safety in picture and to have faster boot time, the software boot architecture is designed as below:rÌ"hmj» hwh›h|hÍh~}rÍ"(h€]h�]h‚]hƒ]h†]uhˆMzh‰hhŠ]rÎ"h“XOn K3 architecture based devices, ROM supports boot only via MCU(R5). This means that bootloader has to run on R5 core. In order to meet this constraint, keeping safety in picture and to have faster boot time, the software boot architecture is designed as below:rÏ"…�rÐ"}rÑ"(hljÌ"hmjÊ"ubaubjr)�rÒ"}rÓ"(hlXë+------------------------------------------------------------------------+ | DMSC | R5 | ARM64 | +------------------------------------------------------------------------+ | +--------+ | | | | | Reset | | | | | +--------+ | | | | : | | | | +--------+ | +-----------+ | | | | *ROM* |----------|-->| Reset rls | | | | +--------+ | +-----------+ | | | | | | : | | | | ROM | | : | | | |services| | : | | | | | | +-------------+ | | | | | | | *R5 ROM* | | | | | | | +-------------+ | | | | |<---------|---|Load and auth| | | | | | | | tiboot3.bin | | | | | | | +-------------+ | | | | | | : | | | | | | : | | | | | | : | | | | | | +-------------+ | | | | | | | *R5 SPL* | | | | | | | +-------------+ | | | | | | | Load | | | | | | | | sysfw.itb | | | | | Start | | +-------------+ | | | | System |<---------|---| Start | | | | |Firmware| | | SYSFW | | | | +--------+ | +-------------+ | | | : | | | | | | +---------+ | | Load | | | | | *SYSFW* | | | system | | | | +---------+ | | Config data | | | | | |<--------|---| | | | | | | | +-------------+ | | | | | | | | | | | | | | | DDR | | | | | | | | config | | | | | | | +-------------+ | | | | | | | | | | | | |<--------|---| Start A53 | | | | | | | | and Reset | | | | | | | +-------------+ | | | | | | | +-----------+ | | | |---------|-----------------------|---->| Reset rls | | | | | | | +-----------+ | | | DMSC | | | : | | |Services | | | +-----------+ | | | |<--------|-----------------------|---->|*ATF/OPTEE*| | | | | | | +-----------+ | | | | | | : | | | | | | +-----------+ | | | |<--------|-----------------------|---->| *A53 SPL* | | | | | | | +-----------+ | | | | | | | Load | | | | | | | | u-boot.img| | | | | | | +-----------+ | | | | | | : | | | | | | +-----------+ | | | |<--------|-----------------------|---->| *U-Boot* | | | | | | | +-----------+ | | | | | | | prompt | | | | | | | +-----------+ | | +---------+ | | | | | | | +------------------------------------------------------------------------+hmj» hwh›h|juh~}rÔ"(jw‰jxXconsolehŸh hƒ]h‚]h€]jy}h�]h†]uhˆMh‰hhŠ]rÕ"h“Xë+------------------------------------------------------------------------+ | DMSC | R5 | ARM64 | +------------------------------------------------------------------------+ | +--------+ | | | | | Reset | | | | | +--------+ | | | | : | | | | +--------+ | +-----------+ | | | | *ROM* |----------|-->| Reset rls | | | | +--------+ | +-----------+ | | | | | | : | | | | ROM | | : | | | |services| | : | | | | | | +-------------+ | | | | | | | *R5 ROM* | | | | | | | +-------------+ | | | | |<---------|---|Load and auth| | | | | | | | tiboot3.bin | | | | | | | +-------------+ | | | | | | : | | | | | | : | | | | | | : | | | | | | +-------------+ | | | | | | | *R5 SPL* | | | | | | | +-------------+ | | | | | | | Load | | | | | | | | sysfw.itb | | | | | Start | | +-------------+ | | | | System |<---------|---| Start | | | | |Firmware| | | SYSFW | | | | +--------+ | +-------------+ | | | : | | | | | | +---------+ | | Load | | | | | *SYSFW* | | | system | | | | +---------+ | | Config data | | | | | |<--------|---| | | | | | | | +-------------+ | | | | | | | | | | | | | | | DDR | | | | | | | | config | | | | | | | +-------------+ | | | | | | | | | | | | |<--------|---| Start A53 | | | | | | | | and Reset | | | | | | | +-------------+ | | | | | | | +-----------+ | | | |---------|-----------------------|---->| Reset rls | | | | | | | +-----------+ | | | DMSC | | | : | | |Services | | | +-----------+ | | | |<--------|-----------------------|---->|*ATF/OPTEE*| | | | | | | +-----------+ | | | | | | : | | | | | | +-----------+ | | | |<--------|-----------------------|---->| *A53 SPL* | | | | | | | +-----------+ | | | | | | | Load | | | | | | | | u-boot.img| | | | | | | +-----------+ | | | | | | : | | | | | | +-----------+ | | | |<--------|-----------------------|---->| *U-Boot* | | | | | | | +-----------+ | | | | | | | prompt | | | | | | | +-----------+ | | +---------+ | | | | | | | +------------------------------------------------------------------------+rÖ"…�r×"}rØ"(hlUhmjÒ"ubaubhÊ)�rÙ"}rÚ"(hlX‘Here DMSC acts as master and provides all the critical services. R5/ARM64 requests DMSC to get these services done as shown in the above diagram.rÛ"hmj» hwh›h|hÍh~}rÜ"(h€]h�]h‚]hƒ]h†]uhˆMÆh‰hhŠ]rÝ"h“X‘Here DMSC acts as master and provides all the critical services. R5/ARM64 requests DMSC to get these services done as shown in the above diagram.rÞ"…�rß"}rà"(hljÛ"hmjÙ"ubaubeubhn)�rá"}râ"(hlUhmhqhwh›h|h}h~}rã"(h€]h�]h‚]hƒ]rä"Uu-boot-environmentrå"ah†]ræ"hauhˆMËh‰hhŠ]rç"(hŒ)�rè"}ré"(hlXU-Boot Environmentrê"hmjá"hwh›h|h�h~}rë"(h€]h�]h‚]hƒ]h†]uhˆMËh‰hhŠ]rì"h“XU-Boot Environmentrí"…�rî"}rï"(hljê"hmjè"ubaubhÊ)�rð"}rñ"(hlXCPlease note that on many boards we modify the environment during system start for a variety of variables such as **board\_name** and if unset, **ethaddr**. When we restore defaults some variables will become unset, and this can lead to other things not working such as **findfdt** that rely on these run-time set variables.hmjá"hwh›h|hÍh~}rò"(h€]h�]h‚]hƒ]h†]uhˆMÍh‰hhŠ]ró"(h“XqPlease note that on many boards we modify the environment during system start for a variety of variables such as rô"…�rõ"}rö"(hlXqPlease note that on many boards we modify the environment during system start for a variety of variables such as hmjð"ubj)�r÷"}rø"(hlX**board\_name**h~}rù"(h€]h�]h‚]hƒ]h†]uhmjð"hŠ]rú"h“X board_namerû"…�rü"}rý"(hlUhmj÷"ubah|j'ubh“X and if unset, rþ"…�rÿ"}r#(hlX and if unset, hmjð"ubj)�r#}r#(hlX **ethaddr**h~}r#(h€]h�]h‚]hƒ]h†]uhmjð"hŠ]r#h“Xethaddrr#…�r#}r#(hlUhmj#ubah|j'ubh“Xs. When we restore defaults some variables will become unset, and this can lead to other things not working such as r#…�r #}r #(hlXs. When we restore defaults some variables will become unset, and this can lead to other things not working such as hmjð"ubj)�r #}r #(hlX **findfdt**h~}r #(h€]h�]h‚]hƒ]h†]uhmjð"hŠ]r#h“Xfindfdtr#…�r#}r#(hlUhmj #ubah|j'ubh“X+ that rely on these run-time set variables.r#…�r#}r#(hlX+ that rely on these run-time set variables.hmjð"ubeubjC)�r#}r#(hlXRestoring defaultsr#hmjá"hwh›h|jGh~}r#(hƒ]r#Urestoring-defaultsr#ah‚]h€]h�]h†]r#h>auhˆNh‰hhŠ]r#h“XRestoring defaultsr#…�r#}r#(hlj#hmj#ubaubhÊ)�r #}r!#(hlX3It is possible to reset the set of U-Boot environment variables to their defaults and if desired, save them to where the environment is stored, if applicable. It is also required to restore the default setting when u-boot version changes from an upgrade or downgrade. To do so, issue the following commands:r"#hmjá"hwh›h|hÍh~}r##(h€]h�]h‚]hƒ]h†]uhˆMÖh‰hhŠ]r$#h“X3It is possible to reset the set of U-Boot environment variables to their defaults and if desired, save them to where the environment is stored, if applicable. It is also required to restore the default setting when u-boot version changes from an upgrade or downgrade. To do so, issue the following commands:r%#…�r&#}r'#(hlj"#hmj #ubaubjr)�r(#}r)#(hlX+U-Boot # env default -f -a U-Boot # saveenvhmjá"hwh›h|juh~}r*#(hŸh hƒ]h‚]h€]h�]h†]uhˆMéh‰hhŠ]r+#h“X+U-Boot # env default -f -a U-Boot # saveenvr,#…�r-#}r.#(hlUhmj(#ubaubjC)�r/#}r0#(hlUhmjá"hwh›h|jZh~}r1#(h€]h�]h‚]hƒ]h†]uhˆMáh‰hhŠ]r2#jH)�r3#}r4#(hlUjLKhmj/#hwh›h|hˆh~}r5#(h€]h�]h‚]hƒ]h†]uhˆKh‰hhŠ]ubaubjC)�r6#}r7#(hlXNetworking Environmentr8#hmjá"hwh›h|jGh~}r9#(hƒ]r:#Unetworking-environmentr;#ah‚]h€]h�]h†]r<#hWauhˆNh‰hhŠ]r=#h“XNetworking Environmentr>#…�r?#}r@#(hlj8#hmj6#ubaubhÊ)�rA#}rB#(hlXðWhen using a USB-Ethernet dongle a valid MAC address must be set in the environment. To create a valid address please read `**this page** `__. Then issue the following command:hmjá"hwh›h|hÍh~}rC#(h€]h�]h‚]hƒ]h†]uhˆMæh‰hhŠ]rD#(h“X{When using a USB-Ethernet dongle a valid MAC address must be set in the environment. To create a valid address please read rE#…�rF#}rG#(hlX{When using a USB-Ethernet dongle a valid MAC address must be set in the environment. To create a valid address please read hmjA#ubhÓ)�rH#}rI#(hlXR`**this page** `__h~}rJ#(UnameX **this page**h×X>http://www.denx.de/wiki/view/DULG/WhereCanIGetAValidMACAddresshƒ]h‚]h€]h�]h†]uhmjA#hŠ]rK#h“X **this page**rL#…�rM#}rN#(hlUhmjH#ubah|hÜubh“X#. Then issue the following command:rO#…�rP#}rQ#(hlX#. Then issue the following command:hmjA#ubeubjr)�rR#}rS#(hlX0U-Boot # setenv usbethaddr value:from:link:abovehmjá"hwh›h|juh~}rT#(hŸh hƒ]h‚]h€]h�]h†]uhˆMøh‰hhŠ]rU#h“X0U-Boot # setenv usbethaddr value:from:link:aboverV#…�rW#}rX#(hlUhmjR#ubaubhÊ)�rY#}rZ#(hlXMYou can use the **printenv** command to see if **usbethaddr** is already set.hmjá"hwh›h|hÍh~}r[#(h€]h�]h‚]hƒ]h†]uhˆMïh‰hhŠ]r\#(h“XYou can use the r]#…�r^#}r_#(hlXYou can use the hmjY#ubj)�r`#}ra#(hlX **printenv**h~}rb#(h€]h�]h‚]hƒ]h†]uhmjY#hŠ]rc#h“Xprintenvrd#…�re#}rf#(hlUhmj`#ubah|j'ubh“X command to see if rg#…�rh#}ri#(hlX command to see if hmjY#ubj)�rj#}rk#(hlX**usbethaddr**h~}rl#(h€]h�]h‚]hƒ]h†]uhmjY#hŠ]rm#h“X usbethaddrrn#…�ro#}rp#(hlUhmjj#ubah|j'ubh“X is already set.rq#…�rr#}rs#(hlX is already set.hmjY#ubeubhÊ)�rt#}ru#(hlXThen start the USB subsystem:rv#hmjá"hwh›h|hÍh~}rw#(h€]h�]h‚]hƒ]h†]uhˆMòh‰hhŠ]rx#h“XThen start the USB subsystem:ry#…�rz#}r{#(hljv#hmjt#ubaubjr)�r|#}r}#(hlXU-Boot # usb starthmjá"hwh›h|juh~}r~#(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r#h“XU-Boot # usb startr€#…�r�#}r‚#(hlUhmj|#ubaubhÊ)�rƒ#}r„#(hlX¨The default behavior of U-Boot is to utilize all information that a DHCP server passes to us when the user issues the **dhcp** command. This will include the dhcp parameter *next-server* which indicates where to fetch files from via TFTP. There may be times however where the dhcp server on your network provides incorrect information and you are unable to modify the server. In this case the following steps can be helpful:hmjá"hwh›h|hÍh~}r…#(h€]h�]h‚]hƒ]h†]uhˆMøh‰hhŠ]r†#(h“XvThe default behavior of U-Boot is to utilize all information that a DHCP server passes to us when the user issues the r‡#…�rˆ#}r‰#(hlXvThe default behavior of U-Boot is to utilize all information that a DHCP server passes to us when the user issues the hmjƒ#ubj)�rŠ#}r‹#(hlX**dhcp**h~}rŒ#(h€]h�]h‚]hƒ]h†]uhmjƒ#hŠ]r�#h“XdhcprŽ#…�r�#}r�#(hlUhmjŠ#ubah|j'ubh“X/ command. This will include the dhcp parameter r‘#…�r’#}r“#(hlX/ command. This will include the dhcp parameter hmjƒ#ubjq )�r”#}r•#(hlX *next-server*h~}r–#(h€]h�]h‚]hƒ]h†]uhmjƒ#hŠ]r—#h“X next-serverr˜#…�r™#}rš#(hlUhmj”#ubah|jy ubh“Xî which indicates where to fetch files from via TFTP. There may be times however where the dhcp server on your network provides incorrect information and you are unable to modify the server. In this case the following steps can be helpful:r›#…�rœ#}r�#(hlXî which indicates where to fetch files from via TFTP. There may be times however where the dhcp server on your network provides incorrect information and you are unable to modify the server. In this case the following steps can be helpful:hmjƒ#ubeubjr)�rž#}rŸ#(hlXbU-Boot # setenv autoload no U-Boot # dhcp U-Boot # setenv serverip correct.server.ip U-Boot # tftphmjá"hwh›h|juh~}r #(hŸh hƒ]h‚]h€]h�]h†]uhˆM h‰hhŠ]r¡#h“XbU-Boot # setenv autoload no U-Boot # dhcp U-Boot # setenv serverip correct.server.ip U-Boot # tftpr¢#…�r£#}r¤#(hlUhmjž#ubaubhÊ)�r¥#}r¦#(hlXFAnother alternative is to utilize the full syntax of the tftp command:r§#hmjá"hwh›h|hÍh~}r¨#(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r©#h“XFAnother alternative is to utilize the full syntax of the tftp command:rª#…�r«#}r¬#(hlj§#hmj¥#ubaubjr)�r­#}r®#(hlXVU-Boot # setenv autoload no U-Boot # dhcp U-Boot # tftp ${loadaddr} server.ip:fileNamehmjá"hwh›h|juh~}r¯#(hŸh hƒ]h‚]h€]h�]h†]uhˆMh‰hhŠ]r°#h“XVU-Boot # setenv autoload no U-Boot # dhcp U-Boot # tftp ${loadaddr} server.ip:fileNamer±#…�r²#}r³#(hlUhmj­#ubaubeubhn)�r´#}rµ#(hlUhmhqhwh›h|h}h~}r¶#(h€]h�]h‚]hƒ]r·#U available-ram-for-image-downloadr¸#ah†]r¹#hauhˆMh‰hhŠ]rº#(hŒ)�r»#}r¼#(hlX Available RAM for image downloadr½#hmj´#hwh›h|h�h~}r¾#(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]r¿#h“X Available RAM for image downloadrÀ#…�rÁ#}rÂ#(hlj½#hmj»#ubaubhÊ)�rÃ#}rÄ#(hlXfTo know the amount of RAM available for downloading images or for other usage, use ``bdinfo`` command.hmj´#hwh›h|hÍh~}rÅ#(h€]h�]h‚]hƒ]h†]uhˆMh‰hhŠ]rÆ#(h“XSTo know the amount of RAM available for downloading images or for other usage, use rÇ#…�rÈ#}rÉ#(hlXSTo know the amount of RAM available for downloading images or for other usage, use hmjÃ#ubjß)�rÊ#}rË#(hlX ``bdinfo``h~}rÌ#(h€]h�]h‚]hƒ]h†]uhmjÃ#hŠ]rÍ#h“XbdinforÎ#…�rÏ#}rÐ#(hlUhmjÊ#ubah|jçubh“X command.rÑ#…�rÒ#}rÓ#(hlX command.hmjÃ#ubeubjr)�rÔ#}rÕ#(hlX;=> bdinfo arch_number = 0x00000000 boot_params = 0x80000100 DRAM bank = 0x00000000 -> start = 0x80000000 -> size = 0x7F000000 baudrate = 115200 bps TLB addr = 0xFEFF0000 relocaddr = 0xFEF30000 reloc off = 0x7E730000 irq_sp = 0xFCEF8880 sp start = 0xFCEF8870 Early malloc usage: 890 / 2000hmj´#hwh›h|juh~}rÖ#(hŸh hƒ]h‚]h€]h�]h†]uhˆM!h‰hhŠ]r×#h“X;=> bdinfo arch_number = 0x00000000 boot_params = 0x80000100 DRAM bank = 0x00000000 -> start = 0x80000000 -> size = 0x7F000000 baudrate = 115200 bps TLB addr = 0xFEFF0000 relocaddr = 0xFEF30000 reloc off = 0x7E730000 irq_sp = 0xFCEF8880 sp start = 0xFCEF8870 Early malloc usage: 890 / 2000rØ#…�rÙ#}rÚ#(hlUhmjÔ#ubaubhÊ)�rÛ#}rÜ#(hlXæAfter booting, U-Boot relocates itself (along with its various reserved RAM areas) and places itself at end of available RAM (starting at ``relocaddr`` in ``bdinfo`` output above). Only the stack is located just before that area. The address of top of the stack is in ``sp start`` in ``bdinfo`` output and it grows downwards. Users should reserve at least about 1MB for stack, so in the example output above, RAM in the range of ``[0x80000000, 0xFCE00000]`` is safely available for use.hmj´#hwh›h|hÍh~}rÝ#(h€]h�]h‚]hƒ]h†]uhˆM$h‰hhŠ]rÞ#(h“XŠAfter booting, U-Boot relocates itself (along with its various reserved RAM areas) and places itself at end of available RAM (starting at rß#…�rà#}rá#(hlXŠAfter booting, U-Boot relocates itself (along with its various reserved RAM areas) and places itself at end of available RAM (starting at hmjÛ#ubjß)�râ#}rã#(hlX ``relocaddr``h~}rä#(h€]h�]h‚]hƒ]h†]uhmjÛ#hŠ]rå#h“X relocaddrræ#…�rç#}rè#(hlUhmjâ#ubah|jçubh“X in ré#…�rê#}rë#(hlX in hmjÛ#ubjß)�rì#}rí#(hlX ``bdinfo``h~}rî#(h€]h�]h‚]hƒ]h†]uhmjÛ#hŠ]rï#h“Xbdinforð#…�rñ#}rò#(hlUhmjì#ubah|jçubh“Xg output above). Only the stack is located just before that area. The address of top of the stack is in ró#…�rô#}rõ#(hlXg output above). Only the stack is located just before that area. The address of top of the stack is in hmjÛ#ubjß)�rö#}r÷#(hlX ``sp start``h~}rø#(h€]h�]h‚]hƒ]h†]uhmjÛ#hŠ]rù#h“Xsp startrú#…�rû#}rü#(hlUhmjö#ubah|jçubh“X in rý#…�rþ#}rÿ#(hlX in hmjÛ#ubjß)�r$}r$(hlX ``bdinfo``h~}r$(h€]h�]h‚]hƒ]h†]uhmjÛ#hŠ]r$h“Xbdinfor$…�r$}r$(hlUhmj$ubah|jçubh“X‡ output and it grows downwards. Users should reserve at least about 1MB for stack, so in the example output above, RAM in the range of r$…�r$}r $(hlX‡ output and it grows downwards. Users should reserve at least about 1MB for stack, so in the example output above, RAM in the range of hmjÛ#ubjß)�r $}r $(hlX``[0x80000000, 0xFCE00000]``h~}r $(h€]h�]h‚]hƒ]h†]uhmjÛ#hŠ]r $h“X[0x80000000, 0xFCE00000]r$…�r$}r$(hlUhmj $ubah|jçubh“X is safely available for use.r$…�r$}r$(hlX is safely available for use.hmjÛ#ubeubeubhn)�r$}r$(hlUhmhqhwh›h|h}h~}r$(h€]h�]h‚]hƒ]r$U device-treesr$ah†]r$h auhˆM.h‰hhŠ]r$(hŒ)�r$}r$(hlX Device Treesr$hmj$hwh›h|h�h~}r$(h€]h�]h‚]hƒ]h†]uhˆM.h‰hhŠ]r$h“X Device Treesr $…�r!$}r"$(hlj$hmj$ubaubhÊ)�r#$}r$$(hlX A note about device trees. Now all supported boards are required to use a device tree to boot. To facilitate this in supported platforms, a command in U-Boot environment **findfdt** is available that will set the **fdtfile** variable to the name of the device tree to use, as found with the kernel sources. In the Keystone-2 family devices (K2H/K/E/L/G), it is specified by **name\_fdt** variable for each platform. The device tree is expected to be loaded from the same media as the kernel, and from the same relative path.hmj$hwh›h|hÍh~}r%$(h€]h�]h‚]hƒ]h†]uhˆM0h‰hhŠ]r&$(h“XªA note about device trees. Now all supported boards are required to use a device tree to boot. To facilitate this in supported platforms, a command in U-Boot environment r'$…�r($}r)$(hlXªA note about device trees. Now all supported boards are required to use a device tree to boot. To facilitate this in supported platforms, a command in U-Boot environment hmj#$ubj)�r*$}r+$(hlX **findfdt**h~}r,$(h€]h�]h‚]hƒ]h†]uhmj#$hŠ]r-$h“Xfindfdtr.$…�r/$}r0$(hlUhmj*$ubah|j'ubh“X is available that will set the r1$…�r2$}r3$(hlX is available that will set the hmj#$ubj)�r4$}r5$(hlX **fdtfile**h~}r6$(h€]h�]h‚]hƒ]h†]uhmj#$hŠ]r7$h“Xfdtfiler8$…�r9$}r:$(hlUhmj4$ubah|j'ubh“X– variable to the name of the device tree to use, as found with the kernel sources. In the Keystone-2 family devices (K2H/K/E/L/G), it is specified by r;$…�r<$}r=$(hlX– variable to the name of the device tree to use, as found with the kernel sources. In the Keystone-2 family devices (K2H/K/E/L/G), it is specified by hmj#$ubj)�r>$}r?$(hlX **name\_fdt**h~}r@$(h€]h�]h‚]hƒ]h†]uhmj#$hŠ]rA$h“Xname_fdtrB$…�rC$}rD$(hlUhmj>$ubah|j'ubh“X‰ variable for each platform. The device tree is expected to be loaded from the same media as the kernel, and from the same relative path.rE$…�rF$}rG$(hlX‰ variable for each platform. The device tree is expected to be loaded from the same media as the kernel, and from the same relative path.hmj#$ubeubeubeubhwh›h|h}h~}rH$(h€]h�]h‚]hƒ]rI$U'build-and-boot-flow-on-32-bit-platformsrJ$ah†]rK$h*auhˆKBh‰hhŠ]rL$(hŒ)�rM$}rN$(hlX'Build and Boot Flow on 32-bit platformsrO$hmhohwh›h|h�h~}rP$(h€]h�]h‚]hƒ]h†]uhˆKBh‰hhŠ]rQ$h“X'Build and Boot Flow on 32-bit platformsrR$…�rS$}rT$(hljO$hmjM$ubaubhÊ)�rU$}rV$(hlX}We strongly recommend the use of separate object directories when building. This is done with O= parameter to make. We also recommend that you use an output directory name that is identical to the configuration target name. That way if you are working with multiple configuration targets it is very easy to know which folder contains the u-boot binaries that you are interested in.rW$hmhohwh›h|hÍh~}rX$(h€]h�]h‚]hƒ]h†]uhˆKDh‰hhŠ]rY$h“X}We strongly recommend the use of separate object directories when building. This is done with O= parameter to make. We also recommend that you use an output directory name that is identical to the configuration target name. That way if you are working with multiple configuration targets it is very easy to know which folder contains the u-boot binaries that you are interested in.rZ$…�r[$}r\$(hljW$hmjU$ubaubjC)�r]$}r^$(hlXSetting the tool chain pathr_$hmhohwh›h|jGh~}r`$(hƒ]ra$Usetting-the-tool-chain-pathrb$ah‚]h€]h�]h†]rc$hAauhˆNh‰hhŠ]rd$h“XSetting the tool chain pathre$…�rf$}rg$(hlj_$hmj]$ubaubhÊ)�rh$}ri$(hlX�We strongly recommend using the toolchain that came with the Linux Core release that corresponds to this U-Boot release. For e.g:rj$hmhohwh›h|hÍh~}rk$(h€]h�]h‚]hƒ]h†]uhˆKNh‰hhŠ]rl$h“X�We strongly recommend using the toolchain that came with the Linux Core release that corresponds to this U-Boot release. For e.g:rm$…�rn$}ro$(hljj$hmjh$ubaubjr)�rp$}rq$(hlXMexport PATH=$HOME/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin:$PATHhmhohwh›h|juh~}rr$(hŸh hƒ]h‚]h€]h�]h†]uhˆK^h‰hhŠ]rs$h“XMexport PATH=$HOME/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin:$PATHrt$…�ru$}rv$(hlUhmjp$ubaubjC)�rw$}rx$(hlXCleaning the Sourcesry$hmhohwh›h|jGh~}rz$(hƒ]r{$Ucleaning-the-sourcesr|$ah‚]h€]h�]h†]r}$haauhˆNh‰hhŠ]r~$h“XCleaning the Sourcesr$…�r€$}r�$(hljy$hmjw$ubaubhÊ)�r‚$}rƒ$(hlX/If you did not use a separate object directory:r„$hmhohwh›h|hÍh~}r…$(h€]h�]h‚]hƒ]h†]uhˆKXh‰hhŠ]r†$h“X/If you did not use a separate object directory:r‡$…�rˆ$}r‰$(hlj„$hmj‚$ubaubjr)�rŠ$}r‹$(hlX3$ make CROSS_COMPILE=arm-linux-gnueabihf- distcleanhmhohwh›h|juh~}rŒ$(hŸh hƒ]h‚]h€]h�]h†]uhˆKgh‰hhŠ]r�$h“X3$ make CROSS_COMPILE=arm-linux-gnueabihf- distcleanrŽ$…�r�$}r�$(hlUhmjŠ$ubaubhÊ)�r‘$}r’$(hlX5If you used 'O=am335x\_evm' as your object directory:r“$hmhohwh›h|hÍh~}r”$(h€]h�]h‚]hƒ]h†]uhˆK^h‰hhŠ]r•$h“X4If you used 'O=am335x_evm' as your object directory:r–$…�r—$}r˜$(hlX5If you used 'O=am335x\_evm' as your object directory:hmj‘$ubaubjr)�r™$}rš$(hlX$ rm -rf ./am335x_evmhmhohwh›h|juh~}r›$(hŸh hƒ]h‚]h€]h�]h†]uhˆKmh‰hhŠ]rœ$h“X$ rm -rf ./am335x_evmr�$…�rž$}rŸ$(hlUhmj™$ubaubjC)�r $}r¡$(hlXCompiling MLO and u-bootr¢$hmhohwh›h|jGh~}r£$(hƒ]r¤$Ucompiling-mlo-and-u-bootr¥$ah‚]h€]h�]h†]r¦$h:auhˆNh‰hhŠ]r§$h“XCompiling MLO and u-bootr¨$…�r©$}rª$(hlj¢$hmj $ubaubhÊ)�r«$}r¬$(hlXÖBuilding of both u-boot and SPL is done at the same time. You must however first configure the build for the board you are working with. Use the following table to determine what defconfig to use to configure with:r­$hmhohwh›h|hÍh~}r®$(h€]h�]h‚]hƒ]h†]uhˆKgh‰hhŠ]r¯$h“XÖBuilding of both u-boot and SPL is done at the same time. You must however first configure the build for the board you are working with. Use the following table to determine what defconfig to use to configure with:r°$…�r±$}r²$(hlj­$hmj«$ubaubj)�r³$}r´$(hlUhmhohwh›h|jh~}rµ$(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r¶$j)�r·$}r¸$(hlUh~}r¹$(hƒ]h‚]h€]h�]h†]UcolsK uhmj³$hŠ]rº$(j)�r»$}r¼$(hlUh~}r½$(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj·$hŠ]h|j"ubj)�r¾$}r¿$(hlUh~}rÀ$(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj·$hŠ]h|j"ubj)�rÁ$}rÂ$(hlUh~}rÃ$(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj·$hŠ]h|j"ubj)�rÄ$}rÅ$(hlUh~}rÆ$(hƒ]h‚]h€]h�]h†]UcolwidthK,uhmj·$hŠ]h|j"ubj)�rÇ$}rÈ$(hlUh~}rÉ$(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj·$hŠ]h|j"ubj)�rÊ$}rË$(hlUh~}rÌ$(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj·$hŠ]h|j"ubj)�rÍ$}rÎ$(hlUh~}rÏ$(hƒ]h‚]h€]h�]h†]UcolwidthKuhmj·$hŠ]h|j"ubj)�rÐ$}rÑ$(hlUh~}rÒ$(hƒ]h‚]h€]h�]h†]UcolwidthK)uhmj·$hŠ]h|j"ubj)�rÓ$}rÔ$(hlUh~}rÕ$(hƒ]h‚]h€]h�]h†]UcolwidthK*uhmj·$hŠ]h|j"ubj/)�rÖ$}r×$(hlUh~}rØ$(h€]h�]h‚]hƒ]h†]uhmj·$hŠ]rÙ$j4)�rÚ$}rÛ$(hlUh~}rÜ$(h€]h�]h‚]hƒ]h†]uhmjÖ$hŠ]rÝ$(j9)�rÞ$}rß$(hlUh~}rà$(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]rá$hÊ)�râ$}rã$(hlXBoardrä$hmjÞ$hwh›h|hÍh~}rå$(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]ræ$h“XBoardrç$…�rè$}ré$(hljä$hmjâ$ubaubah|jFubj9)�rê$}rë$(hlUh~}rì$(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]rí$hÊ)�rî$}rï$(hlXSD Bootrð$hmjê$hwh›h|hÍh~}rñ$(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]rò$h“XSD Bootró$…�rô$}rõ$(hljð$hmjî$ubaubah|jFubj9)�rö$}r÷$(hlUh~}rø$(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]rù$hÊ)�rú$}rû$(hlX eMMC Bootrü$hmjö$hwh›h|hÍh~}rý$(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]rþ$h“X eMMC Bootrÿ$…�r%}r%(hljü$hmjú$ubaubah|jFubj9)�r%}r%(hlUh~}r%(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]r%hÊ)�r%}r%(hlX NAND Bootr%hmj%hwh›h|hÍh~}r %(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]r %h“X NAND Bootr %…�r %}r %(hlj%hmj%ubaubah|jFubj9)�r%}r%(hlUh~}r%(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]r%hÊ)�r%}r%(hlX UART Bootr%hmj%hwh›h|hÍh~}r%(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]r%h“X UART Bootr%…�r%}r%(hlj%hmj%ubaubah|jFubj9)�r%}r%(hlUh~}r%(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]r%hÊ)�r%}r%(hlX Ethernet Bootr %hmj%hwh›h|hÍh~}r!%(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]r"%h“X Ethernet Bootr#%…�r$%}r%%(hlj %hmj%ubaubah|jFubj9)�r&%}r'%(hlUh~}r(%(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]r)%hÊ)�r*%}r+%(hlXUSB Ethernet Bootr,%hmj&%hwh›h|hÍh~}r-%(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]r.%h“XUSB Ethernet Bootr/%…�r0%}r1%(hlj,%hmj*%ubaubah|jFubj9)�r2%}r3%(hlUh~}r4%(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]r5%hÊ)�r6%}r7%(hlX USB Host Bootr8%hmj2%hwh›h|hÍh~}r9%(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]r:%h“X USB Host Bootr;%…�r<%}r=%(hlj8%hmj6%ubaubah|jFubj9)�r>%}r?%(hlUh~}r@%(h€]h�]h‚]hƒ]h†]uhmjÚ$hŠ]rA%hÊ)�rB%}rC%(hlXSPI BootrD%hmj>%hwh›h|hÍh~}rE%(h€]h�]h‚]hƒ]h†]uhˆKmhŠ]rF%h“XSPI BootrG%…�rH%}rI%(hljD%hmjB%ubaubah|jFubeh|jwubah|jxubjy)�rJ%}rK%(hlUh~}rL%(h€]h�]h‚]hƒ]h†]uhmj·$hŠ]rM%(j4)�rN%}rO%(hlUh~}rP%(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rQ%(j9)�rR%}rS%(hlUh~}rT%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]rU%hÊ)�rV%}rW%(hlX AM335x GP EVMrX%hmjR%hwh›h|hÍh~}rY%(h€]h�]h‚]hƒ]h†]uhˆKohŠ]rZ%h“X AM335x GP EVMr[%…�r\%}r]%(hljX%hmjV%ubaubah|jFubj9)�r^%}r_%(hlUh~}r`%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]ra%hÊ)�rb%}rc%(hlXam335x\_evm\_defconfighmj^%hwh›h|hÍh~}rd%(h€]h�]h‚]hƒ]h†]uhˆKohŠ]re%h“Xam335x_evm_defconfigrf%…�rg%}rh%(hlXam335x\_evm\_defconfighmjb%ubaubah|jFubj9)�ri%}rj%(hlUh~}rk%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]h|jFubj9)�rl%}rm%(hlUh~}rn%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]ro%hÊ)�rp%}rq%(hlXam335x\_evm\_defconfighmjl%hwh›h|hÍh~}rr%(h€]h�]h‚]hƒ]h†]uhˆKohŠ]rs%h“Xam335x_evm_defconfigrt%…�ru%}rv%(hlXam335x\_evm\_defconfighmjp%ubaubah|jFubj9)�rw%}rx%(hlUh~}ry%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]rz%hÊ)�r{%}r|%(hlXam335x\_evm\_defconfighmjw%hwh›h|hÍh~}r}%(h€]h�]h‚]hƒ]h†]uhˆKohŠ]r~%h“Xam335x_evm_defconfigr%…�r€%}r�%(hlXam335x\_evm\_defconfighmj{%ubaubah|jFubj9)�r‚%}rƒ%(hlUh~}r„%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]r…%hÊ)�r†%}r‡%(hlXam335x\_evm\_defconfighmj‚%hwh›h|hÍh~}rˆ%(h€]h�]h‚]hƒ]h†]uhˆKohŠ]r‰%h“Xam335x_evm_defconfigrŠ%…�r‹%}rŒ%(hlXam335x\_evm\_defconfighmj†%ubaubah|jFubj9)�r�%}rŽ%(hlUh~}r�%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]r�%hÊ)�r‘%}r’%(hlXam335x\_evm\_defconfighmj�%hwh›h|hÍh~}r“%(h€]h�]h‚]hƒ]h†]uhˆKohŠ]r”%h“Xam335x_evm_defconfigr•%…�r–%}r—%(hlXam335x\_evm\_defconfighmj‘%ubaubah|jFubj9)�r˜%}r™%(hlUh~}rš%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]h|jFubj9)�r›%}rœ%(hlUh~}r�%(h€]h�]h‚]hƒ]h†]uhmjN%hŠ]h|jFubeh|jwubj4)�rž%}rŸ%(hlUh~}r %(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r¡%(j9)�r¢%}r£%(hlUh~}r¤%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]r¥%hÊ)�r¦%}r§%(hlX AM335x EVM-SKr¨%hmj¢%hwh›h|hÍh~}r©%(h€]h�]h‚]hƒ]h†]uhˆKqhŠ]rª%h“X AM335x EVM-SKr«%…�r¬%}r­%(hlj¨%hmj¦%ubaubah|jFubj9)�r®%}r¯%(hlUh~}r°%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]r±%hÊ)�r²%}r³%(hlXam335x\_evm\_defconfighmj®%hwh›h|hÍh~}r´%(h€]h�]h‚]hƒ]h†]uhˆKqhŠ]rµ%h“Xam335x_evm_defconfigr¶%…�r·%}r¸%(hlXam335x\_evm\_defconfighmj²%ubaubah|jFubj9)�r¹%}rº%(hlUh~}r»%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]h|jFubj9)�r¼%}r½%(hlUh~}r¾%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]h|jFubj9)�r¿%}rÀ%(hlUh~}rÁ%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]rÂ%hÊ)�rÃ%}rÄ%(hlXam335x\_evm\_defconfighmj¿%hwh›h|hÍh~}rÅ%(h€]h�]h‚]hƒ]h†]uhˆKqhŠ]rÆ%h“Xam335x_evm_defconfigrÇ%…�rÈ%}rÉ%(hlXam335x\_evm\_defconfighmjÃ%ubaubah|jFubj9)�rÊ%}rË%(hlUh~}rÌ%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]h|jFubj9)�rÍ%}rÎ%(hlUh~}rÏ%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]rÐ%hÊ)�rÑ%}rÒ%(hlXam335x\_evm\_defconfighmjÍ%hwh›h|hÍh~}rÓ%(h€]h�]h‚]hƒ]h†]uhˆKqhŠ]rÔ%h“Xam335x_evm_defconfigrÕ%…�rÖ%}r×%(hlXam335x\_evm\_defconfighmjÑ%ubaubah|jFubj9)�rØ%}rÙ%(hlUh~}rÚ%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]h|jFubj9)�rÛ%}rÜ%(hlUh~}rÝ%(h€]h�]h‚]hƒ]h†]uhmjž%hŠ]h|jFubeh|jwubj4)�rÞ%}rß%(hlUh~}rà%(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rá%(j9)�râ%}rã%(hlUh~}rä%(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]rå%hÊ)�ræ%}rç%(hlX AM335x ICErè%hmjâ%hwh›h|hÍh~}ré%(h€]h�]h‚]hƒ]h†]uhˆKshŠ]rê%h“X AM335x ICErë%…�rì%}rí%(hljè%hmjæ%ubaubah|jFubj9)�rî%}rï%(hlUh~}rð%(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]rñ%hÊ)�rò%}ró%(hlXam335x\_evm\_defconfighmjî%hwh›h|hÍh~}rô%(h€]h�]h‚]hƒ]h†]uhˆKshŠ]rõ%h“Xam335x_evm_defconfigrö%…�r÷%}rø%(hlXam335x\_evm\_defconfighmjò%ubaubah|jFubj9)�rù%}rú%(hlUh~}rû%(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]h|jFubj9)�rü%}rý%(hlUh~}rþ%(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]h|jFubj9)�rÿ%}r&(hlUh~}r&(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]r&hÊ)�r&}r&(hlXam335x\_evm\_defconfighmjÿ%hwh›h|hÍh~}r&(h€]h�]h‚]hƒ]h†]uhˆKshŠ]r&h“Xam335x_evm_defconfigr&…�r&}r &(hlXam335x\_evm\_defconfighmj&ubaubah|jFubj9)�r &}r &(hlUh~}r &(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]h|jFubj9)�r &}r&(hlUh~}r&(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]h|jFubj9)�r&}r&(hlUh~}r&(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]h|jFubj9)�r&}r&(hlUh~}r&(h€]h�]h‚]hƒ]h†]uhmjÞ%hŠ]h|jFubeh|jwubj4)�r&}r&(hlUh~}r&(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r&(j9)�r&}r&(hlUh~}r&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]r&hÊ)�r&}r&(hlXBeagleBone Blackr &hmj&hwh›h|hÍh~}r!&(h€]h�]h‚]hƒ]h†]uhˆKuhŠ]r"&h“XBeagleBone Blackr#&…�r$&}r%&(hlj &hmj&ubaubah|jFubj9)�r&&}r'&(hlUh~}r(&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]r)&hÊ)�r*&}r+&(hlXam335x\_evm\_defconfighmj&&hwh›h|hÍh~}r,&(h€]h�]h‚]hƒ]h†]uhˆKuhŠ]r-&h“Xam335x_evm_defconfigr.&…�r/&}r0&(hlXam335x\_evm\_defconfighmj*&ubaubah|jFubj9)�r1&}r2&(hlUh~}r3&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]r4&hÊ)�r5&}r6&(hlXam335x\_evm\_defconfighmj1&hwh›h|hÍh~}r7&(h€]h�]h‚]hƒ]h†]uhˆKuhŠ]r8&h“Xam335x_evm_defconfigr9&…�r:&}r;&(hlXam335x\_evm\_defconfighmj5&ubaubah|jFubj9)�r<&}r=&(hlUh~}r>&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]h|jFubj9)�r?&}r@&(hlUh~}rA&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]rB&hÊ)�rC&}rD&(hlXam335x\_evm\_defconfighmj?&hwh›h|hÍh~}rE&(h€]h�]h‚]hƒ]h†]uhˆKuhŠ]rF&h“Xam335x_evm_defconfigrG&…�rH&}rI&(hlXam335x\_evm\_defconfighmjC&ubaubah|jFubj9)�rJ&}rK&(hlUh~}rL&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]h|jFubj9)�rM&}rN&(hlUh~}rO&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]h|jFubj9)�rP&}rQ&(hlUh~}rR&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]h|jFubj9)�rS&}rT&(hlUh~}rU&(h€]h�]h‚]hƒ]h†]uhmj&hŠ]h|jFubeh|jwubj4)�rV&}rW&(hlUh~}rX&(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rY&(j9)�rZ&}r[&(hlUh~}r\&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]r]&hÊ)�r^&}r_&(hlXBeagleBone Whiter`&hmjZ&hwh›h|hÍh~}ra&(h€]h�]h‚]hƒ]h†]uhˆKwhŠ]rb&h“XBeagleBone Whiterc&…�rd&}re&(hlj`&hmj^&ubaubah|jFubj9)�rf&}rg&(hlUh~}rh&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]ri&hÊ)�rj&}rk&(hlXam335x\_evm\_defconfighmjf&hwh›h|hÍh~}rl&(h€]h�]h‚]hƒ]h†]uhˆKwhŠ]rm&h“Xam335x_evm_defconfigrn&…�ro&}rp&(hlXam335x\_evm\_defconfighmjj&ubaubah|jFubj9)�rq&}rr&(hlUh~}rs&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]h|jFubj9)�rt&}ru&(hlUh~}rv&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]h|jFubj9)�rw&}rx&(hlUh~}ry&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]rz&hÊ)�r{&}r|&(hlXam335x\_evm\_defconfighmjw&hwh›h|hÍh~}r}&(h€]h�]h‚]hƒ]h†]uhˆKwhŠ]r~&h“Xam335x_evm_defconfigr&…�r€&}r�&(hlXam335x\_evm\_defconfighmj{&ubaubah|jFubj9)�r‚&}rƒ&(hlUh~}r„&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]h|jFubj9)�r…&}r†&(hlUh~}r‡&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]h|jFubj9)�rˆ&}r‰&(hlUh~}rŠ&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]h|jFubj9)�r‹&}rŒ&(hlUh~}r�&(h€]h�]h‚]hƒ]h†]uhmjV&hŠ]h|jFubeh|jwubj4)�rŽ&}r�&(hlUh~}r�&(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r‘&(j9)�r’&}r“&(hlUh~}r”&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]r•&hÊ)�r–&}r—&(hlX AM437x GP EVMr˜&hmj’&hwh›h|hÍh~}r™&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]rš&h“X AM437x GP EVMr›&…�rœ&}r�&(hlj˜&hmj–&ubaubah|jFubj9)�rž&}rŸ&(hlUh~}r &(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]r¡&hÊ)�r¢&}r£&(hlXam43xx\_evm\_defconfighmjž&hwh›h|hÍh~}r¤&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]r¥&h“Xam43xx_evm_defconfigr¦&…�r§&}r¨&(hlXam43xx\_evm\_defconfighmj¢&ubaubah|jFubj9)�r©&}rª&(hlUh~}r«&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]h|jFubj9)�r¬&}r­&(hlUh~}r®&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]r¯&hÊ)�r°&}r±&(hlXam43xx\_evm\_defconfighmj¬&hwh›h|hÍh~}r²&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]r³&h“Xam43xx_evm_defconfigr´&…�rµ&}r¶&(hlXam43xx\_evm\_defconfighmj°&ubaubah|jFubj9)�r·&}r¸&(hlUh~}r¹&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]rº&hÊ)�r»&}r¼&(hlXam43xx\_evm\_defconfighmj·&hwh›h|hÍh~}r½&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]r¾&h“Xam43xx_evm_defconfigr¿&…�rÀ&}rÁ&(hlXam43xx\_evm\_defconfighmj»&ubaubah|jFubj9)�rÂ&}rÃ&(hlUh~}rÄ&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]rÅ&hÊ)�rÆ&}rÇ&(hlXam43xx\_evm\_defconfighmjÂ&hwh›h|hÍh~}rÈ&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]rÉ&h“Xam43xx_evm_defconfigrÊ&…�rË&}rÌ&(hlXam43xx\_evm\_defconfighmjÆ&ubaubah|jFubj9)�rÍ&}rÎ&(hlUh~}rÏ&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]rÐ&hÊ)�rÑ&}rÒ&(hlXam43xx\_evm\_defconfighmjÍ&hwh›h|hÍh~}rÓ&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]rÔ&h“Xam43xx_evm_defconfigrÕ&…�rÖ&}r×&(hlXam43xx\_evm\_defconfighmjÑ&ubaubah|jFubj9)�rØ&}rÙ&(hlUh~}rÚ&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]rÛ&hÊ)�rÜ&}rÝ&(hlX%am43xx\_evm\_usbhost\_boot\_defconfighmjØ&hwh›h|hÍh~}rÞ&(h€]h�]h‚]hƒ]h†]uhˆKyhŠ]rß&h“X!am43xx_evm_usbhost_boot_defconfigrà&…�rá&}râ&(hlX%am43xx\_evm\_usbhost\_boot\_defconfighmjÜ&ubaubah|jFubj9)�rã&}rä&(hlUh~}rå&(h€]h�]h‚]hƒ]h†]uhmjŽ&hŠ]h|jFubeh|jwubj4)�ræ&}rç&(hlUh~}rè&(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]ré&(j9)�rê&}rë&(hlUh~}rì&(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]rí&hÊ)�rî&}rï&(hlX AM437x EVM-Skrð&hmjê&hwh›h|hÍh~}rñ&(h€]h�]h‚]hƒ]h†]uhˆK{hŠ]rò&h“X AM437x EVM-Skró&…�rô&}rõ&(hljð&hmjî&ubaubah|jFubj9)�rö&}r÷&(hlUh~}rø&(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]rù&hÊ)�rú&}rû&(hlXam43xx\_evm\_defconfighmjö&hwh›h|hÍh~}rü&(h€]h�]h‚]hƒ]h†]uhˆK{hŠ]rý&h“Xam43xx_evm_defconfigrþ&…�rÿ&}r'(hlXam43xx\_evm\_defconfighmjú&ubaubah|jFubj9)�r'}r'(hlUh~}r'(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]h|jFubj9)�r'}r'(hlUh~}r'(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]h|jFubj9)�r'}r'(hlUh~}r '(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]h|jFubj9)�r '}r '(hlUh~}r '(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]h|jFubj9)�r '}r'(hlUh~}r'(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]h|jFubj9)�r'}r'(hlUh~}r'(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]r'hÊ)�r'}r'(hlX%am43xx\_evm\_usbhost\_boot\_defconfighmj'hwh›h|hÍh~}r'(h€]h�]h‚]hƒ]h†]uhˆK{hŠ]r'h“X!am43xx_evm_usbhost_boot_defconfigr'…�r'}r'(hlX%am43xx\_evm\_usbhost\_boot\_defconfighmj'ubaubah|jFubj9)�r'}r'(hlUh~}r'(h€]h�]h‚]hƒ]h†]uhmjæ&hŠ]h|jFubeh|jwubj4)�r'}r'(hlUh~}r '(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r!'(j9)�r"'}r#'(hlUh~}r$'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]r%'hÊ)�r&'}r''(hlX AM437x IDKr('hmj"'hwh›h|hÍh~}r)'(h€]h�]h‚]hƒ]h†]uhˆK}hŠ]r*'h“X AM437x IDKr+'…�r,'}r-'(hlj('hmj&'ubaubah|jFubj9)�r.'}r/'(hlUh~}r0'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]r1'hÊ)�r2'}r3'(hlXam43xx\_evm\_defconfighmj.'hwh›h|hÍh~}r4'(h€]h�]h‚]hƒ]h†]uhˆK}hŠ]r5'h“Xam43xx_evm_defconfigr6'…�r7'}r8'(hlXam43xx\_evm\_defconfighmj2'ubaubah|jFubj9)�r9'}r:'(hlUh~}r;'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]h|jFubj9)�r<'}r='(hlUh~}r>'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]h|jFubj9)�r?'}r@'(hlUh~}rA'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]h|jFubj9)�rB'}rC'(hlUh~}rD'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]h|jFubj9)�rE'}rF'(hlUh~}rG'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]h|jFubj9)�rH'}rI'(hlUh~}rJ'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]h|jFubj9)�rK'}rL'(hlUh~}rM'(h€]h�]h‚]hƒ]h†]uhmj'hŠ]rN'hÊ)�rO'}rP'(hlX&am43xx\_evm\_qspiboot\_defconfig (XIP)hmjK'hwh›h|hÍh~}rQ'(h€]h�]h‚]hƒ]h†]uhˆK}hŠ]rR'h“X#am43xx_evm_qspiboot_defconfig (XIP)rS'…�rT'}rU'(hlX&am43xx\_evm\_qspiboot\_defconfig (XIP)hmjO'ubaubah|jFubeh|jwubj4)�rV'}rW'(hlUh~}rX'(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rY'(j9)�rZ'}r['(hlUh~}r\'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]r]'hÊ)�r^'}r_'(hlXAM437x ePOS EVMr`'hmjZ'hwh›h|hÍh~}ra'(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rb'h“XAM437x ePOS EVMrc'…�rd'}re'(hlj`'hmj^'ubaubah|jFubj9)�rf'}rg'(hlUh~}rh'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]ri'hÊ)�rj'}rk'(hlXam43xx\_evm\_defconfighmjf'hwh›h|hÍh~}rl'(h€]h�]h‚]hƒ]h†]uhˆKhŠ]rm'h“Xam43xx_evm_defconfigrn'…�ro'}rp'(hlXam43xx\_evm\_defconfighmjj'ubaubah|jFubj9)�rq'}rr'(hlUh~}rs'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]h|jFubj9)�rt'}ru'(hlUh~}rv'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]rw'hÊ)�rx'}ry'(hlXam43xx\_evm\_defconfighmjt'hwh›h|hÍh~}rz'(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r{'h“Xam43xx_evm_defconfigr|'…�r}'}r~'(hlXam43xx\_evm\_defconfighmjx'ubaubah|jFubj9)�r'}r€'(hlUh~}r�'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]h|jFubj9)�r‚'}rƒ'(hlUh~}r„'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]h|jFubj9)�r…'}r†'(hlUh~}r‡'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]h|jFubj9)�rˆ'}r‰'(hlUh~}rŠ'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]r‹'hÊ)�rŒ'}r�'(hlX%am43xx\_evm\_usbhost\_boot\_defconfighmjˆ'hwh›h|hÍh~}rŽ'(h€]h�]h‚]hƒ]h†]uhˆKhŠ]r�'h“X!am43xx_evm_usbhost_boot_defconfigr�'…�r‘'}r’'(hlX%am43xx\_evm\_usbhost\_boot\_defconfighmjŒ'ubaubah|jFubj9)�r“'}r”'(hlUh~}r•'(h€]h�]h‚]hƒ]h†]uhmjV'hŠ]h|jFubeh|jwubj4)�r–'}r—'(hlUh~}r˜'(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r™'(j9)�rš'}r›'(hlUh~}rœ'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]r�'hÊ)�rž'}rŸ'(hlX AM572x GP EVMr 'hmjš'hwh›h|hÍh~}r¡'(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r¢'h“X AM572x GP EVMr£'…�r¤'}r¥'(hlj 'hmjž'ubaubah|jFubj9)�r¦'}r§'(hlUh~}r¨'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]r©'hÊ)�rª'}r«'(hlXam57xx\_evm\_defconfighmj¦'hwh›h|hÍh~}r¬'(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r­'h“Xam57xx_evm_defconfigr®'…�r¯'}r°'(hlXam57xx\_evm\_defconfighmjª'ubaubah|jFubj9)�r±'}r²'(hlUh~}r³'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]h|jFubj9)�r´'}rµ'(hlUh~}r¶'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]h|jFubj9)�r·'}r¸'(hlUh~}r¹'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]rº'hÊ)�r»'}r¼'(hlXam57xx\_evm\_defconfighmj·'hwh›h|hÍh~}r½'(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r¾'h“Xam57xx_evm_defconfigr¿'…�rÀ'}rÁ'(hlXam57xx\_evm\_defconfighmj»'ubaubah|jFubj9)�rÂ'}rÃ'(hlUh~}rÄ'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]h|jFubj9)�rÅ'}rÆ'(hlUh~}rÇ'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]h|jFubj9)�rÈ'}rÉ'(hlUh~}rÊ'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]h|jFubj9)�rË'}rÌ'(hlUh~}rÍ'(h€]h�]h‚]hƒ]h†]uhmj–'hŠ]h|jFubeh|jwubj4)�rÎ'}rÏ'(hlUh~}rÐ'(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rÑ'(j9)�rÒ'}rÓ'(hlUh~}rÔ'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]rÕ'hÊ)�rÖ'}r×'(hlX AM572x IDKrØ'hmjÒ'hwh›h|hÍh~}rÙ'(h€]h�]h‚]hƒ]h†]uhˆKƒhŠ]rÚ'h“X AM572x IDKrÛ'…�rÜ'}rÝ'(hljØ'hmjÖ'ubaubah|jFubj9)�rÞ'}rß'(hlUh~}rà'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]rá'hÊ)�râ'}rã'(hlXam57xx\_evm\_defconfighmjÞ'hwh›h|hÍh~}rä'(h€]h�]h‚]hƒ]h†]uhˆKƒhŠ]rå'h“Xam57xx_evm_defconfigræ'…�rç'}rè'(hlXam57xx\_evm\_defconfighmjâ'ubaubah|jFubj9)�ré'}rê'(hlUh~}rë'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubj9)�rì'}rí'(hlUh~}rî'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubj9)�rï'}rð'(hlUh~}rñ'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubj9)�rò'}ró'(hlUh~}rô'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubj9)�rõ'}rö'(hlUh~}r÷'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubj9)�rø'}rù'(hlUh~}rú'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubj9)�rû'}rü'(hlUh~}rý'(h€]h�]h‚]hƒ]h†]uhmjÎ'hŠ]h|jFubeh|jwubj4)�rþ'}rÿ'(hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r((j9)�r(}r((hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]r(hÊ)�r(}r((hlX AM571x IDKr(hmj(hwh›h|hÍh~}r ((h€]h�]h‚]hƒ]h†]uhˆK…hŠ]r (h“X AM571x IDKr (…�r (}r ((hlj(hmj(ubaubah|jFubj9)�r(}r((hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]r(hÊ)�r(}r((hlXam57xx\_evm\_defconfighmj(hwh›h|hÍh~}r((h€]h�]h‚]hƒ]h†]uhˆK…hŠ]r(h“Xam57xx_evm_defconfigr(…�r(}r((hlXam57xx\_evm\_defconfighmj(ubaubah|jFubj9)�r(}r((hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubj9)�r(}r((hlUh~}r((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubj9)�r(}r ((hlUh~}r!((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubj9)�r"(}r#((hlUh~}r$((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubj9)�r%(}r&((hlUh~}r'((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubj9)�r((}r)((hlUh~}r*((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubj9)�r+(}r,((hlUh~}r-((h€]h�]h‚]hƒ]h†]uhmjþ'hŠ]h|jFubeh|jwubj4)�r.(}r/((hlUh~}r0((h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r1((j9)�r2(}r3((hlUh~}r4((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]r5(hÊ)�r6(}r7((hlXDRA74x/DRA72x/DRA71x EVMr8(hmj2(hwh›h|hÍh~}r9((h€]h�]h‚]hƒ]h†]uhˆK‡hŠ]r:(h“XDRA74x/DRA72x/DRA71x EVMr;(…�r<(}r=((hlj8(hmj6(ubaubah|jFubj9)�r>(}r?((hlUh~}r@((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]rA(hÊ)�rB(}rC((hlXdra7xx\_evm\_defconfighmj>(hwh›h|hÍh~}rD((h€]h�]h‚]hƒ]h†]uhˆK‡hŠ]rE(h“Xdra7xx_evm_defconfigrF(…�rG(}rH((hlXdra7xx\_evm\_defconfighmjB(ubaubah|jFubj9)�rI(}rJ((hlUh~}rK((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]rL(hÊ)�rM(}rN((hlXdra7xx\_evm\_defconfighmjI(hwh›h|hÍh~}rO((h€]h�]h‚]hƒ]h†]uhˆK‡hŠ]rP(h“Xdra7xx_evm_defconfigrQ(…�rR(}rS((hlXdra7xx\_evm\_defconfighmjM(ubaubah|jFubj9)�rT(}rU((hlUh~}rV((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]rW(hÊ)�rX(}rY((hlX(dra7xx\_evm\_defconfig (DRA71x EVM only)hmjT(hwh›h|hÍh~}rZ((h€]h�]h‚]hƒ]h†]uhˆK‡hŠ]r[(h“X&dra7xx_evm_defconfig (DRA71x EVM only)r\(…�r](}r^((hlX(dra7xx\_evm\_defconfig (DRA71x EVM only)hmjX(ubaubah|jFubj9)�r_(}r`((hlUh~}ra((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]h|jFubj9)�rb(}rc((hlUh~}rd((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]h|jFubj9)�re(}rf((hlUh~}rg((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]h|jFubj9)�rh(}ri((hlUh~}rj((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]h|jFubj9)�rk(}rl((hlUh~}rm((h€]h�]h‚]hƒ]h†]uhmj.(hŠ]rn(hÊ)�ro(}rp((hlXdra7xx\_evm\_defconfig(QSPI)hmjk(hwh›h|hÍh~}rq((h€]h�]h‚]hƒ]h†]uhˆK‡hŠ]rr(h“Xdra7xx_evm_defconfig(QSPI)rs(…�rt(}ru((hlXdra7xx\_evm\_defconfig(QSPI)hmjo(ubaubah|jFubeh|jwubj4)�rv(}rw((hlUh~}rx((h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]ry((j9)�rz(}r{((hlUh~}r|((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]r}(hÊ)�r~(}r((hlXK2HK EVMr€(hmjz(hwh›h|hÍh~}r�((h€]h�]h‚]hƒ]h†]uhˆK‰hŠ]r‚(h“XK2HK EVMrƒ(…�r„(}r…((hlj€(hmj~(ubaubah|jFubj9)�r†(}r‡((hlUh~}rˆ((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]h|jFubj9)�r‰(}rŠ((hlUh~}r‹((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]h|jFubj9)�rŒ(}r�((hlUh~}rŽ((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]r�(hÊ)�r�(}r‘((hlXk2hk\_evm\_defconfighmjŒ(hwh›h|hÍh~}r’((h€]h�]h‚]hƒ]h†]uhˆK‰hŠ]r“(h“Xk2hk_evm_defconfigr”(…�r•(}r–((hlXk2hk\_evm\_defconfighmj�(ubaubah|jFubj9)�r—(}r˜((hlUh~}r™((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]rš(hÊ)�r›(}rœ((hlXk2hk\_evm\_defconfighmj—(hwh›h|hÍh~}r�((h€]h�]h‚]hƒ]h†]uhˆK‰hŠ]rž(h“Xk2hk_evm_defconfigrŸ(…�r (}r¡((hlXk2hk\_evm\_defconfighmj›(ubaubah|jFubj9)�r¢(}r£((hlUh~}r¤((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]r¥(hÊ)�r¦(}r§((hlXk2hk\_evm\_defconfighmj¢(hwh›h|hÍh~}r¨((h€]h�]h‚]hƒ]h†]uhˆK‰hŠ]r©(h“Xk2hk_evm_defconfigrª(…�r«(}r¬((hlXk2hk\_evm\_defconfighmj¦(ubaubah|jFubj9)�r­(}r®((hlUh~}r¯((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]h|jFubj9)�r°(}r±((hlUh~}r²((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]h|jFubj9)�r³(}r´((hlUh~}rµ((h€]h�]h‚]hƒ]h†]uhmjv(hŠ]r¶(hÊ)�r·(}r¸((hlXk2hk\_evm\_defconfighmj³(hwh›h|hÍh~}r¹((h€]h�]h‚]hƒ]h†]uhˆK‰hŠ]rº(h“Xk2hk_evm_defconfigr»(…�r¼(}r½((hlXk2hk\_evm\_defconfighmj·(ubaubah|jFubeh|jwubj4)�r¾(}r¿((hlUh~}rÀ((h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rÁ((j9)�rÂ(}rÃ((hlUh~}rÄ((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]rÅ(hÊ)�rÆ(}rÇ((hlXK2L EVMrÈ(hmjÂ(hwh›h|hÍh~}rÉ((h€]h�]h‚]hƒ]h†]uhˆK‹hŠ]rÊ(h“XK2L EVMrË(…�rÌ(}rÍ((hljÈ(hmjÆ(ubaubah|jFubj9)�rÎ(}rÏ((hlUh~}rÐ((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]h|jFubj9)�rÑ(}rÒ((hlUh~}rÓ((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]h|jFubj9)�rÔ(}rÕ((hlUh~}rÖ((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]r×(hÊ)�rØ(}rÙ((hlXk2l\_evm\_defconfighmjÔ(hwh›h|hÍh~}rÚ((h€]h�]h‚]hƒ]h†]uhˆK‹hŠ]rÛ(h“Xk2l_evm_defconfigrÜ(…�rÝ(}rÞ((hlXk2l\_evm\_defconfighmjØ(ubaubah|jFubj9)�rß(}rà((hlUh~}rá((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]râ(hÊ)�rã(}rä((hlXk2l\_evm\_defconfighmjß(hwh›h|hÍh~}rå((h€]h�]h‚]hƒ]h†]uhˆK‹hŠ]ræ(h“Xk2l_evm_defconfigrç(…�rè(}ré((hlXk2l\_evm\_defconfighmjã(ubaubah|jFubj9)�rê(}rë((hlUh~}rì((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]h|jFubj9)�rí(}rî((hlUh~}rï((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]h|jFubj9)�rð(}rñ((hlUh~}rò((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]h|jFubj9)�ró(}rô((hlUh~}rõ((h€]h�]h‚]hƒ]h†]uhmj¾(hŠ]rö(hÊ)�r÷(}rø((hlXk2l\_evm\_defconfighmjó(hwh›h|hÍh~}rù((h€]h�]h‚]hƒ]h†]uhˆK‹hŠ]rú(h“Xk2l_evm_defconfigrû(…�rü(}rý((hlXk2l\_evm\_defconfighmj÷(ubaubah|jFubeh|jwubj4)�rþ(}rÿ((hlUh~}r)(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r)(j9)�r)}r)(hlUh~}r)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]r)hÊ)�r)}r)(hlXK2E EVMr)hmj)hwh›h|hÍh~}r )(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r )h“XK2E EVMr )…�r )}r )(hlj)hmj)ubaubah|jFubj9)�r)}r)(hlUh~}r)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]h|jFubj9)�r)}r)(hlUh~}r)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]h|jFubj9)�r)}r)(hlUh~}r)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]r)hÊ)�r)}r)(hlXk2e\_evm\_defconfighmj)hwh›h|hÍh~}r)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r)h“Xk2e_evm_defconfigr)…�r)}r)(hlXk2e\_evm\_defconfighmj)ubaubah|jFubj9)�r)}r )(hlUh~}r!)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]r")hÊ)�r#)}r$)(hlXk2e\_evm\_defconfighmj)hwh›h|hÍh~}r%)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r&)h“Xk2e_evm_defconfigr')…�r()}r))(hlXk2e\_evm\_defconfighmj#)ubaubah|jFubj9)�r*)}r+)(hlUh~}r,)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]h|jFubj9)�r-)}r.)(hlUh~}r/)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]h|jFubj9)�r0)}r1)(hlUh~}r2)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]h|jFubj9)�r3)}r4)(hlUh~}r5)(h€]h�]h‚]hƒ]h†]uhmjþ(hŠ]r6)hÊ)�r7)}r8)(hlXk2e\_evm\_defconfighmj3)hwh›h|hÍh~}r9)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r:)h“Xk2e_evm_defconfigr;)…�r<)}r=)(hlXk2e\_evm\_defconfighmj7)ubaubah|jFubeh|jwubj4)�r>)}r?)(hlUh~}r@)(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]rA)(j9)�rB)}rC)(hlUh~}rD)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]rE)hÊ)�rF)}rG)(hlX K2G GP EVMrH)hmjB)hwh›h|hÍh~}rI)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]rJ)h“X K2G GP EVMrK)…�rL)}rM)(hljH)hmjF)ubaubah|jFubj9)�rN)}rO)(hlUh~}rP)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]rQ)hÊ)�rR)}rS)(hlXk2g\_evm\_defconfighmjN)hwh›h|hÍh~}rT)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]rU)h“Xk2g_evm_defconfigrV)…�rW)}rX)(hlXk2g\_evm\_defconfighmjR)ubaubah|jFubj9)�rY)}rZ)(hlUh~}r[)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]h|jFubj9)�r\)}r])(hlUh~}r^)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]h|jFubj9)�r_)}r`)(hlUh~}ra)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]rb)hÊ)�rc)}rd)(hlXk2g\_evm\_defconfighmj_)hwh›h|hÍh~}re)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]rf)h“Xk2g_evm_defconfigrg)…�rh)}ri)(hlXk2g\_evm\_defconfighmjc)ubaubah|jFubj9)�rj)}rk)(hlUh~}rl)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]rm)hÊ)�rn)}ro)(hlXk2g\_evm\_defconfighmjj)hwh›h|hÍh~}rp)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]rq)h“Xk2g_evm_defconfigrr)…�rs)}rt)(hlXk2g\_evm\_defconfighmjn)ubaubah|jFubj9)�ru)}rv)(hlUh~}rw)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]h|jFubj9)�rx)}ry)(hlUh~}rz)(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]h|jFubj9)�r{)}r|)(hlUh~}r})(h€]h�]h‚]hƒ]h†]uhmj>)hŠ]r~)hÊ)�r)}r€)(hlXk2g\_evm\_defconfighmj{)hwh›h|hÍh~}r�)(h€]h�]h‚]hƒ]h†]uhˆK�hŠ]r‚)h“Xk2g_evm_defconfigrƒ)…�r„)}r…)(hlXk2g\_evm\_defconfighmj)ubaubah|jFubeh|jwubj4)�r†)}r‡)(hlUh~}rˆ)(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r‰)(j9)�rŠ)}r‹)(hlUh~}rŒ)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]r�)hÊ)�rŽ)}r�)(hlXK2G ICEr�)hmjŠ)hwh›h|hÍh~}r‘)(h€]h�]h‚]hƒ]h†]uhˆK‘hŠ]r’)h“XK2G ICEr“)…�r”)}r•)(hlj�)hmjŽ)ubaubah|jFubj9)�r–)}r—)(hlUh~}r˜)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]r™)hÊ)�rš)}r›)(hlXk2g\_evm\_defconfighmj–)hwh›h|hÍh~}rœ)(h€]h�]h‚]hƒ]h†]uhˆK‘hŠ]r�)h“Xk2g_evm_defconfigrž)…�rŸ)}r )(hlXk2g\_evm\_defconfighmjš)ubaubah|jFubj9)�r¡)}r¢)(hlUh~}r£)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubj9)�r¤)}r¥)(hlUh~}r¦)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubj9)�r§)}r¨)(hlUh~}r©)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubj9)�rª)}r«)(hlUh~}r¬)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubj9)�r­)}r®)(hlUh~}r¯)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubj9)�r°)}r±)(hlUh~}r²)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubj9)�r³)}r´)(hlUh~}rµ)(h€]h�]h‚]hƒ]h†]uhmj†)hŠ]h|jFubeh|jwubj4)�r¶)}r·)(hlUh~}r¸)(h€]h�]h‚]hƒ]h†]uhmjJ%hŠ]r¹)(j9)�rº)}r»)(hlUh~}r¼)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]r½)hÊ)�r¾)}r¿)(hlXOMAP-L138 LCDKrÀ)hmjº)hwh›h|hÍh~}rÁ)(h€]h�]h‚]hƒ]h†]uhˆK“hŠ]rÂ)h“XOMAP-L138 LCDKrÃ)…�rÄ)}rÅ)(hljÀ)hmj¾)ubaubah|jFubj9)�rÆ)}rÇ)(hlUh~}rÈ)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]rÉ)hÊ)�rÊ)}rË)(hlXomapl138\_lcdk\_defconfighmjÆ)hwh›h|hÍh~}rÌ)(h€]h�]h‚]hƒ]h†]uhˆK“hŠ]rÍ)h“Xomapl138_lcdk_defconfigrÎ)…�rÏ)}rÐ)(hlXomapl138\_lcdk\_defconfighmjÊ)ubaubah|jFubj9)�rÑ)}rÒ)(hlUh~}rÓ)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]h|jFubj9)�rÔ)}rÕ)(hlUh~}rÖ)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]r×)hÊ)�rØ)}rÙ)(hlXomapl138\_lcdk\_defconfighmjÔ)hwh›h|hÍh~}rÚ)(h€]h�]h‚]hƒ]h†]uhˆK“hŠ]rÛ)h“Xomapl138_lcdk_defconfigrÜ)…�rÝ)}rÞ)(hlXomapl138\_lcdk\_defconfighmjØ)ubaubah|jFubj9)�rß)}rà)(hlUh~}rá)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]h|jFubj9)�râ)}rã)(hlUh~}rä)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]h|jFubj9)�rå)}ræ)(hlUh~}rç)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]h|jFubj9)�rè)}ré)(hlUh~}rê)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]h|jFubj9)�rë)}rì)(hlUh~}rí)(h€]h�]h‚]hƒ]h†]uhmj¶)hŠ]h|jFubeh|jwubeh|j¹ubeh|jºubaubhÊ)�rî)}rï)(hlXThen:rð)hmhohwh›h|hÍh~}rñ)(h€]h�]h‚]hƒ]h†]uhˆK–h‰hhŠ]rò)h“XThen:ró)…�rô)}rõ)(hljð)hmjî)ubaubjr)�rö)}r÷)(hlX¹# Use 'am335x_evm' and 'AM335x GP EVM' in this example $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evmhmhohwh›h|juh~}rø)(hŸh hƒ]h‚]h€]h�]h†]uhˆK¥h‰hhŠ]rù)h“X¹# Use 'am335x_evm' and 'AM335x GP EVM' in this example $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evmrú)…�rû)}rü)(hlUhmjö)ubaubhÊ)�rý)}rþ)(hlXiNote that not all possible build targets for a given platform are listed here as the community has additional build targets that are not supported by TI. To find these read the 'boards.cfg' file and look for the build target listed above. And please note that the main config file will leverage other files under include/configs, as seen by #include statements.rÿ)hmhohwh›h|hÍh~}r*(h€]h�]h‚]hƒ]h†]uhˆKžh‰hhŠ]r*h“XiNote that not all possible build targets for a given platform are listed here as the community has additional build targets that are not supported by TI. To find these read the 'boards.cfg' file and look for the build target listed above. And please note that the main config file will leverage other files under include/configs, as seen by #include statements.r*…�r*}r*(hljÿ)hmjý)ubaubjC)�r*}r*(hlX Boot Flowr*hmhohwh›h|jGh~}r*(hƒ]r *U boot-flowr *ah‚]h€]h�]h†]r *hBauhˆNh‰hhŠ]r *h“X Boot Flowr *…�r*}r*(hlj*hmj*ubaubhÊ)�r*}r*(hlX!Booting the Linux kernel on an embedded platform is not as simple as simply pointing a program counter to the kernel location and letting the processor run. This section will review the four bootloader software stages that must be run before the kernel can be booted and run on the device.r*hmhohwh›h|hÍh~}r*(h€]h�]h‚]hƒ]h†]uhˆK¨h‰hhŠ]r*h“X!Booting the Linux kernel on an embedded platform is not as simple as simply pointing a program counter to the kernel location and letting the processor run. This section will review the four bootloader software stages that must be run before the kernel can be booted and run on the device.r*…�r*}r*(hlj*hmj*ubaubhÊ)�r*}r*(hlX_Application processors such as the the AM335x are complex pieces of hardware, but have limited internal RAM (e.g., 128KB). Because of this limited amount of RAM, multiple bootloader stages are needed. These bootloader stages systematically unlock the full functionality of the device so that all complexities of the device are available to the kernel.r*hmhohwh›h|hÍh~}r*(h€]h�]h‚]hƒ]h†]uhˆK­h‰hhŠ]r*h“X_Application processors such as the the AM335x are complex pieces of hardware, but have limited internal RAM (e.g., 128KB). Because of this limited amount of RAM, multiple bootloader stages are needed. These bootloader stages systematically unlock the full functionality of the device so that all complexities of the device are available to the kernel.r*…�r*}r*(hlj*hmj*ubaubhÊ)�r *}r!*(hlX*There are four distinct bootloader stages:r"*hmhohwh›h|hÍh~}r#*(h€]h�]h‚]hƒ]h†]uhˆK³h‰hhŠ]r$*h“X*There are four distinct bootloader stages:r%*…�r&*}r'*(hlj"*hmj *ubaubj)�r(*}r)*(hlX/.. Image:: /images/U-Boot_Boot_Order_32bit.png hmhohwh›h|jh~}r**(UuriX"images/U-Boot_Boot_Order_32bit.pngr+*hƒ]h‚]h€]h�]j}r,*U*j+*sh†]uhˆK¶h‰hhŠ]ubj)�r-*}r.*(hlUhmhohwh›h|jh~}r/*(jU.hƒ]h‚]h€]j Uh�]h†]j j uhˆK·h‰hhŠ]r0*j )�r1*}r2*(hlX ROM Code hmj-*hwh›h|jh~}r3*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r4*hÊ)�r5*}r6*(hlXROM Coder7*hmj1*hwh›h|hÍh~}r8*(h€]h�]h‚]hƒ]h†]uhˆK·hŠ]r9*h“XROM Coder:*…�r;*}r<*(hlj7*hmj5*ubaubaubaubhÊ)�r=*}r>*(hlXfThe first stage bootloader is housed in ROM on the device. The ROM code is the first block of code that is automatically run on device start-up or after power-on reset (POR). The ROM bootloader code is hardcoded into the device and cannot be changed by the user. Because of this, it is important to get an understanding of what exactly the ROM code is doing.r?*hmhohwh›h|hÍh~}r@*(h€]h�]h‚]hƒ]h†]uhˆK¹h‰hhŠ]rA*h“XfThe first stage bootloader is housed in ROM on the device. The ROM code is the first block of code that is automatically run on device start-up or after power-on reset (POR). The ROM bootloader code is hardcoded into the device and cannot be changed by the user. Because of this, it is important to get an understanding of what exactly the ROM code is doing.rB*…�rC*}rD*(hlj?*hmj=*ubaubhÊ)�rE*}rF*(hlX$The ROM code has two main functions:rG*hmhohwh›h|hÍh~}rH*(h€]h�]h‚]hƒ]h†]uhˆK¿h‰hhŠ]rI*h“X$The ROM code has two main functions:rJ*…�rK*}rL*(hljG*hmjE*ubaubj#)�rM*}rN*(hlUhmhohwh›h|j&h~}rO*(j(X*hƒ]h‚]h€]h�]h†]uhˆKÁh‰hhŠ]rP*(j )�rQ*}rR*(hlXÂConfiguration of the device and initialization of primary peripherals such as stack setup, configuring the Watchdog Timer (see TRM for details) as well as the PLL and system clocks configurationhmjM*hwh›h|jh~}rS*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rT*hÊ)�rU*}rV*(hlXÂConfiguration of the device and initialization of primary peripherals such as stack setup, configuring the Watchdog Timer (see TRM for details) as well as the PLL and system clocks configurationrW*hmjQ*hwh›h|hÍh~}rX*(h€]h�]h‚]hƒ]h†]uhˆKÁhŠ]rY*h“XÂConfiguration of the device and initialization of primary peripherals such as stack setup, configuring the Watchdog Timer (see TRM for details) as well as the PLL and system clocks configurationrZ*…�r[*}r\*(hljW*hmjU*ubaubaubj )�r]*}r^*(hlX¸Readies the device for next bootloader by checking boot sources for next stage of bootloader (SPL) as well as loading the actual next stage bootloader code into memory and starting it hmjM*hwh›h|jh~}r_*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r`*hÊ)�ra*}rb*(hlX·Readies the device for next bootloader by checking boot sources for next stage of bootloader (SPL) as well as loading the actual next stage bootloader code into memory and starting itrc*hmj]*hwh›h|hÍh~}rd*(h€]h�]h‚]hƒ]h†]uhˆKÄhŠ]re*h“X·Readies the device for next bootloader by checking boot sources for next stage of bootloader (SPL) as well as loading the actual next stage bootloader code into memory and starting itrf*…�rg*}rh*(hljc*hmja*ubaubaubeubhÊ)�ri*}rj*(hlXxThe list of booting devices that the ROM code will search through for the second stage bootloader is configured by the voltage levels set on the devices SYSBOOT pins on startup. These pins also set other boot parameters (i.e. expected crystal frequency, bus width of external memory). For more information on the SYSBOOT pins and associated boot parameters see the device TRM.rk*hmhohwh›h|hÍh~}rl*(h€]h�]h‚]hƒ]h†]uhˆKÈh‰hhŠ]rm*h“XxThe list of booting devices that the ROM code will search through for the second stage bootloader is configured by the voltage levels set on the devices SYSBOOT pins on startup. These pins also set other boot parameters (i.e. expected crystal frequency, bus width of external memory). For more information on the SYSBOOT pins and associated boot parameters see the device TRM.rn*…�ro*}rp*(hljk*hmji*ubaubj)�rq*}rr*(hlUhmhohwh›h|jh~}rs*(jU.jsKhƒ]h‚]h€]j Uh�]h†]j j uhˆKÏh‰hhŠ]rt*j )�ru*}rv*(hlX SPL or MLO hmjq*hwh›h|jh~}rw*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rx*hÊ)�ry*}rz*(hlX SPL or MLOr{*hmju*hwh›h|hÍh~}r|*(h€]h�]h‚]hƒ]h†]uhˆKÏhŠ]r}*h“X SPL or MLOr~*…�r*}r€*(hlj{*hmjy*ubaubaubaubhÊ)�r�*}r‚*(hlX¦The second stage bootloader is known as the SPL (Secondary Program Loader), but is sometimes referred to as the MLO (MMC Card Loader). The SPL is the first stage of U-Boot, and must be loaded from one of the boot sources into internal RAM. The SPL has very limited configuration or user interaction, and mainly serves to initialize the external DDR memory and set-up the boot process for the next bootloader stage: U-Boot.rƒ*hmhohwh›h|hÍh~}r„*(h€]h�]h‚]hƒ]h†]uhˆKÑh‰hhŠ]r…*h“X¦The second stage bootloader is known as the SPL (Secondary Program Loader), but is sometimes referred to as the MLO (MMC Card Loader). The SPL is the first stage of U-Boot, and must be loaded from one of the boot sources into internal RAM. The SPL has very limited configuration or user interaction, and mainly serves to initialize the external DDR memory and set-up the boot process for the next bootloader stage: U-Boot.r†*…�r‡*}rˆ*(hljƒ*hmj�*ubaubj)�r‰*}rŠ*(hlUhmhohwh›h|jh~}r‹*(jU.jsKhƒ]h‚]h€]j Uh�]h†]j j uhˆKØh‰hhŠ]rŒ*j )�r�*}rŽ*(hlXU-Boot hmj‰*hwh›h|jh~}r�*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]r�*hÊ)�r‘*}r’*(hlXU-Bootr“*hmj�*hwh›h|hÍh~}r”*(h€]h�]h‚]hƒ]h†]uhˆKØhŠ]r•*h“XU-Bootr–*…�r—*}r˜*(hlj“*hmj‘*ubaubaubaubhÊ)�r™*}rš*(hlXÁU-Boot allows for powerful command-based control over the kernel boot environment via a serial terminal. The user has control over a number of parameters such as boot arguments and the kernel boot command. In addition, U-Boot environment variables can be configured. These environment variables are stored in the **uEnv.txt** file on your storage medium or directly in a Flash-based memory if configured such. These environment variables can be viewed, modified, and saved using the **env print**, **env set**, and **env save** commands, respectively. U-Boot is also a very useful tool to program and manipulate a wide range of external memory devices as well as a helpful aid during custom board bringup.hmhohwh›h|hÍh~}r›*(h€]h�]h‚]hƒ]h†]uhˆKÚh‰hhŠ]rœ*(h“X9U-Boot allows for powerful command-based control over the kernel boot environment via a serial terminal. The user has control over a number of parameters such as boot arguments and the kernel boot command. In addition, U-Boot environment variables can be configured. These environment variables are stored in the r�*…�rž*}rŸ*(hlX9U-Boot allows for powerful command-based control over the kernel boot environment via a serial terminal. The user has control over a number of parameters such as boot arguments and the kernel boot command. In addition, U-Boot environment variables can be configured. These environment variables are stored in the hmj™*ubj)�r *}r¡*(hlX **uEnv.txt**h~}r¢*(h€]h�]h‚]hƒ]h†]uhmj™*hŠ]r£*h“XuEnv.txtr¤*…�r¥*}r¦*(hlUhmj *ubah|j'ubh“Xž file on your storage medium or directly in a Flash-based memory if configured such. These environment variables can be viewed, modified, and saved using the r§*…�r¨*}r©*(hlXž file on your storage medium or directly in a Flash-based memory if configured such. These environment variables can be viewed, modified, and saved using the hmj™*ubj)�rª*}r«*(hlX **env print**h~}r¬*(h€]h�]h‚]hƒ]h†]uhmj™*hŠ]r­*h“X env printr®*…�r¯*}r°*(hlUhmjª*ubah|j'ubh“X, r±*…�r²*}r³*(hlX, hmj™*ubj)�r´*}rµ*(hlX **env set**h~}r¶*(h€]h�]h‚]hƒ]h†]uhmj™*hŠ]r·*h“Xenv setr¸*…�r¹*}rº*(hlUhmj´*ubah|j'ubh“X, and r»*…�r¼*}r½*(hlX, and hmj™*ubj)�r¾*}r¿*(hlX **env save**h~}rÀ*(h€]h�]h‚]hƒ]h†]uhmj™*hŠ]rÁ*h“Xenv saverÂ*…�rÃ*}rÄ*(hlUhmj¾*ubah|j'ubh“X² commands, respectively. U-Boot is also a very useful tool to program and manipulate a wide range of external memory devices as well as a helpful aid during custom board bringup.rÅ*…�rÆ*}rÇ*(hlX² commands, respectively. U-Boot is also a very useful tool to program and manipulate a wide range of external memory devices as well as a helpful aid during custom board bringup.hmj™*ubeubj)�rÈ*}rÉ*(hlUhmhohwh›h|jh~}rÊ*(jU.jsKhƒ]h‚]h€]j Uh�]h†]j j uhˆKåh‰hhŠ]rË*j )�rÌ*}rÍ*(hlX Linux Kernel hmjÈ*hwh›h|jh~}rÎ*(h€]h�]h‚]hƒ]h†]uhˆNh‰hhŠ]rÏ*hÊ)�rÐ*}rÑ*(hlX Linux KernelrÒ*hmjÌ*hwh›h|hÍh~}rÓ*(h€]h�]h‚]hƒ]h†]uhˆKåhŠ]rÔ*h“X Linux KernelrÕ*…�rÖ*}r×*(hljÒ*hmjÐ*ubaubaubaubhÊ)�rØ*}rÙ*(hlX€**zImage** is the compressed kernel image wrapped with header info that describes the kernel. This header includes the target architecture, the operating system, kernel size, entry points, etc. The loading of the kernel image is typically performed through the use of scripts stored in the U-Boot environment (all starting with the **bootcmd** ENV variable that gets executed after the autoboot countdown expires or manually by entering the **boot** command at the U-Boot prompt). This also involves passing a board- specific device tree blob (DTB) as an argument to U-Boot's **bootz** command that will extract and start the actual kernel.hmhohwh›h|hÍh~}rÚ*(h€]h�]h‚]hƒ]h†]uhˆKçh‰hhŠ]rÛ*(j)�rÜ*}rÝ*(hlX **zImage**h~}rÞ*(h€]h�]h‚]hƒ]h†]uhmjØ*hŠ]rß*h“XzImagerà*…�rá*}râ*(hlUhmjÜ*ubah|j'ubh“XB is the compressed kernel image wrapped with header info that describes the kernel. This header includes the target architecture, the operating system, kernel size, entry points, etc. The loading of the kernel image is typically performed through the use of scripts stored in the U-Boot environment (all starting with the rã*…�rä*}rå*(hlXB is the compressed kernel image wrapped with header info that describes the kernel. This header includes the target architecture, the operating system, kernel size, entry points, etc. The loading of the kernel image is typically performed through the use of scripts stored in the U-Boot environment (all starting with the hmjØ*ubj)�ræ*}rç*(hlX **bootcmd**h~}rè*(h€]h�]h‚]hƒ]h†]uhmjØ*hŠ]ré*h“Xbootcmdrê*…�rë*}rì*(hlUhmjæ*ubah|j'ubh“Xb ENV variable that gets executed after the autoboot countdown expires or manually by entering the rí*…�rî*}rï*(hlXb ENV variable that gets executed after the autoboot countdown expires or manually by entering the hmjØ*ubj)�rð*}rñ*(hlX**boot**h~}rò*(h€]h�]h‚]hƒ]h†]uhmjØ*hŠ]ró*h“Xbootrô*…�rõ*}rö*(hlUhmjð*ubah|j'ubh“X command at the U-Boot prompt). This also involves passing a board- specific device tree blob (DTB) as an argument to U-Boot's r÷*…�rø*}rù*(hlX command at the U-Boot prompt). This also involves passing a board- specific device tree blob (DTB) as an argument to U-Boot's hmjØ*ubj)�rú*}rû*(hlX **bootz**h~}rü*(h€]h�]h‚]hƒ]h†]uhmjØ*hŠ]rý*h“Xbootzrþ*…�rÿ*}r+(hlUhmjú*ubah|j'ubh“X7 command that will extract and start the actual kernel.r+…�r+}r+(hlX7 command that will extract and start the actual kernel.hmjØ*ubeubeubhwh›h|Usystem_messager+h~}r+(h€]UlevelKhƒ]h‚]Usourcehzh�]h†]UlineKUtypeUINFOr+uhˆKÏh‰hhŠ]r+hÊ)�r+}r +(hlX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h~}r +(h€]h�]h‚]hƒ]h†]uhmhjhŠ]r +h“X:Enumerated list start value not ordinal-1: "2" (ordinal 2)r +…�r +}r+(hlUhmj+ubah|hÍubaubhi)�r+}r+(hlUhmhohwh›h|j+h~}r+(h€]UlevelKhƒ]h‚]Usourcehzh�]h†]UlineKUtypej+uhˆKØh‰hhŠ]r+hÊ)�r+}r+(hlX:Enumerated list start value not ordinal-1: "3" (ordinal 3)h~}r+(h€]h�]h‚]hƒ]h†]uhmj+hŠ]r+h“X:Enumerated list start value not ordinal-1: "3" (ordinal 3)r+…�r+}r+(hlUhmj+ubah|hÍubaubhi)�r+}r+(hlUhmhohwh›h|j+h~}r+(h€]UlevelKhƒ]h‚]Usourcehzh�]h†]UlineKUtypej+uhˆKåh‰hhŠ]r+hÊ)�r+}r+(hlX:Enumerated list start value not ordinal-1: "4" (ordinal 4)h~}r +(h€]h�]h‚]hƒ]h†]uhmj+hŠ]r!+h“X:Enumerated list start value not ordinal-1: "4" (ordinal 4)r"+…�r#+}r$+(hlUhmj+ubah|hÍubaubhi)�r%+}r&+(hlUhmj}hwh›h|j+h~}r'+(h€]UlevelKhƒ]h‚]Usourceh›h�]h†]UlineM×Utypej+uhˆMÙh‰hhŠ]r(+hÊ)�r)+}r*+(hlX`Possible incomplete section title. Treating the overline as ordinary text because it's so short.h~}r++(h€]h�]h‚]hƒ]h†]uhmj%+hŠ]r,+h“X`Possible incomplete section title. Treating the overline as ordinary text because it's so short.r-+…�r.+}r/+(hlUhmj)+ubah|hÍubaubhi)�r0+}r1+(hlUh~}r2+(h€]UlevelKhƒ]h‚]Usourceh›h�]h†]UlineMÚUtypej+uhmj´hŠ]r3+hÊ)�r4+}r5+(hlX`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.h~}r6+(h€]h�]h‚]hƒ]h†]uhmj0+hŠ]r7+h“X`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.r8+…�r9+}r:+(hlUhmj4+ubah|hÍubah|j+ubhi)�r;+}r<+(hlUhmjôhwhzh|j+h~}r=+(h€]UlevelKhƒ]h‚]Usourcehzh�]h†]UlineKUtypej+uhˆKDh‰hhŠ]r>+hÊ)�r?+}r@+(hlX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h~}rA+(h€]h�]h‚]hƒ]h†]uhmj;+hŠ]rB+h“X:Enumerated list start value not ordinal-1: "2" (ordinal 2)rC+…�rD+}rE+(hlUhmj?+ubah|hÍubaubeUcurrent_sourcerF+NU decorationrG+NUautofootnote_startrH+KUnameidsrI+}rJ+(hj×hj6hjå"h jÈh j8h j$h j“h jxhje hjrhjJhj× hj×hj hj€hj¶hj hju hh¸hj¸#hj¼hj{hjÁ hjO hj"hjÁh j¤ h!jp h"jÜh#jFh$jÄ"h%jhh&jÛh'j·h(j¸h)jð h*jJ$h+j�h,j… h-jÛ h.j h/jã h0h©h1jÉh2jh3jøh4j¿ h5j`h6jŸh7j¹ h8jéh9h…h:j¥$h;j hj#h?jøh@j !hAjb$hBj *hCjÊhDj hEjUhFjIhGj hHjìhIj©hJjhKj€ hLj§hMjG hNj®hOjühPj'hQj]hRjæhSjÀhTjÌ hUj¯hVjIhWj;#hXj>hYjòhZjþh[j5h\j`h]jšh^jh_jóh`jáhaj|$hbjbhcj hdjTuhŠ]rK+(h—)�rL+}rM+(hlXBhttp://processors.wiki.ti.com/index.php/Processor_SDK_Linux_U-Boothmhhwhzh|h�h~}rN+(hŸh hƒ]h‚]h€]h�]h†]uhˆKh‰hhŠ]rO+h“XBhttp://processors.wiki.ti.com/index.php/Processor_SDK_Linux_U-BootrP+…�rQ+}rR+(hlUhmjL+ubaubhuehlUU transformerrS+NU footnote_refsrT+}rU+UrefnamesrV+}rW+Usymbol_footnotesrX+]rY+Uautofootnote_refsrZ+]r[+Usymbol_footnote_refsr\+]r]+U citationsr^+]r_+h‰hU current_liner`+NUtransform_messagesra+]rb+Ureporterrc+NUid_startrd+KU autofootnotesre+]rf+U citation_refsrg+}rh+Uindirect_targetsri+]rj+Usettingsrk+(cdocutils.frontend Values rl+orm+}rn+(Ufootnote_backlinksro+KUrecord_dependenciesrp+NU rfc_base_urlrq+Uhttps://tools.ietf.org/html/rr+U tracebackrs+ˆUpep_referencesrt+NUstrip_commentsru+NU toc_backlinksrv+jFU language_coderw+Uenrx+U datestampry+NU report_levelrz+KU _destinationr{+NU halt_levelr|+KU strip_classesr}+Nh�NUerror_encoding_error_handlerr~+Ubackslashreplacer+Udebugr€+NUembed_stylesheetr�+‰Uoutput_encoding_error_handlerr‚+Ustrictrƒ+U sectnum_xformr„+KUdump_transformsr…+NU docinfo_xformr†+KUwarning_streamr‡+NUpep_file_url_templaterˆ+Upep-%04dr‰+Uexit_status_levelrŠ+KUconfigr‹+NUstrict_visitorrŒ+NUcloak_email_addressesr�+ˆUtrim_footnote_reference_spacerŽ+‰Uenvr�+NUdump_pseudo_xmlr�+NUexpose_internalsr‘+NUsectsubtitle_xformr’+‰U source_linkr“+NUrfc_referencesr”+NUoutput_encodingr•+Uutf-8r–+U source_urlr—+NUinput_encodingr˜+U utf-8-sigr™+U_disable_configrš+NU id_prefixr›+UU tab_widthrœ+KUerror_encodingr�+UUTF-8rž+U_sourcerŸ+X^/home/gtbldadm/nightlybuilds/processor-sdk-doc/source/linux/Foundational_Components_U-Boot.rstr +Ugettext_compactr¡+ˆU generatorr¢+NUdump_internalsr£+NU smart_quotesr¤+‰U pep_base_urlr¥+U https://www.python.org/dev/peps/r¦+Usyntax_highlightr§+Ulongr¨+Uinput_encoding_error_handlerr©+jƒ+Uauto_id_prefixrª+Uidr«+Udoctitle_xformr¬+‰Ustrip_elements_with_classesr­+NU _config_filesr®+]Ufile_insertion_enabledr¯+ˆU raw_enabledr°+KU dump_settingsr±+NubUsymbol_footnote_startr²+KUidsr³+}r´+(j®jªj©j¥h¸h´j6j2j8j4h©h¥j¸j´j“jŽj€j|je j` jrjnjJjDjæjâjÜjØj… j� j×jÓjp hqjšj–hðhìj !j!j× jÓ jÌ jÈ jájÝjÈjÄjbj^j¤ j  j¶j²jjj>j:j j{ jÄ"j¿"j`j\jhjcjÛjÖj·j²jð jë jIjEj�j}j{jwjÛ jÖ jÊjÆj'j#jøhsjÉjÄjjjøjôjÀj¼jË jÇ jFjBj¸#j´#j j j`j\jŸj›h…huj¥$j $j j j#j#jjj¿ j» jb$j]$j j ju jq j *j*jójïj×jÓj|$jw$jO jK jã jß jüjøj§j£jéjåj jj€ j| jJ$hojÁj½j]jYj jj"jjxjsj¯jªjIjDj;#j6#jòjîjþjúj5j0jå"já"jUjPjÁ j½ j j j¹ jµ j$j$jG jC jTjPjìjèj¼j¸uUsubstitution_namesrµ+}r¶+h|h‰h~}r·+(h€]hƒ]h‚]Usourcej +h�]h†]uU footnotesr¸+]r¹+Urefidsrº+}r»+ub.