ETRD博客

Electronic Technology Research&Development


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

为联发科Linkit-Smart-7688编译openwrt的方法

发表于 2017-05-11 | 分类于 linux | 阅读次数:

引言:

​ 正式接触linux实际上是今年年初,因为有个项目需要将程序运行在嵌入式平台,而在此之前我大学四年及工作两年几乎都游走在基于Cortex-M单片机的周边。在我印象中ARM开发板都是一块很臃肿很庞大的电路板,然而前阵子我偶然找到了联发科联合seed出的一款开源硬件Linkit Smart 7688平台,非常的小巧精致,然而它仍然可以运行一个Linux系统-openwrt。这篇文章给出了详细的为Linkit Smart 7688平台编译openwrt系统的方法,及可能遇到的问题的解决办法。

Linkit Smart 7688 简介

​ Linkit Smart 7688 基于联发科MT7688AN芯片设计,MT7688AN芯片核心为 MIPS24KEc,主频580MHz。Linkit Smart 7688 拥有32MB Flash,128MB DDR2 RAM,这个Flash和RAM的大小使得我们可以做很多普通单片机平台无非完成的工作。它还板载wifi、USB、SD卡接口,使得其可以进行丰富的扩展,它被称为一台可以放进口袋的linux机器。

QQ截图20170511191531

编译openwrt系统的动机

​ 实际上,联发科官方已经提供了一套现成 boot镜像、系统镜像、以及Linux和OS X上使用的交叉编译工具链。因此对于普通的应用来讲,既然已经有了现成的可运行的系统、我们只要通过交叉编译工具开发我们的应用程序就可以了,为什么还需要重新去花大量的时间去重新编译一次系统。我Google了很多linkit Smart 7688的入门资料,我们发现很多朋友一上来就是要重新编译系统,我就非常不能理解。我主张尽量使用现成的东西,因此拿到这款板子之后,我做的第一件事情是烧录官方提供的最新的系统镜像文件让板子运行起来,接着便开始使用交叉编译工具编译我项目的应用程序,我验证发现,这个项目的应用程序经过交叉编译后可以运行在这个板子上。因此我决定将它作为这个项目的一款首选平台,但是它的硬件串口数量似乎太少了,只有3个串口,有一个串口还默认是调试功能,但还好它有USB,完全可以通过CP210x进行串口扩展,然而我发现USB识别不了CP210x USB转串口芯片。实际上linux内核是已经包含了CP210x的驱动的,只是联发科提供的系统没有将其编译进去,因此我需要重新配置系统编译选项,将USB转串口的驱动程序编译到系统中,这是我要为MT7688重新编译openwrt系统的动机。

阅读全文 »

ISOEBBS发布袖珍型Jlink仿真器

发表于 2017-03-11 | 分类于 MCU | 阅读次数:

近日,ISOE论坛官方发布了一款精致的J-link仿真器,仅仅只有U盘大小,该款仿真器经过了近半年的稳定性测试,不掉固件,抗干扰能力强,现正式对外销售,售价仅30元(购买链接),旨在为广大电子发烧友提供一款轻便、功能强大的仿真调试利器。

QQ截图20170313115428

该款仿真器特性:

  • 支持三线SWD接口(SWDCLK,SWDIO,GND)
  • 支持所有基于Cortex-M内核的单片机,Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4F ……
  • 支持ST(stm32系列)、Cypress(FM系列)、NXP ……各大厂家基于Cortex-M内核的芯片
  • 抗干扰能力强,不丢固件
  • 兼容J-Link-V8的驱动及软件
  • ISOE论坛官方提供强大的技术支持
  • 批量购买可开具正规发票

ISOEBBS团队拥有多年Cortex-M MCU开发及技术支持经验,可以助你解决在仿真和调试过程中遇到的问题,使您可以专注于产品研发而无需浪费时间在开发环境的搭建上。

