当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]Boot在ADSP-BF533上的移植

ADSP-BF533处理器是ADI公司新推出的一款Blackfin系列DSP,他具有2个MAC,集成了大量的外围设备和存储器接口,最高处理速度高达750 MHz,每秒运算速度最高达到1 500 MMAC(兆次乘法加法运算),适用于各种视频、音频、通信领域;另外该系列处理器所采用的微信号体系结构使其集DSP和MCU的功能于一身,大大方便了开发者的使用。

U-Boot(Universal Boot Loader)是遵循GPL条款的开放源码项目,由德国工程师Wolfgang Denk从8xxROM代码发展而来,已经在许多嵌入式系统开发过程中被采用。U-Boot的源代码配置裁剪方法简单、易于移植,提供十分强大的网络功能,支持多种文件格式的下载,其软件项目经常更新,最新的U-Boot 1.1.6支持的处理器体系结构包括有ARM,Intel i386,Intel XScale,MIPS,Blackfin,MPC,NIOS,NIOS 2和PowerPC。

将U-Boot移植到Blackfin系列的DSP之上,发挥出U-Boot这一bootloader所具有的优势,在基于DSP芯片的嵌入式系统的后续开发中,降低开发难度,缩短开发周期。本文将介绍U-Boot在ADSP-BF533上移植的实现过程。

1 移植实例

此次移植是在基于ADSP-BF533的evb533开发板上实现,以Colinux(Cooperative Linux)作为编译的平台完成。所用的开发板的主要配置如下:处理器:基于Blackfin体系结构的ADSP-BF533;FLASH:1 M×16 b共2 MBAMD AM29LV160DB(NOR FLASH);SDRAM:16 M×16 b共32 M,HY HY57V651620BTC10P;以太网控制器:CIRRUS LOGIC CS8900A-CQ3;串行通信接口:2个标准RS 232接口;以太网接口:1个RJ-45以太网接口;调试接口:1个14针JTAG接口;仿真器:Embest DSP仿真器EasyIce。

1.1 交叉编译工具链以及编译平台

关于交叉编译工具链的选择,可从blackfin网站下载编译器的源代码binutils,elf2flt,gcc,编译得到支持black-fin系列的交叉编译器,编译过程如下所示:

关闭当前所有的终端窗口之后,再打开终端窗口,输入bfin-uclinux-gcc-version并回车,如果能看到有输出“bfin-uclinux-gcc(GCC)3.4.4”即代表交叉编译环境的安装工作结束。

编译的平台Colinux是一种对Linux kernel的移植,让一台机器可以协同运行不同的操作系统,Colinux不同于VMware等虚拟机器,其本身并不是模拟一台PC,而是透过他本身的特殊设计,让在其中运行的Linux kernel直接使用windows的硬件资源。

1.2 下载最新的U-Boot源代码

U-Boot项目注册在SourceForge.net中,项目的主页位于http://sourceforge.net/projects/u-boot/,提供了U-Boot的最新稳定发行版本源代码的下载。目前最新稳定发行版本是u-boot-1.1.6,该发行版本加入了对blackfin系列处理器的支持。在其源代码包中,部分目录结构如下:board目录下是U-Boot目前已支持的目标板相关文件;CPU目录下是U-Boot支持的CPU体系结构的相关文件,本文相应处理器所需要的相关文件是bf533目录;drivers目录下是开发板上一些通用设备的驱动程序;include目录下是U-Boot所需要的头文件,其中的configs子目录放置的是对应开发板的配置文件;lib_blackfin目录下放置的是与blackfin体系结构相关的代码。

1.3 移植时需要修改的文件

移植所需要修改的文件可以参照U-Boot源代码包中已经支持的ezkit533目标板中的对应文件。

(1)修改顶层目录下的Makefile和MAKEALL脚本,为要进行移植的目标板添加相应的条目,首先是为该bf533芯片所在的实验板建立编译项:

编译项中的mkconfig是uboot源码顶层目录中的shell脚本,他的主要任务是完成对evb533开发板的配置;参看其脚本,完成的配置包含的主要是建立该开发板所需要的一些头文件,修改uboot配置来适应具体的开发板。该连接脚本具体包含以下4个方面:创建新的配置文件;创建该实验板对应的体系结构头文件到/include下/asm之间的硬链接(使用ln命令);创建make所需要的include文件;创建开发板所需要的头文件,在evb533开发板上主要是将include目录下的configs/evb533.h的内容写到config.h文件中。

