Linux第42步_移植ST公司uboot的第3步_uboot命令测试,搭建nfs服务器和tftp服务器

测试uboot命令,搭建nfs服务器和tftp服务器,是测试uboot非常关键的一步。跳过这一节,后面可能要踩坑。

一、输入“help回车”,查询uboot所支持的命令

二、输入“? bootz回车”,查询“bootz”怎么用

注意:和boot一样,用来启动 Linux 系统的

三、常用的查询命令

1、输入“? bdinfo回车”,查询“bdinfo”怎么用

输入“bdinfo回车”,查询“开发板的信息

2、输入“printenv回车”,打印环境变量

3、输入“version回车”,打印uboot当前的版本号

四、输入“reset回车”,设置开发板重启

五、输入“? setenv回车”,查询“setenv”怎么用

六、修改环境变量,setenv和saveenv是成对出现的

见下图:

七、新建环境变量

输入“setenv author 'console=ttySTM0,115200 root=/dev/mmcblk2p2 rootwait rw'回车

输入“saveenv回车”,保存新建环境变量“author”,及其值。

输入“reset回车”,重启开发板

八、输入“printenv回车”,打印环境变量

九、删除环境变量

输入“setenv author回车”,将“author”设置为空值,就可以删除环境变量

输入“saveenv回车”,保存新建环境变量“author”,及其值。

输入“reset回车”,重启开发板

输入“printenv回车”,打印环境变量

十、内存操作命令

1、显示指定内存地址的值

输入“? md回车”,查询md的用法

注意:在uboot里,所有的数据为16进制

输入“md.b C0100000 14回车”,查询内存首地址为“0xC0100000”开始处的20个字节;

输入“md.w C0100000 A回车”,查询内存首地址为“0xC0100000”开始处的20个字节;

输入“md.l C0100000 5回车”,查询内存首地址为“0xC0100000”开始处的20个字节;

2、修改指定内存地址的值

输入“? nm回车”,查询“nm”的用法

使用nm将内存地址为c0100000处的4个字节修改为12345678,然后再改回原来的值。

3、输入“? mm回车”,查询“mm”的用法

修改指定地址的内存值,和“nm用法”不同的地方是:它修改内存数据后,内存的地址会自动增加。

使用mm将内存地址为c0100000处的4个字节修改为12345670,然后再改回原来的值。

4、使用“一个数据”填充“指定内存起始地址”的一段内存

使用mw将内存地址为c0100000处的12个4字节修改为“0A0A0A0A”。

十一、清除命令cls

在调试串口按回车,会一直执行“上次执行的命令”,为了取消,可以输入“cls”清除“上次执行的命令”;

输入cls就可以清除“自动执行上条命令”

十二、数据拷贝命令cp

将内存首地址为“C0100000”处的12个4字节数据拷贝到内存首地址为“C0100030”处

十三、比较两段内存的数据是否相等CMP

十四、网络操作命令

1、输入“ifconfig”查询虚拟机的IP地址,加下图:

2、将开发板的USB串口连接好,打开串口调试,设置网路变量

输入“setenv ipaddr 192.168.2.178回车”,设置开发板的IP地址为“192.168.2.178”

输入“setenv ethaddr 00:04:9f:04:d2:36回车”,设置开发的MAC地址为“00:04:9f:04:d2:36”

输入“setenv gatewayip 192.168.2.1回车”,设置网关地址为“192.168.2.1”

输入“setenv netmask 255.255.255.0回车”,设置子网掩码为“255.255.255.0”

输入“setenv serverip 192.168.2.180回车”,设置ubuntu主机的IP地址为“192.168.2.180”

输入“saveenv回车”,保存环境变量

3、输入“dhcp回车”,路由器获分配IP地址给开发板

十五、搭建nfs服务器

nfs命令功能:使用uboot中的nfs命令将ubuntu中的文件下载到开发板的DRAM内存中;其次是用来从ubuntu下载内核镜像uImage和设备树

uImage文件路径为08、系统镜像\08、系统镜像\02、出厂系统镜像\03、linux-mp1-5.4.31-gca8f6cddb-v1.7 。

stm32mp157d-atk.dtb文件路径为08、系统镜像\08、系统镜像\02、出厂系统镜像\03、linux-mp1-5.4.31-gca8f6cddb-v1.7 。

1、将uImage文件发送到虚拟机“zgq/linux/nfs”目录下

2、输入“ls回车”,列出“nfs”目录下的文件和文件夹

3、输入“nfs C2000000 192.168.2.180:/home/zgq/linux/nfs/uImage回车”从服务器下载uImage,保存到内存首地址为“C2000000”

十六、在ubuntu上搭建TFTP服务器

tftp命令功能:用来从ubuntu下载内核镜像uImage和设备树。

1、安装 tfp-hpa 和 tfpd-hpa,输入“sudo apt-get install tftp-hpa tftpd-hpa回车

2、输入“mkdir tftpboot回车”,创建“tftpboot”目录

3、输入“chmod 777 /home/zgq/linux/tftpboot回车”,给tftpboot赋可执行权限,非常重要

配置“tftp”创建“/etc/xinetd.d”目录

输入“cd /etc/回车

输入“sudo mkdir xinetd.d回车

输入“ls回车

4、输入“sudo vi tftp回车”,新建一个tftp文件

server tftp

{

        socket_type = dgram

        protocol = udp

        wait = yes

        user = root

        server = /usr/sbin/in.tftpd

        server_args = -s /home/zgq/linux/tftpboot/

        disable = no

        per_source = 11

        cps = 100 2

        flags = IPv4

}

