简介:
今天翻到之前学习的记录,整理了一下,但还是有点乱,发出来记录一下。主要的是ftp,nfs在linux上的部署方法,五、六、七是针对于nxp平台arm32位的一个soc实践记录,其中记录了kernel zImage 在emmc相关内容,有用也没用。一、repo相关,是一个链接介绍了repo,git管理代码的方式,前几天更新了一个nxp上repo上传代码的步骤,可以参考:
https://blog.csdn.net/m0_57123509/article/details/121808895
一:repo相关
https://blog.csdn.net/wh_19910525/article/details/37334889?locationNum=3&fps=1
二:windows 和 linux 文件ftp互传
-
linux 下安装ftp服务
sudo apt-get install vsftpd
sudo vi /etc/init.d/vsftpd.conf
修改为 local_enable = YES
write_enable = YES安装:sshd服务
sudo apt-get install openssh-server
service sshd status
2.window下安装filezilla.exe
新建站点:ipcom
三:安装nfs
sudo apt-get nfs-kernel-server portmap
mkdir -d linux/nfs
sudo vi /etc/exports
添加/home/zhaoyy/linux/nfs *(rw,sync,no_root_squash)
/etc/init.d/nfs-kernel-server restart
四:安装ssh,使用默认配置/etc/ssh/sshd-config/
安装:sshd服务
sudo apt-get install openssh-server
service sshd status
五:TFTP
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
mkdir /home/zyy/tftpdboot
chmod 777 /home/zyy/tftpdboot
##vi /etc/xinetd.d/tftp
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/zyy/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
sudo service tftpd-hpa start
vi /etc/default/tftpd-hpa
#/etc/default/tftpd-hpa
TFTP_USERNAME=“tftp”
TFTP_DIRECTORY="/home/zyy/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
sudo service tftpd-hpa restart
chmod 777 zImage
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
tftpboot 80800000 zImage
六:交叉编译工具
交叉编译链是运行在x86平台上的arm平台编译器。
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/
七:内存操作命令
1)显示内存值
md [b、w、l ] addr length
md.b b 8000000 14(16进制)
2)修改指定地址的内存值
nm [bwl] addr
- mm 修改指定内存地址值
与 nm命令一样,但是修改的内存地址会递增,nm不会
4) nw 填充指定内存地址的数据
nw [bwl] addr value count
-
cp 拷贝一段内存数据到另一段内存中
cp [bwl] source target count -
cmp 比较两端内存数据是否相等
cmp [bwl] addr1 addr2 count
网络操作命令 目的使用网络功能做调试,uboot支持dhcp tftp ping nfs
与网络相关的环境变量:
ipaddr 开发板ip,可以不设置,通过dhcp从路由器上获取
ethaddr 开发板的mac,一定要设置
gatewayip 网关地址
netmask 子网掩码
serverip 服务器ip地址
1.nfs
nfs [loadAddress] [[hostIPaddr:]bootfilename]
nfs 80800000 192.168.1.106:/home/zyy/nfs/zImage
2.tftp
tftp 80800000 zImage 不需要ip
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 – 83000000 不需要
命令运行结果如图 30.4.9.2 所示
- emmc 、sd 操作命令
mmc info 当前mmc 信息
mmc rescan 扫描硬件当前的所有mmc设备,包括emmc和sd卡
mmc list 查看当前板子上一共有几个mmc设备
mmc dev 切换mmc设备
mmc part 查看mmc设备的分区,如果mmc有系统的话,第一个分区为uboot,第二个为kernel,dtb,第三个分区为linux根文件系统。
对于sd而言,默认是一个分区 ,前面uboot就是烧写到这个分区里面,后面会讲解如何将创建第二个分区,并将kernel和根文件系统放到第二个分区中。
mmc read 读取mmc设备的数据 mmc read addr blk# cnt
mmc write 将数据写到mmc设备里
通过tftp 在uboot中,用mmc write更新sd里的uboot.img- 将编译好的uboot拷贝到tftpboot目录,tftp 80800000 u-boot.img
2. mmc dev 0 0
mmc write 80800000 2 33E 2表示从sd卡第一个分区,第二个分区块,33E表示
uboot.img的大小 33E x 512 =
3. reboot
通过tftp 在uboot中,用mmc write更新emmc里的uboot.img
mmc dev 1 0
tftp 80800000 u-boot.img 到dram中
mmc write 80800000 2 33E
mmc part 1 1 0 0 分区配置,emmc需要这一步
注意,千万不要写到sd卡或者emmc的前两个块() 扇区) ,里面保存着分区表。
- 将编译好的uboot拷贝到tftpboot目录,tftp 80800000 u-boot.img
mmc erase ,擦除指定块
mmc erase blk#cnt
-
fat 格式文件操作命令
fatinfo 查看指定存储设备分区的文件系统信息
fatinfo [<dev[:part]>]
fatinfo emmc 1:1
fatls 查看fat格式设备的目录和文件,
fatls [<dev[:part]>] [dir]
fatls emmc 1:1
fsttype 查看mmc设备某个分区的文件系统格式
fstype :
fstype mmc 1:0
fatload 将指定文件读取到dram中
fatload [<dev[:part]> [ [ [bytes [pos]]]]]
fatload mmc 1:1 80800000 zImage
fatwrite
fatwrite <dev[:part]>
从dram指定地址读取这么大bytes的filename到mmc 1 :1中。tftp 80800000 zImage
fatwrite mmc 1:1 80800000 zImage 0x5c2720 -
ext格式文件系统操作命令
uboot有ext2和ext4 两种格式,常用命令ext2load、ext2ls、ext4load、ext4ls。
ext4ls mmc 1:2
6.nand 操作命令
7 boot操作命令
uboot的本质是引导linux,所以有些命令用来启动linux,常用命令有bootz,bootm,boot
A.bootz命令,启动linux,要将linux系统镜像拷贝到dram中,有设备树,也将设备数拷贝到DRAM中。两种copy方式,1. 可以从emmc和nand中,将linux文件拷贝到dram中,
tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb 将文件下载到dram中,
fatwrite mmc 1:1 80800000 zImage 0x5c2720 将文件从dram中写到mmc中,
fatwrite mmc 1:1 83000000 imx6ull-alientek-emmc.dtb 0x35969
fatload mmc 1:1 80800000 zImage 将文件从emmc中load 到dram中
fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 - 83000000 启动
2.也可以通过nfs和tftp将设备数和镜像文件拷贝到sdarm中。
bootz [addr [initrd[:size]] [fdt]]
tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 – 83000000
B.
bootm和booz功能类似,如果不使用设备数,
bootm addr —— zIMAGE在dram中的地址
如果使用设备树
和booz一样 bootm addr
bootm [addr [initrd[:size]] [fdt]]
C.boot 也是用来启动linux系统,但是boot回去定bootcmd来启动linux系统,
bootcmd是一个很重要的命令,()引导命令),比如从tftp启动,可以设置
setenv bootcmd ‘tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000’
saveenv
boot
从emmc启动
setenv bootcmd 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ullalientek_emmc.dtb; bootz 80800000 - 83000000'
savenev
boot
-
reset go run
setenv mybootemmc ‘fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ullalientek-emmc.dtb;bootz 80800000 - 83000000’
setenv mybootnand ‘nand read 80800000 4000000 800000;nand read 83000000 6000000 100000;bootz 80800000 - 83000000’
setenv mybootnet ‘tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000’
saveenv
run mybootemmc
run mytoobnand
run mybootnet
mtest 内存测试命令
测试ddr
mtest [start [end [pattern [iterations]]]]
mtest 80000000 80001000
9.uboot设置ip
setenv ipaddr 192.168.1.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.250
saveenv
setenv bootargs ‘console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw’
setenv bootcmd ‘tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000’
saveenv
bootargs=console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
setenv bootargs ‘console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.106:/home/zyy/nfs/ubuntu-rootfs rw ip=192.168.1.50:192.168.1.106:192.168.1.1:255.255.255.0::eth0:off’