文章目录
- 一、概念
- (一)GNU相关命令的扩展(二进制工具集)
- (二)
- 1. ld命令:将.o文件链接生成.elf格式文件
- 2. objcopy命令:格式化拷贝命令,将.elf格式文件格式化拷贝生成.bin文件
- 3. objdump命令:反汇编命令,将.elf文件生成反汇编的.dis文件
- 4. readelf命令:读取elf文件的信息
- 5. nm命令:查看elf文件的符号的信息
- 6. size命令:查看elf文件中各个段的大小
- 二、u-boot命令
- (一)help命令
- (二)loadb命令
- (三)go命令
- (四)gpio命令
- (五)环境变量操作相关命令
- 1. 查看环境变量:printenv/print/pri命令
- 2. 修改环境变量:setenv/saveenv命令
- 3. 添加新的环境变量:setenv/saveenv
- 4. 删除环境变量:setenv/saveenv
- 5. 编辑环境变量的值:editenv/saveenv
- (六)环境变量命令env
- (七)ping命令
- (八)tftpboot命令
一、概念
对Linux内核源码进行配置和编译,使linux内核源码支持自己的开发板并生成对应的镜像文件。
linux启动过程:
系统上电->U-boot -> Linux内核 -> 挂载根文件系统 ->应用程序
u-boot:通用的引导启动程序,在嵌入式产品开发中使用的主流的引导程序
(一)GNU相关命令的扩展(二进制工具集)
gcc :C代码
g++ :C++
gdb :代码调试工具
交叉编译器对应的GNU命令在~/toolchain/gcc-7.5.0/bin
- 补充:
- ubuntu系统自动的GNU相关的命令在/usr/bin目录下,可以使用以下命令查看:
sudo find /bin -name gcc
sudo find /usr/bin -name gcc
(二)
1. ld命令:将.o文件链接生成.elf格式文件
2. objcopy命令:格式化拷贝命令,将.elf格式文件格式化拷贝生成.bin文件
3. objdump命令:反汇编命令,将.elf文件生成反汇编的.dis文件
4. readelf命令:读取elf文件的信息
5. nm命令:查看elf文件的符号的信息
6. size命令:查看elf文件中各个段的大小
二、u-boot命令
(一)help命令
FSMP1A>>> help —> 查看所有的u-boot支持的命令
FSMP1A>>> help u-boot命令名 —> 查看u-boot命令的对应的帮助手册
(二)loadb命令
FSMP1A>>> help loadb
loadb - load binary file over serial line (kermit mode)
功能:通过串口使用kermit模式下载二进制文件
Usage(用法):
loadb [ addr [ baud ] ]
- load binary file over serial line at address ‘addr’ with baudrate ‘baud’
(三)go命令
FSMP1A>>> help go
go - start application at address ‘addr’
功能:从内存addr地址启动应用程序
Usage(用法):
go addr [arg …]
- start application at address ‘addr’
passing ‘arg’ as arguments
(四)gpio命令
FSMP1A>>> help gpio
gpio - query and control gpio pins
功能:查询和控制GPIO引脚
Usage(用法):
gpio <input|set|clear|toggle> <pin>
- input/set/clear/toggle the specified pin
gpio status [-a] [<bank> | <pin>] - show [all/claimed] GPIOs
gpio <input|set|clear|toggle> <pin>
input
: 查看gpio引脚的输入的状态
set
: 设置gpio引脚输出高电平
clear
: 设置gpio引脚输出低电平
toggle
: 设置gpio引脚输出电平翻转
<pin>
: 控制哪个gpio引脚 格式:gpioxy (x = a - k,z) (y = 0 - 15)
案例:
-
查看key1按键的状态:PF9
FSMP1A>>> gpio input gpiof9
gpio: pin gpiof9 (gpio 89) value is 1 --> 按键抬起
FSMP1A>>> gpio input gpiof9
gpio: pin gpiof9 (gpio 89) value is 0 --> 按键按下 -
控制蜂鸣器响与不响:PB6
FSMP1A>>> gpio set gpiob6
gpio: pin gpiob6 (gpio 22) value is 1
FSMP1A>>> gpio clear gpiob6
gpio: pin gpiob6 (gpio 22) value is 0
FSMP1A>>> gpio toggle gpiob6
gpio: pin gpiob6 (gpio 22) value is 1
FSMP1A>>> gpio toggle gpiob6
gpio: pin gpiob6 (gpio 22) value is 0
gpio status [-a] [ | ] - show [all/claimed] GPIOs
-a : 所有的
: 哪个GPIO组的 格式:gpiox (x = a - k,z)
: 哪个引脚 格式:gpioxy (x = a - k,z) (y = 0 - 15)
案例: -
查看所有组的所有的gpio引脚的状态
FSMP1A>>> gpio status -a -
查看GPIOF组的所有的引脚的状态
FSMP1A>>> gpio status -a gpiof -
查看gpiob6引脚的状态
FSMP1A>>> gpio status gpiob6
Bank GPIOB:
GPIOB6: output: 0 [ ]
(五)环境变量操作相关命令
1. 查看环境变量:printenv/print/pri命令
FSMP1A>>> printenv —> 打印所有的环境变量的值
arch=arm —> 架构
baudrate=115200 —> 串口波特率
bootargs=root=/dev/nfs nfsroot=192.168.100.210:/home/linux/rootfs,tcp,v4 rw
console=ttySTM0,115200 init=/linuxrc ip=192.168.100.10
—> 系统自启动的参数,u-boot在启动内核时,可以通过这个环境变量给内核传递部分启动参数
bootcmd=loadb 0xc0008000;go 0xc0008000
—> 自启动的命令,后续讲解linux系统启动时介绍
bootdelay=3 —> u-boot启动之后的倒计时的时间
ethaddr=00:80:E1:42:60:17 —> MAC地址
gatewayip=192.168.100.1 —> 网关
ipaddr=192.168.100.10 —> 开发板的IP地址
netmask=255.255.255.0 —> 子网掩码
serverip=192.168.100.210 —> ubuntu服务器的IP地址
vendor=st —> 厂商
Environment size: 4525/8187 bytes —> 环境变量大小
FSMP1A>>> printenv 环境变量名 —> 打印环境变量的值
FSMP1A>>> printenv bootdelay
bootdelay=3
2. 修改环境变量:setenv/saveenv命令
setenv:设置环境变量,默认是修改内存中的环境变量的值
saveenv:保存环境变量,将内存中的环境变量保存到Flash中
3. 添加新的环境变量:setenv/saveenv
添加新的环境变量格式:
FSMP1A>>> setenv 新的环境变量名 环境变量的值
FSMP1A>>> saveenv
4. 删除环境变量:setenv/saveenv
删除环境变量的格式:
FSMP1A>>> setenv 要删除的环境变量名
FSMP1A>>> saveenv
5. 编辑环境变量的值:editenv/saveenv
编辑环境变量的值格式:
FSMP1A>>> editenv 要编辑的环境变量名
FSMP1A>>> saveenv
(六)环境变量命令env
env default [-f] -a - [forcibly] reset default environment
—> 复位默认的环境变量
env edit name - edit environment variable
—> 编辑环境变量的值,用法等价于editenv
env print [-a | name …] - print environment
—> 打印环境变量的值,用法等价于printenv
env save - save environment
—> 保存环境变量的值,用法等价于saveenv
env set [-f] name [arg …]
—> 设置环境变量的值,用法等价于setenv
(七)ping命令
测试开发板和ubuntu服务器的网络是否连通