文档章节

Linux On ARM开发纪要

openthings
 openthings
发布于 2015/04/28 08:58
字数 1115
阅读 124
收藏 1

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

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

    尽管微软已经耐不住寂寞,大部分使用ARM的设备还是Linux或是类Linux的系统内核,因为Linux的可裁剪性非常好,而且可用的资源非常非常多了。在“软件定义世界”的思路引领下,Linux on ARM必将是未来的大潮流。

    Linux on ARM与X86体系下的不同点是采用“设备”的概念,“X86下的BIOS”是可以自己烧进去的(就是那个启示时按个烧写键,就把引导区少到Flash的指定区域了,这个地址在给定板子上是不能变的),这个叫boot-loader,一般用的u-boot。当然,因为u-boot是开源的,因此出现了很多变体,但基本上都是大同小异。

    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的版本了)。

    当然,这个步骤还是有点麻烦的。很多牛人直接运行Python或者LUA、JavaScript的脚本,可以直接在所有的平台上运行,现在基于ARM Cortex M0的脚本引擎都已经出来了(完全开源的,但还在发展中,有的功能还无法完全调用),比如NodeMCU、MicroPython等等。

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

    Ubuntu Touch通过QML完成类似的功能,使用的是QT来封装的,可以混合HTML和本地API调用,无论显示效果和一致性都是非常好的。

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













© 著作权归作者所有

openthings
粉丝 320
博文 1129
码字总数 675031
作品 1
东城
架构师
私信 提问
arm-linux gdb调试工具的安装

开发环境:AT91SAM9X25开发板:安装linux2.6.39; pc的虚拟机:Linux version 2.6.18-194.el5 (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) ,arm-linux-gcc的版本为version 4.4.3 一、......

钟一鸣
2014/09/30
2.6K
0
Linux 之父和 Redis 之父在这事上有分歧了

(给程序员的那些事加星标) 近日,Arm 宣布了其即将到来的新产品 Neoverse N1 平台和 E1 CPU。 https://www.anandtech.com/show/13959/arm-announces-neoverse-n1-platform 据官方介绍,这两...

程序员的那些事_
02/24
0
0
x86 和 ARM 谁能主宰服务器市场?Linux 之父和 Redis 之父有分歧了

近日,Arm 宣布了其即将到来的新产品 Neoverse N1 平台和 E1 CPU。 https://www.anandtech.com/show/13959/arm-announces-neoverse-n1-platform 据官方介绍,这两款产品实现了对基础架构性能...

局长
02/24
8.4K
25
激光雷达学习笔记(六)ARM-Linux平台算法移植

在写第一篇激光雷达的日志我就说,激光雷达的算法开发的最终的目标是移植到嵌入式设备上, 因为在机器人定位时,不可能用一个很大很重的设备,因此最理想的还是ARM平台,(工控机也可以 考虑...

dddxxxx
2018/05/11
0
0
​​​​​​​opencv 移植到迅为IMX6开发板

OpenCV 是目前开源项目中最著名的基于机器视觉方向的图像处理的开发包,目前已经有被移植到嵌入式 Linux 环境上。本文介绍了 OpenCV 交叉编译的基本步骤。 一、编译环境及库文件 linux 环境:...

tb9204778_2012
08/14
37
0

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在做 Taro 适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 解决跨域问题 h5 发请求会报跨域问题,需...

dkvirus
44分钟前
3
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
2
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部