arm-linux-gcc编译出来的其实就是在linux下可以执行的程序,只不过运行这个linux的CPU需要是ARM的。所以,只要把这个文件传到已可运行linux的目标板上就行(可通过ftp等手段),然后修改这个可执行文件的权限chmod +x 文件名,就可以运行了。
另外,要转换成烧写的bin文件是用另一个编译工具arm-elf-gcc,这个编译出来的不是可执行文件,而直接是程序的二进制形式。这才需要通过烧写flash的方式替换目标板的 *** 作系统,当然肯定不能是helloc这么简单的程序。
51 不行,没有针对51的C++编译器,ARM有些的可以,要注意什么的话,就是要读懂芯片数据手册,查看好芯片的头文件,其实C++一般用来写嵌入式的应用层,GUI,图形处理,数据库处理等好些,因为它面向对像,封装特性的优势,但是效率上是没有汇编和C高的,所以底层的代码BIOS或驱动和固件这些用汇编和C代码来写,
global _C函数名
;然后在汇编里面
BL _C函数名
;注意调用的前设置好堆栈就好了
;当然如果C函数是单独一个文件的话,,还是需要编译这个文件,
;并加入链接里面,如果写在其他文件里面的makefile里面不需要额外的东西
范例汇编文件调用C文件的mycmp函数
xxxxasm
global _mycmp
BL _mycmp
yyyyyc
void mycmp(void)
{}
汇编语言,是处理器的指令集, 不同类的机器有不同的汇编语言。所以不同的平台,汇编是不可移植的。
C语言,采取的是编译的方法,不同的处理器用不同的编译器将其编译为自己的指令集,从而达到移植的效果。不同机器的C源码(主要是函数库中的函数名和其参数)差别不大,所以移植性好。因此C语言在源代码上的可移植性是通过编译器来实现的。
CPU 的指令集就是汇编要写的代码,CPU的指令集是有扩展的,不过要有相对应的软件支持。至于你说的那么多类型的处理器都可以用同样的 *** 作系统,的确如此,但是 *** 作系统本身会识别出硬件的种类,会加载不同的驱动。基本指令不是很多,也不会经常有变动。这下应该明白了吧!
C语言中嵌入汇编的方法是加入关键字“asm”来实现的,如: 例1: main() { asm mov ah,2; asm mov bh,0; asm mov dl, 20; asm mov dh,10; asm int 10h; } 例2: main() { asm{ mov ah,2; mov bh,0; mov dl, 20; mov dh,10; int 10h; } }
以上就是关于arm-linux-gcc -o hello hello.c 后生成的文件,怎么烧写到ARM9开发板中全部的内容,包括:arm-linux-gcc -o hello hello.c 后生成的文件,怎么烧写到ARM9开发板中、c++能像c语言那样能给arm或51单片机写程序吗,使用时该注意些什么,谢谢、arm汇编怎么调用C程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)