版主: 51FPGA |
xilinx论坛
最后登陆时间:2015-03-19 10:58:07 |
Native compile 相对于 Cross compile 来讲,分别翻译为本地编译 和 交叉编译。其实Native的翻译,我更愿意翻译成土著。
对很多人来讲, 本地编译就是在PC机上编译PC机上运行的软件。交叉编译嘛, 就是在PC机上编译ARM上运行的软件。 对Kevin来讲,这也是一个思维定式了。 嵌入式系统,肯定要先讲交叉编译。
ZED板的出现,使得直接在ZED上编译成为可能。反正跑的是全版本的Ubuntu,上面加载全套的gcc没有任何问题。这个gcc与pc上的gcc相比,其实是arm的二进制版本而不是x86版本。 由于地盘站在ARM系统上, 自己的那个arm-xilinx-.....gcc,就可以脱掉交叉的帽子,变本地了。 就像俺住在上海,本来说普通话,在一堆上海人中间,上海话居然就相当与普通话了。
linaro的那个包里,已经预装了gcc工具链, 因此,连gcc的安装都省了,直接用。
这样,在ZED板上编译一个C语言的hellow world 就简单到一步。
只需要打开gedit 编辑helloworld.c, 敲入
#include<stdio.h> main() { printf("hello world\n"); }
然后运行 gcc helloworld.c
就可以看到a.out生成了。./a.out 就可以看到打印出来的hello world 信息。
紧接着,就可以直接使用gdb进行单步调试了。
以前对于嵌入式系统的调试,能够启动gdb server, 能够用jtag,或串口进行调试和单步跟踪,是一件不大不小的技术活,现在,有了ZED这个提供无数Native的土著软件的平台,一切都变得甚至比PC机还方便。比如要gdb,根本不需要交叉啊,server啊之类的东西。
重新编译,加上 -g 参数,使得a.out带上调试信息。 gcc -g helloworld.c 然后运行 gdb ./a.out 在gdb里面敲 start 就可以看到程序运行并停留在第一句。 然后敲 n 就可以单步跟踪了。
此可谓,我的地盘我作主, 有了ZED板,上面的Ubuntu使得土著Native工具链就可以大显神威。编写嵌入式代码和调试嵌入式代码基本上和PC上无甚区别。 为什么说这个土著工具是神器呢?这意味着,这个东东可以自己给自己打源代码补丁。 也就是说,夜深人静的时候,ZED板可以下载你新写的软件版本的源代码,然后自己编译,然后,自己升级。
说得更科幻一点,如果用ZED板做机器人的话, 有了这写土著神器,机器人就具有了自己进化自己大脑的能力。 当然ZED板的硬件可编程部分PL还可以让机器人进化自己的小脑甚至躯干。 然后再加上3D打印机自己复制自己身体的话.......不敢想,不敢想。
有图有真相: |
共1条 1/1 1 |