Linux On ARM开发纪要

    ARM的开发与X86仍是有很多区别的,这里作了一些简单的介绍,以方便X86下的开发者能更快地切换到Linux on ARM的体系下面来。   
node

    ARM近年来的发展可谓如日中天,苹果和Android的使用是最为快速的推进力,而今Windows也支持ARM了,而更小型的树莓派和一些超低功耗模块也都有使用ARM的内核了。
shell

    尽管微软已经耐不住寂寞,大部分使用ARM的设备仍是Linux或是类Linux的系统内核,由于Linux的可裁剪性很是好,并且可用的资源很是很是多了。在“软件定义世界”的思路引领下,Linux on ARM必将是将来的大潮流。
小程序

    Linux on ARM与X86体系下的不一样点是采用“设备”的概念,“X86下的BIOS”是能够本身烧进去的(就是那个启示时按个烧写键,就把引导区少到Flash的指定区域了,这个地址在给定板子上是不能变的),这个叫boot-loader,通常用的u-boot。固然,由于u-boot是开源的,所以出现了不少变体,但基本上都是大同小异。ssh

    boot-loader启动后,就会跳转到下一个地址,开始载入Linux内核,这里头最重要的是文件系统。有了文件系统,就不用再去读写Flash的裸扇区了,而是经过文件系统进行数据文件的操做。而后将会进入命令行界面,有一个叫Busy-box的小程序把经常使用的一些命令都打包到了一块儿,使用起来更方便、体积更小、运行更快。这时候,几乎能干shell下能干的全部事情了。经过ssh就能够实现远程管理了。工具

    若是要进入图形界面,就须要运行一个X11的Server程序,还能够安装xrdp服务,而后经过“远程桌面”进行登陆、管理,就跟运行一个普通的Linux桌面设备如出一辙了。由于ARM的功耗和发热量都比较小,甚至大部分都不须要风扇散热、彻底静音,很是适合各类设备的开发。之后的各类智能设备可能都会成为这个样子,其实就是一台运行Linux的电脑。性能

    既然是一台Linux电脑,那么开发软件也就很简单了。可是,且慢! 由于ARM的设备性能仍是低一些,通常不适合拿来运行IDE,进行代码编辑、编译、打包等工做,因此通常就在PC机上建一个“交叉编译环境”,编译完程序,打成二进制包,再烧写进去。好比Android的ADK就是一套这样的工具集,能够完成编辑、调试、编译、打包等等工做。而OpenWRT是采用的另一套思路,直接能够在X86上面编译生成多个版本的ipk文件,而后经过包管理程序下载安装便可(Android如今也有X86的版本了)。spa

    固然,这个步骤仍是有点麻烦的。不少牛人直接运行Python或者LUA、JavaScript的脚本,能够直接在全部的平台上运行,如今基于ARM Cortex M0的脚本引擎都已经出来了(彻底开源的,但还在发展中,有的功能还没法彻底调用),好比NodeMCU、MicroPython等等。
命令行

    但要在嵌入式设备上获得彻底相同的结果,命令行没有什么问题,图形界面就要费点劲了。能够经过支持HTML5的引擎来完成(这个已经蔚然成风了,如nodejs/PhoneGap/Kendo/React等等)。调试

    Ubuntu Touch经过QML完成相似的功能,使用的是QT来封装的,能够混合HTML和本地API调用,不管显示效果和一致性都是很是好的。ip

    若是以本地显示为主,还能够直接使用QT或者Pyqt进行开发,可使用同一套代码,支持从时钟到工做站、集群级别的应用开发和运行(不一样CPU和Linux内核版本须要从新编译,若是CPU和内核相同能够二进制兼容)。

相关文章
相关标签/搜索