引言:接上篇,我们已经成功构建了petalinux与Xilinx SDK的通讯,那么我们现在就要在Xilinx SDK开发elf,并在petalinux上执行。
为什么要这么做?如果你是高级工程师,熟悉linux各种操作,你直接在petalinux上开发一点问题没有,但对于新手来讲,能编程成功的才是王道。
1、给Xilinx sdk设置路径
对于cortex A53的用户,是不需要这一步的,但如果是cortex A9的用户,新建的linux程序Xilinx sdk是不会把包导入的!
假设我Xilinx的安装路径为:D:\Xilinx
那么需要将下述这几行加入到路径中
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\include\c++\8.2.0
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\include\c++\8.2.0\arm-linux-gnueabihf
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\include\c++\8.2.0\backward
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\lib\gcc\arm-linux-gnueabihf\8.2.0\include
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\lib\gcc\arm-linux-gnueabihf\8.2.0\include-fixed
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\include
D:\Xilinx\SDK\2019.1\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\libc\usr\include
添加完后如图所示,点击ok即可。
2、右键项目,编译后生成elf文件,将elf文件上传至petalinux
3、debug程序,假设我们的程序为 app_arm0.elf
# debug 模式下启动elf
gdb app_arm0.elf
4、在 memory_write_u32
(你的任意函数名称即可)函数入口设置断点:
(gdb) break memory_write_u32
5、运行到断点并检查参数:
(gdb) run
(gdb) info args
6、单步执行命令:
(gdb) step