打印
[其它]

【开发板分享】Rico Board体验:LED例程分析

[复制链接]
1422|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cumtkds|  楼主 | 2016-12-16 14:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

       开发板介绍:

          Rico Board(即AM437X开发板)是一款以TI AM4378处理器为核心的嵌入式开发板,该板Pin to Pin兼容AM4379/AM4378/AM4377/AM4376处理器。AM437X系列处理器基于高性能ARM Cortex-A9 32位RISC为核心,运行速度最高达1GHz,并提供3D图形加速和摄像机并行端口,支持LPDDR2/DDR3/DDR3L内存,PRU-ICSS子系统为器件提供附加灵活性,同时提供对EtherCAT和PROFIBUS的可选支持来满足工业设计的需要。

          AM437X开发板主板搭载10/100/1000M网口、MINI_USB、USB_Host、LCD、Camera、SD/SDIO卡、ADC、SPI、IIC等接口,支持 Linux3.14.0 操作系统。



          LED例程分析

           LED是对GPIO操作的基本功能。其操作方式也是有多种的,例如在终端中使用echo命令、通过源文件对应数据手册操作寄存器,使用第三方库(python)等等,但是当打工米尔的例程时,会发现看似使用用源文件的形式,其实是使用echo的方式,使用system函数执行shell 命令
       system()会调用fork()产生子进程,由子进程来调用/bin/sh-cstring来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
定义函数
        intsystem(const char * string);
返回值
       =-1:出现错误
       =0:调用成功但是没有出现子进程
       >0:成功退出的子进程的id
        如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值>。
如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno来确认执行成功。
附加说明
        在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题

附件LED程序去掉了按键的部分。从程序中可以看到,将三个LED的设置在leds数据中,当对于某一LED进行操作时,使用sprintf函数将具体的参数与leds中的设备进行组合,生成不同的操作命令,这个操作命令存储在cmd字符串数组中,再使用system函数去支持这个操作命令。以达到操作LED上的GPIO的目的。



m_Rico_Board_2.png (326.03 KB )

m_Rico_Board_2.png

Rico_Board_bs.png (777.85 KB )

Rico_Board_bs.png

LED程序.pdf

14.95 KB

相关帖子

沙发
zhanzr21| | 2016-12-16 23:25 | 只看该作者
好, 不错

使用特权

评论回复
板凳
aojiao| | 2016-12-20 23:33 | 只看该作者
先来评论

使用特权

评论回复
地板
喆华电子| | 2016-12-22 14:45 | 只看该作者
   不错

使用特权

评论回复
5
66669| | 2016-12-24 11:43 | 只看该作者
水水

使用特权

评论回复
6
study1234| | 2016-12-25 20:04 | 只看该作者
浪费啊浪费
这么强的一块板子,就玩个LED

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

84

帖子

2

粉丝