嵌入式开发人员学习x86架构的必要性
原文:http://blog.csdn.net/zoomdy/article/details/50550234
mingdu.zheng at gmail dot com
在ARM横扫全球的年头,嵌入式系统很少使用x86,但是作为嵌入式开发人员学习x86还是很有必要的,原因只有一个:开发平台是x86的!在Mac投奔intel之前,可能有些开发平台是PowerPC的,但在Mac投奔intel之后,我想全世界的嵌入式开发人员使用的开发宿主机应该都是x86架构的吧,无论是intel的还是AMD的,跑不掉,就是x86的。
通过学习x86架构来学习其它架构,虽然CPU架构的具体实现上差别很大,但是基本原理都是一样的,特别是展现给软件的基本特性都是一样的,例如Cache一致性问题,多核并发问题等。如果希望了解这些方面的内容,CPU是x86还是ARM,没有多大的区别,而x86是现成的,大家用的PC就是x86的嘛。即使是一些实现细节上,有些CPU的实现与x86的实现是差不多的,毕竟x86是微处理器的鼻祖嘛,大家参考x86的设计也很正常。
学习宿主机的x86架构,然后让嵌入式软件支持x86架构,让嵌入式软件可以在x86架构上执行。现在,可以利用现成的x86架构的软件工具来辅助开发嵌入式软件了。x86有很多虚拟机、模拟器的支持,在x86下运行调试系统就不需要硬件,弄个虚拟机或模拟器就可以了。有些模拟器,例如QEMU,还支持GDB调试。如此以来,无论身在何方,只要有台电脑就可以进行开发了,什么开发板、仿真器,一边呆着凉快去。等到功能模块完成得差不多了,再到目标机上确认就可以了。确认工作还是要有的,毕竟是两个不同的运行平台,可能会存在一些差异。像驱动程序之类的与硬件有关的程序自然是不能通过这种方式来开发了,还是只能通过目标机来开发。