LV05-02-U-Boot-05-uboot下自定义一个命令
本文主要是uboot——uboot下自定义一个命令的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
PC端开发环境 | Windows | Windows11 |
Ubuntu | Ubuntu20.04.2的64位版本 | |
VMware® Workstation 17 Pro | 17.6.0 build-24238078 | |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) | |
Win32DiskImager | Win32DiskImager v1.0 | |
Linux开发板环境 | Linux开发板 | 正点原子 i.MX6ULL Linux 阿尔法开发板 |
uboot | NXP官方提供的uboot,使用的uboot版本为U-Boot 2019.04 | |
linux内核 | linux-4.19.71(NXP官方提供) |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | https://www.arm.com/ | ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档 |
https://www.nxp.com.cn/ | NXP官方网站 | |
https://www.nxpic.org.cn/ | NXP 官方社区 | |
https://u-boot.readthedocs.io/en/latest/ | u-boot官网 | |
https://www.kernel.org/ | linux内核官网 | |
其他网站 | kernel - Linux source code (v4.15) - Bootlin | linux内核源码在线查看 |
点击查看相关文件下载
分类 | 网址 | 说明 |
NXP | https://github.com/nxp-imx | NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库 |
nxp-imx/linux-imx/releases/tag/v4.19.71 | NXP linux内核仓库tags中的v4.19.71 | |
nxp-imx/uboot-imx/releases/tag/rel_imx_4.19.35_1.1.0 | NXP u-boot仓库tags中的rel_imx_4.19.35_1.1.0 | |
I.MX6ULL | i.MX 6ULL Applications Processors for Industrial Products | I.MX6ULL 芯片手册(datasheet,可以在线查看) |
i.MX 6ULL Applications ProcessorReference Manual | I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网) | |
Source Code | https://elixir.bootlin.com/linux/latest/source | linux kernel源码 |
https://elixir.bootlin.com/u-boot/latest/source | uboot源码 |
前面我们已经大概了解了命令的定义和执行过程,我们来自定义一个简单的命令。
一、命令编写
1. gpio_demo.c
1 | /* |
2. Makefile
在cmd目录中的Makefile文件要添加源文件的编译:
1 | obj-y += gpio_demo.o |
二、编译源码
1. 编译脚本
我们直接编译移植过的uboot,可以用这个脚本:1.sh · 苏木/u-boot - 码云 - 开源中国 (gitee.com),出现这个提示表示编译完成:
2. 映射文件
我们看下编译后生成的u-boot.map文件,可以搜索一下gpio_demo
关键字,会看到如下信息:
1 | .u_boot_list_2_cmd_2_gpio_demo |
这就说明我们添加的命令成功了。
三、开发板验证
我们烧写到开发板中,然后启动,我们先敲一个help命令:
1 | => help |
在uboot的命令模式执行:
1 | => gpio_demo 1 2 3 4 5 |
会看到有如下输出:
因为我们设置的最多传入4个参数,所以有些超了的并不是我们执行do_gpio_democ()函数的打印。但是到这里就说明我们的自定义命令完成了。