(2)在board子目录中建立evb533目录,该目录下应该包含几个特定的文件,应该包含Makefile,evb533.c,flash.c,config.mk和u-boot.lds。其中evb533.c是对目标板的初始化代码;flash.c是目标板所使用FLASH的驱动代码;Makefile与config.mk来完成本层目录的make-file文件管理;u-boot.lds是最终连接成u-boot.bin文件是所使用的连接脚本。

(3)新建include/configs/evb533.h配置文件,针对要进行移植的目标板进行正确配置。

(4)在drivers子目录中加入实验箱所使用的网卡设备的驱动cs8900.c和cs8900.h。

完成这4处的文件修改后,就可以运行make evb533_config对开发板进行配置,然后运行make编译成目标板可用的u-boot.bin文件。

通过将Embest DSP仿真器EasyIce连接到开发板JTAG口,将该bin文件烧写到FLASH零地址,烧写完成后,重启开发板,在串口中返回“evb533>”信息,代表U-Boot移植运行成功。本文所移植的U-Boot目前已稳定地运行在EduKitⅢ嵌入式实验箱上。通过U-Boot可以实现串口、网口与PC通信,查看、修改FLASH和SDRAM,引导μClinux嵌入式系统等功能。

2 移植难点和重点

在此次移植的过程中,移植的难点在于FLASH设备和网卡设备的驱动,以及创建目标板的配置文件include/configs/evb533.h。下面详细介绍这几个难点中要注意的一些问题。

2.1 FLASH的驱动编写

U-Boot上FLASH配置的修改不仅和容量有关,还和具体型号有关,FLASH的烧写和擦除一般不具有通用性,应查看厂家的使用说明书,针对不同型号的存储器作出相应的修改。修改过程中,需要了解FLASH擦写特定寄存器的写入地址、数据命令以及扇区的大小和位置,以便进行正确的设置。本文所使用的开发板中的evb533核心子板所使用的FLASH的型号是AM29LV160DB,为nor FLASFI,大小为2 MB。针对U-Boot的FLASH移植需要编写以下一些接口函数列表如下:

flash_init()完成将flash设备信息赋值给flash_info_t*info结构体的功能,如确立FLASH的各个sector的起始地址,标记需要保护的sector块。flash_info_t数据结构如下所示(只列出部分):

flash_print_info()主要完成向终端打印flash id信息,如成功识别flash会得到如下输出“AMD AM29LV160DB(2 MB)16 kB,2×8 kB,32 kB,31×64 kB”;flash_erase()完成擦除flash的工作;write_buff()完成将ram中的数据向flash的写操作;read_data()完成flash的读操作。

以上3个接口函数需要详细地参考对应FLASH的数据手册,严格按照数据手册规定的指令序列完成对应操作,以取得FLASH设备的id为例,需要在1~3个总线周期分别向FLASH的0x555地址写入0xaa,0x2aa地址写入0x55,0x555地址写入0x90,第4个总线周期时从FLASH的0x001地址读出改FLASH的id信息。

除这些标准接口函数外,还要完成对FLASH中的poll data与toggle bit功能的查询,这2者都是用来反映FLASH的操作状态。

2.2 添加网卡设备控制程序

在drivers/目录中添加网卡设备控制程序cs8900.c和cs8900.h,其中cs8900.c主要包括函数为:int eth_init(bd_t*bd),初始化网络设备;void eth_halt(void),关闭网络设备;int eth_send(volatile void*packet,int len),发送数据包;int eth_rx(void)接收数据包。

2.3 编写开发板的配置头文件

在移植过程中,最容易出错的地方就是关于目标板头文件的配置,头文件的各项配置,关系到CPU的时钟设置正确与否,开发板上各个设备(如串口、网卡、FLASH等)能否正常运行,操作系统能否正确引导等诸多方面。下面以evb533目标板编写的配置头文件include/configs/evb533.h为例,讲解一些重要的配置选项的意义和用法,同时这些配置方法也适合于其他的开发板配置:

CONFIG_DRIVER_CS8900,用于设置目标板上的以太网控制器模块。由于目标板上使用CS8900A作为以太网控制器,因此定义此选项为1,在编译U-Boot时增加对CS8900A的驱动,同时设置CS8900_BASE为CS8900A内部的RAM映射到BF533的存储空间中的基地址0x20380300。

