最近在学linux嵌入式技术,自己做了一个在周立功的I-MX287A开发板上实现的,基于MQTT远程控制的小项目,其中用到了一些比较好玩和有趣的技术,在这里自己记录分享一下。

额,让我想想该从和处开始写起吧!

一、开发板上电进行工作环境配置

1.1 网络配置

刚拿到I-MX287A时,心情还是很激动的,因为天生对硬件开发板有着一见钟情的习惯,嘿嘿。

拿到板子首先做的是给板子连接上串口线,再给板子插上电源;用串口调试终端给i-mx287A设置工作环境,配置工作环境是每拿到一个板子时一定要做的事,环境配置的好,可以大大提高板子的开发效率。

之前有接触过ARM开发,用的开发方式是通过串口给ARM板下载应用程序的,这时需要用到的工具软件是tftpd32.exe和SecureCRT.exe,当然实际工作中也有不少人使用这两款软件进行嵌入式开发。这里我使用的是另一个工具,既可以连接串口也可以连接网络,它是putty,打开界面如下图:

连接好串口线后,在电脑设备管理器找到串口线的设备串口com,照着上图配置波特率115200,点击open,会出现一个黑色的终端窗口,其中会显示ARM板的状态,如下图:

进去之后需要用户登录,这个是致远科技I-mx287A板子默认的用户,用户名和密码都是root,输入进去就可以登录到板子了,进去之后第一件事当然是打一个"ls"命令啦。在root用户下,新的板子的文件系统有写保护,你会发现在/etc/init.d/路径下的文件没有写权限,即使加了万能的sudo也不行,后来在同事的帮助下,了解到一个骚操作即可解决这种写保护问题:

输入如下指令:

mount -o remount rw /

后来发现是因为板子的文件系统root路径默认挂载的是只读的模式,我们把根文件系统从新挂载成可读可写模式就可以修改/etc/下的文件内容了。如果板子重启了,每次都要打一遍这条指令就非常烦,干脆把这一条写到启动脚本文件里,让其上电就重新挂载一下,方便配置文件的写修改。我是将这一条shell指令添加到/etc/init.d/路径下的rcS问价的最后一行。

如下图:

配置可写权限后,我们需要连接配置开发板的网线网络,输入如下图指令测试开发板网络是否畅通。

我们可以用ifconfig命令来查看网络参数,网络不外乎ip、默认网关、子网掩码、DNS服务器。这几个参数需要你配置成与你电脑所在的局域网一致的(ip不能冲突)。/etc/init.d/路径下有个名为“S40network”的文件,它是启动时加载的网络参数shell脚本,新板子里面只启用了ip设置的命令,我后来直接自己找网上历程写了一个脚本,初始成自己网路的参数,即把S40network内容改为如下配置:

#filename S40network
#!/bin/sh
IP=192.168.0.97
NETMASK=255.255.255.0
DNS='nameserver 192.168.0.1'
GATEWAY=192.168.0.1
ifconfig eth0 ${IP} netmask ${NETMASK}
route add default gw ${GATEWAY}
echo ${DNS} >> /etc/resolv.conf  #resolv.conf文件中写"nameserver 192.168.0.1"
#挂载nfs
mount -t nfs -o nolock 192.168.0.110:/home/nfs/share /mnt

进行如下设置后,即可配置开发板的网络,文件保存退出,重启开发板reboot,等板子正常启动后,用putty的telnet工具连接开发板(网线插上)如下图配置putty

配置完成后,点击open,如果一切正常(网络),应该可以看到如下图终端界面

此时,开发板的网络环境算是配置好了,配置网络的用途是板子可以通过网路与电脑上的虚拟机Ubuntu建立网络连接,从而试下共享文件系统nfs.

1.2 nfs挂载

nfs是网络文件系统,允许一个节点通过网络访问远程计算机的文件系统,远程文件系统可以被直接挂载到本地,文件操作和本地没有区别,如果是局域网的nfs那么io的性能也可以保证。那么就是说,当开发板的nfs挂载到ubuntu上,就可以直接访问Ubuntu上编译好的可执行文件,直接运行都是可以的,在板子上开发调试应用软件的时候,无需再将可执行文件考来考去,大大方便了软件的调试效率。

ubuntu下nfs安装配置:
1).安装NFS服务器——

sudo apt-get install nfs-kernel-server(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)

2).配置nfs

sudo vim /etc/exports

在末尾一行加入/home/nfs *(rw,sync,no_root_squash,no_subtree_check)

3).注意:修改后,要在linux中断 运行exportfs -rv  使配置文件/etc/exports 生效 ;
设置 /home/nfs目录权限sudo chmod 777 /home/nfs -R

4).重启服务:#sudo /etc/init.d/rpcbind restart <---重启portmap,后面最新的版本都rpcbind
重启#sudo /etc/init.d/nfs-kernel-server restart <---
重启nfs服务#showmount -e <---显示共享出的目录

5).现在可以在开发板上试一下:
mount -t nfs -o nolock localhost:/home/nfs /mnt
注:localhost为虚拟机机Ubuntu的IP地址,nsf挂载成功的前提是,arm板能正常ping通ubuntu。

挂载成功后,板子就可以直接访问Ubuntu的/home/nfs路径下所有文件,板子上需要执行如下指令:

cd /mnt/

来访问挂载的nfs文件路径。

1.3 内核在Ubuntu上编译

