当前位置:首页 » 编程软件 » arm开发板中如何编译

arm开发板中如何编译

发布时间: 2022-05-29 03:08:28

A. 现在有一个ARM开发板,如何编写程序,是不是所有程序都差不多,需要改变的部分才自己写

不是说所有的程序都 差不多,但确实是需要的部分才自己改的。

一般来说,例程里面的程序,如果有符合你要求的,确实是不用改的。多数来说硬件设置初始化部分是不用你改的。

在应用部分,每个项目的应用不是太相同,所以大多是需要自己改的。

数据接收,处理,这个应该说具体数据具体分析了吧,在网络这里问,是得不到具体的答案的,你的问题,去到哪问也是问不到具体答案的。只能是自己找答案了。

到电驴,输入 、ARM,找一下,也许会找到你需要的,那里会有很多的教程。

B. arm开发板如何运行自己写的程序

用户程序insmod 核心模块加载:具体如下:

核心模块编译完成后,基本上是个未经符号定位的目标文件(object)(当然,如果这个object又是一些子object经过ld -r生成的话,则子object之间的符号定位是已经完成的),object是一种可重定位的代码,它可以加载到不同位置的内存执行。而真正加载进核心,并成为核心的一部分,则是用户程序insmod和核心几个系统调用共同完成的。在此过程中,insmod主要完成或通过系统调用完成以下的工作:
1)由参数找到模块文件,如insmod foo.o,模块文件就是foo.o,根据模块文件计算出模块文件所需的内存大小
2)调用系统调用create_mole,为该模块分配核心空间内存
3)调用系统调用query_mole,得到核心提供的符号表,与系统调用create_mole的返回值(核心模块首地址)加在一起对模块进行重定位。
4)在用户空间为核心模块分配内存,并往该段内存复制一个经过定位的object映象。
5)调用系统调用init_mole,将用户内存中的模块映象到相应的核心空间(首地址为create_mole的返回值)。
6)释放用户内存,中止insmod运行。
如果一切顺利,没有出现未定位的符号,则核心模块object就融入系统,成为系统的一部分了。
核心模块的加载过程对核心来说实际是个“静态链接”的过程,这和用户程序动态链接运行过程再链接需要的代码还是不太一样的,当然,object的可重定位特性保证了链接后的代码正常运行,这点倒是比较相似的。
以上回答你满意么?

C. linux如何编译arm-2440的led跑马灯程序不是编译驱动程序

这是一个很简单的问题。使用ads生成二进制文件的时候会直接可执行的二进制文件的头去掉。如程序的执行地址,链接地址等等信息被去掉。但是在linux上你使用的arm-linux-gcc编译过后产生的只是linux 系统的可执行二进制文件,它能够被linux 内核所识别。但是他们不能直接作为裸板程序直接被开发板所执行。除了使用arm-linux-gcc 以外还要使用两个命名arm-linux-ld 和 arm-linux-obj 才能生成能直接被裸板执行的代码

原文地址:http://www.ebhou.com/post/armtest.html

今天在空间看到一个关于arm裸板代码的问题。这个问题对于老鸟来说都是简单得不能再简单的问题了。可是当时确把我给难住了,以前学习的时候没有少些过裸板代码。自己的电脑上至今还保留着lcd,触摸屏和 声卡的裸板驱动。才1年多点时间尽然自己只知道分三不,编译、链接、去掉elf头。而具体的步骤尽然只知道gcc 另外两部的命名尽然不知道参数是什么。惭愧啊!

今天保留过程于此。

做备忘只用,如果能够帮助到任何人那就不虚此写啊。

看过编译原理的人都知道我们一句简单的arm-linux-gcc 到达做了哪些工作。他并不是简单的把我们的原文件编译成我们可执行的二进制文件,在这个过程中他其实至少做了两部工作。“编译”和链接“当然这其中包含了很多关于编译原理的至少,由于本人才疏学浅说以也只能够简单的把他说成编译和链接了。如果需要跟深入的理解请查找相关”编译原理的书籍吧“

这里我们先介绍一下常用的gcc命令.

1.arm-linux-gcc -v 查看gcc 版本号

2.arm-linux-nm 查看一个.o文件所需要的库。

3.arm-linux-ld 链接命令

3.arm-linux-gcc 编译命令

