带你了解什么叫系统移植及交叉编译
日常生活中,我们时刻不能离手的电子设备,所见所用的办公,娱乐设施大大小小都离不开系统。离我们最近的就有手机的Android系统或IOS系统,这些系统本来并不能直接用在我们现在的商品手机上,需要一定的修改,而所谓的系统移植就是通过优化,修改使其成为符合我们使用习惯的一个过程。
交叉编译是系统移植过程中代码由高级语言转换为机器码的一个步骤,即我们在电脑或其它平台上写好的代码,需要以目标平台的工具链进行转换才可使用的一个过程(包含库移植)。
[库移植实战问题注意点1:找不到交叉工具链(建立软连接方法)时改为绝对路径 或 修改环境变量.bashrc]
下面给大家见见网上搜索到的系统移植的详细操作步骤(包含四大部分,内容较多,建议分段阅读)
http://www.cnblogs.com/jiangzhaowei/p/6136879.html
可能您所好奇的MIUI ROM 制作: http://www.miui.com/thread-842680-1-1.html
而在实际开发过程中,我们拿到新开发板(包含手机研发时)通常也会考虑板子上电及之后硬件层面会发生什么事情,都是什么工作原理,关心用的是否是uboot,与其它有什么不同等等,还会思考用这块芯片能发挥什么性能,做些什么产品。
球场大佬,系统的大脑.png
下面列举一些可能接触到的概念及资料
1.板级支持包(BSP)(Board Support Package)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。在嵌入式系统软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。
- ADS与GCC
都是Arm软件开发的工具,一般公司会有自己的交叉工具链。
一般LINUX、UCLINUX 的移植于开发都用GCC。
而不带OS或者移植简单的ucos,多用ADS进行开发。在Windows PC上,多用于ADS. LINUX的操作系统或者通过虚拟机的LINUX,多用GCC.
ads直接编译生成的.bin文件可以在没有os的板子上跑啊,干嘛还要什么gcc编译? 你只要设置ads的配置参数就行了呀。如果是在linux下,就要下载一个交叉编译工具,解压后把工具的路径设置成环境变量,然后arm-linux-gcc 编译,就可以生成你要的在板子上跑的代码了。
通过对部分系统源码的接触学习过程中,我个人想法是能否实现一款基于私有云同步的手机系统,既包含语言助手(可进行语言唤醒,支持本地化/方言,又能免唤醒词),希望看到本文的您也能一起努力,实现一款自己满意的作品。