基于AT91SAM9G20构建嵌入式Linux系统

发布者:zeta16最新更新时间:2013-10-23 来源: eefocus关键字:AT91SAM9G20  Linux系统  操作系统 手机看文章 扫描二维码
随时随地手机看文章
    本文中使用的目标平台AT91SAM9G20是Atmel公司使用ARM926EJ-S处理器内核开发的一块SoC嵌入式微处理器,主频达到400MHz,具有Atmel 先进的外设DMA 和分布式存储器架构,连同6层总线矩阵,可实现存储器、外设和外部接口之间的多重数据同时传送,而无需耗费CPU的时钟周期。与引脚兼容的200 MHz AT91SAM9260相比,AT91SAM9G20提供多达4倍的高速缓存和片上 SRAM 内存,并具有增强的外接 NAND 闪存错误校正功能,以及更大的以太网 FIFO,能够减少传输延迟。其外部总线接口(EBI)的时钟频率为133 MHz,用于片外存储器的高速数据传送。这些特性使得开发人员可以将WindowsCE和Linux等操作系统移植到基于这块微处理器的目标系统中。

       操作系统也是嵌入式系统的重要组成部分。当今的嵌入式操作系统各种各样,有VxWorks、QNX、Palm OS,Windows CE、Linux, uClinux,ucos ii等,每种操作系统都有其与众不同之处,本文移植的嵌入式操作系统为Linux。广泛开放源代码的Linux应用已经被移植到嵌入式的运行环境中,可以任意剪裁和修改后将其移植入自己的硬件平台上,因此使用Linux开发嵌入式操作系统,可以加快嵌入式系统的开发速度,缩短产品进入市场的时间。

       本文的工作主要包括Boot loader实现,Linux内核移植、文件系统的实现三个部分。

       搭建交叉开发环境

       在移植操作系统之前,首先要在一台装有Linux的PC机上搭建好开发环境,例如我们的宿主机为Ubuntu10.04,为获得所有操作权限,以root身份登录宿主机Linux系统。在 usr/local/目录下建立arm路径,下载交叉编译工具arm-linux-gcc-4.3.2.tgz,将之复制到文件夹/usr/local/arm/下,并将其解压;最后需要修改环境变量,设置默认交叉编译工具为arm-linux-gcc-4.3.2。利用Linux下编辑工具(如vim)打开/root/.bashrc文件,在文件末尾添加如下代码:

       if

       [ -d /usr/local/arm ] ;

       then PATH=/usr/local/arm/4.3.2/bin:"${PATH}"

       fi

       到此交叉编译工具搭建完毕,为验证交叉编译工具是否搭建成功,可以在终端下输入命令 arm-linux-gcc -v,搭建成功后会在终端下显示arm-linux-gcc的版本。注意此处必须注销用户,重新登录系统后设置才会生效。

       引导程序

       系统上电之后,需要一段程序来进行初始化:关闭看门狗、改变系统时钟、初始化存储控制器、将更多的代码复制到内存中等,这段程序被称为Boot loader。简言之Boot loader就是在系统上电后开始执行,初始化硬件设备、准备好软件环境、最后调用操作系统内核。Boot loader的实现非常依赖与具体的硬件,在嵌入式系统中硬件配置千差万别,即使是相同的CPU,外设资源也不尽相同,因此需要根据特定的硬件进行移植。

       Boot Loader包含两种不同的操作模式:启动加载模式和下载模式。上电后,Boot loader从板子上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入,一般用于最终产品。下载模式下则在开发过程中使用,开发人员可以使用各种命令,通过串口或网络等通信手段从宿主机下载文件(比如内核映像,文件系统映像),将它们直接放入内存或是烧入flash类固态存储设备中。

       为了在AT91SAM9G20上实现嵌入式操作系统运行,AT91SAM9G20采用了三.级引导方式,其Boot Loader程序由三部分组成,即RomBoot、Bootstrap和U-Boot,三.级引导程序的流程如图1所示。


