本文针对xilinx公司的microblaze软核,介绍了petalinux嵌入式操作系统及其移植方法,研究了petalinux的相关配置和启动方案。
1 基于microblaze处理器的系统设计
1.1 microblaze处理器简介
microblaze软核处理器是一种针对xilinx fpga器件而优化的功能强大的微处理器。它内部采用risc架构的32位指令和数据总线,支持coreconnect片上总线的标准外设计集合,具有兼容性和重复利用性,且可根据性能需求和逻辑区域成本任意裁减,极大地扩展了应用范围,其最精简的核只需要将近400个slice。
microblaze的coreconnect总线、它能够将fpga内各种不同的ip核连接到一起构成一个完整的系统。coreconnect总线是一个总线标准的集合,它包括plb总线(processor local bus,处理器本地总线),lmb总线(local memory bus,高速本地存储器总线),fsl(fast simplex link,快速单连接)总线,以及xcl(xilinx cachelink)总线等。
1.2 系统结构和外部设备概述
本系统主要是在virtex-4开发板上构建一个以microblaze处理器为中心的嵌入式信号处理系统,在fpga内部实现系统的总线架构、数据存储、地址译码、外设接口等系统部件和功能。各功能部件在fpga内部都以ip核的形式构建并连接,整个系统的结构框图如图1所示。
其中,sysace用于存放文件系统和应用程序配置文件,intc用来实现中断控制;gpio和uart 16550用于系统调试,自定义ip核ddc用来实现数字接收机下变频功能,这些外设通过plb总线与microblaze处理器和ddr相连;用于快速傅里叶变换的自定义ip核fft通过fsl总线与micr-oblaze内部通用寄存器直接相连,实现了数据的快速传输;ddr通过xcl总线与microblaze处理器相连,实现了microblaze处理器对片外存储器的高速访问。
1.3 嵌入式操作系统的选择
选用petalinux嵌入式操作系统。它是petalogix公司专门针对fpga的片上系统设计的嵌入式linux开发套件,在满足应用工程的逻辑编程能力和对嵌入式linux要求的同时,可极大地缩短产品开发周期。petalinux作为专门针对于xilinx fpga的嵌入式linux解决方案,不但提供了专门的bsp生成器,而且提供了众多的参考设计,可以帮助设计者快速掌握petalinux的配置方法。pelalinux内核正在不断的完善之中,且不断地加入基于xilinx fpga嵌入式系统ip核的设备驱动,比如xilinxusb、sysace、fsl总线设备驱动、10/100/1000m三态以太网mac等。这些设备驱动极大地减轻了嵌入式系统开发者的工作量,缩短了产品开发的周期。
2 petalinux系统移植
在sopc硬件系统构建完成后,就要针对此结构配置操作系统内核,下面介绍具体步骤。
2.1 建立交叉编译环境
嵌入式系统开发一般采用交叉编译的方法,即在宿主机上对内核和应用程序进行编译,生成目标机处理器可执行的二进制位流文件,将此文件下载到目标机运行。petalinux针对microblaze处理器建立了交叉编译器,运行source./settings.sh脚本,系统会自动建立交叉环境。
2.2 建立硬件平台
petalinux为每个应用工程建立一个文件夹,里面保存该工程的硬件配置。在移植petalinux时,只需选择相应的硬件平台,内核就会读取该工程文件夹下的配置文件。使用petalinux-new-platform命令建立硬件平台,如果使用mmu(虚拟内存管理单元),则在此命令后添加-m选项。硬件平台建立起来后,运行make menuconfig命令,在vendor/product seletion选项中,选择该硬件平台。
另外,还需将在edk下生成的配置文件转换成linux操作系统可以识别的格式。在工程文件夹下运行petalinux-copy-autoconfig命令,自动完成格式转换,并拷贝配置文件到已选择的工程文件夹下。
2.3 添加自定义设备驱动
本系统自定义了ip核,因此必须开发驱动程序并将其添加到petalinux配置中。添加自定义设备驱动主要步骤如下:
①在平台配置目录下makefile文件中添加语句platobj-$(config_petalogix_ddc)+=ddc.o和$(obj)/ddc.o:.config使设备初始化函数ddc.c与内核配置相关联;
②在驱动程序所在目录下的makefile文件中添加obj-$(config_petalogix_ddc)+=ddc_adapter.o使设备驱动程序ddc_adapter.c与内核配置相关联;
③修改设备驱动程序所在目录下的kconfig文件,使配置内核时可以选择该设备驱动,并添加以下语句:
通过以上文件的修改,就可以在配置petalinux内核时选择自定义的设备驱动。
2.4 配置petalinux内核
由于linux内核的可裁减性,能够方便地对内核进行修改、裁减、编译,最终移植到一个嵌入式系统中。运行图形编辑工具make menuc-onfig命令,对内核和系统环境进行配置。
在内核配置的设备驱动选项中,一定要选择与系统硬件配置一致的硬件设备驱动,否则内核编译时就会出错。针对本系统的硬件配置,主要配置以下几项驱动:
①[block devices]块设备。选择xilinx systemacesupport。
②[misc device]混杂设备。选择fsl fifo driver,然后进入fsl channel selection,选择fifo on fslo,并选择自添加设备驱动pet-alogix ddc101 driver。
③[network device support]网络设备。选择ethernet(1000mbit)子菜单中的xilinx 10/100/1000 lltemac support。
④[character devices]字符设备。选择serial drivers子菜单中的8250/16550 and compatible serial support和console on 8250/16550 and compatible serial port。
文件系统选项中,默认选择了ext2、romfs和cramfs文件系统,其他文件系统可以根据需要自行选择。本系统需要挂载dos文件系统的cf卡,因此进行以下配置:
①[dos/fat/nt filesystems]。选择msdos fssupport。
②[native language support]。选择codepage 437(united states,canada)。
内核配置中的其他配置可以根据目标系统的不同灵活配置,配置完成后保存退出,自动进入系统环境配置菜单。系统环境配置是对peta-linux的属性、命令进行配置,主要有以下几个选项:
①[system settings]系统设置。配置系统的网络地址、默认用户名、默认登陆密码和所用根文件系统等内容。
②core applications]内核应用。主要配置内核的常用特性。
③[network applications]网络应用。配置网络应用时的相关命令。
④[miscellaneous applications]混杂应用。配置系统内核中的命令。
⑤[busybox]。配置系统内核中的命令。
petalinux已经设置好了编译规则,因此配置完成后,依次执行命令make dep、make clean、make all,建立文件依赖关系,清除旧的文件,编译内核,生成内核image。
3 petalinux启动方案
经过编译的petalinux内核image文件主要有image.bin、image.elf、image.ub。根据选择image文件的不同,petalinux有4种启动方案:xmd下载启动、tftp网络下载启动、flash启动和sysace cf卡启动。其中,xmd和tftp网络下载启动方案,在每次系统上电后都必须重新下载,适用于系统调试;flash启动方案在系统上电后自动从flash中读取配置文件,但flash烧写速度较慢,更改系统配置较为不便。因此,本系统选用sysacecf卡启动方案。
使用sysace cf卡启动petalinux,先将硬件比特流文件和image.elf制作成ace文件,再复制到cf卡中,配置cf卡启动petalinux。制作ace文件,可在edkshell窗口运行命令:
xmd-tcl genace.tcl(命令工具)
-jprog-board m1402(所需的开发板)
-hw implementation/download.bit(生成的比特流文件)
-elf image.elf(编译linux内核生成的可执行网表文件)
-ace system.ace(需生成的ace文件)
成功后,适合于ml-402开发板的ace文件就生成了。
linux运行需要根文件系统的支持,启动时必须加载文件系统以支持系统的运行,而image.elf中不包含文件系统。因此,使用sysace cf卡启动时必须手动加载文件系统。在编译petalinux内核时,已经生成了以romfs文件夹为名称的文件系统,所以只需将cf卡分区和格式化,然后挂载此文件系统。具体步骤如下:
①将cf卡挂载到linux系统中,运行命令fdisk/dev/sda把cf卡分成3个区。第1分区存放system.ace文件,第2分区为linux swap交换分区,第3分区存放根文件系统。
②linux下格式化第3分区为ext2文件系统,运行命令mke2fs/dev/sda3。在/ete/fstab下输入命令/dev/sda3/mnt/rootfs auto defaults,user,noauto 0 0。把设备sda3挂在/mnt/rootfs文件下,文件系统为默认的ext2,普通用户,能挂载,不转储,启动时不扫描文件系统。通过命令mount/mnt/rootfs挂载该目录,这样就可以把根文件系统rootfs拷贝到cf卡的该分区上。
③windows下格式化第1分区为fat32文件系统,把system.ace复制到这个分区。
④linux下格式化第2分区为交换分区,运行命令mkswap/dev/sda2。
一切准备就绪后,插入cf卡,开启电源,就可以从cf卡启动petalinux。
结语
本文介绍了一种可用于microblaze处理器的嵌入式linux操作系统——petalinux,并详细讨论了其内核配置和启动方案。通过移植peta-linux,本文开发的sopc可以直接用于实际工程。该嵌入式操作系统移植快速、简单,由于其基于linux2.6内核,可以保证较高的稳定性。因此,在sopc应用日益复杂的背景下具有较高的实用价值。
关于C4L 1.2THP发动机性能分析
智能家居概念股龙头股解析
Molex莫仕凭借Mirror Mezz Enhanced荣获OFweek 2023 (第八届)物联网产业大奖
2799元的努比亚Z17和2999元的荣耀V9,哪款更值得入手?努比亚Z17和荣耀v9评测对比
UVLED固化机在高性能电子元件的应用
MicroBlaze处理器的PetaLinux操作系统移植
联想集团与此芯科技深化芯片战略合作
TSMaster图形模块功能详解(一)—— 以CAN信号为例
各大互联网巨头生态的深度解剖与梳理
欧拉(openEuler)Summit 2021:智能电网调度控制系统项目建设情况
蔚来正在从进取的暖男到优等生的路上
和电磁波「朝夕箱处」
Android手机最快在2020年取代身份证和驾照
思迈特Smartbi零售数据分析平台介绍
数字化应用中的多核DSP(上)
单按键触摸检测芯片VKD233DS/HS概述及特点
如何度量知识蒸馏中不同数据增强方法的好坏?
中国彩电市场潜在需求场景怎样以及如何建立转化
智能穿戴的未来与机遇:打造“穿戴的智能化”
海信AI手机H20:三大特点标志着海信AI手机的又一大进步