NXP MCU 技术william hill官网
直播中

晓戈

12年用户 135经验值
擅长:可编程逻辑 MEMS/传感技术 嵌入式技术 接口/总线/驱动 控制/MCU RF/无线
私信 关注
[问答]

【AWorks试用体验】嵌入式初级玩家养成计划--GPIO点亮AP板上的LED

`
   小伙伴们,大家好。进过几天的研究,今天给大家说说怎么通过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下面。
002.jpg



打开终端,输入tar -jxvf  linux-2.6.35.3.tar.bk2解压文件,解压完后会在home下出现linux-2.6.35.3文件夹,

001.jpg

使用cd进入到linux-2.6.35.3下面,使用./config-kernel命令选择板子的型号。

003.jpg

这里义无反顾的选择4,然后回车,然后再命令提示符下面键入make命令开始编译内核,需要将近10~20分钟时间编译完成。
编译完成后将光盘下的gpio_driver文件夹复制到宿主linux下的Home目录下,
004.jpg




使用cd命令进入该文件夹,使用vi Makefile修改Makefile文件,指定linux内核代码目录:
006.jpg

007.jpg


我放在了Home根目录下面,所以路径指定如上,zbr是本linux的计算机名。修改完成使用:wq命令保存退出。

008.jpg


然后在该目录下使用make命令,编译驱动文件,编译完成会生成新的.ok文件。编译时间仅需要5~6秒。
然后将gpio_driver文件夹复制到之前设置的nfs文件夹下,用来挂载到开发板上,因为驱动是给开发板安装的。
复制完成后,给开发板通上电,连上网线,在linux终端下输入ssh root@192.168.1.40登录开发板,192.168.1.40是我的板子的IP地址,肯定和你们的不一样。
登录上板子后,使用mount命令来挂载宿主机上的nfs文件。
009.jpg



没有报错说明挂载成功。上面的ip是宿主机的ipnfsroot是所要挂载的目录,mnt是开发板的挂载目录。

使用cd命令进入/mnt/gpio_driver目录下,然后使用insmod安装驱动。

$insmod gpio_driver.ok

回车没有报错说明安装成功。

是否真的安装成功这样做,使用ls指令查看:

010.jpg

若看到这个界面说明安装成功。

然后就可以使用echo指令来控制io口的电压了。

使用echo控制1.17端口的电压为0

012.jpg

然后使用万用表测试得到:

IMG_9639.JPG

再将其设置为1

011.jpg


使用万用表测试的:





测试结果为3.26V,去掉误差实际就是3.3V。有了这个结果我们就可以控制led了。

013.jpg


能够看出,只要将所对应的GPIO设置为低电平就能够点亮lED了,那么问题来了,到底谁才是“所对应的GPIO“呢?首先看下图:

014.jpg


所以的LEDKEY都被引到了J8A这个端子上面,也就是说开发板并没有给LED分配io口。

既然如此我们就得自己给其分配端口了,看下图:

IMG_9640.JPG



黄色区域就是led等的区域了,红色的为led的插针接口,蓝色为给led分配的GPIO口。

对应关系为:

LED1--------gpio-P3.26
LED2--------gpio-P3.22
LED3--------gpio-P3.20
LED4--------gpio-P2.7

下来就是用套件里面的短接片将其连接起来:

IMG_20150813_203340.jpg


连接起来的样子。
为什么有个灯亮了?因为我之前设置过这个端口。

015.jpg

使用echo4led都点亮。

IMG_20150813_203712.jpg

瞬间惊叫有没有?

然后为毛第二个不亮?根据我多年的点亮led经验看,不是这个口坏掉了,就是led闪了,或者就是其他问题了,这个是我给我自己留下的问题。

   基本情况就是这样了。呸,这句当我没说。以上就是点亮led的全过程,篇幅不长,我却研究了好个晚上,其中各种抓狂啊!到现在为止我的内心都几乎是崩溃的。。。。。。。

好了,不多说了,今天的成果就分享到这里,祝william hill官网 越办越红火,大家晚安。
----愿世界充满幸福!------To BeContinue




` IMG_20150813_203523.jpg IMG_9638.JPG
已退回1积分

回帖(3)

小麦地

2015-8-16 21:57:16
期待楼主后面的分享
举报

suyong_yq

2015-8-23 19:38:50
非常不错啊!
举报

ls1052970753

2015-9-13 14:00:34
嗯嗯,不错不错
举报

更多回帖

发帖
×
20
完善资料,
赚取积分