图1:三.级引导程序的流程图

       第一级引导程序Romboot固化在AT9lSAM9G20内部,上电或复位后先运行这段引导代码,其作用是将存储于外部FLASH第二级引导程序Bootstrap加载到CPU内部的SRAM中执行。Bootstrap存储在外部FLASH的前4KB空间,其功能包括初始化时钟、SDRAM控制器以及DEBUG串口等硬件资源,并将第三 级引导程序U-Boot从FLASH加载到SDRAM执行。U-Boot将嵌入式Linux操作系统从FLASH引导和加载到SDRAM中,并将CPU的控制权交给Linux。

       本次移植使用的U-boot的版本为1.3.4,限于篇幅,本文不做详细的介绍。

       内核的裁剪编译

       1.准备工作

       从Linux官网下载linux内核源码linux-2.6.30.tar.bz2,并从Atmel官网下载at91sam9g20的补丁文件(2.6.30-at91.patch.gz 和2.6.30-at91-exp.3.tar.gz)。在宿主机Linux开发环境下,建立自己的工作目录,例如工作目录为home/work/,将上述三个文件拷贝至工作目录下,解压Linux2.6.30,并将2.6.30-at91.patch.gz和2.6.30-at91-exp.3.tar.gz拷贝至Linux2.6.30根目录下,同时解压2.6.30-at91-exp.3.tar.gz。完成此部分工作如下图2所示。


图2:准备工作完成

关键字:AT91SAM9G20  Linux系统  操作系统 引用地址:基于AT91SAM9G20构建嵌入式Linux系统

上一篇:基于安卓的非标准驱动程序设计
下一篇:基于MCGS的充电站监控系统设计

推荐阅读最新更新时间:2024-03-16 13:29

嵌入式Linux操作系统的驱动程序开发要点
在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。 字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的CPU时间用来等待。网络设备可以通过BSD套接口访问数据。 每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有2个设备号,第一个是主设备号,标识驱动程序;第二个是
[嵌入式]
整车OS是未来车载操作系统的终极形态
车用操作系统(Operating System,OS)是管理汽车软、硬件资源,并为用户提供通用服务的计算机程序,具备承上启下的作用,是汽车软件化和智能化升级的基石。 在目前人机共驾阶段,智能座舱作为软件定义汽车的可视化窗口,聚集用户可直观体验的功能,强力支撑人机交互,将领跑汽车智能化。作为智能座舱应用与服务底层技术支撑的车载操作系统也将成为竞争重点,众多主机厂纷纷加码布局,打造差异化竞争优势。 基于此背景,盖世汽车研究院从市场和技术两方面来研究车载操作系统产业的发展现状及趋势,供相关人士参考。本报告部分内容如下: 根据《车用操作系统标准体系》,车用操作系统可分为车控OS和车载OS,分别由汽
[汽车电子]
整车OS是未来车载<font color='red'>操作系统</font>的终极形态
linux操作系统交叉编译环境的建立方法
    基于linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口建立连接关系。     但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的旧机器就可以),在该PC上安装桌面的Linux操作系统(如Red Hat Linux 8.0及以上),可以采用默认的安装选项(注意要包含ftp服务),这台PC作为Linux服务器,除管理员以外,一般不直接让其他人去操作。
[嵌入式]
Windows Phone 7荣获“年度最佳操作系统”称号
        在2011年度的“Know Your Mobile ”大奖评选中,Windows Phone 7荣获“年度最佳操作系统”称号,在自己的荣誉墙上再次写下深深的一笔!Metro UI 界面是其主要的亮点,在这里,用户可以自由定制开始界面。区别于IOS和Android一成不变的应用标志,在WP7中,结合live tiles,可以轻松即时从应用图标上获得联系人、IE及各种应用的最新推送消息,真正做到以人为本。       此外,Windows Phone 7还深度整合了微软系列产品,包括Xbox LIVE、Microsoft Office 2010、Zune、Windows Live 以及Bing搜索等,这样,可以更好的和