5、按“ESC”,再输入“:wq回车”,保存文件。

6、输入“sudo service tftpd-hpa start回车”,启动tftp服务器

7、输入“sudo vi /etc/default/tftpd-hpa回车

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/zgq/linux/tftpboot"

TFTP_ADDRESS=":69"

TFTP_OPTIONS="-1 -c -s"

8、按“ESC”,再输入“:wq回车”,保存文件。

9、输入“sudo service tftpd-hpa restart回车”,重启“tftp服务器”

至此,“tftp服务器”搭建好了。

十七、使用tftp从ubuntu下载文件

1、将“uImage”拷贝到“tftpboot”目录下

输入“cd nfs/回车

输入“cp uImage /home/zgq/linux/tftpboot/回车

2、输入“chmod 777 uImage回车”,给uImage赋可执行权限

3、在串口输入“tftp C2000000 uImage回车”,将uImage下载到内存地址为C2000000地址处,实现从ubuntu下载文件,见下图:

十八、EMMC和SD卡操作命令

1、输入“mmc info回车”,查询SD卡的信息

2、查询EMMC信息

输入“mmc rescan回车”,扫描mmc

输入“mmc list回车”,列出mmc设备
输入“mmc dev 1回车”,切换到EMMC设备

输入“mmc info回车”查看EMMC信息

3、查看EMMC分区

输入“mmc dev 1回车”,切换到EMMC设备

输入“mmc part回车”,查看EMMC分区

4、读EMMC

输入“mmc dev 1回车”,切换到EMMC

输入“mmc read c0000000 400 10回车

从EMMC的第1024(0x400)个块开始,读取16(0x10)个块的数据到DRAM的0XC0000000地址处。

十九、EXT格式文件系统操作命令

1、查询EXT4格式设备的目录和文件信息

输入“mmc dev 1回车”,切换到EMMC设备

输入“mmc info回车”查询EMMC信息

2、输入“mmc part回车”查看EMMC分区

输入“ext4ls mmc 1:2”查看“boot分区”有哪些文件和目录

3、将EMMC中的uImage文件读到DRAM中

输入“ext4load mmc 1:2 C2000000 uImage回车”,将EMMC分区2中的uImage读到内存C2000000地址处。

4、将ubuntu中的uImage文件烧写到EMMC中,生成文件为“test_uImage”

输入“mmc dev 1回车”,切换到EMMC设备

输入“tftp C0000000 uImage回车”,使用tftp将uImage下载到内存C0000000的地址处。

输入“ext4write mmc 1:2 C0000000 /test_uImage 7ef8a0回车

输入“ext4ls mmc 1:2回车”查看“boot分区”有哪些文件和目录

见下图:

二十、使用网络下载uImage和设备树stm32mp157d-atk.dtb到内存再启动linux

1、使用FileZilla将uImage和设备树stm32mp157d-atk.dtb上传到tftpboot目录下,见下图:

2、给uImage和stm32mp157d-atk.dtb赋可执行权限,非常重要

输入“ls回车”,列出tftpboot目录下的文件和文件夹

输入“chmod 777 uImage回车

输入“ls回车”,列出tftpboot目录下的文件和文件夹发现uImage变成了可执行文件;

输入“chmod 777 stm32mp157d-atk.dtb回车

输入“ls回车”,列出tftpboot目录下的文件和文件夹,发现stm32mp157d-atk.dtb变成了可执行文件;

3、输入“tftp C2000000 uImage回车”,将uImage下载到DRAM中的C2000000地址处;

输入“tftp C4000000 stm32mp157d-atk.dtb回车”,将设备树下载到DRAM中的C4000000地址处;

4、输入“bootm c2000000 - c4000000回车”启动linux内核

二十一、从EMMC直接启动linux

输入“mmc dev 1回车”,切换到EMMC

输入“ext4ls mmc 1:2回车”查看“boot分区”是有uImage和stm32mp157d-atk-dtb

输入“ext4load mmc 1:2 c2000000 uImage回车”,将EMMC中的uImage文件加载到内存地址C2000000处

输入“ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb回车”,将EMMC中的stm32mp157d-atk.dtb文件加载到内存地址C4000000处

输入“bootm c2000000 - c4000000回车”启动linux内核

二十二、通过设置环境变量bootcmd的值,从EMMC启动linux系统

开发板上电,运行TF-A,然后是uboot,然后是bootcmd

出现“STM32MP>”时输入setenv bootcmd 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000',设置从EMMC启动linux系统

出现“STM32MP>”时输入: saveenv,保存bootcmd的值

出现“STM32MP>”时输入: boot回车,启动 Linux 系统

二十三、通过设置环境变量bootcmd的值,从网络启动linux系统

出现“STM32MP>”时输入setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 -c4000000',设置从网络启动linux系统

出现“STM32MP>”时输入: saveenv,保存bootcmd的值

出现“STM32MP>”时输入: boot,启动 Linux 系统

二十四、run命令

1、输入“setenv mybootemmc 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'回车

输入“saveenv回车”,保存创建的mybootemmc环境变量;

输入“run mybootemmc回车”,设置从EMMC启动linux。

输入“boot回车,启动 Linux 系统;

2、输入“setenv mybootnet 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'回车

输入“saveenv回车,保存创建的mybootnet环境变量;

输入“run mybootnet回车”,从网络启动linux。

输入“boot回车”,启动 Linux 系统;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值