版主: 51FPGA

分享到:
共1条 1/1 1   

Kevin学ZED之(八):土著的神器

    [您是本帖的第792位阅读者]
xilinx论坛
我是MM
高级会员

最后登陆时间:2015-03-19 10:58:07

直达楼层
1# 发表于 2015-06-16 21:16:35

 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   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]