[手机便携]
芯原和微软携手为边缘设备部署Windows 10操作系统
芯原和微软携手为边缘设备部署Windows 10操作系统 该合作基于芯原全面的IP组合、芯片定制服务和软件开发平台,为基于Arm的SoC平台加快部署Windows IoT企业版 2023年3月15日,德国纽伦堡——芯原股份 今日宣布与微软就Windows 10 IoT企业版操作系统开展合作,合作内容涵盖硬件加速器,以及对功能强大的嵌入式平台的长期支持。 芯原将利用自身的嵌入式软件设计能力和数十年推出成功产品的经验,使嵌入式应用开发人员和原始设备制造商(OEM)能够基于可信赖的操作系统,使用熟悉的开发和管理工具快速创建、部署和扩展物联网解决方案,并通过微软Azure IoT将设备无缝连接到云端。 基于这一合作,
[嵌入式]
芯原和微软携手为边缘设备部署Windows 10<font color='red'>操作系统</font>
日本担忧智能手机操作系统市场的公平竞争 苹果回应
据《日本时报》报道,苹果公司今天回击了日本政府的一份报告,该报告指出,为了确保智能手机操作系统市场的公平竞争,苹果公司可能会受到新的监管规定的打击。 日本政府的中期报告表达了对苹果和谷歌控制智能手机操作系统市场的担忧,特别是在预装浏览器应用方面,并警告称,他们的政策可能会损害应用提供商和企业。并提议引入新的规则,禁止公司限制用户,并说明了增强市场竞争的好处。 该报告还对开发商必须向苹果支付15%至30%的佣金提出了异议,以及他们只能通过苹果自己的应用商店分发的事实。因此,呼吁操作系统提供商允许用户能够使用第三方应用商店,并要求公司披露有关其系统的全面信息。 苹果在一份声明中表示,“我们不同意日本政府报告中的一些结论”。
[手机便携]
高通联手谷歌,简化Android操作系统升级
高通技术公司和谷歌宣布,双方将合作增强并扩展Project Treble,以助力更多搭载高通骁龙™移动平台的终端运行最新版本的Android操作系统。此次提升意在助力OEM厂商无需调整高通技术公司芯片组的相关软件,即可将其搭载骁龙移动平台的终端升级至Android操作系统的最新版本,并能够利用通用Android软件分支,对搭载高通技术公司骁龙移动平台的终端进行操作系统升级。这些提升旨在减少搭载骁龙的终端进行Android操作系统版本升级所需的时间和资源。 作为此次与谷歌合作的一部分,高通技术公司现将能利用Project Treble的增强特性,从最新推出的骁龙888移动平台开始,在全部骁龙平台上支持四个Android操作系统版
[手机便携]
高通联手谷歌,简化Android<font color='red'>操作系统</font>升级
嵌入式LINUX系统的静/动态集成调试模式
现有的嵌入式LINUX系统开发过程中,所有的工程师都疲惫于使用两种不同的调试模式分别调试系统的内核和应用程序。首先通过一个JTAG调试工具来配置和启动LINUX系统;嵌入式LINUX系统正常运行起来后,就要通过GDB来继续调试工作。 LAUTERBACH公司综合了上述两种传统调试技术特长提供了一种新的LINUX调试技术。 本文以ARM架构上的LINUX系统开发为例,详细介绍和对比这三种不同的调试模式的实现和应用。 静态调试模式 通过JTAG调试接口进行软件调试的工具一般都只能工作在静态调试模式下,处理器和整个系统都必须被同时挂起。然后调试工具通过JTAG接口把处理器和目标系统的当前状态获取并显示出来(如图1所示)。
[单片机]
嵌入式<font color='red'>LINUX系统</font>的静/动态集成调试模式
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved