RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Petalinux下Patch u-boot源碼

XILINX開(kāi)發(fā)者社區(qū) ? 來(lái)源: XILINX開(kāi)發(fā)者社區(qū) ? 2024-12-04 16:26 ? 次閱讀

本文作者:AMD 工程師Chao Zhang

在軟件開(kāi)發(fā)過(guò)程中我們經(jīng)常遇到用 Patch 來(lái)傳遞和更新代碼的場(chǎng)景。本文以一個(gè)端到端的例子來(lái)演示在 Petalinux 使用過(guò)程中,如何給 u-boot 的源碼生成 Patch 并在 Petalinux 中編譯。

操作系統(tǒng):Ubuntu 18.04

工具:Petalinux 2020.2

開(kāi)發(fā)板:ZCU102 Rev 1.0

源碼:https://github.com/Xilinx/u-boot-xlnx

目標(biāo):出于演示目的,我們將修改 u-boot/cmd/bdinfo.c 文件,在 bdinfo 命令中加入一段打印,最終通過(guò)上板執(zhí)行 bdinfo 命令來(lái)驗(yàn)證效果。

生成 Patch

首先 clone u-boot 源碼到本地,切換到 Petalinux 2020.2 對(duì)應(yīng)的 u-boot 分支??蓮?Petalinux 2020.2 release notes

中查找對(duì)應(yīng)的 u-boot 源碼 branch 和 tag 信息

https://www.xilinx.com/support/answers/75775.html

接下來(lái)使用任何你喜歡的編輯器修改 u-boot/cmd/bdinfo.c 代碼,在 do_bdinfo 函數(shù)體中加入最后幾句打印信息,具體如下:

0635db80-ad88-11ef-93f3-92fbcf53809c.png

在 u-boot 源碼目錄下執(zhí)行“git diff cmd/bdinfo.c > bdinfo.patch"。這個(gè)操作將在 u-boot 源碼目錄下生成 bdinfo.patch 文件,其內(nèi)容如下:

063d82f4-ad88-11ef-93f3-92fbcf53809c.png

應(yīng)用 Patch

把 Patch 文件拷貝到 Petalinux 工程下 project-spec/meta-user/recipes-bsp/u-boot/files 文件夾中。

0641bbd0-ad88-11ef-93f3-92fbcf53809c.png

編輯 u-boot-xlnx_%.bbappend,添加 SRC_URI +="

file://bdinfo.patch", 0647d240-ad88-11ef-93f3-92fbcf53809c.png

準(zhǔn)備就緒,編譯并運(yùn)行

一切準(zhǔn)備好了,接下來(lái)就是常規(guī)操作 Build Petalinux 工程并且打包 boot.bin 文件。最后上板啟動(dòng) u-boot, 運(yùn)行 bdinfo 命令:

0657f09e-ad88-11ef-93f3-92fbcf53809c.png

我們添加的打印信息在 Bdinfo 中打印了出來(lái),可見(jiàn) Patch 成功了!

這個(gè)簡(jiǎn)單例子演示了 Petalinux 工程 Patch 源碼的完整操作。同樣可參照該流程對(duì) Kernel/FSBL 等其它源碼進(jìn)行patch,需要注意的地方:

1. 用來(lái)生成 Patch 的源碼版本必須與 Petalinux 編譯用的源碼版本完全一致,否則 Patch 文件無(wú)法匹配。

2. 也可使用 Linux 的 diff 命令來(lái)生成 Patch,需要注意 Generate patch 時(shí)目標(biāo)文件夾深度要與 Apply 時(shí)一致,否則 Patch 也無(wú)法匹配(參考閱讀 diff 命令的 -p 選項(xiàng))。

3. 修改 u-boot-xlnx_%.bbappend 文件以將 Patch 加入到 Build 過(guò)程中,注意如果 /project-spec/meta-user/recipes-bsp/u-boot 文件夾不存在的話(很有可能),可以按照該目錄結(jié)構(gòu)自己來(lái)創(chuàng)建,.bbappend 文件的作用及語(yǔ)法可參考 Yocto 相關(guān)文檔。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    639

    瀏覽量

    29185
  • u-boot
    +關(guān)注

    關(guān)注

    0

    文章

    121

    瀏覽量

    38220
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    683

    瀏覽量

    22011
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    805

    瀏覽量

    31163

原文標(biāo)題:開(kāi)發(fā)者分享|如何在 Petalinux 下 Patch u-boot 源碼

