u-boot 分析之 默认环境变量配置

通过上节内容,我们大概了解了Uboot中DDR的配置相关知识,这节我们学习一下默认环境变量配置。在zynq开发的时候,在u-boot阶段,有的环境变量需要在烧录后再设置,

在烧录之后都会有一些默认的环境变量比如bootarg等,如果在编译u-boot之前就把自己需要的变量设置好,烧录的时候直接就得到自己想要的变量,这在量产中是很方便的。

在哪里配置呢?经过研习,终于找到了,在这里include/configs/<你的板子名称>.h,如include/configs/zynq_zturn.h,环境变量的部分配置如下:

#define CONFIG_EXTRA_ENV_SETTINGS        \
         "qboot_addr=0x000000\0"\
         "qbootenv_addr=0x080000\0"\
         "qbootenv_size=0x020000\0"\
         "qkernel_addr=0x500000\0"\
         "qdevtree_addr=0x980000\0"\
         "qramdisk_addr=0x990000\0"\
         "kernel_size=0x480000\0"      \
         "devicetree_size=0x010000\0"       \
         "ramdisk_size=0x600000\0"   \
         "boot_size=0x080000\0"         \
         "ethaddr=00:0a:35:00:01:22\0"     \
         "kernel_image=uImage\0"      \
         "kernel_load_address=0x2080000\0"\
         "ramdisk_image=uramdisk.image.gz\0"         \
         "ramdisk_load_address=0x4000000\0" \
         "devicetree_image=devicetree.dtb\0"   \
         "devicetree_load_address=0x2000000\0"     \
         "bitstream_image=system.bit.bin\0"     \
         "boot_image=BOOT.bin\0"     \
         "loadbit_addr=0x100000\0"   \
         "loadbootenv_addr=0x2000000\0"\
         "fdt_high=0x20000000\0"       \
         "initrd_high=0x20000000\0"  \
         "bootenv=uEnv.txt\0"\
         "loadbootenv=fatloadmmc 0 ${loadbootenv_addr} ${bootenv}\0" \
         "importbootenv=echoImporting environment from SD ...; " \
                   "envimport -t ${loadbootenv_addr} $filesize\0" \
         "mmc_loadbit_fat=echoLoading bitstream from SD/MMC/eMMC to RAM.. && " \
                   "get_bitstream_name&& mmcinfo && " \
                   "fatloadmmc 0 ${loadbit_addr} ${bitstream_image} && " \
                   "fpgaloadb 0 ${loadbit_addr} ${filesize}\0" \
         "norboot=echoCopying Linux from NOR flash to RAM... && " \
                   "cp.b0xE2100000 ${kernel_load_address} ${kernel_size} && " \
                   "cp.b0xE2600000 ${devicetree_load_address} ${devicetree_size} && " \
                   "echoCopying ramdisk... && " \
                   "cp.b0xE2620000 ${ramdisk_load_address} ${ramdisk_size} && " \
                   "bootm${kernel_load_address} ${ramdisk_load_address}${devicetree_load_address}\0" \
         "uenvboot="\
                   "ifrun loadbootenv; then " \
                            "echoLoaded environment from ${bootenv}; " \
                            "runimportbootenv; " \
                   "fi;" \
                   "iftest -n $uenvcmd; then " \
                            "echoRunning uenvcmd ...; " \
                            "runuenvcmd; " \
                   "fi\0"\
         "sdboot=ifmmcinfo; then " \
                            "runuenvboot; " \
                            "get_bitstream_name&& " \
                            "echo- load ${bitname} to PL... && " \
                            "fatloadmmc 0 0x200000 ${bitname} && " \
                            "fpgaloadb 0 0x200000 ${filesize} && " \
                            "echoCopying Linux from SD to RAM... && " \
                            "fatloadmmc 0 ${kernel_load_address} ${kernel_image} && " \
                            "fatloadmmc 0 ${devicetree_load_address} ${devicetree_image} && " \
                            "fatloadmmc 0 ${ramdisk_load_address} ${ramdisk_image} && " \
                            "bootm${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address};" \
                   "fi\0"\
         "usbboot=ifusb start; then " \
                            "runuenvboot; " \
                            "echoCopying Linux from USB to RAM... && " \
                            "fatloadusb 0 ${kernel_load_address} ${kernel_image} && " \
                            "fatloadusb 0 ${devicetree_load_address} ${devicetree_image} && " \
             
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 编译mt7621配置U-Boot需要进行以下步骤: 首先,确认已经准备好编译环境,包括安装好交叉编译工具链和相关依赖库。 然后,从U-Boot官方仓库中获取最新的源代码。可以使用git命令进行克隆,例如: git clone https://github.com/u-boot/u-boot.git 接下来,切换到代码目录并进入配置界面,执行以下命令: cd u-boot make menuconfig 在配置界面中,选择"MTK",然后选择"MTK_MT7621"作为目标平台。根据需要,可以进行其他选项的配置,如串口、网络等。 配置完成后,保存退出配置界面。然后,执行以下命令进行编译: make CROSS_COMPILE=<交叉编译工具链前缀> 编译过程可能需要一段时间,取决于计算机性能和代码规模。 编译完成后,可以得到u-boot.bin文件作为编译结果。该文件可以烧录到MT7621芯片的Flash中,用于启动设备。 以上是编译mt7621配置U-Boot的大致步骤。根据具体需求,可能还需要进行其他配置和调整。在进行编译前,建议查阅U-Boot的官方文档和相关资料,以便更详细地了解配置和编译过程。 ### 回答2: 编译 U-Boot for MT7621 配置需要先准备编译环境和相关工具链。以下是编译 MT7621 配置的步骤: 1. 首先,确保你的系统上已经安装了交叉编译工具链。可以通过执行以下命令来检查是否已安装交叉编译工具链: ``` arm-openwrt-linux-gcc -v ``` 如果显示出工具链的版本信息,则表示已经安装成功。 2. 下载 U-Boot 的源码。你可以通过 Git 或者下载压缩包的方式获取源码。例如,使用 Git 命令来克隆 U-Boot 的仓库: ``` git clone https://github.com/u-boot/u-boot.git ``` 3. 进入源码目录,并创建编译配置文件。执行以下命令: ``` cd u-boot make mt7621_xxx_config ``` 其中,`mt7621_xxx_config` 是针对你的具体设备的配置文件,例如 `mt7621_rfb_config` 或 `mt7621_xxx_config` 等。你可以查阅相关文档来确定正确的配置文件。 4. 根据配置文件生成编译规则。执行以下命令: ``` make oldconfig ``` 根据你的需求来回答一些提示问题。默认选项通常是可以满足大多数需求的。 5. 开始编译。执行以下命令: ``` make ``` 编译时间会根据你的机器性能和代码大小而不同。最终编译产生的 U-Boot 可执行文件将位于生成文件夹中。 完成上述步骤后,你将获得一个适用于 MT7621 的 U-Boot 可执行文件。你可以将它用于你的项目中,并在启动过程中加载它。当然,在编译之前,你可能需要修改一些配置文件,以确保 U-Boot 适配你的具体硬件环境。 ### 回答3: 要编译 mt7621 的 u-boot 需要进行一些配置。 首先,你需要下载 u-boot 的源代码。可以从官方网站或者 GitHub 上找到 mt7621 相关的 u-boot 仓库,并下载代码至你的开发环境中。 接下来,你需要进入 u-boot 的源代码目录。使用终端命令行工具进入该目录。 在源代码目录中,你可以找到一个名为 `configs` 的文件夹,其中包含了不同平台的配置文件。你需要找到一个名为 `mt7621_bpir2_defconfig` 的文件,这是针对 mt7621 平台的默认配置文件。 如果你想进行自定义配置,可复制该文件,并在复制的文件上进行修改。你可以使用一个文本编辑器打开配置文件,找到需要修改的选项,并进行相应的修改。例如,你可以修改串口配置、内存配置、网络协议等选项,以适配你的具体需求。 完成修改后,你可以保存文件,并返回到源代码的根目录。 最后,你需要运行编译命令来生成可执行的 u-boot 映像文件。通常情况下,你可以通过运行 `make` 命令来进行编译。编译过程可能会耗费一些时间,请耐心等待。 当编译完成后,你可以在源代码目录下找到生成的 u-boot 映像文件。该文件一般以 `u-boot.bin` 或者 `u-boot.img` 的形式存在。 编译完成后,你可以将生成的 u-boot 映像文件烧录到 mt7621 平台的 Flash 存储器中,以替换原有的 u-boot 程序。 总而言之,编译 mt7621 的 u-boot 需要下载源代码、进行配置修改,并通过编译命令生成 u-boot 映像文件。最后,将生成的映像文件烧录到目标平台中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值