最近一直在看嵌入式系统方面的教程,包括arm和linux方面的知识,虽然看了不少,但除了linux外别的方面都还没有实践过,不过大体上流程还是能下来的,最近看书看的有点烦了,于是就把最近学习的笔记和心得写出来,下一步就是买一块arm9开发板进行学习。
我认为嵌入式系统的定义应当是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。比如现在ATM取款机就是一个典型RTOS,embedded os主要包括两部分,一部分是处理器,比如ARM,POWERPC,MIPC,一部分是OS,比如linux,wince,vxworks,us/os,etc.我现在主要学习的路线是arm+linux,选择arm主要是因为arm技术已经比较成熟,选择linux是因为linux是开源的,免费的,另外如果学好了linux就算将来不搞嵌入式系统开发这块,也可以专供linux服务器这一方面。
学习嵌入式linux,主要做的就是四点,一点就是写bootloader,并移植到到nand flash上,第二点,编译kernel,并通过bootloader下载到nand flash上,第三点,在基于nand flash上建立文件系统,第四点,把写好的应用程序下载到target上。基本流程就是这么下来的,具体到开发板上时可能就有所差别了,下边就以深圳优龙公司的fs2410为目标板具体的上述一下开发的流程,以及在开发中应注意的问题。
第一步:交叉编译环境的建立
A: 基于linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主pc机所构成。目标硬件开发板用于运行操作系统和系统应用软件。而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主pc机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口建立连接关系。安装linux os,比如redhao linux 9.0,可以采用默认安装(但要包含ftp服务),将该linux服务器接入局域网,其他的pc机可以用windows,需要的软件工具包括
(1)ftp客户端程序(2)telnet工具(3)移植到某一特定arm平台的linux操作系统内核源码(4)gnu编译工具,可由相关网站下载
在某工作站pc上安装ftp客户端程序和telnet工具,linux os kernel的编译一般有一个比较固定的步骤,会根据Makefiel文件的不同而略有差异,可参考相关文档,按固定的步骤编译内核完成以后,会在相应目录生成可执行的二进制文件,通过ftp传到pc机上,热后通过串口或网络下载到开发板上。
B:(1) 创建编译环境,在这个过程中,将设置一些环境变量,创建安装目录,安装内核源代码和头文件等。
(2) 创建binutils.在这个过程结束后,会创建类似arm-linux-ld等工具。
(3) 创建一个交叉编译版本的gcc,注意:在这个过程中,只能编译c程序,而不能编译c++程序。
(4) 创建一个交叉编译版本的glibc,这里最容易出问题。
(5) 创建一个交叉编译版本的gdb。这个过程结束后,会创建arm-linux_gdb
(6) 重新创建gcc。前面创建gcc的过程没有编译c++编译器,现在glibc已经准备好了,所以这个步骤将完善gcc的交叉编译。
linux嵌入式系统学习
内容版权声明:除非注明,否则皆为本站原创文章。