使用VNCviewer远程访问树莓派的HDMI输出桌面

发表于 2017-02-20 | 分类于 树莓派 | 阅读次数:

引言

之前的文章里有实现在Windows下通过微软自带的远程桌面,可以通过pi用户远程登录到树莓派上的方法,实现本机PC对树莓派的相关操作。但实际上通过这种方法访问的树莓派桌面与树莓派HDMI口输出的真实桌面是不同的,它们似乎是只共享了存储和文件而已,它们的桌面实际上是不一样的。如果需要查看并且操作树莓派真实的HDMI输出桌面,一种方法是给它接上屏幕、鼠标、键盘。另一种方法是可以通过在树莓派上安装x11vnc并启动服务,在Windows PC端或者Android手机端通过VNC Viewer来进行远程查看并操作树莓派真实的HDMI输出桌面。

需求的提出

  • Visual studio 2013结合VisualGDB插件对目标运行在树莓派上的Qt程序进行交叉编译后进行远程调试的时候,可以通过Xming来在本机显示出Qt在树莓派上的运行界面,但总感觉有点慢。在调试的时候还可以选择界面输出显示在远程机器上:

    QQ截图20170220201604

    注意这个Shown on the remot computer是指树莓派实际的HDMI输出,你通过Windows远程登录的桌面是看不到调试时候的Qt程序界面的。

    所以我才需要VNC Viewer来查看并操作树莓派的实际HDMI输出桌面。

  • 手机可以安装VNCviewer,可以用手机充当树莓派的屏幕,也很方便。

阅读全文 »

搭建树莓派3上的QT环境并使用VS交叉编译开发的方法

发表于 2017-02-19 | 分类于 树莓派 | 阅读次数:

引言

之前已经实现在Windows上使用Visual studio和VisualGDB插件交叉编译开发普通的C工程代码,并且也已经验证VS交叉编译生成的文件放在树莓派上是可以直接运行的。接下来想开发在树莓派上运行的界面程序,毫无疑问,大家想到的应该都是QT,但是如何在树莓派上搭建QT环境,又如何在Windows上使用VS开发并交叉编译QT应用程序,这给我造成了很大的困扰。本文根据个人实践介绍一种最简单、工作量最少的快速在树莓派上搭建QT环境的方法。

研究现状

Google查找了大量的资料,发现基本都在使用同一种方法,就是在Windows或者Ubuntu的PC机上先用交叉编译工具使用树莓派raspbian系统中的头文件及库将QT本身编译一遍,然后将交叉编译出来的Qt文件上传到树莓派上。然而很不幸的是这个编译过程相当复杂,编译过程可能缺少的东西也会很多,更要紧的是即使是多核PC机编译也需要花费大量的时间,6、7个小时之久。可是,为什么是这个思路?必须这么做还是只能这么做。

根据前面使用树莓派的wiringpi这个库的经验,我个人的思路是这样的:首先在树莓派上安装好QT需要的相关库或者文件,然后同步到Windows的交叉编译的工具链文件目录中,然后Windows下VS交叉编译的时候直接调用同步过来的库和文件就应该可以生成在树莓派上能直接运行的程序了。

因此应该首先在树莓派上装好QT,看过一篇文献,里面提到将Qt的源码下载下来,然后在树莓派上进行编译Qt本身进行安装,时间长达38小时之久,因为树莓派本身运行速度的问题,或者这就是后来很多人又在Windows或者Ubuntu的PC机上进行交叉编译Qt本身的原因。可是,为什么每个使用Qt的人都需要自己将Qt本身编译一次,如果我们使用同样的系统,同样的开发方式,理论上我应该完全可以用你编译好的Qt文件,我为什么还需要自己再去浪费7、8个小时,而且很可能还不成功。应该有组织甚至是官方帮我们在对应的系统上预编译好了我们直接用就行了。实际上是有的,Debian Jessie官方就提供了已经编译好的Qt5的包。

