A. gcc一个led驱动,说没有linux/moles头文件,然后我去make moles_install,说没又arm-linux-gcc,但我装了
没有找到mole.h这个头文件,一般是你的内核地址不对。你需要看你编译的内核地址是否正确。
B. 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
C. linux交叉编译生成的文件如何下载。
要把东西下到NOR FLASH要用JTAG吧,如果要验证可执行程序,下到NAND FLASH就好啦。下到NAND FLASH我一般用的是NFS传
D. 基于LPC2124LED流水灯C程序设计
如果单片机16个脚,那么用两层循环或者取余数搞定。两层循环i=0;无限循环{循环i=0 到i=15{ 点亮发光管i 延时(由你定) 熄灭发光管i}}
E. 怎么在linux下编译驱动程序我我按照别人写的LED启动程序,用交叉编译器arm-linux-gcc编译,总提示找不到
不改MAKEFILE文件,当然不能编译了,Linux的驱动就是这么搞的啊,没办法的,反正是批处理的,也就多花点时间嘛,你可以把一些不需要的驱动,选择不编译,这样就能加快速度了。给你个办法,在Windows虚拟机中安装交叉编译环境,你可以在Windows下编辑你的程序,Linux只起到编译的作用,这样,两个工作可以同时进行,有空你还可以上上网,这样你就不觉得时间长了。
F. linux 交叉编译器可以编写一个控制arn开发板led灯的程序吗
必须可以的
要不要操作系统干嘛啊
先在arm上上系统
然后在linux电脑上编写程序
其实就是驱动哈
交叉编译
移植
执行
ok
G. riotboard 使用什么交叉编译工具链
不需要改源码Makefile,只要在你的驱动目录下配置好Makefile里面的源码树路径就行了。
obj-m := led_ko.o
KDIR := /home/zs5577517/ti-ezsdk_dm816x-evm_5_03_01_15/board-support/linux-2.6.37-psp04.00.01.13.patch2
all:
make -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=/home/zs5577517/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
clean:
rm -f *.ko *.o
H. 我在ubuntu9。04下,用arm-linux-gcc 交叉编译了一个led驱动程序。引用的内核源码放在/usr/src/linux2.6
如果你要编译一个 驱动 首先你那个 linux内核事编译好的。makefile 里面耀指向你的linux内核目录
你在试试
I. 嵌入式的一些基本问题
学Linux你以为只是亮个灯,写个IO口什么的啊。这些都只是嵌入式系统的皮毛而已,实话告诉你底层的最难,嵌入式领域驱动和硬件这块最麻烦。看来你基本不懂。
嵌入式复杂之处在于处理器可以不同,linux操作系统不同,移植绝对是难点。led照样可以写成你看不懂的形式。
gcc基本不用,用交叉编译器arm-gcc或者其他的gcc,Makefile你肯定没有写过,写过的话够你学很久。
led灯告诉你基本的驱动开发。但是驱动远远没有这么简单。呵呵,这是最最最简单的。
至于把开发板做成路由,你指的是无线还是什么,这里面涉及到网卡驱动,网络编程,因为没坐过这块所以也不好说,就这些吧,希望对你有帮助
J. linux 驱动交叉编译问题。
不需要改源码Makefile,只要在你的驱动目录下配置好Makefile里面的源码树路径就行了。
obj-m := led_ko.o
KDIR := /home/zs5577517/ti-ezsdk_dm816x-evm_5_03_01_15/board-support/linux-2.6.37-psp04.00.01.13.patch2
all:
make -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=/home/zs5577517/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
clean:
rm -f *.ko *.o