|
在网上看到很多有关作arm的操作系统(OS)移植的文章,多数是基于linux操作系统的,这就给我一个印象:是不是搞嵌入式一定要懂linux?带着这个问题,查阅了一点资料!对此有了一点认识:
首先,ARM只是一个32位处理器,可以像51单片机一样用汇编直接操作它的寄存器、RAM、ROM等内部资源,当然也可以用C语言!那么如果只是把ARM当做单片机来用,那就有点大材小用了,那也就没必要学什么linux了。
事实上,ARM是通常都是用来做比较复杂的系统的,而且一般都是多任务系统的,当任务比较多,程序比较大的时候,只用汇编和C可怕难以胜任,所以我们应该给ARM配一个操作系统,用来管理这些任务,那么对于ARM,我们可以作使用哪些操作系统呢?Windows XP行吗?当然不行,太大了,不适合做嵌入式,微软倒是推出了专门针对嵌入式系统开发的WinCE,可是这可不是免费的,而且不提供源码的,给你就像一个黑夹子,对于一般的嵌入式学习,就不太合适了?那么什么样的操作系统才能用于做嵌入式呢?嵌入式操作系统通常有Vx works 、WinCE 、uC/OS、Linux / ucLinux等。而uC/OS、Linux因为其免费,而且开源,深受学习者和小公司的欢迎。
uC/OS操作系统内核很小,特别适合初学,而且它是占先式内核,是一个实时的操作系统,特别适合实时性要求较高的场合,其内核很小当然其功能当然也就没有linux强大,而且uC/OS的图形用户界面(GUI)还是刚有雏形,没有linux的GUI好,而它的GUI是收费的。这样的话只是linux是最好了,但是linux本身不是实时的操作系统,不适合实时性高的场合,于是ucLinux产生了,ucLinux是一个实时操作系统(RTOS),因此学习ARM+ucLinux的人较多。
所以,如果只搞uc/OS+ARM,那就可以不学linux了,如果想学习ARM+ucLinux,要在ARM上移植linux,那么移植后,这个装有linux的ARM处理器,当然只能运行linux环境下编译出来的应用程序(这里还有一个交叉编译的概念需要正确理解),所以理所当然要学linux。通常小红帽Red Hat Linux 使用比较广泛,那么不能在Windows下开发ARM+ucLinux吗?其实倒是可以在Windows使用虚拟机软件VMware装一个linux,但那样不如直接装个Linux来的爽快!
综上所述,让我搞懂了为什么搞arm要学linux!