4 arm-linux-objmp -h test 查看符号

-d 反汇编

5 arm-linux-as ls.S -o ls.o 将汇编原文件编译成.o文件

6 arm-linux-obj -I elf32-littlearm -O binary test test.bin 去掉二进制文件elf头。

现在我们来写一个arm裸板的LED闪灯程序 非常简单的。

源代码 led_test.c

void main()
{
int i=0;
volatile long *GPKCON0 = 0x7F008800;
volatile long *GPKDAT = 0x7F008808;
volatile long *GPKPUD = 0x7F00880C;

*GPKCON0 &= ~(0XFFFF <<16);
*GPKCON0 |= (0X1111 <<16);
while(1){
*GPKDAT &= ~(0XF <<4);
i=0xfffff;
while(i--)
;
*GPKDAT |= (0XF <<4);
i=0xfffff;
while(i--)
;
}
}

每隔大概3秒钟的时间LED闪烁一次。非常简单的一个程序。这里没有使用定时器啊 什么的知识简单的做循环来延时。注意 关于LED 的GPIO相关寄存器地址根据你自己的实际情况来。

编译过程

1 编译

arm-linux-gcc -c -march=armv4 test.c -o test.o

2.链接 http://www.ebhou.com/post/armtest.html

D. arm开发板如何运行自己写的程序

安装交叉编译链arm-linux-gcc
在电脑上写好程序
交叉编译程序
生成的文件拷进开发板
终端chmod +x 文件名修改权限
./文件 执行

E. 深度linux的arm-linux-gnueabihf-gcc编译参数如何配

一般来说,交叉编译工具是用于在一种架构的主机(例如x86)上,编译另一种主机(例如arm)运行的程序,在这个编译期间,需要用到的头文件/库,往往需要从一个叫目标文件系统(sysroot)的路径开始查找。

sysroot里包含usr,lib,usr/lib usr/include等文件夹结构和必要的头文件和库,你理解为目标机器上的整个文件系统,搬到你这台电脑上,然后作为一个文件夹存在。

交叉编译原则上不能用主机(host)的头文件,

  • 这首先是因为编译器在查找头文件的相对路径时,交叉编译器会配置为查找目标平台架构的位置,和主机的gcc不一样,这也是为什么它去arm-linux-gnueabihf这个目录去寻找的原因。

  • 其次主机和目标机的系统版本有差异,再加上处理器架构的差异,往往有很多兼容性问题,甚至有难以解决的编译错误。

  • 如果一定要用本机的头文件系统来凑合,那么需要把所有的-I都列出来,即不仅需要-I/usr/include,还需要-I/usr/include/xxx,甚至要创建一些文件夹的符号链接指向你主机的这些头文件文件夹。即使这些,往往也未必成功,有些头文件不同的系统架构,会不完全一样甚至缺失。

交叉编译一般无法使用主机的库(so)文件

  • 主机和目标机往往架构不同,库完全不能使用

  • 可能遇到主机和目标机架构相同的情况,比如你在intel64上编译一套运行在intel64位手机的程序,但是库兼容性的问题仍然存在。

最后结论:你这个问题,如果你是为了另一套机器(比如arm开发板编译),那么需要搞一套目标机的文件系统才能顺利编译。

对了,目标文件系统需要编译了python和dev头文件/库,好多嵌入式设备裁剪的很厉害,都不用python。

F. 如何设置arm开发板交叉编译工具链

如何设置arm开发板交叉编译工具链
1.13.6 Compile菜单
按Alt+C可进入Compile菜单, 该菜单有以下几个内容,如图所示:
1. Compile to OBJ:将一个C源文件编译生成.OBJ目标文件, 同时显示生成的文件名。其热键为 Alt+F9。
2. Make EXE file:此命令生成一个.EXE的文件, 并显示生成的.EXE文件名。其中.EXE文件名是下面几项之一:
1) 由Project/Project name说明的项目文件名。
2) 若没有项目文件名, 则由Primary C file说明的源文件。
3) 若以上两项都没有文件名, 则为当前窗口的文件名。
3. Link EXE file:把当前.OBJ文件及库文件连接在一起生成.EXE文件。
4. Build all:重新编译项目里的所有文件, 并进行装配生成.EXE文件。该命令不作过时检查 (上面的几条命令要作过时检查, 即如果目前项目里源文件的日期和时间与目标文件相同或更早, 则拒绝对源文件进行编译)。
5. Primary C file:当在该项中指定了主文件后, 在以后的编译中, 如没有项目文件名则编译此项中规定的主C文件, 如果编译中有错误, 则将此文件调入编辑窗口, 不管目前窗口 中是不是主C文件。
6. Get info:获得有关当前路径、源文件名、源文件字节大小、编译中的错误数目、可用空间等信息,如图:
1.13.7 Project菜单

