日期:2014-05-16  浏览次数:20433 次

zedboard--运行在demo系统上的helloworld驱动(十八)

       前面虚拟机安装ubuntu12.04已经完成,按照之前的方法安装交叉编译环境也很顺利,要写能在板子上运行的驱动程序,必须要编译内核,首先下载内核。

       使用git命令下载似乎不是很好使,https://github.com/Digilent/linux-digilent/releases,我下载的是3.3的那个。

 1:解压源码:

 tar -xvzf linux-digilent-3.3.0-digilent-12.07-zed-beta.tar.gz

       如果不编译内核,直接在makefile直接将目录指向这里是要报错的。因为有些.h .o文件需要编译过后才有。



2.配置内核源码      

在arch/arm/configs/目录下有这个配置文件   digilent_zed_defconfig 

make ARCH=arm digilent_zed_defconfig


3编译Linux内核

编译过程在arch/arm/boot目录下生成Image和zImage文件


4编写helloworld.c和Makefile

helloworld.c


Makefile


可以看到helloworld.c和pc机运行的驱动程序时完全一样的,而Makefile有一点不一样,就是这里的kernel路径就是我们解压后的路径,然后还有ARCH=arm


5make


make通过了,之前就没有通过,这里还有一个疑问待解决,就是上面只是编译了内核,生成了Image和zImage文件,上面时候还需要安装内核模块呢?这里还有待搞清楚。

ls看一下生成的文件



看到生成了helloworld.ko文件,拷贝到U盘里面,拷贝到zedboard自带的迷你linux系统下。

6测试

启动完系统后


插上U盘,挂载到/opt目录下

fdisk -l

mount /dev/sda1  /opt/

cd /opt/

insmod helloworld.ko

测试结果:


运行完毕。