BeagleBone black适不适合用来学习linux驱动开发

beaglebone black(9)
最近这段时间在玩beaglebone-black,参照《LINUX设备驱动程序》想用来练习Linux下的驱动程序编写,于是把我最近这一个多月的学习做下笔记。我也是新手,本文仅贡交流之用,有写的不好的地方,还望各位高手指正,不吝赐教!
本文参照了:
还有其他的一些博文,对我的帮助也很大,在这就不在这一一列举了!
本文利用embest的交叉编译工具(arm-none-linux-gnueabi-)、3.8内核源码以及镜像images_svn2541(BBB-eMMC-flasher-)进行介绍
相关下载地址:
强烈建议下载说明文档:
环境搭建:
1、下载交叉编译工具
2、安装交叉编译工具
(P.S.强烈建议使用root权限进行下列操作,$ sudo -s 切换到root权限下)
①解压源文件
先进入arm--arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2所在的目录,默认是安装在/usr/local目录下的,所以解压源文件到/usr/local目录下。
执行以上命令后,arm-none-linux-gnueabi-gcc安装包会被解压到/usr/local目录下的一个arm-2010.09目录中。arm-2010.09目录是在解压时自动创建的。
②设置环境变量
解压完成后,可以进入arm-2010.09目录下查看一下目录结构。其中,在/usr/local/arm-2010.09/bin/目录下存放的是交叉编译工具的各命令。为了使系统能够找到交叉编译工具的各命令,可以将/usr/local/arm-2010.09/bin/目录增加到PATH变量中。步骤如下:
打开/etc/bash.bashrc脚本
在文件的末尾最后添加一行,来增加一个环境变量。
保存退出。
尽管增加了交叉编译工具的路径,并且保存了/etc/bash.bashrc脚本,但是,由于修改后,没有执行,因此修改后的PATH变量没有起作用,必须手动执行一次/etc/bash.bashrc脚本。
当然,也可以重启系统,因为,系统启动时,会自动执行该脚本。
验证,打开一个新终端执行:
如果有”/usr/local/arm-2010.09/bin/”则说明添加成功。
注:64位操作系统需要执行以下命令来安装所需的库文件以运行32位交叉编译工具链:
$ sudo apt-get install ia32-libs
在终端中执行:
如果显示出来交叉编译器的版本号出来则安装成功
3、更新Beaglebone Black的版本
(P.S.强烈建议按照《BeagleBone Black用户手册》操作进行更新)
①准备:映像文件(BBB-eMMC-flasher-.img.xz)、、、4G以上的SD卡。
②使用7-zip压缩工具解压刚才下载的映像文件;
③用一个MicroSD卡套或者USB读卡器将一张MicroSD卡连接到PC;
④使用刚才安装的Win32 Disk ImagerDisk Imager工具将解压后映像文件写入MicroSD卡;
⑤将MicroSD卡插入BeagleBone Black的卡槽中,然后按住uSD BOOT按钮并使用USB线缆接通电源;
⑥当4个User LED同时持续亮起,表示已成功完系统更新(需耗45分钟左右)。请断开电源并取出MicroSD卡,然后再次接通电源即可。
4、编译内核
(P.S.强烈建议按照《BeagleBone Black用户手册》操作进行更新)
准备:Linux3.8内核源码
先自行解压,之后执行以下命令来编译内核;
?注意:如果编译内核过程中出现/bin/sh: lzop:command not found的错误,在Ubuntu系统下,使用命令$ sudo apt-get install lzop 安装lzop包。
驱动编译:
1、内核空间
驱动程序gpioCtl.c:
?我的驱动程序文件名是gpioCtl.c,如果各位想直接使用这一驱动的话,请使用这个文件名,不要修改。还有就是其中对于GPIO操作的一些函数,例如”gpio_requset()”,”gpio_free()”,”gpio_set_value()”,如果有不理解的可以参照:http://blog.csdn.net/beyondioi/article/details/6984406,这篇博文详细讲解了omap系列产品用于操作GPIO的函数,其实看看源码应该能够明白这写函数的意思。
Makefile:
?如果各位使用的交叉编译器和我的不一样的话,请修改CROSS_COMPILE(一样的话就免了),然后修改KERNELDIR成为自己内核的存储路径,至此所有有关驱动的程序就写完了,将上面的两短代码放在同一文件目录下,make(编译驱动之前,请先编译好内核),就会生成相应的驱动gpioCtl.ko
2、用户空间
应用程序app.c:
?执行”$ make app”交叉编译应用程序。此程序能实现user:led3闪烁效果以及读取gpio2-1的电平!
gpioCtl.sh:
?我在上面的驱动程序编号申请采用动态分配方式,但是每次分配的主设备号都是241,所以shell中的设备号采用了241,如果各位动态分配的结果不是241,可能需要修改shell,cat /proc/devices 可以察看到分配到的设备号。
3、运行测试
现在将所有文件拷贝到板子上
可以用SSH拷贝,利用”$ scp 源文件 root@192.168.7.2:目标目录”命令进行拷贝
在beaglebone black终端上运行以下命令进行测试:
?如果没有问题的话,现在就能看到 led 闪烁了!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(1)(1)(1)(2)(4)(3)(1)(7)(3)(3)(3)(2)(6)(1)(2)(11)(1)(4)(4)(2)(12)(7)(21)(2)(18)(24)(37)(31)(6)(2)(2)(4)> BeagleBone Black快速入门教程(完整版)BeagleBone Black快速入门教程(完整版)已有 434576个资源相关资源下载专区上传者其他资源嵌入式系统热门资源本周本月全部文档信息资源大小:44.77MB上 传 者: () 上传日期:资源类型:教程及课件资源积分:2分评
论:下载次数:54参与讨论:标&&&&签:分&&&&享:下载资源需要,并消耗一定的积分文档简介Beaglebone是与&Arduino、树莓派并列的三大开源平台之一。&Beaglebone的特点可以说是融合了Arduino与树莓派的优点。它既有比&Arduino还多的&GPIO口,&还有比树莓派更高的性能。
Beaglebone运行的是完整的&Linux操作系统,这与&Arduino、树莓派都不同。&Arduino环境只是最基本的単片机,程序编写、编译都在计算机上进行,而且调试非常困难。而Beaglebone,代码的编写编译都可以在本地进行,而且可以使用的语言种类繁多。例如,常用的&C、&C++、&Python、&Perl都可以用来为&Beaglebone编程。不仅如此,&Beaglebone自带了基于&Web的&Cloud9编辑器以及对应的&BoneScript语言,&这使得你只需要有网络和浏览器就可以为&Beaglebone编程。
本教程是国内唯一&BeagleBone&Black中文教程。本教程全面讲解&BeagleBone&Black使用和开发。&内容包括硬件组成、Linux系统维护、硬件控制、Python开发、BoneSclipt开发等内容。
相关帖子FAQ&&&&Q.为什么我点的下载下不了,但积分却被扣了A.由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。Q.我已经登录过账号,为什么还一直提示要求登录A.出现这种情况是浏览器缓存问题,建议清理浏览器缓存后重启浏览器重新登录下载资源意味着您已经同意遵守以下协议1. 资源的所有权益归上传用户所有2. 未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途3. EEWORLD下载频道仅提供交流平台,并不能对任何下载资源负责4. 下载资源中如有侵权或不适当内容,请5. 本站不保证本站提供的资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。大学堂最新课程若举报审核通过,可奖励2下载分举报人:被举报人:zhouaijun0411举报的资源分:2* 类型:请选择类型资源无法下载资源分类不正确资源无法使用标题与实际内容不符含有危害国家安全内容含有反动色情等内容含广告内容版权问题,侵犯个人或公司的版权其他* 详细原因:回到顶部EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱service(.cn 或通过站内短信息或QQ:联系管理员okhxyyo,我们会尽快处理。}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信