热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux+arm驱动入手问题解答

昨天写了一篇驱动入手遇到的问题的文章来给自己鼓气,今天终于是把第一个驱动模块给加载进去并且能够运行了。对于昨天的问题还有俩个问题没有答案,不过那俩个问题就先放着。首先大概说一下交叉
 

昨天写了一篇驱动入手遇到的问题的文章来给自己鼓气,今天终于是把第一个驱动模块给加载进去并且能够运行了。对于昨天的问题还有俩个问题没有答案,不过那俩个问题就先放着。

首先大概说一下交叉编译来开发,以前对于交叉编译开发我的理解就是要安装一个交叉编译工具arm-linux-gcc然后其他的就不用管了,其实不是这样的,而且对于交叉编译环境的搭建一定要明确,那就是要在你开发的系统中(我们一般是在虚拟机中搭建的linux系统)搭建一个和你开发板中的系统完全一样的开发环境,这个环境包括安装相同的内核源码,库文件,各种内核配置等等,要完整的照着手册要做,包括安装linux源码,定制linux内核等等,一开始我不明白怎么又要安装linux内核干嘛的。其实这个搭建的环境编译后生成的内核镜像和你开发板的一样,你可以烧写到开发板中试一试。到这里的时候我就可以想到昨天出现的其他那俩个问题,开发机linux的内核编译和nfs问题就和这个不一样了,因为交叉编译的环境,内核代码,头文件库文件,各种配置都是在搭建的这个开发环境中,和你开发主机linux的内核没有关系。现在你可以看一下一般你的开发主机的内核和搭建的开机环境的内核一般是不一样的,我的pc机的linux内核是2.6.25-14.fc9.i686而我搭建的开发环境的linux内核是2.6.32.2.熟悉了的人看起来这种问题很简单,但是刚开始的时候我是很晕的,要不然我不会去编译PC开发机的linux内核的。

说了很多废话,回到主题,关于前一篇问题的问题1,前一篇文章 linux+arm驱动入手问题

有俩个方面的问题导致加载模块不成功,一是编译模块前需要一些配置,还有开发环境的搭建中的一些问题。二是minicom串口传输文件,这个也是昨天琢磨了好久的,今天发现用这个传文件的时候传完了一定要检查一下,昨天我看到了有一个命令可以检查的但是今天找不到了,不过检查大小也是一样的,我以前就是因为传的文件不完整,大小不大,我该了之后就好了。

这是我在网上找到的一份MINI2440开发环境及模块安装至少我现在觉得很好

 

1.安装Fedora9.0
mini2440推荐安装9.0的版本。
在VM虚拟机中默认安装即可。
2.安装gcc
在Fedora9.0.ISO中的package文件夹下可以找到gcc的rpm安装包,就不需要到网上费劲下载了。
rpm -ivh gcc*.rpm
首次安装会提示依赖包确实,按照提示一个一个的安装上,这些rpm包都在ISO里。
顺别说一次,如果需要相互依赖的包,可以通过rpm -Uvh a.rpm b.rpm同时安装这两个包。
安装完成后,输入gcc -v查询版本信息,如果能执行,表明gcc已安装成功。
3.安装arm-linux-gcc
在mini2440的光盘中linux文件夹下找到arm-linux-gcc.tar.gz文件,复制到/opt/下
然后tar xvzf arm-linux-gcc.tar.gz -C 解压缩
然后gedit /root/.bashrc
在最后一行追加
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
重新登录linux后
执行arm-linux-gcc -v,如果能执行,表明arm-linux-gcc已安装成功。
4.解压缩arm-linux源码
在mini2440光盘中linux下找到文件
linux-2.6.32.2-mini2440-20100728.tar.gz,将它复制到/opt下,然后解压缩,压缩后会生成
/opt/FriendlyARM/mini2440/linux2.6.32.2文件夹
cd /opt/FriendlyARM/mini2440/linux2.6.32.2