先决条件

  • 树莓派的系统是Raspbian Jessie

从参考文献的第一句话可以看出,Debian Jessie在官方仓库中提供了Qt5的包

1
This tutorial shows how to create graphical applications for Raspberry Pi running the Debian Jessie distro using the Qt5 package provided by the official repository.

由于Raspbian Jessie基于Debian Jessie,因此自然是可以的。

阅读全文 »

树莓派3硬件串口的使用及编程

发表于 2017-01-29 | 分类于 树莓派 | 阅读次数:

引言

通常学习一块新的硬件平台,大家第一个工程便是流水灯,实际上这属于IO口的基本控制,这与上篇文章VS使用wiringPi库控制树莓派的GPIO是异曲同工的,接下来便应该是开始使用其通信接口,而通信接口里面最简单的又属串口(uart),虽然简单但目前仍然有很多模块是以串口作为通信接口的,如一些蓝牙模块、低速wifi模块、GPS模块、GPRS模块等。树莓派3代与之前的树莓派相比除了CPU性能上的提升外,还有一个显著的特色便是板载集成了WIFI及蓝牙,正是由于集成的这个蓝牙模块,又使得树莓派3代的串口使用相比于之前版本有了些麻烦,本文的目的便是解决这些麻烦并编写验证了一个简单的串口代码。

树莓派3代串口的麻烦

树莓派从大的方向来说一共出了3代,每一代的CPU外设基本相同,但内核不同,外设里面一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了,虽然你可以固定内核的时钟频率,但这显然不符合低碳、节能的口号。在所有的树莓派板卡中都通过排针将一个串口引出来了,目前除了树莓派3代以外 ,引出的串口默认是CPU的那个硬件串口。而在树莓派3代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO Tx Rx,下图是树莓派3的接口图

QQ截图20170129145844

其中红框中就是引出的串口IO,如果我们需要通过UART外接模块,默认情况下必须得使用性能很低的mini串口了,而且随着内核主频的变化,还会造成波特率的变化导致通信的失败,几乎很难使用。所以我们希望恢复硬件串口与GPIO 14/15的映射关系,使得我们能够通过GPIO使用高性能的硬件串口来连接我们的串口设备。

阅读全文 »

VS使用wiringPi库控制树莓派的GPIO

发表于 2017-01-27 | 分类于 树莓派 | 阅读次数:

引言

前面我们已经实现了在Windows下使用VS建立工程并利用交叉编译工具链可以编译生成在树莓派上可以运行的程序。众所周知,现在各个研发公司完全从0开始做开发已经不常见了,较为普遍的是基于一些已有的代码来加速开发自己的应用。同样的,很多具有开源精神的技术牛人为树莓派或者说Linux写了很多库,不管是不是开源的,它们编写的初衷都是将这些库直接安装到对应的系统中,由对应的系统进行调用的。那我们使用交叉编译工具的情况下,在Windows平台下使用Visual Studio开发,如果VS不知道这些库没法引用相应的库文件,那是没有办法编译的,更别谈生产执行程序了。因此本文解决的问题非常简单,思路也非常清晰,在VS中同步树莓派中安装的库文件以进行调用。

wiringPi简介

这是一个开源的控制树莓派的GPIO库,使用他提供的API可以方便的操作树莓派留给用户的GPIO口。通常要控制一块芯片的GPIO最原始的做法是根据芯片的datasheet去控制对应的寄存器来实现,但这需要用户对芯片本身及硬件底层比较了解,而wiringpi则可以让你完全不懂底层也无需关系芯片datasheet的情况下调用API即可实现控制。它的源代码及相关信息在其官网提供。使用这个库之前当然得安装,本文的主要内容就是安装这个库并在VS中同步它。

VisualGDB的配置

VisualGDB这款插件,它的便利性就在于,它可以非常简单的帮我们实现Windows下交叉编译工具链中的库文件与目标系统树莓派中的库文件的同步,这样子VS就可以轻松引用相应的头文件,并进行函数调用了。

