㈠ arm编程与C语言的编程区别和方法
ARM公司卖的arm
cpu内核给许多公司,那些公司生产出众多的ARM处理器。ARM编程实际上指的是应用ARM公司自己出产的IDE(集成开发环境)所开发进行的编程,比如现在业界常用的ADS1.2,MDK3.5等等IDE。主要进行ARM汇编和与c混合编程。
ARM公司自己规定了一套ARM指令集,也规定了一套汇编指令集。当然,我们觉得汇编编程生产效率低下,不易编写大规模程序,那么我们就可以用高级语言,比如c语言,面向对象的语言在操作系统上运行。
㈡ ARM编程只用C语言不要汇编可以吗
ARM编程必须用C语言的,用汇编实在是太难写了,在网上可以找到支持ARM的操作系统代码的,完成是C语言写,这不可能用汇编来写操作系统的。
㈢ 如何利用Eclipse C/C++搭建嵌入式ARM开发环境
由于觉得在linux下不方便编写代码,所以准备在windows上搭建开发环境,其实在Linux上也搭建好了,但是使用起来不是很人性化,尤其是文件比较多的时候就很麻烦。下面就选择在windows上用Eclipse做开发。【后来发现还是需要在Linux下编程,因为Windows下没法包含Linux下的一些头文件,所以下面也介绍Linux环境下的Eclipse搭建】。
Windows下的Eclipse环境搭建:
1. 下载并安装Eclipse C/C++
2. 下载交叉编译器,之前在Linux都用的arm-linux-gcc,后来使用TI的ti-sdk-am335x-evm-08开发包,里面安装的编译器是arm-none-linux-gnueabi-gcc,都是能用的,所以我也选择了arm-none-linux-gnueabi-gcc作为交叉编译器,下载windows平台的编译器,然后安装。
下载地址:http://www.veryarm.com/arm-none-linux-gnueabi-gcc
3. 开启Eclipse的ssh远程登录功能,我分别开启了Beaglebone Black和Linux的ssh terminal,操作起来很是方便。
4. 新建C项目工程“hello”,编写简单的hello代码,注意选择交叉编译选项,交叉编译器前缀“arm-none-linux-gnueabi-”交叉编译器路径选择arm-none-linux-gnueabi-gcc安装的路径“…Linuxin”,在此文件夹下有arm-none-linux-gnueabi-gcc.exe、arm-none-linux-gnueabi-gdb.exe等,还有cs-make.exe,这里需要把“cs-make.exe”改成“make.exe”,因为Eclipse不认cs-make.exe编译的时候会报错的。
图文安装参考:http://www.linuxidc.com/Linux/2016-03/129577.htm
5. 调试(构建Ctrl+B)的时候会自动生成makefile,生成编译结果,放到ARM嵌入式平台运行就可以了,成功执行并输出“hello”。
Linux下的Eclipse环境搭建:
官网下载http://www.eclipse.org/downloads/
发下是收费的
sudo apt-get install eclipse直接就安装了
然后sudo eclipse –s启动后发现“窗口->打开视图”里面没有ssh远程登录的选项,网络一下发现它是Eclipse的插件,查询下这个软件:sudo apt-cache search Remote System Explorer,发现一个eclipse-rse,就是它了,然后直接安装:sudo apt-get install eclipse-rse
重启eclipse
新建工程时发现没有C/C++工程,只有Java工程,再次搜索sudo apt-cache search eclipse C/C++
发现其中一条:
eclipse-cdt - C/C++ Development Tools for Eclipse
继续安装:
sudo apt-get install eclipse-cdt
再次重启eclipse,就有了C/C++项目,高兴ing。
新建C工程,添加编译器:
arm-none-linux-gnueabi-
/opt/toolschain/4.4.3/bin
编写hello程序,编译OK,在BBB上执行,成功!
㈣ arm编程与C语言的编程区别和方法
汇编主要是要了解CPU指令及用法,常说的是PC机的x86汇编,指令是x86的复杂指令集。
arm汇编是arm的精简指令集,比x86容易学,程序格式倒是和x86汇编差不多。
C语言ARM的和x86的差不多,除了对硬件寄存器操作不同,其它语法和流程都一样。
arm汇编程序每一行是指定arm core执行一条指令,每条指令都是硬件相关。
如:LDR R3, #1 ;用LDR指令将数值1放入R3寄存器准备参与运算
C语言与arm指令无关,只与逻辑运算有关,指定硬件地址的操作才与硬件相关;
如果用arm编译器来编译,每行可能编译出1到多条arm指令。
如:i++; //变量 i 递增1等效于LDR R3,#1 ;
用LDR指令将数值1放入R3寄存器准备参与运算ADD R2, R2, R3 ;
用ADD指令将R2、R3寄存器里的数值相加后放回R2寄存器以上等效汇编的R2、R3寄存器只是为了举例,C语言不像汇编,不需要由程序员指定用哪个寄存器参与运算,编译器编译时会根据程序结构自动判断选择。
无论是c语言还是汇编语言,编译器编译后的结果是机器执行码,很多人因为汇编语言比较难懂及指令相关,所以以为它就是机器语言,其实它仍是人类设计的编写程序的语言,仍需要编译器编译成机器码才能执行,它只是比C语言更接近硬件而已。