zynq 内核制作常用指令(自用)

1、uboot编译

匹配板子需要修改的设备树文件目录:/arch/arm/dts/zynq-zc702.dts

source /opt/Xilinx/SDK/2019.1/settings64.sh
export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make zynq_zc702_defconfig
make -j16

在  zynq_zc702_defconfig 文件中会涉及到zynq-common.h    和  zynq-zc702.dts的引用。

zynq-common.h 路径:\include\configs\zynq-common.h

zynq-zc702.dts  路径:\arch\arm\dts

2、内核编译

内核编译,匹配板子时可能需要修改到的文件    /arch/arm/boot/dts

source /opt/Xilinx/SDK/2019.1/settings64.sh
export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make xilinx_zynq_defconfig
make uImage LOADADDR=0x8000 -j16

按照上述指令完成内核编译,生成的uImage所在文件夹:

/arch/arm/boot/

3、设备树文件编译

使用下述命令完成设备树文件编译,注意:1、设备树引用头需要修改为:/include/     2、需要完成内核编译后才可以响应下述指令。

./scripts/dtc/dtc -I dts -O dtb -o ./arch/arm/boot/zynq-zc702.dtb ./arch/arm/boot/dts/system-top.dts 

除了使用这个脚本文件编译设备树,也可以使用

make dtbs

用这个命令就不需要修改  /include/  

设备树xx.dtb反编译为xx.dts

dtc -I dtb -O dts xx.dtb -o xx.dts

4、uboot启动

远程tftp服务器加载内核,注意顺序。

set serverip xxx.xxx.x.x
setenv bootcmd 'dhcp;tftpboot 0 zynq-zc702.dtb;tftpboot 8000 uImage;tftpboot 1000000 uramdisk.image.gz;bootm 8000 1000000 0;'
saveenv

加载本地ext4分区中的文件系统:
setenv bootargs 'console=ttyPS0,115200n8 root=/dev/mmcblk0p2 rw noinitrd rootfstype=ext4 rootwait'


远程加载文件系统:
setenv bootargs 'console=ttyPS0,115200 root=/dev/nfs rw nfsroot=190.0.5.158:/linux/nfs/robot2_0rf ip=190.0.5.251:190.0.5.158:190.0.5.1:255.255.255.0::eth0:off'


**工作分区,启动变量
setenv bootargs 'console=ttyPS0,115200n8 root=/dev/mmcblk1p2 rw noinitrd rootfstype=ext4 rootwait'
setenv emmcworkboot 'run mmc_loadbit_fat;run uenvboot; echo Copying Linux from emmc_work to RAM... && load mmc 1:1 ${kernel_load_address} ${kernel_image} && load mmc 1:1 ${devicetree_load_address} ${devicetree_image} && bootm ${kernel_load_address} - ${devicetree_load_address};'

**备份分区,启动变量
setenv bootargs 'console=ttyPS0,115200n8 root=/dev/mmcblk1p4 rw noinitrd rootfstype=ext4 rootwait'
setenv emmcbackboot 'run mmc_loadbit_fat;run uenvboot; echo Copying Linux from emmc_back to RAM... && load mmc 1:3 ${kernel_load_address} ${kernel_image} && load mmc 1:3 ${devicetree_load_address} ${devicetree_image} && bootm ${kernel_load_address} - ${devicetree_load_address};'


备用分区操作脚本
#!/bin/sh


SD_P1_PATH=/media/sd_fat
SD_P2_PATH=/media/sd_ext
EMMC_P1_PATH=/media/emmc_p1
EMMC_P2_PATH=/media/emmc_p2
EMMC_P3_PATH=/media/emmc_p3
EMMC_P4_PATH=/media/emmc_p4

if [ ! -d $EMMC_P1_PATH ]
	then
		mkdir -p $EMMC_P1_PATH
fi
if [ ! -d $EMMC_P2_PATH ]
	then
		mkdir -p $EMMC_P2_PATH
fi
if [ ! -d $EMMC_P3_PATH ]
	then
		mkdir -p $EMMC_P3_PATH
fi
if [ ! -d $EMMC_P4_PATH ]
	then
		mkdir -p $EMMC_P4_PATH
fi
if [ ! -d $SD_P1_PATH ]
	then
		mkdir -p $SD_P1_PATH
fi
if [ ! -d $SD_P2_PATH ]
	then
		mkdir -p $SD_P2_PATH
fi

mount /dev/mmcblk1p1 $EMMC_P1_PATH
ret=$?
if [ $ret -ne 0 ]; then
	echo "Start format /dev/mmcblk1"
	dd if=/dev/zero of=/dev/mmcblk1 bs=512 count=1
	sync
	echo "format finished!"
	echo "Step1:Parting the disks..."
	fdisk /dev/mmcblk1 <<EOF
n
p
1

+512M
t
c
n
p
2

+1024M
n
p
3

+1536M
t
3
c
n
p