打开上一篇文章中在Windows下建立的第一个工程,在VS的解决方案资源管理器中右键,选择 VisualGDB Project Properties

QQ截图20170127102437

阅读全文 »

Windows下建立第一个树莓派应用程序

发表于 2017-01-25 | 分类于 树莓派 | 阅读次数:

引言

摸索了几天树莓派,基本对其有了一个基本而肤浅的了解,前面已经实现了在Windows下对树莓派进行远程桌面连接,因此我已经迫不及待的希望开始对其进行应用开发了,我牢记着自己的目标,是要在上面实现一个全是C代码的工程,而不是纯粹来玩这么一个小型的电脑,因此相同功能的实现方法我似乎没有太多的选择,我的选择只有一个,就是在上面运行一个C语言的工程。

因此,如何开发在树莓派上运行的C程序,以及用什么IDE(集成开发环境)开发,在什么个系统下开发成了核心的几个问题。

树莓派基础

Raspbian系统

Raspbian是基于Debian Linux的一个系统,因此我理解它就是一个基于Linux的系统,只是针对树莓派这个平台做了相应的优化和修改。Raspbian又分Raspbian Wheezy和Raspbian Jessie两个版本,原因是它们基于的Debian的版本不同,Raspbian Wheezy基于Debian Wheezy,Raspbian Jessie基于Debian Jessie,现在较新的是基于Debian Jessie的Raspbian Jessie系统,我现在的树莓派安装就是这个系统,是3-18号以后的版本。因此我的理解是Linux衍生出了Debian Jessie,Debian Jessie又衍生出了Raspbian Jessie。因此我觉得开发在Raspbian Jessie上运行的应用程序实际上是开发在Linux上运行的应用程序,但很遗憾,我还未曾正式接触过Linux,因此即使弄清楚了这个关系,我也还是从0开始。

阅读全文 »

hexo中完美插入本地图片

发表于 2017-01-23 | 分类于 hexo使用 | 阅读次数:
引言

Hexo一个很好的博客框架,然而插入本地图片的路径问题让人十分头疼,因为在最后生成public的html文件时,每篇博文都是生成在用年月日做文件目录的文件下,例如

1
\blog\public\2017\01\22\Windows下远程桌面连接树莓派3代

而主页的html文件又是这个文件下,与博文的目录肯定是不同的

1
\blog\public

这与我们在

1
\blog\source\_posts

目录下编写博客md源文件时的目录结构是完全不同的。

在hexo的官方文档资源文件夹章节上,其提供了一种插入图片的方面,但是非常遗憾,它竟然是使用标签插件的方式,而不是markdown语法。据了解这实际上是一个Hexo 3之前网友为图片路径问题开发的一个插件,这个插件被集成在了Hexo 3里面。这个插件的使用方法官方给出是这样的:

1
2
3
{% asset_path slug %}
{% asset_img slug [title] %}
{% asset_link slug [title] %}

这种奇怪的方式我不明白为什么会被官方采纳,因为它最大的弱点在于,在编写文章时,你看到的是一行标签代码,而不能显示图片,也就是使用markdown编辑器进行文章编写时,不能可见即所得。

Hexo环境

Hexo环境的搭建看过不少文章,但对我而言是极其繁琐和陌生的,而我的目的主要在于利用它来写博客,我在意的是我博客的内容而不是搭建博客自身的过程,因此我是直接使用了Hexo懒人携带版 / PortableHexo,它的优势是,纯傻瓜式操作,无法安装hexo git nodejs等环境,压缩包解压直接用,直接发布,十分感谢这个懒人包团队的工作。该懒人包内相关软件的版本如下:

1
2
3
4
5
版本 / Version
Git: 2.7.4
Nodejs: 4.4.0
Npm: 3.8.3
Hexo: 3.2
阅读全文 »

