微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 嵌入式初级玩家养成计划--GPIO点亮AP板上的LED

嵌入式初级玩家养成计划--GPIO点亮AP板上的LED

时间:10-02 整理:3721RD 点击:


   小伙伴们,大家好。进过几天的研究,今天给大家说说怎么通过Aworks上面的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!





期待小编后面的分享

非常不错啊!

嗯嗯,不错不错

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top