文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    U-boot的基本介紹

    從本文開(kāi)始,將陸續(xù)推送“手把手教你移植U-boot”系列文章,目標(biāo)是由淺入深地講解U-boot的工作流程、原理、配置方法和移植方法,手把手教你完成U-boot的移植工作,默認(rèn)硬件開(kāi)發(fā)平臺(tái)為ARM,操作系統(tǒng)為L(zhǎng)inux。
    發(fā)表于 07-14 16:52 ?2866次閱讀
    <b class='flag-5'>U-boot</b>的基本介紹

    U-boot的執(zhí)行流程

    本文主要講述了U-boot的執(zhí)行流程。
    發(fā)表于 07-14 16:58 ?697次閱讀
    <b class='flag-5'>U-boot</b>的執(zhí)行流程

    u-boot源碼

    哪位大大有最新的u-boot源碼啊,現(xiàn)在正在學(xué)習(xí)u-boot,想要一份源碼,怎奈官方下載地址不能。誰(shuí)有發(fā)一
    發(fā)表于 07-12 16:11

    U-Boot的啟動(dòng)及移植分析

    bootloader 開(kāi)發(fā)是嵌入式系統(tǒng)必不可少而且十分重要的部分,U-Boot 為功能強(qiáng)大的bootloader 開(kāi)發(fā)軟件。本文詳細(xì)分析了U-Boot 的啟動(dòng)流程,并結(jié)合其源碼,闡述了U-Bo
    發(fā)表于 09-01 16:34 ?27次下載

    Porting U-Boot to the Control

    In this paper, the way of porting U-Boot to Control Computer Based MPC8349 will beintroduced
    發(fā)表于 01-25 15:45 ?13次下載

    一種在U-BOOT中嵌入千兆網(wǎng)絡(luò)功能的方法

    一種在U-BOOT中嵌入千兆網(wǎng)絡(luò)功能的方法摘 要:U-BOOT是一種開(kāi)放源碼的、用于多種嵌入式微處理器的引導(dǎo)加載程序,目前U-BOOT僅支持10M/100M網(wǎng)絡(luò)功能。本文介紹了一種讓
    發(fā)表于 02-05 17:38 ?17次下載

    u-boot的Makefile分析

    u-boot的Makefile分析 U-BOOT是一個(gè)LINUX的工程,在編譯之前必須已經(jīng)安裝對(duì)應(yīng)體系結(jié)構(gòu)的交叉編譯環(huán)境,這里只針對(duì)ARM,編譯器系列軟件為arm-linux-*。 U-
    發(fā)表于 05-17 09:16 ?2063次閱讀

    U-Boot結(jié)構(gòu)功能介紹

      U-Boot,全稱(chēng) Universal Boot Loader,是遵循GPL條款的開(kāi)放源碼項(xiàng)目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來(lái)。其源碼目錄、編譯形式
    發(fā)表于 07-30 09:17 ?1178次閱讀
    <b class='flag-5'>U-Boot</b>結(jié)構(gòu)功能介紹

    u-boot簡(jiǎn)介

    U-Boot,全稱(chēng) Universal Boot Loader,是遵循GPL條款的開(kāi)放源碼項(xiàng)目。U-Boot的作用是系統(tǒng)引導(dǎo)。U-Boot
    發(fā)表于 10-14 11:17 ?3560次閱讀

    何在U-Boot中實(shí)現(xiàn)對(duì)Yaffs鏡像的設(shè)計(jì)?

    U-Boot是目前廣泛使用的嵌入式操作系統(tǒng)通用引導(dǎo)程序,具有功能豐富強(qiáng)大,支持多種操作系統(tǒng)和CPU體系,易于功能擴(kuò)展和移植,源碼開(kāi)放等多種優(yōu)點(diǎn)。U-Boot,全稱(chēng) Universal Boot
    的頭像 發(fā)表于 08-29 05:02 ?3726次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>U-Boot</b>中實(shí)現(xiàn)對(duì)Yaffs鏡像的設(shè)計(jì)?

    U-Boot架構(gòu)淺析

    導(dǎo)讀:嵌入式Linux系統(tǒng)搭建,bootloader是必不可少的一環(huán),而U-Boot已成嵌入式Linux事實(shí)標(biāo)準(zhǔn)。所以較為深入的分析U-Boot的設(shè)計(jì),對(duì)于更...
    發(fā)表于 02-07 11:56 ?7次下載
    <b class='flag-5'>U-Boot</b>架構(gòu)淺析

    u-boot中使用ethernet的方法

    KV260 petalinux BSP在u-boot device tree中disable了GEM3,也就是說(shuō)ethernet在u-boot中不建議使用ethernet。
    的頭像 發(fā)表于 07-21 10:25 ?3909次閱讀

    創(chuàng)建自定義的u-boot命令

    為什么會(huì)有這篇文章,因?yàn)樾∩?b class='flag-5'>u-boot源碼的設(shè)計(jì)所吸引了(源碼對(duì)命令的處理過(guò)程)。自定義u-boot命令屬于u-boot
    的頭像 發(fā)表于 08-08 14:46 ?1099次閱讀

    Linux U-Boot開(kāi)發(fā)指南

    介紹 U-Boot 的編譯打包、基本配置、常用命令的使用、基本調(diào)試方法等, 為 U-BOOT 的移植及應(yīng)用開(kāi)發(fā)提供了基礎(chǔ)。
    的頭像 發(fā)表于 03-06 10:28 ?1311次閱讀
    Linux <b class='flag-5'>U-Boot</b>開(kāi)發(fā)指南

    u-boot armv8鏈接腳本

    u-boot armv8鏈接腳本 在進(jìn)行源碼分析之前,首先看看u-boot的鏈接腳本,通過(guò)鏈接腳本可以從整體了解一個(gè)u-boot的組成,并且可以在啟動(dòng)分析中知道某些邏輯是在完成什么工作
    的頭像 發(fā)表于 12-07 11:19 ?661次閱讀
    RM新时代网站-首页