embedded linux学习中几个需要明确的概念

有些童鞋可能很奇怪,为何我一开始说BBB,后来反而尽扯一些无关的呢?其它,一开始我写关于BBB的blog是仅是想记录我的一些历程,现在想做点有用的、对大家有帮助的事,开始的记录的顺序可能就不合适了,反正BBB也很熟悉了,现在是补记录,要补还是补全一点,还有,希望不误导人!

我做测量系统做了十五年,最早是最硬件和下位机软件,因此对硬件的东西很熟悉,从51到cortexM3(但cortex-A8不熟悉!),后来做上位机软件多一点,再后来偏于管理。不谦虚的说,我写的测试软件不是最好的,但其可靠性是一流的,因为我的产品测试是很全面的,从静态到动态,一个软件下来,测试用例用比软件本身还庞大。为什么突然说这个呢,因为我发现许多朋友,是因为好玩才玩BBB,并不定有我这样的经历,因此才想说一定要清楚几个概念。

一、linux

它仅仅是一个核心(内核),其它的redhat/debian/ubuntu等都是在其之上的一功能软件的集合体。

二、编译内核、uboot等

初学者没有必要一开始就干这个吃力不讨好的事情,因为你很可能都不知道你为什么需要做这个事儿。

只有原生的系统内核中,你需要的功能没有,或者你想将你需要的功能加入内核,让系统一启动就自动运行(当然这也有其它方法实现),才会做这个事儿。

编译uboot是你的硬件系统改变,比如说是Nand的地址、MCU类型等与系统启动相关的东西发生改变,你需要适应性的修改才会做这些事。

三、cross-toolchain是什么?

你使用的x86架构(不管用win还是linux),而你用写的应用程序想在ARM架构下运行(不管是embedded linux还是ucOS),怎么办?

当开发和应用的系统架构不同时,你需要一个工具,这个工具能够将架起不同平台之间的桥,这就是cross-toolchain。简单的例子,用x86平台的宿主机,开发出运行于ARM架构目标机的应用程序,这期间所需要的编译、调试等工具就是一个cross-toolchain。

很多的BBB的开发是基于linux,通过cross-toolchain,生成应用,通过ftp或其它共享工具,发布应用到目标系统,这是一个典型的cross-toolchain的应用。其实,在win下一样可以通过cross-toolchain开发、发布BBB的应用(我也经常这样做)。

因此cross-toolchain的本质是硬件系统架构不同,而非OS系统架构不同!

四、SDK一定要用吗?

我的建议是,你在初期(或熟悉期)最好不用,如果你对linux本身比较熟悉了,你可以使用,这会使效率提高。

初期其实最重要的工作是熟悉硬件和软件平台,而非应用接口,何况这个应用接口还是硬件相关的。

当你自己能够熟练的使用、搭建自己的工作环境,你会发现,你对系统的了解上了一层楼。


欢迎猛拍!

PS:后续,我开始说正事儿,当然,也基本是离不开BBB的使用,不想多说firmware开发的事儿,基本的顺序是:建立基本的开发环境——测试一下应用程序开发——结合一个cape的开发,简单说点硬件和系统——再回到应用开发,说点linux环境上位机和下位机软件开发——如果我后续时间允许的话,我结合BBB和一个产品的开发,详细说一个产品的全生命周期中的相关技术问题和解决的历程。

你可能感兴趣的:(embedded linux学习中几个需要明确的概念)