友善之臂mini2440初入门学习的一点历程

许久之前在某宝入手一块二手mini2440开发板,因为忙毕业设计也没空玩玩,这几天在等PCB印刷出来的时间拿出来学习一下。

第一步配置好开发环境:

交叉编译器,使用的是友善之臂光盘里的arm-linux-gcc-4.4.3.tar.bz,VMware 装的是ubuntu 1404,但是一直不成功,好像是1404版本有点bug,也尝试过arm-2009q3, 后来索性重新装了ubuntu 1604,后来交叉编译器成功装上,不得不说友善之臂的说明手册里的好多东西过时了,里面用的还是fedoral 9。

接下来是将主机--虚拟机Linux--Mini2440开发板互相ping通,采用https://www.cnblogs.com/rwzhou/p/3647957.html 这篇博文的方法,其中MINI2440开发板的IP本身已经配置成192.168.1.230,只要修改主机的IP和虚拟机Ubuntu的IP就行了,因为笔记本就一个网口,所以笔记本使用WIFI,修改虚拟机使用的网卡的IP,虚拟机IP的设置博文也都说明了,不做赘述。

第二步编写LED驱动:

好久没写过驱动了,找个简单的练练手,先抄嵌入式Linux完全应用手册里的LED驱动,用的是MINI2440 DVD里的内核 2.6.32.2-FriendlyARM,然后就出问题了,可能因为内核版本不一样,首先出现的问题是所有头文件都找不到,怀疑是环境变量没有设置,设置好后还有有几个头文件not found,于是我将内核源码放到sourceinsight中新建个工程,但是LED驱动文件里一些函数所出现的头文件并不在驱动代码里写的头文件里,遂修改头文件,并加上新的环境变量,头文件就没报错,但是报其他错,阅读mini2440-2.6.32.2源码里跟GPIO相关的文件修改即可。然后回到虚拟机里源码顶层目录 make modules。

第三步将驱动文件放入开发板中,根据MINI2440手册,我并没有使用NFS,而是通过FTP方式将驱动方法到开发板/home/plg目录下,insmod s3c24xx_leds.ko,又给我报错

[root@FriendlyARM /]# insmod /home/plg/s3c24xx_leds.ko 
s3c24xx_leds: Unknown symbol __aeabi_unwind_cpp_pr0
s3c24xx_leds: Unknown symbol __aeabi_unwind_cpp_pr1
insmod: cannot insert '/home/plg/s3c24xx_leds.ko': unknown symbol in module or invalid parameter

经查后得知原来开发板内核镜像与编译模块镜像版本不一样所致,但是mini2440光盘给的镜像的内核版本是2.6.32.2-FriendlyARM

[root@FriendlyARM /]# uname -r
2.6.32.2-FriendlyARM

但是编译的模块以及内核版本却是2.6.32.2,所以需要修改。

make clean
cp config_mini2440_p35 .config
make menuconfig
在配置里添加-FriendlyARM
然后回到顶层目录 make zImage, make modules

然后使用Minitools将内核镜像烧进开发板中,通过ftp将驱动传输到开发板中insmod,成功。

你可能感兴趣的:(嵌入式开发,Linux)