刚一接触开发板,想到内核编译时有些惧怕的,因为想到内核一出问题,整个系统都有可能会崩。想想还是挺恐怖的,但是好在致远电子i-mx287A开发板提供的资料比较全面,在《EasyARM-iMX28xx Linux开发指南 20150901 V1.03.pdf》文档中有对内核及u-boot编译的详细描述和操作指导,编译不通过,大不了删了再来,哈哈。

但是按照文档里一步一步执行,一般不会有问题。

1.4 ARM板硬件驱动交叉编译

1.5 驱动调用测试

二、Ubuntu上QT应用工程创建及开发

2.1 QT4.7交叉编译配置

2.2 QT4.7交叉编译应用程序,并在ARM9开发板上运行

2.3 QT应用程序调用之前编译好的板子上跑的硬件驱动实现led灯Gpio控制

2.4 QT4.7应用程序中调用libpaho-embed-mqtt3c.so.1.0动态库实现mqtt订阅和发布数据

2.5 QT4.7应用中通过多线程实现mqtt数据订阅和发布功能,并实现远程mqtt控制led开关

基于I-MX287A的mqtt远程控制ARM板上LED灯小项目总结相关推荐

  1. 基于stm32通过HC_05(ZS-040)蓝牙模块用手机控制stm32开发板上led灯的亮灭

    文章目录 前言 一.HC-05蓝牙是什么? 二.应用实例步骤 1.使用AT指令对蓝牙的初始化 2.打开手机蓝牙助手查看是否搜索到该蓝牙 3.用蓝牙模块代替TTL连接stm开发板 4.创建项目开始配置相 ...

  2. ARM板上的华容道小游戏

    头文件: #ifndef _HEAD_H__ #define _HEAD_H__#include<stdio.h> #include <sys/types.h> #includ ...

  3. 关于灯板上LED灯总是坏的问题

    电流达到159mA,已经超过.LED灯极限值

  4. Qt——用在ARM板上的Mplayer(1.3.0,1.0rc4)安装编译步骤!还有,Mplayer背景抖动闪烁问题解答,终于来了!

    注意:若转载,请贴上链接"https://blog.csdn.net/qq_41042595/article/details/112308184",如若发现抄袭或未标明来源现象,都 ...

  5. Qt程序在arm板上运行

    1.Qt中的库需要拷贝到arm板上: 2.配置环境变量,参考该文. 总结: 1.可执行程序在终端中运行前,需要配置好环境变量,我们用export的形式配置的,这种形式只在当前终端中生效(因为,如果我们 ...

  6. 最新版ser2net移植到ARM板上,交叉编译

    这个是ser2net源码http://sourceforge.net/projects/ser2net/files/latest/download ser2net是我在玩openwrt时接触的,当时用 ...

  7. 米思奇blynk_米思奇编程积木套件入门教程 项目一:点亮板载LED灯

    该教程实验平台:上一篇教程:本节课程任务 任务1--点亮板载LED灯 1.程序编写 双击右图中的Mixly.vbs文件,即可打开Mixly软件: 2.png (109.53 KB, 下载次数: 56) ...

  8. 点亮stm32开发板的led灯

    点亮stm32开发板的led灯 简述 我使用的是STM公司stm32f103系列开发板,我们通过看原理图,对LED进行操作,以实现led灯的控制.(对于小白来说很有作用哈!废话不说,上料!) 1.查看 ...

  9. wxX11移植到arm板上

    [原]移植wxX11到开发板上 2012-5-18阅读467 评论0 最近几天由于工作安排,要将wxX11程序移植到arm开发板上.一连工作了好几天,终于可以在板子上显示出一个"X" ...

最新文章

  1. 最精简写法→去掉任意多个空行
  2. Java设计模式之五大创建型模式(附实例和详解)
  3. Winform中实现拖拽文件到ListView获取文件类型(附代码下载)
  4. VS-c# web程序:gridview保存Excel文件遇到的问题
  5. python绘制折线图显示数据_漂亮图表也可用python信手拈来!一文教你学会用Python绘制堆积折线图...
  6. Chrome Extension Dark Theme
  7. go sqlite mysql_Go语言中使用SQLite数据库
  8. linearLayout和二级菜单联动
  9. Lesson 3 Part 1 Locally weighted regression
  10. java JDK 自带的 native2ascii 和它的 reverse 命令
  11. vue非父子组件间传参问题
  12. WPF中调用Process打开网页或本地文件夹
  13. J-Link RTT Viewer 的各种不爽以及解决方案
  14. c语言求平均值 保留三位小数,Excel求平均值时,保留小数位数与参与求平均值的个数有关...
  15. Ubuntu进入睡眠模式
  16. dropna()函数
  17. 用python判断你是青少年还是老年人
  18. 微信工具(Python)实现备注管理和群发消息
  19. vr视频转换教程,怎么把普通视频转换成vr视频?
  20. 搭建CA并签发数字证书

热门文章

  1. 已知W1∩W2的一组基,将它扩充为W1+W2的一组基
  2. TNN行业首发Arm 32位 FP16指令加速,理论性能翻倍
  3. 秋招面试 前端问题总结
  4. create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/xxxx, errorCode 0, state 08001
  5. 如何用c语言编辑盗号,想程序高手求助--用C语言来编辑一个输入密码的程序
  6. linux用户可以分为,【简答题】Linux 中用户可分为哪几种类型,有何特点 ? (1.0分)...
  7. 150款+炫酷的CSS3 loading加载动画,总有一款适合你
  8. 前端小制作 Part.3---卡片展示
  9. Nexus数据备份恢复
  10. Photoshop选区例子(三)存储选区与载入选区