Windows下远程桌面连接树莓派3代

发表于 2017-01-22 | 分类于 树莓派 | 阅读次数:
引言

树莓派相当于一台小型的个人电脑,所以我们在使用时通常需要外接显示器、键盘、鼠标,但通常情况下我们是将树莓派作为一个开发平台,因此单独为它弄台显示器键盘什么的非常不方便,因此我希望在自己熟悉的Windows环境下,通过远程桌面的方式链接到树莓派开发板上,这样可以使用自己电脑上的键盘鼠标,甚至是显示器为树莓派远程服务了。树莓派我昨天刚开始接触,所以远程链接方面还是绕了点弯子,下面记录下步骤以供参考。

准备工作

首先,你的树莓派需要安装好系统,我买回来时,店家已经帮我装好在SD卡中了,安装的是树莓派官方推荐的raspbian jessie系统,版本就不提了,我想应该与后续的步骤并不太相关。

其次,单独使用键盘鼠标屏幕配置你的树莓派连上网络,由于树莓派3板载WIFI模块,因此我配置它连接到我的无线路由器上面,如果是有线链接,我想应该是无需任何配置的,当然我没有尝试过。

QQ截图20170122162631

通过路由器,你能够看得到树莓派的IP地址,这个IP地址后面在远程链接时会用到

QQ截图20170122163331

阅读全文 »

博客建立的初衷

发表于 2017-01-20 | 分类于 随笔/感悟 | 阅读次数:

  实际上,我07年才开始接触的互联网,当然首先接触了QQ及QQ空间,接着就开始注册并使用了新浪博客,在读大学之前,这些地方都是用来瞎写一些乱七八糟的东西,我翻看了很早的一篇新浪博客旧文,我竟然写的是关于高三模拟考试的事情,我已经很难回忆起当时为什么写这玩意写给谁会看。进入大学以后,开始接触学习一些与专业相关的知识,互联网真是个好东西,可以通过搜索引擎找到很多学习需要的资料,随后自己也想写些技术博客,一来是记录下学习过程中的关键问题方便以后自己查阅,二来也是希望将自己微薄的经验分享到互联网或许能给后来的人提供一些参考,因为人总不能一味地索取而不贡献。

  随后开始将自己的一些技术笔记写在新浪博客上,毕竟新浪是个大平台,写出来的博文半小时后就能被搜索引擎搜索到。当然也收获了不错的效果,我在上面留了邮箱,经常会有一些网友通过邮件与我交流相关的问题,绝大多数网友都非常有礼貌,邮件里首先会简单描述自己是xx大学xx专业的学生,目前正在学习xx,遇到xx问题,看到您的博客有些问题想探讨一下,很多情况下能跟他们成为可以经常在技术方面交流的朋友。但有些网友则不一样,他们一上来什么都不说就问你“xx代码能不能发我一份”,很遗憾这种邮件我一般不太愿意花时间回复,我认为首先应该尊重别人的劳动成果,而不是伸手就要。印象比较深刻的是,大四那年我在调试微型四轴飞行器的时候,使用ADI公司的三轴加速度传感器做了一个简单的重力感应电脑游戏遥控器的demo,然后写了一篇博文。半年以后,ADI官方在微博中私信我,说希望转载我的文章,我欣然同意,随后这篇文章收录在ADI官方中文技术支持论坛,实际上这篇文章被很多网站都转载了,你可以百度搜索“ADXL345 遥控器”看看。因此,写技术笔记这件事情我必然是会坚持下去的。

阅读全文 »
launcher

launcher

R&D

10 日志
5 分类
34 标签
新浪微博 新浪博客 优酷视频 邮箱登陆 Twitter Facebook
友情链接
  • ISOE官方论坛
  • DD的博客
  • 水番林
  • 美丽应用
  • 张大侠
  • OKDCC
  • vincentstudio
© 2020 launcher
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4