CONFIG_IPADDR用于设置目标板的IP地址;CON-FIG_ETHADDR用于设置CS8900A的MAC地址;CON-FIG_NETMASK用于设置子网掩码;CONFIG_SERVER-IP用于指定运行TFTP服务器的PC的IP地址。

CONFIG_BOOTCOMMAND用于指定在CONFIG_BOOTDELAY所指定的自动引导延时结束之后执行的默认引导命令,这里指定为”bootm 20030000”,即执行已经下载到20030000地址处的zImage文件。

CONFIG_BOOTARGS定义U-Boot在启动的时候所用到的一些参数。

CONFIG_CLKIN_HZ定义ADSP-BF533的晶振频率,作为其他时钟频率的基数,如CONFIG_CCLK_HZ,CONFIG_SCLK_HZ等。

CFG_SDRAM_BASE定义bf533的SDRAM的基址#0x00000000,CFG_FLASH_BASE定义了bf533的FLASH的基址0x20000000,还定义了FLASH的大小CFGl_FLASH_SIZE等。

除此之外,还有关于串口的一些参数定义等,在此不再详述。

3 结语

本文详细的介绍在BF533上移植U-Boot的工作步骤及难点。前期的移植工作是嵌入式系统开发的必要环节,Bootloader的稳定运行对于后期如Linux上内核的调试,Linux设备驱动的开发有重要意义。只有在此基础上才可以进行更深入的嵌入式系统开发,希望本文能为做相关工作的开发者提供参考。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

我们知道 Flash 读时序里有五大子序列 CMD + ADDR + MODE + DUMMY + READ,前面的文章中痞子衡讲过《串行NOR Flash的Continuous read模式》,Continuous r...

关键字: CMD ADDR Flash

亘喜生物科技集团宣布正在中国开展的、旨在全面评估GC007g治疗复发/难治性急性B淋巴细胞白血病效果的1/2期注册性临床试验顺利进入2期研究阶段,首例入组患者已给药。GC007g是亘喜生物旗下的一款靶向CD19的供者来源...

关键字: 移植 CD

Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。

关键字: Flash 存储器 嵌入式系统

北京2022年9月9日 /美通社/ -- 诺诚健华(香港联交所代码:09969)今天宣布,tafasitamab (Minjuvi®)联合来那度胺治疗不适合自体干细胞移植 (ASCT) 条件的复发/难治弥漫性大B...

关键字: VI NJU BSP 移植

宁波象山绿城喜来登度假酒店的揭幕成为喜来登品牌全球升级焕新之旅的新里程碑 上海2022年9月8日 /美通社/ -- 2022年9月8日,万豪旅享家旗下30个卓越酒店品牌之一的喜来登酒店及度假村,今日宣布宁波象山绿城喜来...

关键字: AN STUDIO BOOT COMMUNITY

苏州2022年8月19日 /美通社/ -- 近日,华中科技大学同济医学院附属协和医院心外科董念国教授团队运用与心擎医疗联合研发的短中期体外全磁悬浮心室辅助装置MoyoAssist®,成功救治三例危重的终...

关键字: 磁悬浮 移植 IC 静脉

上海2022年8月17日 /美通社/ -- 2022年8月16日,聚焦于基因和细胞治疗的上海邦耀生物科技有限公司(以下简称"邦耀生物")宣布,其...

关键字: CD 移植 BSP ISP

(全球TMT2022年8月2日讯)7月28日,为期三天的2022全球闪存峰会(Flash Memory World)召开。期间,2022年闪存风云榜榜单正式发布,忆联一举斩获"十大闪存控制器企业金奖"荣誉称号。...

关键字: 控制器 PCIE 电脑 Flash

苏州2022年6月28日 /美通社/ -- 2022年6月23日,首都医科大学附属北京安贞医院(以下简称安贞医院)与苏州心擎医疗技术有限公司(以下简称心擎)在北京、苏州两地线上连线,隆重召开体外心室辅助系统临床...

关键字: BSP 磁悬浮 创始人 移植

(全球TMT2022年6月28日讯)浪潮存储基于大量的NAND测试数据,在反复探索和实践推理过程中发现了企业级固体硬盘普遍面临三个挑战: 首先,NAND特性会影响数据的可靠性。例如NAND中未写满数据的块因数据保...

关键字: NAND 闪存盘 电压 Flash

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