Linux On ARM开发纪要

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和内核相同可以二进制兼容)。

时间: 2024-10-07 15:55:34

Linux On ARM开发纪要的相关文章

(转)嵌入式linux与ARM开发板的入门建议

第一,学习基本的单片机编程. 对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统.学移植那么只会马上就陷入一个很深的漩涡.我在刚刚开始学ARM的时候是选择ARM7(主要是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS 去编程,第一个实验就是控制 led.学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此

Linux下ARM开发环境搭建

本人的系统环境:Linux ubuntu 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:25:33 UTC 2013 i686 i686 i686 GNU/Linux 1.安装skyeye sudo apt-get install skyeye skyeye -h可以看到skyeye的版本号为1.2.5 也可以到http://sourceforge.jp/projects/sfnet_skyeye/releases/下载skyeye源码,由于本人系统问

linux嵌入式开发新方法:阿里云+arm开发板

我们学习arm-linux开发常常需要在自己的电脑上安装虚拟机,虚拟机运行linux操作系统,对于一些没有或者不能安装虚拟机的电脑就不能进行arm-linux开发. 但现在我介绍一种新的方法,使用阿里云计算. 准备: 1.阿里云Linux操作系统 2.arm 开发板 3.window上需要的软件:putty.tftp. 步骤: 1.申请阿里云计算服务器,我选的ubuntu,1核,512内存,100M宽带(流量计费方式). 2.配置linux的nfs服务,创建根目录下forlinux文件夹为NFS

Linux+Windows+ARM联合开发

配置环境一: 第一步:安装虚拟机 1)安装虚拟机+Linux12.04 2)安装FTP软件 第二步:配置超级终端(串口) 1)开发板软件(友善之臂自带)安装 2)下载超级终端:http://www.newasp.net/soft/16364.html 注:网上下载的跟winXP一样的超级终端不太好用,老是断,经验证,这个破解版本较好. 3)设置串口.波特率进行连接. 第三步:修改ARM开发板IP地址为静态地址 1)到目录下: cd /etc/init.d/ 2)打开ifconfig-eth0文件

嵌入式开发板丨ARM开发板 学习必备资料- 迅为电子

摘要: ARM开发板 迅为三星Exynos嵌入式开发平台超强GPS模块 iTOP-Exynos4412开发板采用 Exynos4412的主芯片,具有更高的主频和更丰富外设,配置 2GB 双通道 DDR3的内存及 16GB 存储,具有稳定性强.可靠性高,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合. iTOP-Exynos4412开发板内置有无线 WIFI 模块.Bluetooth.GPS.Camera.3G等模组,支持 HDMI1.4(1080P/60Hz)显示,客户可以直接从开发平台

《Linux设备驱动开发详解(第3版)》海量更新总结

本博实时更新<Linux设备驱动开发详解(第3版)>的最新进展. 2015.2.26 几乎完成初稿. [F]是修正或升级:[N]是新增知识点:[D]是删除的内容 第1章 <Linux设备驱动概述及开发环境构建>[D]删除关于LDD6410开发板的介绍[F]更新新的Ubuntu虚拟机[N]添加关于QEMU模拟vexpress板的描述 第2章 <驱动设计的硬件基础> [N]增加关于SoC的介绍:[N]增加关于eFuse的内容:[D]删除ISA总线的内容了:[N]增加关于SP

ARM开发比51开发高级吗—嵌入式就业技能分类

这个问题在嵌入式教育培训中,我回答了很多次.初学者往往都会认为ARM开发比51开发高级,但事实是这样吗?本篇文章就基于嵌入式开发领域的知识点分类的视觉来谈谈.作者在嵌入式领域有超十年的开发经验,本文也代表作者对嵌入式领域的大体见解. 1.     体系编程方面 CPU体系代表的是某类CPU家族的体系特性,如ARM体系.MIPS体系.X86体系,而嵌入式开发工程师一般是针对集成各种模块的SOC进行编程.因此这里的体系既包括CPU体系,也包括SOC编程.体系编程应该说是嵌入式领域最基本也是最通用的编

Linux设备驱动开发基础

1.驱动概述和开发环境搭建 1.1驱动设备的作用 对设备驱动最通俗的解释就是"驱动硬件设备行动".驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮训.中断处理.DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据. 由此可见,设备驱动充当了硬件和应用软件之间的纽带,他使得应用软件只需要调用系统软件的应用编程接口(API)就可让硬件去完成要求的工作.在系统中没有操作系统的情况下,工

《Linux设备驱动开发具体解释(第3版)》进展同步更新

本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTEX-A9平台. [F]是修正或升级:[N]是新增知识点:[D]是删除的内容 第1章 <Linux设备驱动概述及开发环境构建>[D]删除关于LDD6410开发板的介绍[F]更新新的Ubuntu虚拟机[N]加入关于QEMU模拟vexpress板的描写叙述 第2章 <驱动设计的硬件基础> [