G. linux 在arm开发板 可否编译文件

可以使用gcc命令进行编译: 例子: gcc -o hello hello.c #在这里hello.c是源文件,hell为目标输出文件 通过编译器编译主要是经过:预处理,汇编,编译和链接的过程;

H. arm-linux 交叉编译环境的建立,希望有清楚的人解答,复制的闪人

是这样子的,计算机linux中原有的gcc是针对通用的X86等处理器而言的,编译出来的可执行文件是只能在通用计算机上运行的,arm也是一种处理器,只不过其指令等和X86等CPU不同,所以需要有针对arm的编译器来编译源程序,才能在arm中运行。
我在arm9下做过linux,qt编程,需要先在PC上安装linux,然后安装arm-linux-gcc,同时为了可以使用arm-linux-gcc来编译程序,需要指定环境变量,这个可以在.profile等文件中进行更改,具体办法你查一下就知道了。或者使用export命令在终端中设置环境变量。两种方法的结果有区别哦!
你想用2440的开发板的话就是arm9了,我还没找到arm9的仿真工具,但是网上已经有arm7的仿真工具。
对于arm-linux-gcc,只要你安装好并设置好了路径(环境变量)后,在一个终端中输入#arm-linux-gcc -v
那么你一般可以看到你安装的arm-linux-gcc 版本信息,到此你就可以使用它编译你的源程序,然后将生成的可执行文件下载到arm开发板中就可以运行了。
还有什么问题再说吧,我也是一个人摸索出来的,估计摸索了一个月才成功的在arm上运行了第一个自己的qt图形界面程序,祝你好运!
我的建议:
一、熟悉linux 的各种操作命令(如export)
二、学会怎么下载可执行文件到arm中
三、学会用pc控制arm上的linux

我只用过arm-linux-gcc,在你的安装文件夹下可以找到

I. arm开发板上装的linux 可不可以直接把arm板连接到计算机,然后直接在ARM上用GCC编译能在arm上运行的程序

应该可以,你需要先编译一个可以在arm上运行的arm-linux-gcc开发工具链,然后放在arm板上跑。不过,这个过程一定很麻烦。编译开发工具链是一项极其艰难的工程。。。。

J. 如何建立Linux下的ARM交叉编译环境

首先安装交叉编译器,网络“arm-linux-gcc”就可以一个编译器压缩包。
把压缩包放到linux系统中,解压,这样就算安装好了交叉编译器。
设置编译器环境变量,具体方式网络。如打开 /etc/bash.bashrc,添加刚才安装的编译器路径 export PATH=/home/。。。/4.4.3/bin:$PATH。这样是为了方便使用,用arm-linux-gcc即可,不然既要带全路径/home//bin/arm-linux-gcc,这样不方便使用。
编译c文件。和gcc编译相似,把gcc用arm-linu-gcc代替就是了。编译出来的就可以放到arm上运行了。</ol>

热点内容
pc反编译apk 发布:2025-07-03 07:26:15 浏览:454
东风多利卡油罐车配置有哪些 发布:2025-07-03 07:17:42 浏览:110
莫高窟的无线网络密码是多少 发布:2025-07-03 07:08:25 浏览:56
win10u盘怎么隐藏的文件夹 发布:2025-07-03 07:07:03 浏览:26
安卓系统10什么时候发布 发布:2025-07-03 07:06:16 浏览:19
康婷复销算法 发布:2025-07-03 07:05:41 浏览:742
大呼脚本 发布:2025-07-03 07:01:43 浏览:506
魅族安卓7和安卓8什么区别 发布:2025-07-03 06:57:36 浏览:61
编译国外的报纸 发布:2025-07-03 06:54:26 浏览:827
oss编程 发布:2025-07-03 06:53:06 浏览:968