IT业行者,行者无疆
分类: LINUX
2011-05-04 09:40:44
问:
小弟刚开始接触ARM,从网上下载的讲解ARM开发流程的资料都是基于GCC交叉编译环境的:选ARM芯片-->写BOOTLOADER等等!但是公司用的是ADS综合开发环境。小弟想问一下,GCC和ADS有什么异同?从网友的资料来看,GCC交叉编译环境的建立还挺复杂的,既然这么复杂,为什么还要用它?为什么不用ADS?哪位老大给解释一下?
版主:
这么说吧,你只用裸机的程序,不用操作系统的话那直接用ADS就行了,不需要交叉编译环境。
但是如果要跑操作系统,那么怎么编译操作系统就需要用交叉编译环境。
一般来说ADS又不知道怎么编译你的操作系统(经过修改也是可以的),这就需要用交叉编译器来编译。
简单来说交叉编译器就是在PC模拟一个ARM处理器的环境(借鸡下蛋),将编译后的二进制文件down进取运行。BootLoader就是一个引导程序,相当于PC机的Bios,也就是你的arm处理器的Bios,对硬件进行一些初始化,然后进入操作系统运行。
谢谢斑竹,再问两个问题:
1、如果不跑操作系统,ADS调试ARM是不是和Keil调试C51差不多?
2、如果要跑操作系统,将GCC编译好的操作系统影像文件和BootLoader烧录到FLASH之后,整个ARM系统还是不是可以继续在ADS下调试?如果可以的话,是不是意味着GCC在整个过程中只起到编译操作系统的作用,生成操作系统影像文件后,GCC就可以功成身退了?
版主:
第一个问题可以,就是和跑裸机的单片机一样。
第二个问题,一般来说,编译过的影像文件不可以在ADS下调试(ADS怎么知道操作系统有哪些文件,怎么链接)。但是网上也有一些作了一些其他的工作可以调试一下(ADS调试uclinux内核等),但我觉得还是不好用。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
一般LINUX、UCLINUX 的移植于开发都用GCC。
而不带OS或者移植简单的ucos,多用ADS进行开发。在Windows PC上,多用于ADS.
LINUX的操作系统或者通过虚拟机的LINUX,多用GCC.
ads直接编译生成的.bin文件可以在没有os的板子上跑啊,干嘛还要什么gcc编译? 你只要设置ads的配置参数就行了呀。
如果是在linux下,就要下载一个交叉编译工具,解压后把工具的路径设置成环境变量,然后arm-linux-gcc 编译,就可以生成你要的在板子上跑的代码了。