0%

参考链接

1
2
3
4
5
6
7
#清除本地缓存(改变成未track状态)
#git rm -r --cached . 表示清除项目中所有文件的本地缓存
git rm -r --cached xxx #xxx表示不想版本控制的文件,比如小编可以输入test.o
#.gitignore中的忽略规则应该与之相对应
git add . #添加除了忽略文件外的所有文件
git commit -m "此处可以描述你提交的信息"
git push -f #强制推送

读取校准信息

1
python components\esptool_py\esptool\espefuse.py --port COM3 adc_info

写入二点校准值

1
2
python components\esptool_py\esptool\espefuse.py burn_block_data --offset 12 BLOCK3 C:\Users\27207\Desktop\temp\efuse_blk3.bin --port COM3
python components\esptool_py\esptool\espefuse.py burn_efuse BLK3_PART_RESERVE 1 --port COM3
1

petalinux编译更新sd卡命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
使能环境:
source /opt/pkg/petalinux2020/settings.sh

创建项目:
petalinux-create --type project --template zynq --name amp

生成、更新硬件描述:
petalinux-config --get-hw-description hardware

配置:
petalinux-config
petalinux-config -c u-boot
petalinux-config -c kernel
petalinux-config -c rootfs

编译:
petalinux-build

修改内核后编译kernel:
petalinux-build -c kernel -x compile -f
petalinux-build -x package

新建app:
petalinux-create -t apps --template install -n cpu1 --enable

BOOT生成:
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force

更新sd:
./copy_sd.sh

清理:
petalinux-build -x distclean


使用echo_test

源于https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug1186-zynq-openamp-gsg.pdf page9

1
2
3
4
echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
modprobe rpmsg_user_dev_driver
echo_test

petalinux命令

1
2
3
4
5
6
7
8
9
10
11
source /opt/pkg/petalinux2020/settings.sh
petalinux-create --type project --template zynq --name amp
petalinux-config --get-hw-description hardware
petalinux-config
petalinux-config -c u-boot
petalinux-config -c kernel
petalinux-config -c rootfs
petalinux-build
petalinux-create -t apps --template install -n cpu1 --enable
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --u-boot --force

copy_all.sh

1
2
3
cp images/linux/image.ub $1
cp images/linux/BOOT.BIN $1
cp images/linux/boot.scr $1

手动修改 petalinux 配置,这些配置文件,在其他工程中可以直接复制过去使用

1
2
3
4
5
在<plnx-proj-root>/project-spec/meta-user 目录保存着各种能手工配置的文件
recipes-bsp/u-boot/files/platform-top.h 修改 u-boot 配置
recipes-bsp/device-tree/files/system-user.dtsi、ecipes-bsp/device-tree/files/pl-custom.dtsi 可以修改添加设备树
recipes-kernel/linux/linux-xlnx/保存了内核的配置
project-spec/meta-user/recipes-apps 保存着 app

清理 petalinux

1
2
如果 petalinux 编译出现各种问题,特别是我们修改一些配置后无法正常编译,或一直卡死,
需要使用命令 petalinux-build -x mrproper -f 来清理以前的编译结果。

使用cpu1

源于https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug1186-zynq-openamp-gsg.pdf page9

1
2
3
4
echo cpu1.elf > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
modprobe rpmsg_user_dev_driver
echo_test
1
2
3
4
cp /mnt/hgfs/share/cpu1.elf project-spec/meta-user/recipes-apps/cpu1/files/cpu1.elf

cp images/linux/BOOT.BIN /mnt/hgfs/share/
cp images/linux/image.ub /mnt/hgfs/share/
1
2
3
4
5
6
7
8
9
SRC_URI = "file://cpu1.elf"
S = "${WORKDIR}"
INSANE_SKIP_${PN} = "arch"

do_install() {
install -d ${D}/lib/firmware
install -m 0644 ${S}/cpu1.elf ${D}/lib/firmware/cpu1.elf
}
FILES_${PN} = "/lib/firmware/cpu1.elf"

bootargs

1
2
console=ttyPS0,115200 earlycon root=/dev/ram0 rw maxcpus=1
console=ttyPS0,115200 earlycon root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw maxcpus=1

添加PS串口0后终端启动错误问题

问题描述:Warning: unable to open an initial console
https://forums.xilinx.com/t5/Embedded-Linux/quot-Warning-unable-to-open-an-initial-console-quot-Under/m-p/1117002

将/home/guanglun/workspace/zynq/petalinux_labbox/components/yocto/workspace/sources/linux-xlnx/drivers/tty/serial/xilinx_uartps.c文件的1605行更改如下:

1
2
3
4
if (!console_port){
console_port = port;
cdns_uart_uart_driver.cons->index = port->line;
}

编译PX4及交叉编译程序

1
2
3
gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf
https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/
https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz

使用echo_test

源于https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug1186-zynq-openamp-gsg.pdf page9

1
2
3
4
echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
modprobe rpmsg_user_dev_driver
echo_test

petalinux命令

1
2
3
4
5
6
7
8
9
10
11
source /opt/pkg/petalinux/settings.sh
petalinux-create --type project --template zynq --name amp
petalinux-config --get-hw-description ../linux_base.sdk
petalinux-config
petalinux-config -c kernel
petalinux-config -c rootfs
petalinux-build
petalinux-create -t apps --template install -n <app_name> --enable
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force
cp images/linux/image.ub /mnt/hgfs/share/
cp images/linux/BOOT.BIN /mnt/hgfs/share/

使用cpu1

源于https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug1186-zynq-openamp-gsg.pdf page9

1
2
3
4
echo cpu1.elf > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
modprobe rpmsg_user_dev_driver
echo_test
1
2
3
4
cp /mnt/hgfs/share/cpu1.elf project-spec/meta-user/recipes-apps/cpu1/files/cpu1.elf

cp images/linux/BOOT.BIN /mnt/hgfs/share/
cp images/linux/image.ub /mnt/hgfs/share/

cpu1外设无法运行解决

在内核配置中将Power management options项全部取消
备注1 重要,这个操作应该会增加一部分功耗,但是如果不禁掉power管理的话,cpu1的裸核无法进行cpu0没初始化外设的使用。

修改config.txt文件,再最后增加该行:

1
enable_uart=1

使用波特率115200

问归结到底,是以太网MAC外设的coalesce(合并)问题,下面引用一下IMX6ULL芯片手册对这功能的描述:

1
2
The purpose of the interrupt coalescing is to reduce the number of interrupts generated by the MAC so as to reduce the CPU loading.
中断合并的目的是减少MAC产生的中断次数,从而降低CPU负载。

修改后接收延迟将降低200多us
内核源码中直接搜索coalesce关键词可以找到此类设置

IMX6ULL 关闭coalesce方法(使用freescale fec的IC皆可使用此方式)

将drivers/net/ethernet/freescale/fec_main.c文件的

1
2
rx_itr |= FEC_ITR_EN;
tx_itr |= FEC_ITR_EN;

修改为

1
2
rx_itr &= ~FEC_ITR_EN;
tx_itr &= ~FEC_ITR_EN;

disable使能位。

s5p4418 关闭coalesce方法(使用stmmac的IC皆可使用此方式)

将drivers/net/ethernet/stmicro/stmmac/stmmac_main.c文件的

1
2
3
4
if ((priv->synopsys_id >= DWMAC_CORE_3_50) && (!priv->plat->riwt_off)) {
priv->use_riwt = 1;
pr_info(" Enable RX Mitigation via HW Watchdog Timer\n");
}

下添加

1
priv->use_riwt = 0;

失能Rx Watchdog即可。