lan口配置 petalinux_PetaLinux开发文档
最近又开始在xupv5-lx10t板子上基于microblaze移植petalinux了,贴一个前年写的文档吧。
弄得很花哨,一半都是虚的内容,务虚者必被虚名所害,说起来头头是道,什么都知道,做起来却能力不行:因为做事不认真,没有detail
oriented,一年前的我就是反面典型:
PetaLinux开发文档
目录
应用背景
PetaLinux是一款可以用于FPGA CPU软核上的嵌入式Linux操作系统,PetaLogix公司(http://www.petalogix.com/)为Xilinx公司MicroBlaze软核提供了良好的支持,使得PetaLinux能够在有MicroBlaze
CPU软核的FPGA上很好的运行。
PetaLinux基于Linux内核,是一种uClinux的企业化产品,我编译的是Linux
2.6.x内核版本,所以驱动程序可以直接使用Linux下的驱动程序。
操作系统知识
嵌入式操作系统
嵌入式系统是计算机系统的一种,因而嵌入式系统也可以分为软硬件两部分,和桌面计算机系统一样,嵌入式操作系统(Embedded
Operating
System,EOS)是嵌入式软件系统的核心部分。在一个完整的嵌入式系统中,嵌入式操作系统介于底层硬件和上层应用程序之间,它是整个系统中不可缺少的重要组成部分。嵌入式操作系统与传统操作系统的基本功能是一致的,即:首先嵌入式操作系统必须能正确、高效地访问和管理底层的各种硬件资源,很好地处理资源管理中的冲突;其次嵌入式操作系统要能为应用程序提供功能完备、使用方便、与底层硬件细节无关的系统调用接口。
uC/OS II
uC/OS II 是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8 位,16 位和 ,32
位单片机或数字信号处理器。它是在原版本的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。
它的主要特点如下:
公开源代码:很容易就能把操作系统移植到各个不同的硬件平台上;
可移植性:绝大部分源代码是用C
语言写的,便于移植到其他微处理器上;
可裁剪性:有选择的使用需要的系统服务,以减少所需的存储空间;
占先式:完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务;
多任务:可管理64
个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;
可确定性:函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少;
实用性和可靠性:成功应用该实时内核的实例,是其实用性和可靠性的最好证据。
嵌入式Linux 系统
嵌入式 Linux 是日益庞大的Linux
家族中一个新成员,目前发展十分迅速,根据简单统计,目前正在开发的嵌入式项目约有一半选用嵌入式Linux
作为其操作系统。嵌入式Linux 秉承了Linux 家族的最大特点:开放性,因而其开发成本和可订制性非常出色,但是传统的Linux
不是一个实时操作系统,不太适合嵌入式应用,因此许多产商和爱好者开发了多种具有实时性的嵌入式Linux 系统。
BSP
概述
在嵌入式系统中,所谓BSP(Board Support
Package),就是为给定的板子提供特定操作系统支持的代码。是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP,一般包含一段引导启动代码(bootloader)以及板上所有器件的设备驱动程序,其中引导启动代码为操作系统启动提供最基本的支持。所以,BSP是和操作系统以及硬件设备驱动紧密联系的。
纯粹的BSP
所包含的内容一般说来是和系统有关的驱动和程序,如网络驱动和系统中网络协议有关,串口驱动和系统下载调试有关等等。离开这些驱动系统就不能正常工作。用户也可以添加自己的程序到BSP
中,但严格来说不应该算BSP,一般来说这种做法不建议。因为一旦操作系统能良好运行于最终的主板硬件后,BSP
也就固定了,不需要做任何改动。而用户自己在BSP 中的程序还会不断的升级更新,这样势必对BSP
有不好的影响,对系统造成影响,同时由于BSP 调试编译环境较差,也不利于程序的编译调试。
其实运行于PC 机上的windows 或linux 系统也是有BSP 的。只是PC 机均采用统一的X86
体系架构,这样一定操作系统(Windows,linux..)的BSP 相对x86架构是单一确定的,不需要做任何修改就可以很容易支持OS
在x86 上正常运行,所以在PC 机上谈论BSP
这个概念已没什么意义了。而对嵌入式系统来说情况则完全不同,目前市场上多种结构的嵌入式CPU(RISC)并存(PPC,ARM,MIPS....),为了性能的需要,外围设备也会有不同的选择和定义。一个嵌入式操作系统针对不同的CPU,会有不同的BSP,即使同一种CPU,由于外设的一点差别(如外部扩展DRAM
的大小,类型改变),BSP 相应的部分也不一样。所以根据硬件设计编写和修改BSP,保证系统正常的运行是非常重要的。
BIOS
BSP 和PC 机主板上的BIOS 区别很大,BIOS
主要是负责在电脑开启时检测、初始化系统设备(设置栈指针,中断分配,内存初始化…)、装入操作系统并调度操作系统向硬件发出的指令,它的Firmware
代码是在芯片生产过程中固化的,一般来说用户是无法修改。其实是为下载运行操作系统做准备,把操作系统由硬盘加载到内存,并传递一些硬件接口设置给系统。在OS
正常运行后,BIOS 的作用基本上也就完成了,这就是为什么更改BIOS 一定要重新启动。PC
机BIOS的作用更像是嵌入式系统中的Bootloader(最底层的引导软件,初始化主板的基本设置,为接收外部程序做硬件上的准备)。BSP
是和操作系统绑在一起运行在主板上的,尽管BSP 的开始部分和BIOS 所做的工作类似,可是大部分和BIOS
不同,作用也完全不同。此外BSP 还包含和系统有关的基本驱动(串口,网口...),此外程序员还可以编程修改BSP,在BSP
中任意添加一些和系统无关的驱动或程序,甚至可以把上层开发的统统放到BSP 中。而BIOS
程序是用户不能更改,编译编程的,只能对参数进行修改设置,只包含一些最基本的I/O 硬件驱动。
BSP 在开发中的位置和作用
BSP 开发处于整个嵌入式软件开发的前期,是后面系统上应用程序能够正常运行的保证。大概步骤如下:
硬件主板研制,测试。
操作系统的选定,BSP 编程。
上层应用程序的开发。
BSP 在硬件和操作系统以及上层应用程序之间。所以这就要求BSP 程序员对
硬件,软件和操作系统都要有一定的了解,这样才能做好BSP 编程。
开发流程
各种文件解释
在ISE design suite的EDK工具中,用BSB(Base System
Builder)创建一个工程,最后编译得到的文件download.bit是来对FPGA进行烧写的bit流文件。在Linux中用交叉编译工具编译得到的操作系统景象文件image.bin是操作系统镜像的二进制文件,烧进内存某一地址,若指令从该地址开始执行,那么操作系统就会运行。如果烧进Flash,还需要bootloader来引导,例如FS-Boot,U-Boot,bootloader初始化硬件,把操作系统镜像文件从Flash复制到内存并开始执行。
操作流程
开发环境
需要安装ISE开发环境,尤其是EDK,版本根据PetaLinux的支持情况,可以在PetaLinux文件包解压后的/hardware/reference-design目录中的某个工程中,查看system.mhs知道最新支持的EDK版本号。
需要有一个VMWare虚拟机软件,安装一个Linux系统,并且拥有root超级用户权限,我用的是RedHat
Enterprise Linux 4,推荐使用CentOS。
PetaLinux开发文件包
从Petalogix公司网站上通过.edu邮箱申请University
Program下载PetaLinux开发文件包petalinux-v0.40-final.tar.gz。
将该文件拷贝到VMWare虚拟机RedHat Enterprise Linux
4的/home/petalinux目录下(不要在虚拟机和Windows的共享文件夹下),解压,可以点击右键选择Extract
Here,也可以输入
tar -zxvf petalinux-v0.40-final.tar.gz
命令解压。
解压后在petalinux-v0.40-final目录下有个文件,settings.sh,设置环境变量等:
source settings.sh
新建一个platform xupv5-lx110t-103:
petalinux-new-platform -v Xilinx -p xupv5-lx110t-103 -k 2.6
source
setting.sh后,可以直接执行tools\common\petalogix\bin目录中的程序。petalinux-new-platform就是其中的一个。这个命令会在software\petalinux-dist\vendors目录中创建一个新的platform。执行这个命令后可以在make
menuconfig时看到并选择新建的platform。
配置platform:
make menuconfig
在 Vendor Product Selection 中选择Vendor = Xilinx, Products =
xupv5-lx110t-103(在platform选项最下面),依次选择exit推出,点yes。
新建EDK工程
配置
在EDK工程目录中新建目录xupv5-lx110t-103,配置两个文件夹:
E:\EDA\Xilinx\10.1\EDK\board\Xilinx\boards\EDK-XUPV5-LX110T-Pack
E:\EDA\Xilinx\10.1\EDK\sw\lib\bsp\petalinux_v1_00_b
EDK-XUPV5-LX110T-Pack
是开发版配置文件夹,从网上下载,petalinux_v1_00_b是PetaLinux配置文件,在解压后文件的
E:\petalinuks\petalinux-v0.40-final\hardware\edk_user_repository\PetaLogix\bsp\petalinux_v1_00_b目录下。
新建工程
在EDK新建工程xupv5-lx110t-103,选择开发板xupv5-lx110t,配置硬件:串口,Flash,DDRram,1
timer等。
图 31 工程system
view
双击MicroBlaze_0选择divider和barrier shifter
在Port选项,debug-module,interruption选择new
connection,在xps_intc_0中加入debug_interrupt_module,详细参考赵峰《FPGA上的嵌入式系统设计实例》。
在EDK的software中点击software platform
settings,OS选择PetaLinux,drivers中选择相应memory。确定。
Software选项点击generate library and BSPs。
这样,在F:\ISE_Projects\xupv5-lx110t-103\microblaze_0\libsrc\petalinux_v1_00_b目录下生成配置文件:
Kconfig.auto,auto-config.in。
把工程文件 xupv5-lx110t-103 复制到
/home/petalinux/petalinux-v0.40-final/hardware/user-platforms/目录下,在该目录中输入命令:
petalinux-copy-autoconfig -v Xilinx -p
xupv5-lx110t-103 -k 2.6
petalinux-copy-autoconfig命令需要在EDK工程目录中执行。这个工具可以把libgen生成的microblaze_0/libsrc/Kconfig.auto和autoconfig.in转换成linux格式,并拷贝到当前活跃的platform下(比如
software/linux-2.6.x/arch/Microblaze/platform/ xupv5-lx110t-103
)。它是根据在make menuconfig中选择的vendor/platform来拷贝的。
编译操作系统内核
在/home/petalinux/petalinux-v0.40-final/software/petalinux-dist目录下输入:
make menuconfig
Select Customize Kernel Settings
and Customize Vendor/User Settings
选择exit-> yes
Customize Kernel Settings -> Device Drivers
-> Network device support -> Ethernet
(1000Mbit) -> Select Xilinx 1000Mbit EMACLITE
support
Customize Kernel Settings -> Device Drivers
-> Character Device support -> Serial
devices ->select Xilinx UARTLITE and console on
Xilinx UARTLITE
Customize Vendor/User Settings -> System Settings
-> Network Address
Customize Vendor/User Settings -> System Settings
-> Flash Partition Table -> Partition
3 Size = 80000
Exit, 退出
make clean 清除上回编译镜像文件
make dep 建立文件关联
make all 编译
不过完全命令(默认)应该是
make ARCH=microblaze CROSS_COMPILE=microblaze-uclinux- -C
linux-2.6.x menuconfig
make ARCH=microblaze CROSS_COMPILE=microblaze-uclinux- -C
linux-2.6.x dep
make ARCH=microblaze CROSS_COMPILE=microblaze-uclinux- -j1 -C
linux-2.6.x || exit 1
ARCH是cpu架构,$ CROSS_COMPILE gcc是交叉编译器,如microblaze-uclinux-gcc,在
/home/petalinux/petalinux-v0.40-final/tools/linux-i386/microblaze-uclinux-tools/bin
下。
编译成功后,会在/home/petalinux/petalinux-v0.40-final/software/petalinux-dist/images目录下产生系统镜像文件image.bin等。
如果编译错误,要更改,可能是网卡、Uboot的问题,menuconfig时去掉这些支持就行。
如果出现错误:
cp: `/tftpboot': specified destination directory does not
exist
Try `cp --help' for more information.
make[2]: *** [image] Error 1
有时在XUPV5-LX110T开发板编译会出现会出现网卡不支持的错误,是因为在EDK新建工程时硬核网卡没有选择DMA支持。
下载文件
复制images目录到Windows
F:\ISE_Projects\xupv5-lx110t-103中,先复制到共享文件夹
cp -r $PETALINUX/software/petalinux-dist/images
/mnt/hgfs/E/petalinux/xupv5-lx110t-nomac/
用EDK下载download.bit
打开XMD,连接Microblaze
dow –data images/image.bin
0x90000000 (DDR RAM 起始地址)
con 0x90000000
(此时打开Terminal,设置好波特率,应该就可以看到正常启动了)
Linux驱动开发
大部分常用驱动在meke menuconfig时就可以选择添加,然后编译到系统镜像文件中。
Bootloader
使用tftp服务器是因为要用到UBOOT下载镜像到FLASH,这样就不用每次都手动下载镜像了,如果你打算每次下载一次镜像也是可以的。
而bootloader,如果是从Flash中读取镜像启动的话,可以使用Petalinux包中hardware目录中的fs-boot这个程序就可以了。
至于如果想在Linux中增加驱动模块或是程序的话,那么可以在Linux下使用petalinux-new-app或petalinux-new-module两个命令分别添加,并进行相应的操作,在参考文献2中的lab.doc中有介绍,就是这个文档稍微有点乱,可能看起来比较吃力一点。
参考文献
i Xilinx大学合作计划指定教材 《FPGA
上的嵌入式系统设计实例》,赵峰,西安电子科技大学出版社,2008
ii 2008 PetaLogix Qld Pty Ltd 1 of 36 XUP
Professors’ Workshop
Embedded Linux for the Xilinx MicroBlaze Soft Processor
lab2.1
《Lab 2.doc》
lan口配置 petalinux_PetaLinux开发文档相关推荐
- lan口配置 petalinux_PetaLinux安装及使用
Description/说明 PetaLinux版本:2016.4 操作系统版本:Ubuntu 16.04(如使用Ubuntu,墙裂建议使用16.04,其他版本官方手册并没有标明支持,可能会出现莫名其 ...
- Unity5 + java开发大唐诛仙手游源代码,含工具,配置表,和开发文档。
Unity5 + java开发大唐诛仙手游源代码,含工具,配置表,和开发文档. 大唐诛仙是一款修仙题材的RPG战斗手游,为你还原真实的仙侠世界,多种游戏角色任你挑选,可以自由加入不同的门派,海量时尚炫 ...
- tx2 fpga pcie无法读写_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解
双击可查看大图(手动狗头) 目录 Altera Cyclone V soc开发文档 之软硬件开发 1 Cyclone V开发流程介绍 5 专业术语 5 Cyclone V软件开发介绍 6 U-BOOT ...
- ubuntu arm qt_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解
双击可查看大图(手动狗头) 目录 Altera Cyclone V soc开发文档 之软硬件开发 1 Cyclone V开发流程介绍 5 专业术语 5 Cyclone V软件开发介绍 6 U-BOOT ...
- DotNet 项目开发文档的自动生成和相关工具的使用
在 VS.Net 的 IDE 中对C#提供了一些可以自动生成的 XML 注释,使用这些注释可以对代码中定义的对象进行说明.注解:通过设置项目属性,在生成项目时,可以让VS.Net自动的将这些注释信息输 ...
- 开源轻量级办公系统Sandbox介绍以及配套开发文档连载
1.Sandbox介绍 Sandbox是一个基于django框架开发的轻量级办公平台,主要模块有:权限控制.资产(库存)管理.设备管理.客户信息管理和工单流程管理,其目的在于建立一套规范化.统一化和清 ...
- python软件开发-如何编写Python软件开发文档(7个技巧)
开发文档是经常被程序员忽略的工作,有时也会被管理者忽略.这往往是由于在项目生命周期结束的后期缺乏时间,以及人们认为自己不擅长写作,其中一些人确实写不好,但他们中的大多数能够完成一个良好的文档. 在任何 ...
- CRMEB开发文档及目录结构
CRMEB 开发文档及目录结构 官网 CRMEB v2.6开源地址:http://link.crmeb.net/u/lingting 完整帮助文档:http://help.crmeb.net QQ群: ...
- .NET6使用DOCFX根据注释自动生成开发文档
本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...
最新文章
- 胥康成都行——ETC社区将会是全球最具有活力和影响力的超级社区
- Session的实现与存储
- 用matlab解一维单势垒波函数,一维多势垒结构准束缚态的MATLAB分析计算
- java cache-control_详解浏览器Cache-Control缓存策略
- 微信上线青少年模式,开启后这些功能无法使用
- mongoDB's Optimization example
- 【Python】改变对象的字符串显示
- 最新高通平台驱动开发参考文档
- Linux编程中C语言头文件位置
- Arduino UNO测试BME280温湿度气压传感器
- error LNK1123: failure during conversion to COFF: file invalid or corrupt
- 百度生成短链接(Get请求方式)
- 开发者的多媒体梦工厂: AV Pipeline Kit究竟是什么?
- linux文件读取程序,Linux系统编程:文件的读取写入
- 测绘资质高性能数据服务器,测绘资质分级标准2020年
- WebLogic(12C)——WLST
- oracle ebs 请求 待定,EBS 并发请求 计划 fnd_conc_release_classes(示例代码)
- 摩托罗拉被google收购了
- python实现图(卖芒果)
- 电子专业 常见面试题 (四)
热门文章
- 错误:cc1: error: unrecognized command line option “-m32”
- dta乱码_DTA是自动化索引的出色工具
- sql 除以_避免SQL除以零错误的方法
- Boostnote跨平台 Markdown 编辑器
- ASP.NET MVC4中的异步控制器
- wait 和 sleep 区别
- 表单中的日期 字符串和Javabean中的日期类型的属性自动转换
- node.js中实现同步操作的3种实现方法
- Android中CursorLoader的使用、原理及注意事项
- structs中国际化小结