|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 繁體中文

U-boot的S3C44B0上的移植与分析

李向阳,戴学丰,邵林(齐齐哈尔大学黑龙江齐齐哈尔161006)0引言Bootloader是操作系统启动运行之前执行的一段小程序。它是基于特定硬件平台实现的,通过它可以初始化硬件设备,建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核作好准备。嵌入式系统的硬件部分不可能完全一致,由于嵌入式系统需要硬件与软件的配合才能正常工作,因此需要针对硬件系统进行有关引导程序的设计。对于嵌入式系统来说,引导

李向阳,戴学丰,邵  林

(齐齐哈尔大学  黑龙江齐齐哈尔  161006)

0引  言

Bootloader是操作系统启动运行之前执行的一段小程序。它是基于特定硬件平台实现的,通过它可以初始化硬件设备,建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核作好准备。嵌入式系统的硬件部分不可能完全一致,由于嵌入式系统需要硬件与软件的配合才能正常工作,因此需要针对硬件系统进行有关引导程序的设计。对于嵌入式系统来说,引导程序比较复杂,一般采用在基本符合硬件体系要求的现有引导程序的基础上进行修改,然后通过应用的方法设计引导程序,这就是引导程序的移植。

1 U-boot介绍

U-boot(Universal Boot Loader)源自DENX软件工程中心的Wolfgang Denk,基于8xxrom的源码创建的PPCBoot工程,遵循GPL条款的开放源码项目,已经可以支持PowerPC,ARM,X86,MIPS等体系结构上的上百种开发板。U-boot提供:启动加载(Boot Loading)和下载(Down Loading)两种操作模式。并具有大型Bootloader的全部功能。主要特性有:SCCFEC以太网支持;BOOTP/TFTP引导——IP,MAC预置功能;在线读写FLASH,DOC,IDE,I2C,E2ROM,RTC;支持串行口kermit,S-record下载代码;识别二进制、ELF32,plmage格式的Image;对Linux引导有特别的支持;监控(minitor)命令集;具有读写I/O、内存、寄存器、外设测试等功能。

U-boot还支持多种文件系统,如cramfs,ext2,fat,reiserfs和jffs2等;支持多种嵌入式操作系统内核,如Linux,NetBSD,VxWorks,QNX,RTEMS,ARTOS和LynxOS等,并对Linux引导有特别的支持。另外,U-boot还提供单任务软件运行环境,可以在没有操作系统的情况下动态加载和运行独立的应用程序,这些独立的应用程序可以利用U-boot提供控制台的I/O函数、内存申请和中断服务等。

2 U-boot启动流程

对ARM7核处理器,U-boot启动流程主要体现在3个文件上,即start.s.lib_arm/board.C和U-boot/common/main.C。下面详细分析启动流程。

2.1  start.s文件

startl.s文件主要是CPU的初始化,用汇编语言编写,其主要代码流程如下:

