技术专栏
u-boot脚本编写基础
一、判断
在u-boot中使用if命令进行判断执行,但是if后必须跟一条指令,if命令仅判断if后指令执行的返回值。一般使用test命令进行条件判断。对于test命令,u-boot有以下帮助信息。
test - minimal test like /bin/sh
test命令本身不输出信息,仅对参数进行判断,结果通过函数的返回值进行返回。
test命令支持以下操作符:
const struct {
int arg;
const char *str;
int op;
int adv;
} op_adv[] = {
{1, "=", OP_STR_EQ, 3},
{1, "!=", OP_STR_NEQ, 3},
{1, "<", OP_STR_LT, 3},
{1, ">", OP_STR_GT, 3},
{1, "-eq", OP_INT_EQ, 3},
{1, "-ne", OP_INT_NEQ, 3},
{1, "-lt", OP_INT_LT, 3},
{1, "-le", OP_INT_LE, 3},
{1, "-gt", OP_INT_GT, 3},
{1, "-ge", OP_INT_GE, 3},
{0, "!", OP_NOT, 1},
{0, "-o", OP_OR, 1},
{0, "-a", OP_AND, 1},
{0, "-z", OP_STR_EMPTY, 2},
{0, "-n", OP_STR_NEMPTY, 2},
{0, "-e", OP_FILE_EXISTS, 4},
};
除test命令外还有两个命令true和false。与test命令相似,同样使用函数返回值返回数据而不是输出到控制台。true永远返回真,true永远返回假。
应用举例:
# 数值判断(输出hello)
if test 1 -le 2;then echo "hello";fi
# 字符串相等(输出hello)
if test "hello" = "hello";then echo "hello";fi
# 字符串不等(输出hello)
if test "hel" != "hello";then echo "hello";fi
# true的使用(输出hello)
if true;then echo "hello";fi
二、计算
在u-boot中使用setexpr进行计算,该命令将计算的结果放入指定的环境变量中。(使用10进制进行计算,十六进制运算出现进位时可能会出现异常)在u-boot的帮助信息中有以下描述
setexpr [.b, .w, .l] name [*]value1 <op> [*]value2
- set environment variable 'name' to the result of the evaluated
expression specified by <op>. <op> can be &, |, ^, +, -, *, /, %
size argument is only meaningful if value1 and/or value2 are
memory addresses (*)
由上述描述可知setexpr命令支持一般的四则运算、取模以及位运算
# 设置i的初始值
setenv i 12
# i++
setexpr i $i + 1
# 输出13
echo $i
三、循环
u-boot中支持for循环与while循环,语法与Linux shell中相像。
while <判断条件>;do <指令1>;[指令2];...done;
下面给出一个例子,输出1-10
setenv i 1;while test "0x$i" -le "0xa";do echo "$i"; setexpr i $i + 1;done
四、运行脚本
uboot中通过run命令运行环境变量中的脚本
setenv cmd1 'setenv i 1;while test "0x$i" -le "0xa";do echo "$i"; setexpr i $i + 1;done'
run cmd1
关于scr脚本
scr文件是uboot的脚本文件,在uboot执行时可将脚本加载到内存,再使用source命令执行
fatload mmc 1:1 $loadaddr /boot/boot-abc.scr
source $loadaddr
注意scr是脚本编译后可被uboot识别的文件,需要先编辑一个脚本文件,通过编译命令编译为scr文件
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
点赞
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据相关专栏
-
浏览量:1619次2023-12-06 16:50:25
-
浏览量:2929次2024-03-29 11:08:20
-
浏览量:1982次2023-12-04 13:11:50
-
浏览量:2464次2023-12-06 12:30:38
-
浏览量:3031次2020-07-30 09:20:04
-
浏览量:2084次2023-03-28 19:19:22
-
浏览量:2431次2020-03-30 17:12:36
-
浏览量:2165次2023-03-28 19:37:31
-
浏览量:4189次2017-11-20 11:05:33
-
浏览量:2048次2023-08-19 14:25:08
-
浏览量:5243次2023-04-03 16:45:01
-
浏览量:5398次2024-03-16 11:19:01
-
浏览量:4255次2023-03-17 18:38:40
-
浏览量:2425次2023-04-03 15:28:29
-
浏览量:2776次2023-04-03 15:51:40
-
浏览量:159次2025-11-04 12:04:04
-
浏览量:2076次2017-11-24 11:18:08
-
浏览量:3559次2020-08-26 17:29:05
-
2023-11-28 10:58:59
切换马甲
上一页
下一页
TA最新文章
打赏用户
共 0 位
我要创作
分享技术经验,可获取创作收益
热门专栏
- 【海思HI3520之QT开发】-文件操作实战(一):log日志文件创建与修改
- 海思3559A上编译libyuv源码操作步骤
- 易百纳邀您一起来围观 —— 操作系统大会&openEuler Summit 2023 !
- Windows XP源代码泄露 被疯狂下载!微软回应
- 基于SS928 openssh的安装
- 上海海思校园大使招募令,第二批启动啦~~
- 海思Hifb层(一些原理性的东西,无实例说明)
- 海思照亮每一天!PLC-IoT使能智慧路灯,网随电通好拉风~
- 易百纳受邀参加2024年南京邮电大学创新创业冬令营启动仪式,并公布为深化产教融合,开设了首届机器视觉实战就业班!
- Hi3516DV500&&Hi3519DV500制作emmc ext4格式文件系统镜像报错问题处理
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
四叶草~
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注

微信扫码分享
QQ好友