{"id":6942,"date":"2022-09-16T14:58:41","date_gmt":"2022-09-16T06:58:41","guid":{"rendered":"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942"},"modified":"2022-12-30T09:22:46","modified_gmt":"2022-12-30T01:22:46","slug":"rk3588%e7%bc%96%e8%af%91","status":"publish","type":"post","link":"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942","title":{"rendered":"rk3588\u7f16\u8bd1(buildroot\u6846\u67b6)"},"content":{"rendered":"<p>\u5b98\u65b9\u6587\u6863<br \/>\n<a href=\"https:\/\/wiki.t-firefly.com\/zh_CN\/ROC-RK3588S-PC\/linux_compile_debian.html\">https:\/\/wiki.t-firefly.com\/zh_CN\/ROC-RK3588S-PC\/linux_compile_debian.html<\/a><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_16 counter-hierarchy counter-decimal ez-toc-grey\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" style=\"display: none;\"><i class=\"ez-toc-glyphicon ez-toc-icon-toggle\"><\/i><\/a><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E6%95%B4%E7%BC%96%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98\" title=\"\u6574\u7f16\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\">\u6574\u7f16\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E6%95%B4%E7%BC%96%E8%84%9A%E6%9C%AC%E8%A7%A3%E6%9E%90\" title=\"\u6574\u7f16\u811a\u672c\u89e3\u6790\">\u6574\u7f16\u811a\u672c\u89e3\u6790<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E7%BC%96%E8%AF%91%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90\" title=\"\u7f16\u8bd1\u65e5\u5fd7\u5206\u6790\">\u7f16\u8bd1\u65e5\u5fd7\u5206\u6790<\/a><ul class=\"ez-toc-list-level-4\"><li class=\"ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#1uboot%E7%BC%96%E8%AF%91%E6%97%A5%E5%BF%97\" title=\"1.uboot\u7f16\u8bd1\u65e5\u5fd7\">1.uboot\u7f16\u8bd1\u65e5\u5fd7<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#uboot%E7%9A%84makesh%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E6%B5%81%E7%A8%8B\" title=\"uboot\u7684make.sh\u811a\u672c\u6267\u884c\u6d41\u7a0b\">uboot\u7684make.sh\u811a\u672c\u6267\u884c\u6d41\u7a0b<\/a><ul class=\"ez-toc-list-level-4\"><li class=\"ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-6\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E6%89%A7%E8%A1%8Cprocess_args%E6%96%B9%E6%B3%95\" title=\"\u6267\u884cprocess_args\u65b9\u6cd5\">\u6267\u884cprocess_args\u65b9\u6cd5<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E6%89%A7%E8%A1%8Cselect_toolchain%E6%96%B9%E6%B3%95\" title=\"\u6267\u884cselect_toolchain\u65b9\u6cd5\">\u6267\u884cselect_toolchain\u65b9\u6cd5<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E6%89%A7%E8%A1%8Cfixup_platform_configure%E6%96%B9%E6%B3%95\" title=\"\u6267\u884cfixup_platform_configure\u65b9\u6cd5\">\u6267\u884cfixup_platform_configure\u65b9\u6cd5<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-9\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#%E6%89%A7%E8%A1%8Cselect_ini_file%E6%96%B9%E6%B3%95\" title=\"\u6267\u884cselect_ini_file\u65b9\u6cd5\">\u6267\u884cselect_ini_file\u65b9\u6cd5<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-10\" href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=6942\/#make_%EF%BC%88%EF%BC%89\" title=\"make \uff08**\uff09\">make \uff08**\uff09<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"%E6%95%B4%E7%BC%96%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98\"><\/span>\u6574\u7f16\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>1.\u7f51\u4e0a\u4e0b\u8f7d\u4f9d\u8d56\u5e93\u4e00\u76f4\u6ca1\u6709\u53cd\u5e94<br \/>\n\u5728\u6e90\u7801\u7684\u6839\u76ee\u5f55\u4e0b\uff0c\u4f1a\u6709\u4e00\u4e2abr.log\u6587\u4ef6\uff0c\u8bb0\u5f55\u7740\u8be6\u7ec6\u7684\u7f16\u8bd1\u5f02\u5e38\u65e5\u5fd7\uff0c\u5305\u62ec\u4e0b\u8f7d\u4f9d\u8d56\u5e93\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/5555.png\" alt=\"\" \/><\/li>\n<\/ul>\n<p>\u4e86\u89e3\u4e00\u4e0bbuildroot\u7f16\u8bd1\u6846\u67b6\uff0c\u53d1\u73b0\u4e0b\u8f7d\u7684\u5305\u90fd\u5728<code>buildroot\/dl<\/code>\u76ee\u5f55\u4e0b\uff0c\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\u540d\u5b57\u4e3a\u5e93\u7684\u540d\u5b57\uff0c\u89c2\u770b\u5df2\u7ecf\u4e0b\u8f7d\u4e0b\u6765\u7684\u5305\u7684\u683c\u5f0f\uff0c\u5230github\u4e0a\u627e\u5230\u8fd9\u4e2a\u5e93\u7136\u540e\u4e0b\u8f7d\u4e0b\u6765\u653e\u5230\u8fd9\u4e2a\u4ee5\u5e93\u540c\u540d\u7684\u6587\u4ef6\u5939\u4e0b\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/444.png\" alt=\"\" \/><\/p>\n<p>\u76f4\u63a5\u628agithub\u5f00\u5934\u7684\u94fe\u63a5\u8fdb\u884c\u4e0b\u8f7d\u5373\u53ef<\/p>\n<ul>\n<li>2.dl\u4e0b\u7684\u5e93\u5df2\u7ecf\u624b\u52a8\u4e0b\u8f7d\u66ff\u6362\u4e86\uff0cbuild\u65f6\u8fd8\u662f\u4f1a\u53bb\u4e0b\u8f7d\u7136\u540e\u5361\u5728\u90a3\u91cc\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/000.png\" alt=\"\" \/><br \/>\n\u628abuildroot\/package\u4e0b\u7684\u8fd9\u4e2a\u6587\u4ef6\u5939alsa-ucm-conf\u4e0b\u7684mk\u6587\u4ef6\u5220\u9664\u6389\uff08\u6ce8\u610f\u4e0d\u8981\u5220\u9664\u6574\u4e2a\u6587\u4ef6\u5939\uff0c\u5426\u5219\u540e\u9762build\u7684\u65f6\u5019\u4f1a\u62a5\u627e\u4e0d\u5230\u8fd9\u4e2a\u5e93\u7684Config.in\u6587\u4ef6\u5bfc\u81f4\u7f16\u8bd1\u5931\u8d25\uff09\uff0c\u91cd\u65b0build\u5219\u4f1a\u53bb\u4e0b\u8f7d\u522b\u7684\u5e93\u3002<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%E6%95%B4%E7%BC%96%E8%84%9A%E6%9C%AC%E8%A7%A3%E6%9E%90\"><\/span>\u6574\u7f16\u811a\u672c\u89e3\u6790<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>envsetup.sh<br \/>\n\u4f5c\u7528\uff1a\u4e3abuildroot\u7684Makefile\u9009\u62e9\u4e00\u4e2a\u76ee\u6807config<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/44.png\" alt=\"\" \/><\/li>\n<\/ul>\n<pre><code class=\"language-bash\">function main()\n{\n    #\u67e5\u627ebuildroot\/configs\u76ee\u5f55\u4e0b\u6240\u6709\u4ee5rockchip_\u7684\u5f00\u5934\u7684\u6587\u4ef6\u540d\uff0c\u5e76\u5c06\u6587\u4ef6\u540d\u6700\u540e\u7684_defconfig\u5b57\u7b26\u4e32\u53bb\u6389\u3002\n    RK_DEFCONFIG_ARRAY=(\n        $(cd ${BUILDROOT_DIR}\/configs\/; ls rockchip_* | \\\n            sed &quot;s\/_defconfig$\/\/&quot; | grep &quot;$1&quot; | sort)\n    )\n\n    unset RK_BUILD_CONFIG\n    RK_DEFCONFIG_ARRAY_LEN=${#RK_DEFCONFIG_ARRAY[@]}\n\n    case $RK_DEFCONFIG_ARRAY_LEN in\n        0)\n            echo No available configs${1:+&quot; for: $1&quot;}\n            ;;  \n        1)\n            RK_BUILD_CONFIG=${RK_DEFCONFIG_ARRAY[0]}\n            ;;\n        *)\n            #\u5982\u679c\u5728\u6267\u884cenvsetup.sh\u65f6\u6307\u5b9a\u677f\u5b50\u7684\u914d\u7f6e\u6a21\u677f\uff0c\u5c31\u4e0d\u9009\u62e9\u3002\n            if [ &quot;$1&quot; = ${RK_DEFCONFIG_ARRAY[0]} ]; then\n                # Prefer exact-match\n                RK_BUILD_CONFIG=$1\n            else\n                choose_board\n            fi\n            ;;\n    esac\n\n    [ -n &quot;$RK_BUILD_CONFIG&quot; ] || return\n\n    #\u8fd9\u91cc\u7684.BoardConfig.mk\u662f\u4e00\u4e2a\u94fe\u63a5\u6587\u4ef6\uff0c\u6307\u5411lunch\u6307\u4ee4\u9009\u62e9\u7684\u677f\u5b50\u914d\u7f6e\u6587\u4ef6\u3002\n    #\u5c06\u73af\u5883\u53d8\u91cf\u52a0\u5165shell\u73af\u5883\n    source ${TOP_DIR}\/device\/rockchip\/.BoardConfig.mk\n\n    lunch_rockchip\n\n    # Set alias\n    alias croot=&quot;cd ${TOP_DIR}&quot;\n    alias broot=&quot;cd ${BUILDROOT_DIR}&quot;\n    alias bpkg=&quot;cd ${BUILDROOT_DIR}\/package&quot;\n    alias bout=&quot;cd ${TARGET_OUTPUT_DIR}&quot;\n}<\/code><\/pre>\n<p>\/buildroot\/configs<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/aaaa.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/dddddd.png\" alt=\"\" \/><\/p>\n<pre><code class=\"language-bash\">function choose_board()\n{\n    echo\n    echo &quot;You&#039;re building on Linux&quot;\n    echo &quot;Lunch menu...pick a combo:&quot;\n    echo &quot;&quot;\n\n    echo &quot;0. non-rockchip boards&quot;\n    echo ${RK_DEFCONFIG_ARRAY[@]} | xargs -n 1 | sed &quot;=&quot; | sed &quot;N;s\/\\n\/. \/&quot;\n\n    local INDEX\n    while true; do\n        read -p &quot;Which would you like? [0]: &quot; INDEX\n        #index\u5982\u679c\u6ca1\u6709\u8f93\u5165\uff0c\u9ed8\u8ba4\u4e3a0\uff0c\u518d\u51cf\u53bb1.\u4e5f\u5c31\u662f-1\u4e3aindex\u7684\u9ed8\u8ba4\u503c\n        INDEX=$((${INDEX:-0} - 1))\n\n        #\u6ca1\u6709\u9009\u62e9\n        if [ &quot;$INDEX&quot; -eq -1 ]; then\n            echo &quot;Lunching for non-rockchip boards...&quot;\n            unset TARGET_OUTPUT_DIR\n            unset RK_BUILD_CONFIG\n            break;\n        fi\n\n        if echo $INDEX | grep -vq [^0-9]; then\n            RK_BUILD_CONFIG=&quot;${RK_DEFCONFIG_ARRAY[$INDEX]}&quot;\n            [ -n &quot;$RK_BUILD_CONFIG&quot; ] &amp;&amp; break\n        fi\n\n        echo\n        echo &quot;Choice not available. Please try again.&quot;\n        echo\n    done\n}\n<\/code><\/pre>\n<pre><code class=\"language-bash\">function lunch_rockchip()\n{\n    TARGET_DIR_NAME=&quot;$RK_BUILD_CONFIG&quot;\n    export TARGET_OUTPUT_DIR=&quot;$BUILDROOT_OUTPUT_DIR\/$TARGET_DIR_NAME&quot;\n\n    mkdir -p $TARGET_OUTPUT_DIR || return\n\n    echo &quot;===========================================&quot;\n    echo\n    #\u6253\u5370_\u540e\u5b57\u7b26\u4e32\n    echo &quot;#TARGET_BOARD=`echo $RK_BUILD_CONFIG | cut -d &#039;_&#039; -f 2`&quot;\n    echo &quot;#OUTPUT_DIR=output\/$TARGET_DIR_NAME&quot;\n    echo &quot;#CONFIG=${RK_BUILD_CONFIG}_defconfig&quot;\n    echo\n    echo &quot;===========================================&quot;\n\n    # RK_BUILD_CONFIG\u5c31\u662f\u524d\u9762\u6267\u884c.\/envsetup.sh\u65f6\u9009\u62e9\u7684combo,\u5982rockchip_rk3588.\n    # \u6b64\u5904make\u4f1a\u6267\u884c\/buildroot\u76ee\u5f55\u4e0b\u7684Makefile\u6587\u4ef6\uff0c-C\u8868\u793a\u8fdb\u5165buildroot\u76ee\u5f55\u4e0b,O=\u8868\u793a\u5c06\u7f16\u8bd1\u7ed3\u679c\u8f93\u51fa\u5230$TARGET_OUTPUT_DIR\u53d8\u91cf\u4e0b\uff0c\n    # \u6700\u540e\u4e00\u4e2a\u53c2\u6570\u8868\u793a\u7f16\u8bd1\u76ee\u6807\u4e3arockchip_rk3588_defconfig\n    # TAG(A)\n    make -C ${BUILDROOT_DIR} O=&quot;$TARGET_OUTPUT_DIR&quot; \\\n        &quot;$RK_BUILD_CONFIG&quot;_defconfig\n    # \u4e0a\u9762\u7684\u547d\u4ee4\u6267\u884c\u5b8c\u6bd5\uff0c\u4f1a\u5728builtroot\u76ee\u5f55\u4e0b\u751f\u6210.config\u6587\u4ef6\u3002\n\n    CONFIG=${TARGET_OUTPUT_DIR}\/.config\n\n    # \u590d\u5236.config\u6587\u4ef6\u4e3a.config.new\u6587\u4ef6\u3002\n    cp ${CONFIG}{,.new}\n\n    # \u5982\u679c.config.old\u6587\u4ef6\u4e0d\u5b58\u5728return\uff0c\u5426\u5219\u5c06.config.old\u91cd\u547d\u540d\u4e3a.config\u6587\u4ef6.\n    mv ${CONFIG}{.old,} &amp;&gt;\/dev\/null || return 0\n\n    # \u6839\u636e\u5f53\u524d\u7684.config\uff08old config\uff09\u91cd\u65b0\u751f\u6210.config\n    make -C ${BUILDROOT_DIR} O=&quot;$TARGET_OUTPUT_DIR&quot; olddefconfig &amp;&gt;\/dev\/null\n\n    # \u5982\u679c\u65b0\u751f\u6210\u7684.config\u4e0e\uff08old config\uff09\u751f\u6210\u7684.config\u6587\u4ef6\u4e0d\u4e00\u81f4\uff0c\u5219\u63d0\u793a\u662f\u5426\u8986\u76d6\u65e7\u7684config\u3002\n    if ! diff ${CONFIG}{,.new}; then\n        read -t 10 -p &quot;Found old config, override it? (y\/n):&quot; YES\n        [ &quot;$YES&quot; = &quot;n&quot; ] || cp ${CONFIG}{.new,}\n    fi\n}<\/code><\/pre>\n<p><strong>\u5bf9\u4e0a\u9762TAG(A)\u7684\u6d41\u7a0b\u8fdb\u884c\u5206\u6790<\/strong><br \/>\n<code>make -C ${BUILDROOT_DIR} O=\"$TARGET_OUTPUT_DIR\" \\ \"$RK_BUILD_CONFIG\"_defconfig<\/code>\uff0c\u7f16\u8bd1\u76ee\u6807\u4e3arockchip_rk3588_defconfig.<\/p>\n<p>1.\u5b9e\u9645Makefile\u662f\u6ca1\u6709rockchip_rk3588_defconfig\u8fd9\u4e2a\u76ee\u6807\u7684\uff0c\u91c7\u7528\u7684\u662f\u4e00\u79cd\u901a\u7528\u7684\u5199\u6cd5\u3002<br \/>\nMakefile\u7684\u6700\u540e\u9762\uff1a<code>.PHONY: $(noconfig_targets)<\/code><br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/aaa.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/bbb.png\" alt=\"\" \/><br \/>\n1-1\uff09\u63a5\u7740\u5206\u6790<code>BUILD_DIR<\/code>\u53d8\u91cf\u662f\u5982\u4f55\u8d4b\u503c\u7684<\/p>\n<pre><code class=\"language-bash\">ifneq (&quot;$(origin O)&quot;, &quot;command line&quot;)\nifneq ($(TARGET_OUTPUT_DIR),)\nO := $(TARGET_OUTPUT_DIR)\nelse\nO := $(CURDIR)\/output\nendif\nendif\n\n# Remove the trailing &#039;\/.&#039; from $(O) as it can be added by the makefile wrapper\n# installed in the $(O) directory.\n# Also remove the trailing &#039;\/&#039; the user can set when on the command line.\noverride O := $(patsubst %\/,%,$(patsubst %.,%,$(O)))\n\nCANONICAL_O := $(shell mkdir -p $(O) &gt;\/dev\/null 2&gt;&amp;1)$(realpath $(O))\n\n# Make sure O= is passed (with its absolute canonical path) everywhere the\n# toplevel makefile is called back.\nEXTRAMAKEARGS := O=$(CANONICAL_O)\n\n# Check Buildroot execution pre-requisites here.\nifneq ($(shell umask):$(CURDIR):$(O),$(REQ_UMASK):$(CANONICAL_CURDIR):$(CANONICAL_O))\nBASE_DIR := $(CANONICAL_O)\n...\nBUILD_DIR := $(BASE_DIR)\/build<\/code><\/pre>\n<p>make\u65f6\u5b9a\u4e49\u4e86\u53d8\u91cfTARGET_OUTPUT_DIR\u4e3a<code>\/buildroot\/output\/rockchip_rk3588<\/code>\uff0c\u90a3\u4e48<br \/>\nBUILD_DIR\u5373\u4e3a<code>\/buildroot\/output\/rockchip_rk3588\/build<\/code>.<br \/>\n$(1):\u8868\u793a\/buildroot\u76ee\u5f55<br \/>\nTOPDIR:\u8868\u793a\/buildroot\u76ee\u5f55<br \/>\n<strong>\u4e00\u3001\u4f9d\u8d56\u6587\u4ef6<\/strong><\/p>\n<blockquote>\n<p><code>$(BUILD_DIR)\/buildroot-config\/conf $(1)\/configs\/%_defconfig outputmakefile<\/code>\uff1a\u6ce8\u610f\u8fd9\u91cc\u67093\u4e2a\u4f9d\u8d56\uff0c\u524d\u97622\u4e2a\u662f\u6587\u4ef6\uff0c\u6700\u540e\u4e00\u4e2aoutputmakefile\u662f\u4f2a\u76ee\u6807\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/00.png\" alt=\"\" \/><\/p>\n<\/blockquote>\n<p>1.conf\u6587\u4ef6\u7684\u751f\u6210\u8fc7\u7a0b<br \/>\n<a href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=7722\">http:\/\/xinyiworld.top\/wordpress_it\/?p=7722<\/a><\/p>\n<p>2.outputmakefile\u4f2a\u76ee\u6807<\/p>\n<pre><code class=\"language-bash\">outputmakefile:\nifeq ($(NEED_WRAPPER),y)\n    $(Q)$(TOPDIR)\/support\/scripts\/mkmakefile $(TOPDIR) $(O)\nendif<\/code><\/pre>\n<p><img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/a.png\" alt=\"\" \/><\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u4f2a\u76ee\u6807\u5728TARGET_OUTPUT_DIR\u76ee\u5f55\u4e0b\u751f\u6210\u4e86Makefile\u6587\u4ef6\u3002<\/p>\n<p><strong>\u4e8c\u3001\u547d\u4ee4<\/strong><\/p>\n<blockquote>\n<p><strong>\u547d\u4ee41\uff1a<\/strong><\/p>\n<\/blockquote>\n<p><code>$(TOPDIR)\/build\/defconfig_hook.py -m $(1)\/configs\/$$@ $(BASE_DIR)\/.rockchipconfig<\/code>\uff1a\u6267\u884cpython\u811a\u672c<\/p>\n<p><img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/11.png\" alt=\"\" \/><\/p>\n<p>\u6253\u5370\u4e00\u4e0b\u811a\u672c\u63a5\u6536\u7684\u53c2\u6570\uff1a<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/33.png\" alt=\"\" \/><\/p>\n<table>\n<tr>\n<td bgcolor=>\n\u8fd9\u4e2apython\u811a\u672c\u4e3b\u8981\u662f\u91c7\u7528\u9012\u5f52\u7684\u65b9\u6cd5\uff0c\u5c06<code>\/buildroot\/configs\/rockchip_rk3588_defconfig<\/code>\u914d\u7f6e\u6587\u4ef6\u53ca\u5176include\u7684config\u6587\u4ef6\u7684\u5185\u5bb9\u5408\u5e76\u5230<code>\/buildroot\/output\/rockchip_rk3588\/.rockchipconfig<\/code>\u6587\u4ef6\u91cc\uff0c\u5e76\u4e14\u628a\u6240\u6709config\u7684BR2_ROOTFS_OVERLAY\u5c5e\u6027\u503c\u5408\u5e76\u5230\u4e00\u8d77\u7528\u7a7a\u683c\u5206\u5f00\uff0cBR2_ROOTFS_OVERLAY\u4ee3\u8868\u8fd9\u4e9b\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u4f1a\u539f\u5c01\u4e0d\u52a8\u7684\u62f7\u8d1d\u5230<code>\/buildroot\/output\/rockchip_rk3588\/target<\/code>\u76ee\u5f55\u4e0b\u3002\n<\/td>\n<\/tr>\n<\/table>\n<blockquote>\n<p><strong>\u547d\u4ee42\uff1a<\/strong><\/p>\n<\/blockquote>\n<pre><code class=\"language-bash\">$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)\/configs\/$$@ $$&lt; --defconfig=$(BASE_DIR)\/.rockchipconfig $$(CONFIG_CONFIG_IN)<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u6709\u4e9b\u590d\u6742\uff0c\u5148\u628a\u76f8\u5173\u7684\u53d8\u91cf\u6253\u5370\u76f4\u89c2\u770b\u4e00\u4e0b\uff1a<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/2.png\" alt=\"\" \/><\/p>\n<p><code>$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)\/configs\/$$@<\/code> \uff1a\u8bbe\u7f6e\u53d8\u91cf<\/p>\n<p><code>$$&lt; --defconfig=$(BASE_DIR)\/.rockchipconfig $$(CONFIG_CONFIG_IN)<\/code>\uff1a\u6267\u884cconf,\u751f\u6210.config\u6587\u4ef6\u3002<\/p>\n<p><\/br><\/p>\n<p><strong>\u6700\u540e\uff0c\u518d\u68b3\u7406\u4e00\u4e0blunch_rockchip\u7684\u6d41\u7a0b:<\/strong><\/p>\n<table>\n<tr>\n<td bgcolor=yellow>\n\u8c03\u7528\u6e90\u7801\u76ee\u5f55\u4e0b\u7684Makefile\uff0c\u8c03\u7528buildroot\u76ee\u5f55\u4e0b\u7684Makefile\uff0c\u6267\u884c\u4f2a\u76ee\u6807%_defconfig\uff0c\u751f\u6210conf\u5de5\u5177\u5e76\u751f\u6210.config\u914d\u7f6e\u6587\u4ef6\u3002\n<\/td>\n<\/tr>\n<\/table>\n<ul>\n<li>build.sh<br \/>\n\u901a\u8fc7<code>.\/build.sh -h<\/code>\u67e5\u770b\u6709\u54ea\u4e9b\u7f16\u8bd1\u76ee\u6807\u9009\u9879<br \/>\n\u5982\u679cbuild.sh\u4e0d\u5e26\u4efb\u4f55\u53c2\u6570\uff0c\u9ed8\u8ba4\u6267\u884callsave\u9009\u9879\u3002<br \/>\n<code>OPTIONS=&quot;${@:-allsave}&quot;<\/code><\/li>\n<\/ul>\n<p>\u4e00\u822c\u5148\u8981\u6267\u884c<code>.\/build.sh lunch<\/code>\u914d\u7f6edts\uff0c\u800c\u540e\u518d\u8fdb\u884c\u5404\u4e2a\u6a21\u5757\u7684\u7f16\u8bd1\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/ECE4A83F-92B1-4980-AE65-DAB8F20B3633.png\" alt=\"\" \/><br \/>\n\u8fd9\u91cc\u4f1a\u5c06\u9009\u62e9\u7684\u677f\u5b50\u578b\u53f7\u4e0e\/device\/rockchip\/.BoardConfig.mk\u5efa\u7acb\u8f6f\u8fde\u63a5<\/p>\n<p>\/device\/rockchip\/.BoardConfig.mk<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/bbbbb.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/cccc.png\" alt=\"\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E7%BC%96%E8%AF%91%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90\"><\/span>\u7f16\u8bd1\u65e5\u5fd7\u5206\u6790<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"1uboot%E7%BC%96%E8%AF%91%E6%97%A5%E5%BF%97\"><\/span>1.uboot\u7f16\u8bd1\u65e5\u5fd7<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><code>.\/build.sh uboot<\/code>\u4f1a\u6267\u884cbuild.sh\u6587\u4ef6\u4e2d\u7684build_uboot()\u65b9\u6cd5<\/p>\n<pre><code class=\"language-bash\">root@xinyi:\/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source# .\/build.sh uboot\nprocessing option: uboot\n============Start building uboot============\nTARGET_UBOOT_CONFIG=rk3588\n=========================================\n## make rk3588_defconfig -j16\n#\n# configuration written to .config\n#\nscripts\/kconfig\/conf  --silentoldconfig Kconfig\n  CHK     include\/config.h\n  CFG     u-boot.cfg\n  GEN     include\/autoconf.mk.dep\n  CFG     spl\/u-boot.cfg\n  CFG     tpl\/u-boot.cfg\n  GEN     spl\/include\/autoconf.mk\n  GEN     tpl\/include\/autoconf.mk\n  GEN     include\/autoconf.mk\n  CHK     include\/config\/uboot.release\n  CHK     include\/generated\/timestamp_autogenerated.h\n  UPD     include\/generated\/timestamp_autogenerated.h\n  CHK     include\/config.h\n  CFG     u-boot.cfg\n  UPD     include\/config\/uboot.release\n  CHK     include\/generated\/version_autogenerated.h\n  UPD     include\/generated\/version_autogenerated.h\n  CHK     include\/generated\/generic-asm-offsets.h\n  CHK     include\/generated\/asm-offsets.h\n  HOSTCC  tools\/mkenvimage.o\n  HOSTCC  tools\/fit_image.o\n  HOSTCC  tools\/image-host.o\n  HOSTCC  tools\/dumpimage.o\n  HOSTCC  tools\/mkimage.o\n  HOSTCC  tools\/rockchip\/boot_merger.o\n  HOSTCC  tools\/rockchip\/loaderimage.o\n  HOSTLD  tools\/mkenvimage\ntools\/rockchip\/boot_merger.c: In function \u2018main\u2019:\ntools\/rockchip\/boot_merger.c:895:11: warning: array subscript 20 is outside array bounds of \u2018char[20]\u2019 [-Warray-bounds]\n  895 |  str[len] = 0;\n      |  ~~~~~~~~~^~~\ntools\/rockchip\/boot_merger.c:933:7: note: while referencing \u2018name\u2019\n  933 |  char name[MAX_NAME_LEN];\n      |       ^~~~\n  HOSTLD  tools\/loaderimage\n  HOSTLD  tools\/boot_merger\n  HOSTLD  tools\/dumpimage\n  HOSTLD  tools\/mkimage\n  CC      arch\/arm\/cpu\/armv8\/fwcall.o\n  CC      drivers\/usb\/gadget\/f_fastboot.o\n  LD      arch\/arm\/cpu\/armv8\/built-in.o\n  CC      common\/main.o\n  LD      common\/built-in.o\n  CC      cmd\/version.o\n  LD      cmd\/built-in.o\n  CC      lib\/display_options.o\n  LD      lib\/built-in.o\n  LD      drivers\/usb\/gadget\/built-in.o\n  LD      u-boot\n  OBJCOPY u-boot.srec\n  OBJCOPY u-boot-nodtb.bin\n  SYM     u-boot.sym\nstart=$(\/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/prebuilts\/gcc\/linux-x86\/aarch64\/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu\/bin\/aarch64-none-linux-gnu-nm u-boot | grep __rel_dyn_start | cut -f 1 -d &#039; &#039;); end=$(\/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/prebuilts\/gcc\/linux-x86\/aarch64\/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu\/bin\/aarch64-none-linux-gnu-nm u-boot | grep __rel_dyn_end | cut -f 1 -d &#039; &#039;); tools\/relocate-rela u-boot-nodtb.bin 0x00200000 $start $end\nmake[2]: \u201carch\/arm\/dts\/rk3588-evb.dtb\u201d\u5df2\u662f\u6700\u65b0\u3002\n  CAT     u-boot-dtb.bin\n  MKIMAGE u-boot.img\n  COPY    u-boot.dtb\n  MKIMAGE u-boot-dtb.img\n  COPY    u-boot.bin\n  ALIGN   u-boot.bin\n  COPY    spl\/u-boot-spl.dtb\n  CC      spl\/common\/spl\/spl.o\n  CC      tpl\/arch\/arm\/cpu\/armv8\/fwcall.o\n  CC      tpl\/arch\/arm\/mach-rockchip\/tpl.o\n  LD      tpl\/arch\/arm\/cpu\/armv8\/built-in.o\n  CC      spl\/arch\/arm\/cpu\/armv8\/fwcall.o\n  LD      spl\/arch\/arm\/cpu\/armv8\/built-in.o\n  LD      tpl\/arch\/arm\/mach-rockchip\/built-in.o\n  CC      spl\/lib\/display_options.o\n  LD      spl\/lib\/built-in.o\n  LD      tpl\/u-boot-tpl\n  LD      spl\/common\/spl\/built-in.o\n  OBJCOPY tpl\/u-boot-tpl-nodtb.bin\n  COPY    tpl\/u-boot-tpl.bin\n  LD      spl\/u-boot-spl\n  OBJCOPY spl\/u-boot-spl-nodtb.bin\n  CAT     spl\/u-boot-spl-dtb.bin\n  COPY    spl\/u-boot-spl.bin\n  CFGCHK  u-boot.cfg\nSEC=1\npack u-boot.itb okay! Input: \/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/rkbin\/RKTRUST\/RK3588TRUST.ini\n\nFIT description: FIT Image with ATF\/OP-TEE\/U-Boot\/MCU\nCreated:         Fri Sep 30 15:58:49 2022\n Image 0 (uboot)\n  Description:  U-Boot\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Standalone Program\n  Compression:  uncompressed\n  Data Size:    1209856 Bytes = 1181.50 KiB = 1.15 MiB\n  Architecture: AArch64\n  Load Address: 0x00200000\n  Entry Point:  unavailable\n  Hash algo:    sha256\n  Hash value:   0459350cd91ca27a265308d22a864caaf33b1ee98b3614ca76d7ef278d57b169\n Image 1 (atf-1)\n  Description:  ARM Trusted Firmware\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Firmware\n  Compression:  uncompressed\n  Data Size:    186688 Bytes = 182.31 KiB = 0.18 MiB\n  Architecture: AArch64\n  Load Address: 0x00040000\n  Hash algo:    sha256\n  Hash value:   5ae6932916e5275236ed293d074bcc75bdea046c36e6c7be147a015bf1d9c0fc\n Image 2 (atf-2)\n  Description:  ARM Trusted Firmware\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Firmware\n  Compression:  uncompressed\n  Data Size:    28672 Bytes = 28.00 KiB = 0.03 MiB\n  Architecture: AArch64\n  Load Address: 0x000f0000\n  Hash algo:    sha256\n  Hash value:   c00c7fd75b913cf44d12a27e172513124eaeec71b4448b41aa1c295c05907b3f\n Image 3 (atf-3)\n  Description:  ARM Trusted Firmware\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Firmware\n  Compression:  uncompressed\n  Data Size:    20480 Bytes = 20.00 KiB = 0.02 MiB\n  Architecture: AArch64\n  Load Address: 0xff100000\n  Hash algo:    sha256\n  Hash value:   71c3a5841b733b001fe1defcc4d268af37dab96c503c4c71c9c5daa714d3fdd5\n Image 4 (atf-4)\n  Description:  ARM Trusted Firmware\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Firmware\n  Compression:  uncompressed\n  Data Size:    8192 Bytes = 8.00 KiB = 0.01 MiB\n  Architecture: AArch64\n  Load Address: 0xff001000\n  Hash algo:    sha256\n  Hash value:   2301cf73be91bb638ecd9c296d6674b9d52696a3825745070c92e21e79c8be24\n Image 5 (optee)\n  Description:  OP-TEE\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Firmware\n  Compression:  uncompressed\n  Data Size:    461200 Bytes = 450.39 KiB = 0.44 MiB\n  Architecture: AArch64\n  Load Address: 0x08400000\n  Hash algo:    sha256\n  Hash value:   4ed9cd20b57f71e3b751bc9c0129d74c371e5633ed32a89c6ef42b7a22b59fa2\n Image 6 (fdt)\n  Description:  U-Boot dtb\n  Created:      Fri Sep 30 15:58:49 2022\n  Type:         Flat Device Tree\n  Compression:  uncompressed\n  Data Size:    7829 Bytes = 7.65 KiB = 0.01 MiB\n  Architecture: AArch64\n  Hash algo:    sha256\n  Hash value:   c07f4a4d713c2dde198a1c4fc7a980a98f5dc97665e3171dc7c319d7846dc381\n Default Configuration: &#039;conf&#039;\n Configuration 0 (conf)\n  Description:  rk3588-evb\n  Kernel:       unavailable\n  Firmware:     atf-1\n  FDT:          fdt\n  Loadables:    uboot\n                atf-2\n                atf-3\n                atf-4\n                optee\n********boot_merger ver 1.2********\nInfo:Pack loader ok.\npack loader okay! Input: \/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/rkbin\/RKBOOT\/RK3588MINIALL.ini\n\/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/u-boot\n\nImage(no-signed, version=0): uboot.img (FIT with uboot, trust...) is ready\nImage(no-signed): rk3588_spl_loader_v1.07.111.bin (with spl, ddr...) is ready\npack uboot.img okay! Input: \/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/rkbin\/RKTRUST\/RK3588TRUST.ini\n\nPlatform RK3588 is build OK, with new .config(make rk3588_defconfig -j16)\n\/home\/xinyi\/android\/code\/Task1-debian\/rk3588_source\/prebuilts\/gcc\/linux-x86\/aarch64\/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu\/bin\/aarch64-none-linux-gnu-\nFri Sep 30 15:58:49 CST 2022\nRunning build_uboot succeeded.<\/code><\/pre>\n<blockquote>\n<p>\u6267\u884c\u6d41\u7a0b\uff1a<\/p>\n<\/blockquote>\n<p>build.sh ---&gt; build_uboot(),\u8fdb\u5165uboot\u76ee\u5f55\uff0c\u6267\u884cmake.sh\u811a\u672c\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"uboot%E7%9A%84makesh%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E6%B5%81%E7%A8%8B\"><\/span>uboot\u7684make.sh\u811a\u672c\u6267\u884c\u6d41\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8Cprocess_args%E6%96%B9%E6%B3%95\"><\/span>\u6267\u884cprocess_args\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u6ce8\u610f\u6b64\u65b9\u6cd5\u662f\u4e00\u4e2a\u53c2\u6570\u4e00\u4e2a\u53c2\u6570\u5730\u4f9d\u6b21\u6267\u884c\uff0c\u7b2c\u4e00\u4e2a\u53c2\u6570\u662frk3588\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662fCROSS_COMPILE=*\u3002<\/p>\n<p>\u89e3\u6790\u7b2c\u4e00\u4e2a\u53c2\u6570rk3588<\/p>\n<ul>\n<li>\n<p>\u300b\u300b\u300b\u6267\u884cfit.sh,\u57fa\u672c\u4e0a\u5565\u4e8b\u513f\u6ca1\u6709\u5e72\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/make.sh_.png\" alt=\"\" \/><\/p>\n<\/li>\n<li>\n<p>\u300b\u300b\u300b\u901a\u8fc7KConfig\u7cfb\u7edf\u751f\u6210uboot\u7684\u914d\u7f6e\u6587\u4ef6.config<br \/>\n<code>make rk3588_defconfig<\/code><br \/>\n\u4f1a\u6253\u5370<\/p>\n<pre><code class=\"language-bash\">#\n# configuration written to .config\n#<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>\u5728Makefile\u4e2d\u5bf9\u5e94\u7684\u76ee\u6807\u4e3a\uff1a<\/p>\n<pre><code class=\"language-bash\">%config: scripts_basic outputmakefile FORCE\n    $(Q)$(MAKE) $(build)=scripts\/kconfig $@<\/code><\/pre>\n<p><strong>\u76ee\u6807\uff1ascripts_basic<\/strong><\/p>\n<pre><code class=\"language-bash\">scripts_basic:\n    $(Q)$(MAKE) $(build)=scripts\/basic\n    $(Q)rm -f .tmp_quiet_recordmcount<\/code><\/pre>\n<p>\u89c1<a href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=8101\">http:\/\/xinyiworld.top\/wordpress_it\/?p=8101<\/a> \u53ef\u77e5\uff0c<code>$(Q)$(MAKE) $(build)=scripts\/basic<\/code>\u76f8\u5f53\u4e8e\u6267\u884c<code>u-boot\/scripts\/Makefile.build<\/code>\u4e2d\u7684<code>__build<\/code>\u4f2a\u76ee\u6807\uff0c\u4f9d\u8d56\u9879\u5373\u4e3a$(always),\u6b64\u53d8\u91cf$(always)\u901a\u8fc7Makefile.build\u4e2dinclude <code>scripts\/basic<\/code>\u76ee\u5f55\u4e0b\u7684Makefile\u6587\u4ef6\uff0c\u503c\u5373\u4e3a<code>fixdep<\/code><\/p>\n<p><strong>\u76ee\u6807\uff1afixdep<\/strong><br \/>\n<a href=\"https:\/\/www.pianshen.com\/article\/8257930864\/\">https:\/\/www.pianshen.com\/article\/8257930864\/<\/a> \uff08fixdep\u5de5\u5177\u7684\u751f\u6210\u8fc7\u7a0b\uff09<br \/>\n<a href=\"https:\/\/blog.csdn.net\/guyongqiangx\/article\/details\/52588409\">https:\/\/blog.csdn.net\/guyongqiangx\/article\/details\/52588409<\/a> \uff08fixdep\u5de5\u5177\u7684\u8c03\u7528\uff09<br \/>\nfixdep\u662fKBuild\u4e2d\u4e00\u79cd\u975e\u5e38\u91cd\u8981\u7684\u673a\u5236\uff0c\u8be5\u5de5\u5177\u7684\u4f5c\u7528\u5c31\u662f\u5728\u7f16\u8bd1\u8fc7\u7a0b\u4e2d\u4ea7\u751f\u4f9d\u8d56\u4fe1\u606f\uff0c\u5224\u65ad\u4f9d\u8d56\u76ee\u6807\u662f\u4e0d\u662f\u66f4\u65b0\u7684\u3002<\/p>\n<p>\u6b64\u5904outputmakefile\u5e76\u6ca1\u6709\u6267\u884c\u4efb\u4f55\u6709\u6548\u64cd\u4f5c<\/p>\n<p>FORCE\u662f\u5f3a\u5236\u6267\u884c\u76ee\u6807\u7684\u673a\u5236<\/p>\n<p>\u6700\u7ec8\u6267\u884c\u7684\u662f<code>$(Q)$(MAKE) $(build)=scripts\/kconfig $@<\/code>\uff0c\u5373\u6267\u884cscripts\/kconfig\u4e0b\u7684rk3588_defconfig\u76ee\u6807\uff1a<\/p>\n<pre><code class=\"language-bash\">%_defconfig: $(obj)\/conf\n    $(Q)$&lt; $(silent) --defconfig=arch\/$(SRCARCH)\/configs\/$@ $(Kconfig)<\/code><\/pre>\n<p>$(SRCARCH)\u662f<code>..<\/code>,\u6700\u7ec8--defconfig\u6307\u5411\u7684\u662f<code>u-boot\/configs\/rk3588_defconfig<\/code>\u6587\u4ef6\uff0c\u6700\u7ec8\u8d70\u5411\u4e86Kbuild\u7cfb\u7edf\u3002<\/p>\n<p><strong>\u5c1d\u8bd5\u5728u-boot\u91cc\u76f4\u63a5\u8fd0\u884cconf\u751f\u6210\u914d\u7f6e\u6587\u4ef6<\/strong><br \/>\n\u4f1a\u62a5\u8fd9\u4e2a\u9519\u8bef\uff0c\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u4e2a\u539f\u7406\u3002<br \/>\n<img src=\"http:\/\/xinyiworld.top\/wordpress_it\/wp-content\/uploads\/2022\/09\/4FF1943C-C025-42ce-97ED-392DFBC2542B.png\" alt=\"\" \/><\/p>\n<p>\u76ee\u6807\uff1ainclude\/config\/%.conf<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8Cselect_toolchain%E6%96%B9%E6%B3%95\"><\/span>\u6267\u884cselect_toolchain\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u4e3b\u8981\u662f\u53bb\u6307\u5b9a\u4e00\u4e9bprebuilts\u76ee\u5f55\u4e0b\u7684\u4ea4\u53c9\u7f16\u8bd1\u5de5\u5177<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8Cfixup_platform_configure%E6%96%B9%E6%B3%95\"><\/span>\u6267\u884cfixup_platform_configure\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u6709\u4e2a\u65b9\u6cd5\u5f97\u5173\u6ce8\u4e00\u4e0b<\/p>\n<pre><code class=\"language-bash\">function filt_val()\n{\n    sed -n &quot;\/${1}=\/s\/${1}=\/\/p&quot; $2 | tr -d &#039;\\r&#039; | tr -d &#039;&quot;&#039;\n}<\/code><\/pre>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u7684\u4f5c\u7528\u662f\u6839\u636ekey\u53bb.config\u6587\u4ef6\u91cc\u67e5\u627evalue\uff0c\u5e76\u53bb\u9664\u56de\u8f66\u7b26\u3001\u5f15\u53f7\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8Cselect_ini_file%E6%96%B9%E6%B3%95\"><\/span>\u6267\u884cselect_ini_file\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u9009\u62e9.ini\u6587\u4ef6<\/p>\n<h4><span class=\"ez-toc-section\" id=\"make_%EF%BC%88%EF%BC%89\"><\/span>make \uff08**\uff09<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><a href=\"http:\/\/xinyiworld.top\/wordpress_it\/?p=8062\">http:\/\/xinyiworld.top\/wordpress_it\/?p=8062<\/a><\/p>\n<button class=\"simplefavorite-button\" data-postid=\"6942\" data-siteid=\"1\" data-groupid=\"1\" data-favoritecount=\"0\" style=\"\">\u6536\u85cf <i class=\"sf-icon-star-empty\"><\/i><\/button>","protected":false},"excerpt":{"rendered":"<p>\u5b98\u65b9\u6587\u6863 https:\/\/wiki.t-firefly.com\/zh_CN\/ROC-RK3588S- [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[475],"tags":[],"_links":{"self":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/6942"}],"collection":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6942"}],"version-history":[{"count":69,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/6942\/revisions"}],"predecessor-version":[{"id":8181,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/6942\/revisions\/8181"}],"wp:attachment":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6942"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}