(1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(FLASH)的0x0地址,在start.s文件中有如下语句:



因此,必须通知编译器使其知道这个人口,该工作可通过修改连接器脚本文件U-boot.lds来完成。

(2)设置异常向量(Exception Vector)。异常中断向量表是U-boot与操作系统内核发生联系的关键所在之一。即使操作系统内核已经得到处理器的控制权运行,一旦发生中断,处理器还是会自动跳转到从0x0地址开始的异常中断向量表中的某个位置(依据于中断类型)读取指令运行的。

(3)设置CPU的速度、时钟频率及中断控制寄存器。依次为关闭看门狗计时器,屏蔽所有中断,配置时钟(包括3个寄存器:PLLCON,CLKON,LOCK-TIME)。

(4)初始化内存控制器。内存控制器初始化主要通过设置13个从1c80000开始的特殊功能寄存器来完成,包括外部数据总线宽度、访问周期、定时的控制信号等。

(5)将ROM中的程序复制到RAM中。首先利用PC取得BootLoader在FLASH的起始地址,再通过标号之差计算出这个程序代码的大小。通过寄存器(r3~r10)为复制的中间媒介将代码复制到RAM中。

(6)初始化堆栈。进入各种模式设置相应模式的堆栈。

(7)转到RAM中执行。该工作可使用指令ldr pc来完成,即ldr pc,_start_armboot。

2.2 lib arm/board.c文件()

U-boot/Lib  arm/board.c中的start_armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,该函数主要是调用一系列的初始化函数。进行各种初始化设置。该函数完成的操作是:

(1)调用一系列的初始化函数,包括:cpu_init(CPU相关的设置),board_init(板子相关的设置),interrupt_init(中断设置),env_init(环境变量设置),init_baudrate(baud参数设置),serial_init(串口初始化),console_init_f(控制台设置),display_banner(显示标题),dram_init(可用内存配置);

(2)初始化FLASH设备;

(3)初始化系统内存分配函数;

(4)如果目标系统拥有NAND设备,则初始化NAND设备;

(5)如果目标系统有显示设备,则初始化该类设备;

(6)初始化相关网络设备,填写IP、MAC地址等。

2.3 U-boot/common/main.c文件

完成上述初始化后,进入命令循环(即整个boot的工作循环),代码为:

3移植过程

在此使用的是创维特公司的EB4480开发板,系统相关配置如下:

处理器:SamsungS3C44B0X,工作频率60 MHz;
FLASH地址:0x00000000~
0x00400000(1X2MX16位);
SDRAM地址:0x0c000000~
0x0c800000(1X4MX16位);
CS8900A地址:0x04000300~0x0400030f;
2个串口,4个可编程的LED以及14针JTAG接口。

为了降低移植的难度,在移植过程中,一般都是选择与目标处理器以及目标板最接近的一个版本进行移植。因此选择B2进行移植。从U-boot的官方网站上下载最新版的源代码,目前最高版本为1.3.3。移植主要修改的文件有:cpu/s3c44b0/start.s,board/dave/ b2/lowlevel  init.s,board/dave/b2/b2.c,board/dave/common/FLASH.c,include/configs/b2.h,board/dave/b2/config.mk。

3.1  cpu/s3c44b0/start.s文件

start.s是汇编语言编写的U-boot程序入口代码,主要包括处理器内部各个寄存器的初始化以及代码的搬移。主要完成设置处理器状态、初始化中断、堆栈、内存控制器等,并确定是否需要对整个U-boot代码重定位,最终从FLASH中跳转到定位好的内存位置执行。下面对其中一些代码进行针对性的分析。

(1)设置WTCON=0x0,禁止看门狗定时器,避免处理器强行复位;

(2)设置INTMSK=0x7ffffff,禁止所有中断,Bootloader的执行过程中不必要响应任何中断;

(3)根据嵌入式微处理器工作主频,修改宏CON-FIG_S3C4480_CLOCK_SPEED=60 MHz,使处理器能够正常工作;

(4)设置PLLCON=0x34031,PLLCON锁相环控制寄存器中储存有计算系统时钟的相关参数,为了产生正确的系统时钟,必须根据外接晶振频率和处理器工作主频确定各个倍频系数。

3.2  board/dave/b2/lowlevel  init.S文件

该文件由汇编代码完成,主要包括SDRAM工作参数的设置,以及处理器内存控制器的初始化,参数需要根据SDRAM芯片资料进行设置。

3.3 board/dave/b2/b2.C文件

  该文件中的代码主要是SDRAM的驱动程序,并完成了处理器各个I/O口的初始化,根据具体的目标板进行适当的修改即可。

3.4 board/dave/common/FLASH.c

  这个文件是FLASH的驱动程序。FLASH存储器的烧写与擦除一般不具有通用性,根据不同型号的存储器做出相应的修改。EB4480开发板采用的是Intel28F320C3B,总共71个块,1~8每块大小是8 KB,9~71每块大小是64 KB,它的特殊性决定了需要对write_word(),FLASH_get_size(),FLASH_print_info(),FLASH_get_offsets(),FLASH_erase(),进行修改,具体内容如下:

3.5  include/configs/b2.h文件

该文件中包含了B2目标板的一些配置的宏定义,主要有系统工作频率、环境变量缓冲区长度、串口波特率、FLASH起始地址及容量、DRAM起始地址及容量、环境变量保存位置、FLASH读/写命令字、网络芯片的基地址、目标板IP地址、硬件地址MAC、主机IP地址、内核装载地址、交互操作命令等。

3.6  board/dave/b2/config.mk文件

U-boot将其代码从FLASH复制到SDRAM的位置在0x0c700000处,修改TEXT BASE=0x0c700000。

U-boot是在Linux环境下开发的,因此需要在Linux下进行编译,使用的操作系统为Fedora core 7,从http://opensrc.see.samsung.com/download/arm-elf-tools-20040427.sh下载arm-elf-tools-20040427.sh,使用的编译器为arm-elf-gcc,在U-boot根目录下对其中的makefile文件进行相应的修改,然后在命令行中运行以下指令:

#make disclean
#make B2_config
#make

编译连接后生成U-boot,U-boot.bin,U-boot.srec,其中的U-boot.bin是二进制bin文件,纯粹的U-boot二进制执行代码,不保存ELF格式和调试信息,这个文件用于烧写到用户的开发板中。通过创维特集成开发环境自带的FLASH烧写工具载入到SDRAM中运行,从超级终端显示U-boot的启动信息,分别试验erase,cp,printenv,saveenv等命令,并检测对FLASH的操作;使用tftp命令,以检测网口下载功能,然后装载操作系统内核,完成以上任务则移植成功。经过以上步骤移植的U-boot已经在自己开发的ARM板上顺利地引导了μClinux操作系统。

4结  语

Bootloader是连接系统硬件和操作系统的桥梁,这里根据U-boot的运行机制,在硬件资源固定,不改变Bootloader框架的前提下,对与目标板硬件相关的代码,特别是FLASH芯片Intel 28F320C3B的代码进行修改,成功移植到EB44B0开发板上,并且结合U-boot和μClinux的启动流程与运行机制,成功设计并实现了在基于S3C44B0目标板上引导嵌入式操作系统。在移植过程中,要熟悉U-boot的组织结构和工作流程,对相关的硬件资源有一定的了解,根据实际情况进行裁减,灵活选用功能模块。目前,移植后的U-boot能够稳定地运行在嵌入式目标板上,并能顺利地引导嵌入式μClinux系统,已成功应用在智能机器人的避障系统中。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     加减玉容散_祛风活络,润泽皮[4月30日]
     玉容散·主治妇女面无光彩,[4月23日]
     玉容散·功效祛风止痒,化斑[4月23日]
     玉容散·功效祛风利湿,消斑[4月23日]
     玉容散·功效馨香,去垢腻,主[4月23日]
     玉容散·主治黧黑皯黯(又名黧[4月23日]
     玉容散·功效白面嫩肌,主治黧[4月23日]
     玉容散·主治面上诸(黑干)(黑[4月23日]
     玉容散·主治润颜色[4月23日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     手机恢复出厂设置具体操作方…[3月29日]
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     [书籍]幼学琼林全文
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     黄历干支年号公元皇帝对照年[4月17日]
     广西高考2024~2022年历史类([6月25日]
     花木[4月16日]
     鸟兽[4月16日]
     释道鬼神[4月16日]
     讼狱[4月16日]
     技艺[4月16日]
     制作[4月16日]
     科第[4月16日]
     文事[4月16日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj