uboot添加自定义命令的实现步骤

 更新时间:2022年11月18日 16:19:27   作者:IT小生lkc  
uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是从flash中读出内核,放到内存中,启动内核,这篇文章主要介绍了uboot添加自定义命令的实现步骤,需要的朋友可以参考下

uboot简介

uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是:从flash中读出内核,放到内存中,启动内核。
它刚开始被放到flash上,然后上电以后先执行它,它会完成硬件初始化,设置处理器模式,关闭看门狗,屏蔽中断,初始化sdram,设置栈,设置时钟,从flash引导内核到内存,就好像我们PC上的BIOS一样。最终将系统的软硬件带到一个合适的状态。

实现步骤:

  • 1.uboot源码下新建cmd/cmd_xx.c
  • 2.添加基本的命令和函数
  • 3.cmd下makefile添加 obj-y += cmd_update.o

头文件:

#include <common.h>

#include <command.h>

函数:

/*

    第一个参数:添加的命令的名字

    第二个参数:添加的命令最多有几个参数(注意,假如你设置的参数个数是3,

              而实际的参数个数是4,那么执行命令会输出帮助信息的)

    第三个参数:是否重复(1重复,0不重复)(即按下Enter键的时候,

              自动执行上次的命令)

    第四个参数:执行函数,即运行了命令具体做啥会在这个函数中体现出来

    第五个参数:帮助信息(short)

    第六个参数:帮助信息(long)

*/
static int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

{

        return 0;

}

添加命令update:

// U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help)
U_BOOT_CMD(update, 4, 0, do_update,
    "update command",
    " - check boot progress and timing\n"

    "update all\n"

    "update uboot \n"

    "update image \n"

    "update rootfs \n"
);
/*
 * @Author: error: git config user.name && git config user.email & please set dead value or install git
 * @Date: 2022-11-15 23:26:50
 * @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
 * @LastEditTime: 2022-11-16 21:38:40
 * @FilePath: \uboot\cmd\cmd_update.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include <common.h>
#include <command.h>
 
 
/*
    第一个参数:添加的命令的名字
    第二个参数:添加的命令最多有几个参数(注意,假如你设置的参数个数是3,而实际的参数个数是4,那么执行命令会输出帮助信息的)
    第三个参数:是否重复(1重复,0不重复)(即按下Enter键的时候,自动执行上次的命令)
    第四个参数:执行函数,即运行了命令具体做啥会在这个函数中体现出来
    第五个参数:帮助信息(short)
    第六个参数:帮助信息(long)
*/
static int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
    /* 判断参数个数 */
    if (argc != 2)
    {
        printf("update params num err\n");
        return 1;
    }
 
    if (0 == strncmp("uboot", argv[0], sizeof("uboot")))
    {
        printf("update uboot success\n");
    }
    else if (0 == strncmp("image", argv[0], sizeof("image")))
    {
        printf("update image success\n");
    }
    else if (0 == strncmp("rootfs", argv[0], sizeof("rootfs")))
    {
        printf("update rootfs success\n");
    }
 
    return 0;
}
 
/* 
U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help) 
*/	
U_BOOT_CMD(update, 4, 0, do_update,
	"update command",
	" - check boot progress and timing\n"
	"update all\n"
	"update uboot \n"
	"update image \n"
    "update rootfs \n"
);

到此这篇关于uboot添加自定义命令的实现步骤的文章就介绍到这了,更多相关uboot添加自定义命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 实例讲解C语言编程中的结构体对齐

    实例讲解C语言编程中的结构体对齐

    这篇文章主要介绍了C语言编程中的结构体对齐,值得注意的是一些结构体对齐的例子在不同编译器下结果可能会不同,需要的朋友可以参考下
    2016-04-04
  • c++自带的查找函数详解

    c++自带的查找函数详解

    这篇文章主要介绍了c++自带的查找函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码

    这篇文章主要介绍了麻将游戏算法深入解析及实现代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • C语言快速排序与二分查找算法示例

    C语言快速排序与二分查找算法示例

    这篇文章主要介绍了C语言快速排序与二分查找算法,涉及C语言随机数生成、快速排序及二分查找等算法相关实现技巧,需要的朋友可以参考下
    2018-01-01
  • C/C++实现线性单链表的示例代码

    C/C++实现线性单链表的示例代码

    使用链存储结构的线性存储结构为线性单链表,本文将分别利用C语言和C++实现线性单链表,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-05-05
  • C语言超详细讲解getchar函数的使用

    C语言超详细讲解getchar函数的使用

    C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数,下面让我们详细来看看
    2022-05-05
  • C语言实现三子棋游戏含完整代码

    C语言实现三子棋游戏含完整代码

    本文详细讲解了C语言实现三子棋游戏内含完整代码,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • C语言初学者代码中的常见错误与问题

    C语言初学者代码中的常见错误与问题

    C语言初学者犯过的很多错误都非常典型,在初学者中非常普遍,于是整理了一下,应该对其他初学者有借鉴意义
    2013-11-11
  • C++中const的特性的使用

    C++中const的特性的使用

    这篇文章主要介绍了C++中const的特性的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • c++ 判断奇数偶数实例介绍

    c++ 判断奇数偶数实例介绍

    下面通过判断一个数是偶数还是奇数来展示交互递归的应用,并且此题突出了递归跳跃的信任的重要性,需要的朋友可以参考下
    2012-11-11

最新评论