




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Bootloader就是启动加载程序的意思,uClinux启动离不开引导程序。Bootloader是在操作系统运行之前执行的一段自举程序。通过这段小程序,用以初始化硬件设备、改变处理器运行模式、重组中断向量表和建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。U-Boot全称Das U-Boot-universal bootloader,是由DENX SoftwareEngineering的Wolfgang Denk维护一种通用的Bootloader。U-Boot被认为是功能最多、最具弹性以及开发最积极的开放源码bootloader,可以方便地移植到各种硬件平台上。Blackfin uClinux网站上提供了U-Boot在Blackfin上的移植。(/gf/project/u-boot/)。笔者从其网站上下载了u-boot-1.1.6-2008R1.5.tar.bz2的源码,并将其复制到/home/uclinux/bootldr目录,使用TAR命令将其解压到u-boot-1.1.6-2008R1.5文件夹(下文简称u-boot-1.1.6)。在开始移植前请参考Blackfin Linux Docs章节的bootloader部分。该手册介绍的针对Blackfin移植的一般步骤。为了对硬件底层寄存器进行设置,还需要参考Blackfin的Hardware Reference Manual(可在ADI公司网站下载,笔者下载的是3.4版本,下文引用页码以这个版本为准)。针对特定版本的U-Boot,Readme文档也许是最好的参考资料,它位于u-boot源码文件夹下。U-Boot的官方网站也提供非常详尽的文档资料(http:/www.denx.de/wiki/U-Boot/Documentation)。U-Boot代码一般分为stage1和stage2两大部分、stage1依赖于CPU体系结构如设备初始化代码,常用汇编语言编写已达到短小精悍,提高系统运行效率的目的。它主要包括在u-boot-1.1.6/cpu/blackfin文件夹中的Start.s和Start1.s文件。Stage1的入口函数从Start.s开始,通常开始包含以下步骤:(1) 基本硬件初始化,为随后执行kernel准备好基本的硬件环境。包括:屏蔽所有中断,引导装载程序的执行过程中不必执行任何中断,中断屏蔽可通过写cpu的终端屏蔽寄存器或状态寄存器实现;设置CPU速度和时钟频率,初始化pll;RAM初始化,初始化内存控制器的各个寄存器;初始化UART,向串口打印U-Boot的字符信息;关闭cpu内部指令,数据cache。(2) 为加载U-Boot的stage2准备RAM空间,通常stage2置于整个RAM空间的最顶层1MB空间。(3) 拷贝U-Boot的stage2到RAM。判断是否是FLASH运行,如果是就将stage2的代码拷贝至TEXT BASE处。将stage2安排到RAM空间的最顶层1MB是推荐的方法。(4) 设置堆栈指针sp,为C语言代码执行做好准备。(5) 跳转至cpu_init_f(在cpu.c文件中)的C语言代码入口点。此阶段的程序流程图如下:“在start.s的最后,CPU初始化已经完成,需要进入第二阶段的执行。它会将_cpu_init_f函数指针写入到INT15的向量表中,然后用raise 15进入下一阶段的运行,这是因为CPU复位之后处于RESET中断的状态,这是优先级很高的一个中断,在这种情况下,虽然可以对CPU进行完全的操作(Supervisor mode),但是却无法响应其它的中断请求。因此start.s将自身跳到中断15再运行,这样同时可以响应其它的中断,CPU也仍然处在Supervisor mode,可以进行完整的控制。”Stage2主要包括lib-Blackfin/board.c 和cpu.c中cpu_init_f、board_init_f函数以及common/main.c中的main_loop函数。按照初始化顺序如下:(1) 初始化中断、串口、RTC、定时器等(2) 初始化Flash。(3) 初始化用以动态分配heap的内存(4) 初始化SPI、NAND FLASH。(5) 初始化MAC Address、IP Address(6) 设备初始化。(7) 进入 mainloop() 函数循环。主要设备初始化完成后,需要启动控制台,即命令行模式。由mainloop()函数解析输入命令、执行命令、输出信息。在默认情况下,mainloop()会等待bootcmd环境变量说设定的自动运行的命令(比如setenv bootcmd bootm 0x2000 0000),引导flash特定地址中的嵌入式操作系统。移植过程中需要修改或创建下列文件或目录。顶层Makefile、MAKEALL 和 MAINTAINERS 文件目标板配置文件:include/config/mybf532.h目标板目录:boards/mybf532/1.顶层编译文件Makefile在顶层Makefile中添加你的板子,找到Blackfin设置,一般在设置文件结尾,仿照原有设置添加你的目标板设置,笔者将自己的目标板称作mybf532,设置如下:mybf532_config : unconfig$(MKCONFIG) $(:_config=) blackfin bf533 mybf5322.电路板设置文件将当前目录定位至U-Boot源码文件夹下的include/configs目录cd include/configs将bf533-stamp.h设置文件作为模板,复制一份为mybf532.h(文件名与你板的名称相同)cp bf533-stamp.h mybf532.h修改mybf532.h中设置。将其中的_CONFIG_BF533_STAMP_H_改成_CONFIG_MYBF532_H_。添加宏定义#define CONFIG_MYBF532 1根据你板上时钟频率修改CONFIG_CLKIN_HZ,笔者板上使用27MHz有源晶振,设置如下:#define CONFIG_CLKIN_HZ 27000000设置PLL倍频因子,CCLK_DIV系统时钟分频因子、SCLK_DIV总线分频因子。笔者设置如下:#define CONFIG_VCO_MULT 12/* CONFIG_CCLK_DIV controls what the core clock divider is */* Values can be 1, 2, 4, or 8 ONLY */#define CONFIG_CCLK_DIV 1/* CONFIG_SCLK_DIV controls what the peripheral clock divider is */* Values can range from 1-15 */#define CONFIG_SCLK_DIV 7对应的PLL频率27MHz*12 = 324MHz, 内核频率324/1 = 324MHz, 外部总线频率324/7 = 46MHz进行网络设置:网卡IP地址、子网掩码、网关IP、服务器IP(SERVERIP即你主机的IP地址)、目标板HOSTNAME、ROOTPATH#define CONFIG_IPADDR 7#define CONFIG_NETMASK #define CONFIG_GATEWAYIP 54#define CONFIG_SERVERIP 5#define CONFIG_HOSTNAME HHBF532#define CONFIG_ROOTPATH /bf1/rootfs以上是笔者的设置。由于BF1有两块网卡而笔者开发板只有一块,将#define CONFIG_NET_MULTI的值改为 0(即只有一块网卡)。SDRAM设置:SIZE(SDRAM的大小MBYTE为单位)、ADD_WITH(地址线宽度)、CFG_MENTSET_START(存储器测试开始地址)、CFG_MEMTEST_END(存储器测试结束地址)、CFG_LOAD_ADDR(缺省内核加载地址)、CGF_SDRAM_BASE(SDRAM起始地址)、CFG_MAX_RAM_SIZE(SDRAM最高地址)。笔者设置如下:#define CONFIG_MEM_SIZE 32#define CONFIG_MEM_ADD_WDTH 9#define CONFIG_MEM_MT48LC16M16A2TG_7E 1#define CFG_MEMTEST_START 0x00000000#define CFG_MEMTEST_END 0x01EFFFFF#define CFG_LOAD_ADDR 0x01000000#define CFG_SDRAM_BASE 0x00000000#define CFG_MAX_RAM_SIZE 0x02000000修改监视程序提示符:CFG_PROMPT 修改网卡物理地址使其与你的板子相符:#define CONFIG_DM9000_BASE 0x20300000修改网卡IO、DATA(状态控制寄存器)地址:#define DM9000_IO CONFIG_DM9000_BASE#define CONFIG_DM9000_IO 0x20300000#define DM9000_DATA (CONFIG_DM9000_BASE+4)、修改FLASH的基地址,为了从NOR FLASH引导,该地址必须从0x2000 0000开始(也就是NOR FLASH从Bank0开始编址)。#define CFG_FLASH_BASE 0x20000000修改FLASH的Sector(扇区),参见相关FLASH的datasheet。#define CFG_MAX_FLASH_SECT 35设置环境变量(U-Boot中的ENV变量)在FLASH中存放地址,必须以一个Sector的起始地址开始:#define CFG_ENV_ADDR 0x201f0000设置环境变量大小及存放环境变量的Sector空间大小:#define CFG_ENV_SIZE 0x10000#define CFG_ENV_SECT_SIZE 0x10000设置软件I2C管脚,根据你的目标板而定:#define PF_SCL PF9#define PF_SDA PF83.电路板设置目录将当前目录切换至U-boot源代码目录下board子目录,拷贝bf533-stamp目录为mybf532。将mybf532中以bf533-stamp.c开始的文件改名为mybf532。修改mybf532.c文件。将包含头文件#include “bf1.h”该成include “myb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户投诉与管理制度
- 宣教科工作管理制度
- 家具设计部管理制度
- 应急抢修灯管理制度
- 影像科应急管理制度
- 微信群培训管理制度
- 德国热缩机管理制度
- 快印店人员管理制度
- 快速路安全管理制度
- 急诊科收治管理制度
- 谁是消费“领头羊”:人口周期改变消费模式221mb
- 2025年苏教版科学六年级下册小升初期末检测题附答案
- 2024福建省闽投深海养殖装备租赁有限责任公司招聘7人笔试参考题库附带答案详解
- 2025年江西省赣州市八年级中考模拟预测生物试题(含答案)
- 2025届上海市闵行区21学校七年级生物第二学期期末调研试题含解析
- 车牌过户协议书范本
- 火灾自动报警系统故障应急预案
- 《拓印新貌》教学课件-2024-2025学年沪书画版(五四学制)(2024)初中美术六年级下册
- 湖北省武汉市2025年中考语文二模试题(含答案)
- 2025-2030中国海底光缆产业市场发展分析及前景趋势与投资研究报告
- 建筑光伏一体化(BIPV开发及设计技术标准)
评论
0/150
提交评论