Linux里u-boot添加命令及测试问题


root@ubuntu:/opt/x4412# make distclean
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.4
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=IMM76L
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
 
Your version is: java version "1.8.0_371".
The correct version is: Java SE 1.6.
 
Please follow the machine setup instructions at
    http://source.android.com/source/download.html
************************************************************
build/core/main.mk:131: *** stop。 停止。





root@ubuntu:~# source /etc/profile
root@ubuntu:~# javac -version
javac 1.8.0_371
root@ubuntu:~# java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)


root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 14.04.6 LTS
Release:    14.04
Codename:    trusty


具体有什么问题呢?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:u-boot下的指令操作 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: Linux系统移植中的 2.3、U-Boot 命令 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    显示所有环境变量:pri / printenv

    设置新的环境变量:set / setenv
       |–> set ipaddr 192.168.1.100

    保存环境变量的值:save / saveenv

    通过网络下载程序:tftp
       |–> tftp 地址 文件名 eg: tftp 0x4000000 uImage

    通过串口 kermit办议下载二进制数据:loadb
       |–> loadb 0x4000000

    movi 命令(不是 Ubuntu命令)
       |–> movi read/write kernel/uboot 内存地址
       |–> movi write rootfs addr size 写roofs到EMMC

    自启动命令:bootcmd
      |–> set bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;tftp 43000000 ramdisk.img;bootm 41000000 43000000 42000000
       bootm kernel-addr ramdisk-addr dtb-addr

    给内核传递启动参数:bootargs
       |–> bootargs root=/dev/ram rw console=ttySAC2,115200 init=/linuxrc clk_ignore_unused
         |–> root=/dev/ram 根文件系统运行在内存
         |–> rw 根文件系统可读可写
         |–> console 串口2
         |–> init 进程为/linuxrc

    SD – EMMC切换
    SD卡:(1000)
       tftp 0x40000000 u-sd.bin
       movi write u-boot 0x40000000
    EMMC:(0111)
       上电看效果
    在这里插入图片描述

  • 您还可以看一下 沈寒老师的嵌入式Linux系统移植入门课程中的 Uboot的使用与编译小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以为您提供如下解决方案:

    在Linux的u-boot中添加命令并进行测试的步骤如下:

    1. 下载u-boot源码

    在u-boot的官网(http://www.denx.de/wiki/U-Boot/WebHome)或ftp站点(ftp://ftp.denx.de/pub/u-boot/)下载u-boot的源码。

    1. 修改u-boot代码

    使用文本编辑器打开u-boot的源码,找到cmd目录下的cmd_list.c文件,在文件中添加新的命令。例如,添加一个新的命令“mycmd”,则可以在cmd_list.c文件中添加以下代码:

    ifdef CONFIG_CMD_MYCMD

    extern int do_mycmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);

    endif

    static cmd_tbl_t cmd_list[] = { …

    ifdef CONFIG_CMD_MYCMD

    U_BOOT_CMD(
        mycmd,   2,     0,     do_mycmd,
        "mycmd - description",
        "mycmd arg ...\n"
    ),
    

    endif

    };

    在u-boot源码目录下,使用make命令进行编译。

    1. 测试

    将编译好的u-boot烧录到开发板中,启动开发板进入u-boot命令行模式,在命令行中输入“help”可以查看到“mycmd”这个命令,说明新的命令添加成功。

    在命令行中输入“mycmd”,测试新添加的命令是否可以正常执行。

    以上步骤就是在Linux的u-boot中添加命令并进行测试的完整流程。

    另外,如果您想深入了解u-boot的源码以及启动过程,可以参考参考资料中的相关文章或者教程进行进一步学习。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^