本人在按照zedboard_CTT_v14.1_120821中的教程进行操作时遇到个小问题,然后今天糊里糊涂又给整没了。问题不大,理理思路整理一下,重在逐渐培养解决问题的思维一、问题描述:在SDK中build BSP时报错如下:make[1]: *** [libs] 错误 2"Compiling standalone"process_begin: CreateProcess(NULL, arm-xilinx-eabi-gcc -O2 -c -g -march=armv7-a -mfloat-abi=soft -mfpu=neon-I./. -I../../../include _exit.c _open.c _sbrk.c abort.c close.c errno.c fcntl.c fstat.c getpid.c inbyte.cisatty.c kill.c lseek.c open.c outbyte.c print.c putnum.c read.c sbrk.c sleep.c smc.c uart.c unlink.c usleep.cvectors.c write.c xil_assert.c xil_cache.c xil_exception.c xil_io.c xil_mmu.c xil_printf.c xil_testcache.cxil_testio.c xil_testmem.c xl2cc_counter.c xpm_counter.c xtime_l.c asm_vectors.S boot.S cpu_init.Stranslation_table.s xil-crt0.S, ...) failed.make (e=2): 系统找不到指定的文件。"Compiling devcfg"make[1]: *** [standalone_libs] 错误 2make[1]: 由于错误目标“libs”并未重新创建。process_begin: CreateProcess(NULL, arm-xilinx-eabi-gcc -O2 -c -g -I./. -I../../../include *.c, ...) failed.make (e=2): 系统找不到指定的文件。make[1]: *** [libs] 错误 2process_begin: CreateProcess(NULL, arm-xilinx-eabi-gcc -O2 -c -g -I./. -I../../../include *.c, ...) failed."Compiling dmaps""Compiling emacps"make (e=2): 系统找不到指定的文件。 make[1]: *** [libs] 错误 2process_begin: CreateProcess(NULL, arm-xilinx-eabi-gcc -O2 -c -g -I./. -I../../../include *.c, ...) failed.make (e=2): 系统找不到指定的文件。 make[1]: *** [libs] 错误 2"Compiling gpiops"process_begin: CreateProcess(NULL, arm-xilinx-eabi-gcc -O2 -c -g -I./. -I../../../include *.c, ...) failed.make (e=2): 系统找不到指定的文件。 make[1]: *** [libs] 错误 2"Compiling qspips"process_begin: CreateProcess(NULL, arm-xilinx-eabi-gcc -O2 -c -g -I./. -I../../../include *.c, ...) failed.make (e=2): 系统找不到指定的文件。 二、分析可能原因:1、交叉工具链存在问题arm-xilinx-eabi-gcc不是当前默认编译器 2、软件本身问题,SDK14.1对ZYNQ支持不够../../../include _exit.c _open.c _sbrk.c abort.c close.c errno.c fcntl.c fstat.c getpid.c inbyte.cisatty.c kill.c lseek.c按照此编译配置选项所指路径,确实没在ISE套件的安装目录下找到这些文件,再加上下面的错误"Compiling dmaps""Compiling emacps""Compiling gpiops""Compiling qspips"显示这些编译时出错了,而damps/gpios这些都是coretex_a9中的IP模块 三、解决过程:1、首先检查SDK中相关设置,确定当前使用的交叉工具链为 ARM xilinx gcc 而ISE相关目录下arm-xilinx-eabi-gcc确实也安装成功了,由此排除交叉工具链的问题。 2、猜测可能是SDK-14.1不行,怎么办?要不拷贝所需文件到指定目录,要不重新安装14.2,重新安装太麻烦不到万不得已还是不想动手,但又不确定是不是真的缺少相关文件导致的。 3、或许是其它原因?没什么思路,暂时放下,冷处理一下心情好了再说 4、事隔一天,本想发个帖请教一下,发贴得把问题描述清楚啊,就再试一下把具体问题整理一下好了,于是重新试过,很是让我郁闷,问题不见了。。。。。。。 四、问题根源:export hardware to sdk时可能出了什么问题,今天重新导入试了几次都可以编译通过2013/2/26补充:经再次验证问题根源是:对工程进行了修改,而在export前没有再次对整个project进行综合和编译 APPENDIX:既然写了,就顺便整理一下利用ISE套件进行嵌入式开发的思路,以加强宏观上的把握也加强自己的理解 1、新建工程creat a new embeded project with planahead,因为我装的ISE套件版本为14.1,XPS-14.1中的BSB(base system builder)不支持PS,所以只能用planahead新建工程 2、硬件设计利用project manager中的Add sources添加PS到新创建的工程中(add sources 即添加源文件,此概念源于软件开发,根据硬件设计软件化的思想将此概念引用到硬件开发中)Add source时选择默认打开XPS,并在XPS中对PS的MIO进行配置(本例程中只) 3、建立软硬件之间沟通的桥梁export hardware to sdk ,系统自动生成systemname_hw_platform (except the systemname.xml the Hardware Platform Specification generated at planahead,the systemname_hw_platform also contain ps7_init.c, ps7_init.h, ps7_init.tcl, and ps7_init.html )由此硬件开发与软件开发之间有了沟通的桥梁。 4、软件设计在sdk中新建一个xilinx C project,同时生成BSP ( contain a library of routines that your application can use),之后进行应用开发 附加信息:官方文档中对system_hw_platform中各文件功能的解释如下:The system.xml file opens by default when SDK launches. The address map of your system read from this file is shown by default in the SDK window.The .tcl file is used by XMD for configuring the PS when using JTAG.The ps7_init.c and ps7_init.h files contain the initialization code for the Zynq Processing System and initialization settings for DDR, clocks, plls, and MIOs. SDK uses these settings when initializing the processing system so that applications can be run on top of the processing system. There are some settings in the processing system that are fixed for the ZedBoard. 官方文档中对BSP的解释如下:The BSP is the support code for a given hardware platform or board that helps in basic initialization at power up and helps software applications to be run on top of it. It can be specific to some operating systems with bootloader and device drivers. 来源:wicoboy的博客