wq
EOF
	partprobe &> /dev/null
	echo "Part finished!"
	echo "Step2:Formating disks..."
	mkdosfs /dev/mmcblk1p1
	mke2fs /dev/mmcblk1p2
	mkdosfs /dev/mmcblk1p3
	mke2fs /dev/mmcblk1p4
	echo "Format finished!"
	mount /dev/mmcblk1p1 $EMMC_P1_PATH
	mount /dev/mmcblk1p2 $EMMC_P2_PATH
	mount /dev/mmcblk1p3 $EMMC_P3_PATH
	mount /dev/mmcblk1p4 $EMMC_P4_PATH
	mount /dev/mmcblk0p1 $SD_P1_PATH
	mount /dev/mmcblk0p2 $SD_P2_PATH
	
	cp -r $SD_P1_PATH/system_wrapper.bit $EMMC_P1_PATH
	cp -r $SD_P1_PATH/system.dtb $EMMC_P1_PATH
	cp -r $SD_P1_PATH/uImage $EMMC_P1_PATH
	echo "Copy uImage bit dtb to workspace finished!"	
	cp -r $SD_P2_PATH/* $EMMC_P2_PATH
	echo "Copy rootfs to workspace finished!"
	
	
	cp -r $SD_P1_PATH/system_wrapper.bit $EMMC_P3_PATH
	cp -r $SD_P1_PATH/system.dtb $EMMC_P3_PATH
	cp -r $SD_P1_PATH/uImage $EMMC_P3_PATH
	echo "Copy uImage bit dtb to backspace finished!"	
	cp -r $SD_P2_PATH/* $EMMC_P4_PATH
	echo "Copy rootfs to backspace finished!"
	
else
	echo "Emmc has been disk!"
	mount /dev/mmcblk1p2 $EMMC_P2_PATH
fi

本地SD卡内核启动,应确保SD卡中具备devicetree.dtb   fuImage   uramdisk.image.gz   三个文件

setenv  bootcmd 'mmcinfo && fatload mmc 0 0 devicetree.dtb; fatload mmc 0 8000 uImage;fatload mmc 0 1000000 uramdisk.image.gz;bootm 8000 1000000 0;'

如果是不需要uramdisk.image.gz  则使用:bootm 8000 - 0

5、SPI FLASH擦除

sf probe 0
sf erase 0 0x1000000 

6、u-boot加载bit教程

uboot利用uEnv.txt文件实现灵活功能(加载PL侧bit,修改uenvcmd,配置bootargs,配置bootm,配置bootz)_Huskar_Liu的博客-CSDN博客_uenv.ini

7、解压缩

Linux下的tar压缩解压缩命令详解 - 码农一只 - 博客园

8、TCF-agent搭建

git clone http://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git

cd org.eclipse.tcf.agent/agent

make CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabi-ld MACHINE=arm NO_SSL=1 NO_UUID=1

编译后会在:/org.eclipse.tcf.agent/agent/obj/GNU/Linux/arm/Debug目录下,生成agent,将该文件拷贝到文件系统

./agent & 即可使用xilinx  SDK完成在线调试。

9、ubuntu无网络连接符号

service network-manager restart

【解决】Failed to restart network.service: Unit network.service not found. - LeoZhanggg - 博客园

10、vi操作

在命令模式下,输入:.,$d 然后回车

表示从当前行到末行全部删除

用gg表示移动到首行

11、MMC操作

fatls mmc 0:1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq是Xilinx公司开发的一种可编程的SoC(System-on-Chip)芯片,与Arm Cortex-A9内核和FPGA(Field-Programmable Gate Array)逻辑单元相结合,可通过软件和硬件定义实现更高的性能和更灵活的功能。Buildroot是一个开源的工具,可用于构建嵌入式系统,它使用Makefiles和patch文件来自定义软件包的构建过程,并生成根文件系统和可引导映像。WiFi是一种无线网络技术,可以通过无线信号进行数据传输和接收。 在使用Zynq内核时,可以使用Buildroot来构建嵌入式系统,并在其中包括WiFi模块。此过程需要选择适合的配置和软件包,以便实现所需的功能。为此,可以使用Buildroot提供的菜单配置工具,或手动编辑配置文件进行定制。随后,将生成的根文件系统和可引导映像烧写到目标设备上,以使其可以运行所需的软件和可用的WiFi连接。 在设置WiFi连接时,需要配置网络设置并选择适当的无线接入点。这可以通过命令行或图形用户界面完成,例如使用WPA Supplicant工具或网络管理器应用程序。在Zynq中使用WiFi时,应考虑板载天线、功耗和稳定性等因素,并选择适当的WiFi模块和天线组合。此外,还应考虑网络安全问题,例如使用加密协议和身份验证来保护数据传输。 综上所述,使用Zynq内核的Buildroot嵌入式系统可以包括WiFi连接,但在实现此过程时需要进行适当的配置和注意事项,以确保系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值