您的位置 首页 应用

如安在16位单片机上移植linux

一、一些想法一直以来,linux被认为是个32位的现代化操作系统,一般也没有人在8位、16位单片机上面去移植linux。但是,从原理上来讲,从任…

一、一些主意

一直以来,linux被认为是个32位的“现代化”操作体系,一般也没有人在8位、16位单片机上面去移植linux。可是,从原理上来讲,从恣意位数的单片机,都是能够运转linux的——实质上便是个操作体系么,已然ucos能够,为什么linux不可?
所以,我的毕业规划打当作这个选题。当然,尽管从原理上来讲是可行的,可是在实践中遇到了一个非常大的困难,那便是底层的代码量改动非常大。并且linux体系中涉及到许多32位的东西,比方MMU。
后来就萌发了别的一个思路:作为uclinux而言,自身是为了不支持MMU的单片机而规划的,能够考虑移植uclinux到16位单片机上面。一起,linux的前期版别,对ram和flash的要求都比较小,因而考虑移植前期版别的uclinux。
二、新的思路及其价值
可是今日又在google上面查找,忽然见到了如下的文章:
http://dmitry.co/index.php?p=./04.Thoughts/07.%20Linux%20on%208bit
这篇文章是用8位单片机来发动ubuntu,并且宣布时刻也比较新(代码终究修正是在3.22号,最近的网站更新是在4.3号)。其参考价值在于,作者并没有选用传统的“移植”的办法,来将linux的内核直接搬到8位的单片机上面,而是经过参加了一个中间层的办法——首要,作者在8位单片机上面完成了一个ARM模仿器,模仿出来一个ARM环境;其次,将linux内核在模仿的ARM环境中进行了运转。其奇妙之处在于,避开了杂乱的移植进程(以及16位和32位的兼容性问题),将作业首要拘押在如安在8位单片机上模仿32位的单片机(并且模仿了比方MMU、DMA等体系模块,以及UART等外设)。那么这样的作业还有别的一个重要的价值:在要求不高的情况下,咱们能够选用更廉价、更低端的单片机(16位单片机、廉价的32位单片机)来模仿高端的单片机(ARM9系列等等)。
三、新思路的详细完成计划
实践上从原理上来讲,这种思路的完成也很简单。不考虑外设(当然部分外设也能够模仿,比方模仿IIC,模仿SPI)的情况下,实践上单片机内部便是①指令集②寄存器。
首要来说寄存器。实践上32位的单片机,其寄存器都是32位的。一起,每个单片机的中心寄存器就那么几个(比方8086,便是AX BX CX DX,还有DS SS SP等等)。已然是寄存器,那么关于8位单片机来说,32位的寄存器不便是4个寄存器连接起来么?不就相当于一个结构体(或许是数组)么?因而,咱们的模仿器能够考虑用一系列的结构体来模仿32位单片机的内部寄存器。
再来说指令集。不同单片机之间的指令集是不同的,这个道理清楚明了(一起,这个也是阻止linux或许其他操作体系移植的最大的要素,由于移植linux的话最难的部分就在于底层汇编的编写)。可是,汇编言语的实质是什么?实践上便是机器言语的一种表现形式。那么机器言语是什么?不便是0和1么。话又说回来,一切的C言语的程序,终究都需求转化成机器言语才能够碑文——也便是说,C言语和机器言语是对应的。那么,假如我手头有一个ARM编译出来的程序,那么必定全部是机器言语,由0和1组成。假如我知道ARM系列每个机器言语的意义,并且对这个编译出来的程序进行解码,那么就能得到对应的每一句的汇编言语(这也便是所谓的反编译)。那么,假如咱们在8位单片机的程序中,首要读出ARM编译出来的程序中每一句机器指令,然后加以解析,并且将这个机器指令对应的操作进行完成——那么咱们不就经进程序,来完成了ARM单片机中CPU的功用么?那么,这样咱们实践上就经过8位单片机上面的程序,完成了32位指令的解析,也就完成了一个ARM模仿器的作业的大部分。
当然,除了上述两项,还有便是linux运转究竟仍是需求一定量的RAM和外设,因而咱们还要再参加一些外部RAM和FLASH,这些计划没有什么难度,就仅仅作业量的问题啦。
四、一点展望
方才那篇文档的作者,现已完成了ARMv5TE指令集的模仿,也便是ARM9单片机的内核,可是他是发动的ubuntu体系,比较杂乱,并且内核发动也比较费事(模块较多)。事实上,咱们完全能够经过这样一个体系来发动咱们嵌入式的内核,巨细在几M等级罢了,假如精简一下的话,发动会更敏捷,也会更具有实用价值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/263969.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部