嵌入式初级玩家养成计划--GPIO点亮AP板上的LED
点亮LED是每个做单片机工程师都非常熟悉的操作,每个工程师都有那么一次-----第一次使用某个MCU点亮LED的兴奋。今天mx283a也不例外。
好了,话不多说,直奔主题。
今天所涉及的linux知识如下:
mount -t nfs 192.168.1.91:/nfsroot /mnt -onolock 开发板挂载192.168.1.91宿主系统的目录
cp filename path 复制文件到path
su root 获取root权限
poweroff 关机
reboot 重启
ssh name@ip 登录远程设备
exit退出终端/断开远程设备
echo value > status /修改寄存器值 比如更改led状态
mv new.c nwe0.c 修改文件名
rm -rf floder 删除文件夹floder
insmod xxx.ok 安装驱动
rmmod xxx.ok 卸载驱动
涉及的嵌入式知识有:
编译内核,驱动编译,驱动安装,挂载。
首先是需要进行内核编译,原因是编译了内核才能编译驱动,因为驱动编译需要指定内核路径。
我下载的光盘自带的gpio_driver.ok不能正常insmod,估计是内核版本不一致,于是就需要重新编译。
编译内核:
首先将光盘下的linux-2.6.35.3.tar.bk2复制到宿主linux下面,可以通过远程挂载的方式放进去,我是安装在虚拟机里面的,所以直接将win下的所有分区都挂载了进去。将该文件复制到linux文件根目录下,即Home下面。
打开终端,输入tar -jxvf linux-2.6.35.3.tar.bk2解压文件,解压完后会在home下出现linux-2.6.35.3文件夹,
使用cd进入到linux-2.6.35.3下面,使用./config-kernel命令选择板子的型号。
这里义无反顾的选择4,然后回车,然后再命令提示符下面键入make命令开始编译内核,需要将近10~20分钟时间编译完成。
编译完成后将光盘下的gpio_driver文件夹复制到宿主linux下的Home目录下,
使用cd命令进入该文件夹,使用vi Makefile修改Makefile文件,指定linux内核代码目录:
我放在了Home根目录下面,所以路径指定如上,zbr是本linux的计算机名。修改完成使用:wq命令保存退出。
然后在该目录下使用make命令,编译驱动文件,编译完成会生成新的.ok文件。编译时间仅需要5~6秒。
然后将gpio_driver文件夹复制到之前设置的nfs文件夹下,用来挂载到开发板上,因为驱动是给开发板安装的。
复制完成后,给开发板通上电,连上网线,在linux终端下输入ssh root@192.168.1.40登录开发板,192.168.1.40是我的板子的IP地址,肯定和你们的不一样。
登录上板子后,使用mount命令来挂载宿主机上的nfs文件。
没有报错说明挂载成功。上面的ip是宿主机的ip,nfsroot是所要挂载的目录,mnt是开发板的挂载目录。
使用cd命令进入/mnt/gpio_driver目录下,然后使用insmod安装驱动。
$insmod gpio_driver.ok
回车没有报错说明安装成功。
是否真的安装成功这样做,使用ls指令查看:
若看到这个界面说明安装成功。
然后就可以使用echo指令来控制io口的电压了。
使用echo控制1.17端口的电压为0:
然后使用万用表测试得到:
再将其设置为1:
使用万用表测试的:
测试结果为3.26V,去掉误差实际就是3.3V。有了这个结果我们就可以控制led了。
能够看出,只要将所对应的GPIO设置为低电平就能够点亮lED了,那么问题来了,到底谁才是“所对应的GPIO“呢?首先看下图:
所以的LED和KEY都被引到了J8A这个端子上面,也就是说开发板并没有给LED分配io口。
既然如此我们就得自己给其分配端口了,看下图:
黄色区域就是led等的区域了,红色的为led的插针接口,蓝色为给led分配的GPIO口。
对应关系为:
LED1--------gpio-P3.26
LED2--------gpio-P3.22
LED3--------gpio-P3.20
LED4--------gpio-P2.7
下来就是用套件里面的短接片将其连接起来:
连接起来的样子。
为什么有个灯亮了?因为我之前设置过这个端口。
使用echo将4个led都点亮。
瞬间惊叫有没有?
然后为毛第二个不亮?根据我多年的点亮led经验看,不是这个口坏掉了,就是led闪了,或者就是其他问题了,这个是我给我自己留下的问题。
基本情况就是这样了。呸,这句当我没说。以上就是点亮led的全过程,篇幅不长,我却研究了好个晚上,其中各种抓狂啊!到现在为止我的内心都几乎是崩溃的。
好了,不多说了,今天的成果就分享到这里,祝论坛越办越红火,大家晚安。
----愿世界充满幸福!------To BeContinue!
期待小编后面的分享
非常不错啊!
嗯嗯,不错不错