基于S3C2410的启动代码的研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:wangyaofengw
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:描述了将启动代码移植到基于S3C2410处理器目标板上的方法与过程。首先介绍了目标平台和Linux,接着介绍了交叉编译环境的建立原理,着重介绍了BootLoader的架构和功能,给出了启动代码vivi的配置和编译过程。
  关键词:嵌入式;S3C2410;Linux;交叉编译;启动代码vivi
  中图分类号:TP338文献标识码:A文章编号:1009-3044(2008)27-1876-03
  The Research of Startup-code Based on the Processor of S3C2410
  XIONG Jie, WEI Yong
  (Yangtze University, Electronic Information Institute, Jingzhou 434023, China)
  Abstract: This paper introduces the method and procedure of making startup-code onto the target board based on the processor of S3C2410. Fist it says the target board and Linux, then describesthe theory of the cross compiler,focusing on the framework and functionality of Bootloader , introduces the config of vivi and the proces of compiler.
  Key words: embedded; s3c2410; linux; cross compiler; vivi
  
  1 引言
  
  嵌入式系统就是以应用为中心、以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等严格要标的专用计算机系统。ARM嵌入式芯片是一种高性能、低功功耗的RISC芯片。
  Linux是开放源代码的,操作系统的一切对用户来说都是透明的;现在人们需要的是一个便宜、成熟并且提供高端嵌入式系统所必需特性的操作系统,嵌入式Linux操作系统以价格低廉、功能强大又易于移植而被广泛采用,成为新兴的力量,所以众多厂家纷纷转向了嵌入式Linux。
  
  2 开发环境
  
  本文中使用的目标平台S3C2410是SamSung公司使用ARM920T处理器内核开发的一款嵌入式处理器。该芯片包括有16KB一体化的Cache/MMU,这一特性使开发人员能够将Linux移植到基于该处理器的目标系统中。
  文中使用的Linux开发环境是cygnus solutions公司开发的cygwin, cygwin是一个在Windows平台上运行的Unix模拟环境,它对于学习Unix/Linux操作环境,或者从Unix到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在Windows上进行嵌入式系统开发,非常有用。
  
  3 交叉编译环境的建立
  
  基于Linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和高度则需要通过宿主机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口。在宿主机上建立ARM的交叉编译环境,主要用到的开发工具包括三个部分:binutils、gcc、glibc。其中,binutils是二进制文件的处理工具;gcc是编译工具;glibc是链接和运行库。所有需要用到的工具既可以下载源码自行编译,也可以直接下载已经编译好的二进制工具。
  
  4 Bootloader的架构和功能实现
  
  4.1Bootloader介绍
  在嵌入式系统中,BootLoader的作用与PC机上的BIOS类似,通过BootLoader可以完成对系统板上的主要部件进行初始化.其主要完成的功能:
  1)初始化CPU的主频、SDRAM、中断、串口等硬件;2)启动Linux内核并提供一个RAMDISK; 3)通过串口下载内核或RAMDISK到目标板上;4)将修改过的内核或RAMDISK写入到FLASH内;5)为用户提供一个命令接口。
  4.2 BootLoader启动流程
  BootLoader的实现除了依赖于CPU的体系统机构,还依赖于目标板的设置,本系统的BootLoader引导程序分为stage1和stage2两个阶段。依赖于CPU的体系机构的代码,比如设备初始化等,放在stage1中,采用ARM汇编语言来实现,这样可以达到短小精悍的目的。Stage2用C语言来实现,可以实现复杂的功能,同时代码具有更好的可读性和可移植性。
  4.3BootLoader具体在S3C2410实现
  常用的BootLoader有以下几种:VIVI、Blob、U-BOOT等,本文着重介绍VIVI的移植过程。VIVI是由韩国MiZi公司开发的一种BootLoader,适合于ARM9处理器。VIVI两种工作模式,即启动加载和下载模式。
  为了使移植工作更加快捷,本文选择vivi-20030929版本。它不仅提供对ARM-920T内核的支持,而且直接提供了对于S3C2410x的板级支持,这使移植工作量相对减少。
  4.3.1 配置及编译vivi
  1)vivi中与软件相关的修改(vivi/Makefile):
  vivi作为Linux系统的启动代码,所以在编译配置时需要用到函数库,包括交叉编译库和头文件,交叉编译开关选项设置,还包括Linux内核代码中的库和头文件,所以通常需要修改vivi工程管理文件Makefile。
  首先从网站http://www.mizi.com下载vivi-20030929.tar.bz2源代码,对于本文使用的EduKit2410,需要对下面几处进行修改:
  交叉编译器库和头文件:
  ① 修改原Makefile文件中有关编译器路径设置:
  CROSS_COMPILE=/opt/host/armv4l/bin/armv4l-unknown-linux-
  修改为CROSS_COMPIEL=/usr/bin/arm-linux-
  ② 修改增加链接时使用的标准库文件路径设置:
  新增ARM_C_LIBS=/usr/arm-linux/lib
  ARM_GCC_LIBS = /opt/host/armv4l/lib/gcc-lib/armv4l-unknown-linux/2.95.2
  修改为 ARM_GCC_LIBS = /usr/lib/gcc-lib/armv4l-unknown-linux/2.95.3
  ③ 增加编译时头文件搜索路径设置:
  LIBC_INCLUDE_DIR = /usr/arm-linux/include
  Linux内核包含文件
  修改Linux头文件所在路径:
  LINUX_INCLUDE_DIR =/opt/host/armv4l/include/
  修改为:
  LINUX_INCLUDE_DIR = /usr/local/src/edukit2410/kernel/include
  编译开关选项
  修改链接开关选项设置:
  CLIBS = -L$(ARM_GCC_LIBS) –lgcc –lc
  修改为:
  CLIBS = -L$(ARM_C_LIBS) -L$(ARM_GCC_LIBS) -lgcc -lc
  4.3.2 vivi中与硬件相关的初始化(vivi/arch/s3c2410)
  与具体运行在哪一个处理器平台上相关的文件都存放在vivi/arch/目录下,本系统中使用S3C2410X对应的目录为S3C2410。其中head.S文件是vivi启动配置代码,加电复位运行的代码就是从这里开始的。由于该文件中对处理器的配置均用外部定义常数或宏来实现,所以针对不同的平台,只要是S3C2410X处理器,几乎不用修改,只要修改外部定义的初始值即可。这部分初始值都在vivi/include/platform/smdk2410.h文件中定义,包括处理器时钟、存储器初始化、通用IO口初始化以及vivi初始配置等等。
  4.3.3 编译、烧写vivi映像
  $>cd/usr/local/src/edukit-2410/vivi 注:进入vivi文件夹
  $>make clean 注:清除旧的编译结果
  $>make menuconfig注:在配置时,本系统中选择的是smdk-amd即Nor Flash中烧写
  $>make 注:编译
  编译完成后生成名为vivi的文件,用英蓓特公司提供的Embest Online Flash Programmer软件,本系统中make menuconfig 时选择配置文件为SMDK2410-AMD,编译输出的映像文件为Nor Flash上运行,需要烧写到系统核心子板上的2MB Nor Flash中的第1到第5个扇区中,如图1所示。
  
  图2 结果分析
  
  5 结束语
  
  总之,在ARM程序设计中,启动代码是至关重要的。它是Linux内核移植,文件系统移植的基础。本文通过介绍启动代码,详细讲述了一种快速、简单、通用性强的ARM9启动代码的编写。
  
  参考文献:
  [1] 田泽.ARM9嵌入式Linux开发实验与实践[M].北京:北京航空航天大学出版社, 2006.
  [2] 徐英慧,马忠梅.ARM9嵌入式系统设计-基于S3C2410与Linux[M].北京:北京航空航天大学出版社,2007.
  [3] 杨宗德.嵌入式ARM系统原理与实例开发[M].北京:北京大学出版社,2007.