配置缺省config
cp config_mini2440_t35 .config
make menuconfig
如果提示ncurses有问题,需要通过rpm方式安装ncurses,其rpm包在Fedora9.0.ISO中可以找到。
然后 make menucofig,一般不需要改。
然后 make
5.编译模块
make menuconfig 配置要编译的模块
make modules
make modules_install
这样就可以生成.ko模块文件
将这个文件ftp(记住是bin模式)上传到mini2440开发板下的/lib/modules/2.6.32.2-FriendlyARMxia
然后modprobe yourmodulename,不要带扩展名.ko。如果通过insmod命令安装
通过lsmod查看模块安装情况
通过rmmod yourmodulename卸载

 

错误

insmod: error inserting 'helloworld.ko': -1 Invalid module format

原因是编译问题,必须严格按照步骤。

可以通过cat /var/log/messages查看详细的错误信息。

不过我这里说一下关于/var/log/messages 也是网上找到的,简单的说明了一下

日志文件其实是纯文本的文件,每一行就是一个消息。只要是在Linux下能够处理纯文本的工具都能用来查看日志文件。日志文件总是很大的,因为从你第一次启动Linux开始,消息就都累积在日志文件中。看日志文件的一个比较好的方法是用像More或Less那样的分页显示程序,或者用Grep查找特定的消息。我们先用Less显示“/var/log/messages”,可以看到从日志文件中取出来的一些消息。每一行表示一个消息,而且都由四个域的固定格式组成:

*时间标签(Timestamp),表示消息发出的日期和时间。

*主机名(Hostname),表示生成消息的计算机的名字。如果只有一台计算机,主机名就可能没有必要了。但是,如果在网络环境中使用Syslog,那么就可能要把不同主机的消息发送到一台服务器上集中处理。在我们的例子中主机名为lcbj。

*生成消息的子系统的名字。可以是“Kernel”,表示消息来自内核或者是进程的名字,表示发出消息的程序的名字。在方括号里的是进程的PID。

*消息(Message),即消息的内容。


我根据这个我查看了一下我的messages信息,发现你们说的是里面信息来自进程的名字那里写的是az 这个是串口的命令啊,所以我就去看看文件有没有完整,果然有问题。

今天暂时就先写到这里吧,其他的俩个问题或者关于messages的详解我一直没找到,那就以后看到了在来写。2011-08-29 16:53

今天终于是发现问题的所在了, 一个非常非常菜的问题,这样的问题都不好意思说出来,但是不说出来又意味着什么了?下面是引用别人的。

kernel devel和kernel source的区别

区别:kernel-devel包只包含用于内核开发环境所需的内核头文件以及Makefile,而kernel-souce包含所有内核源代码。
如果仅仅是用于你自己编写的模块开发的话,因为只需引用相应的内核头文件,所以只有devel包即可,如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce。

kernel-souce在RH某些版本之后不再附带在发行版中了,必须自己通过kernel-XXX.src.rpm做出来。


kernel-devel是用做内核一般开发的,比如编写内核模块,原则上,可以不需要内核的原代码。
kernel则是专指内核本身的开发,因此需要内核的原代码。

 

关于kernel source的有kernel和kernel-devel两个rpm,其中kernel rpm包含源文件和头文件(就像2.4下的kernel-source rpm),而kernel-devel则主要是头文件。

这就是我折腾了好久今天终于弄明白的一件事,那就是我其实没有安装源代码,而我只是安装的一个kernel-devel,因为fedora安装VMware-tools的时候需要安装这个包,所以我一直编译不成功的内核源码原来是一直在编译没有源代码的头文件,因为编译不成功后面修改了内核的配置,所以导致nfs服务启动失败,cdrom无法挂载等等问题。而这些问题缘由是改变了内核,相当于伤到了筋骨,所以一般的办法无法修复。所以我搜遍了google baidu都没有一个办法可以解决,最后果断重装了。果然内核的修改伤不起啊!这个慢慢来,有空多练练内功。

2011-08-31 21:18



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
都市养生堂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有