首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Kevin学ZED之8:土著的神器

Kevin学ZED之8:土著的神器

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
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打印机自己复制自己身体的话.......不敢想,不敢想。
有图有真相:

记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表