其他文献
“阅读”是最古老、最基本、也最重要的学习方式之一。随着数字化时代的来临,在终身学习教育理念的普及与指向培养“核心素养”的世界教育改革浪潮中,“阅读素养”逐渐成为热门的研究命题之一。自2000年国际学生评价项目(PISA)首次在我国举行,有关“阅读素养”的文献开始在国内出现,近年来更是备受社会各界的关注。笔者通过分析2003~2017年以来在核心期刊上发表的关于“阅读素养”的论文,以期对该领域的研究
书名:外国文学作品欣赏  作者:滑明达  出版社:中国社会科学出版社  出版时间:2005年  ISBN:9787500452348  定价:78元  长期以来,外国文学作品赏析和教学的研究一直是相关领域专家学者关注的课题。在对这些课题进行研究的过程中,出现了诸多优秀成果,其中,以导读和赏析的方式對外国文学作品进行推介、解读的著作,不仅能为读者在选择和阅读的过程中提供必要的引导,也可以为教学提供参
一、“三路合一”阅读教学  本文所说的“三路”指的是文章的文路、学生的学路以及教师的教路。  文路是促成读者体悟文章的情感线索,也是体现文章思想和主旨的内隐脉络。作者巧妙构思,或使文章内容一波三折,或使情感线索突出,或使情节出人意料等,这些都是教师在研读文本时应该留意的文路。一般来说,文路多隐藏在文章的标题或者重点语句中。对教师来说,理清文路有利于依照课程目标、学生实际情况来选择合适的教学内容,保
摘要:Visual Basic For Application(VBA)是微软公司为其办公套件Microsoft Office提供的新一代标准宏语言,作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。VBA主要是根据用户对可编程应用软件中不同对象的操作,触发的相应事件,去激活相应的程序,通过对相关的对象执行不同的方法,或是修改相关对象的属性来完成特定的工作。该文介绍的内容是通
摘要:该文简要介绍了SQL注入攻击的原理,并针对SQL注入的方法,给出了SQL注入攻击的防御方法。  关键词:ASP;SQL注入;防范技术;网络安全  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)27-1996-02  Protective Artifice for SQL Injection Based on ASP Website  ZHANG Hao-yu,L
摘要:XML数据库是数据库研究的热点,本文首先简要介绍了XML技术及其特点和优越性,详细分析和介绍了基于XML技术的数据库管理系统的建立、存储机制、传输技术、查询等关键技术。  关键词:XML;数据库;存储;查询  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)09-11578-02    Application of XML Technology in Datab
摘要:该文将无线局域网同蜂窝网络(以GSM-R为例)在功能结构、利用能力、切换性透明性等方面进行比较分析,阐明WLAN应用于快速公交所具有的通信优势,并对BRT无线通信系统构架、网络安全等进行简略说明。  关键词:无线局域网(WLAN);快速公交(BRT);蜂窝网络;GSM-R;网络安全  中图分类号:U491;TP393文献标识码:A文章编号:1009-3044(2008)27-1892-03 
谭昌镕  1933年12月生,斋号没名堂,四川成都人。四川省人民政府文史研究馆馆员。中国戏剧家协会会员、中国舞台美术学会理事、四川中国画研究院院长、四川省巴蜀诗书画研究会副会长、四川省政协书画研究院副院长。出版有《谭昌镕画集》《谭昌镕的艺术》《谭昌镕画鸡》等。  一位画家的“写照”,大多是围绕画家的艺术成就、荣誉和影响来做文章,把画家的作品风格、艺术独创、画坛地位及深远影响淋漓尽致地展现出来,不吝
摘要:现在,随着计算机运算速度越来越快,java指令集的优化,这些发展使得java在实时监控的应用成为可能。Servelet是Sun公司在Web平台的开发产品,它采用的是B/S结构。Web的访问非常方便,如果把监控系统建在Web平台上,将有助于监控的范围扩大,同时增强监控系统的实时性。  关键词:Servelet;B/S;Web;监控系统   中图分类号:TP393文献标识码:A文章编号:1009