uclinux移植教程
7_uClinux简介
uClinux开发环境建立
在linux环境下建立uClinux开发环境
安装编译器
下载并安装uClinux源代码
uClinux开发环境建立
安装编译器
如果采用arm-elf-tools交叉编译环境arm-elf-tools20030314.sh,该工具可以从 /pub/uClinux/arm-elf-tools/ 上下载。 在Linux控制台下执行以下命令:
uClinux开发环境建立
Windows+VMWare虚拟机环境下的uClinux开发
VMWare是运行于Windows中的一个应用程序,是 一个虚拟机,可以在其上安装多个操作系统,相当于在 Windows上安装一个虚拟的操作系统。 如果需要使用只支持Windows环境下调试的调试器, 可以通过在VMWare中安装linux虚拟机,在该虚拟机中进 行编辑、编译uClinux,然后通过网络(ftp、nfs、ssh)等 手段传送到Windows中,进行调试,这样编译和调试可以 分别在linux和windows环境下但是是在一台电脑中完成, 它的缺点是系统要求较高,运行速度慢。 也可以在两台电脑中分别安装linux和windows,分别 实现编译和调试。
uClinux开发环境建立
在Windows+Cygwin环境下进行uClinux开发
Cygwin是运行于Windows中的一个应用程序,它可 以使得Linux环境下的应用程序可以在Cygwin环境下进 行编译,即可以在Windows进行编译。 uClinux内核配置和编译等在Cygwin环境下运行,程 序编辑和调试都在Windows环境下进行,必须采用支持 Windows下进行linux调试的调试器(如ADT1000A)才 能进行调试,否则只能通过BOOTLOADER进行简单的 程序烧写运行等 调试信息的打印可以通过串口完成,使用Windows 上的超级终端工具接收并显示目标板传送的打印信息
uClinux上Microwindows的移植与中文化
Mi o o ue p l ain o. 2 N . ,0 6 c c mp t A pi t s 12 , o 7 2 0 r r c o V 文 章 编 号 :0 7 7 7 2 0 ) 6 o 6 4 1 o — 5 X(0 6 0 —0 4 一O
2 Mlr w d w c o io s系统 介 绍
Mi o n o c wid ws的最 新 版本 已经 更 新 到 0 9 。 们 采 用 了 r .1 我
Mi o n o 是 一 个 开 放 源码 的嵌 入 式 GUI 目 , c wid ws r 项 目的 在 于 把 现 代 图 形 视 窗 环 境 的 特 性 引 入 到 小 型 设 备 上 。 Mi .
co id ws起 源 于 Na o rW n o n GUl 目, 前 的 发 布 包 括 M i 项 目 r .
比较 稳 定 的发 布 版 0 9 . 0版 , 9 提 供 了放 多 新 增 功 能 , 0. O版 并 修止 08 . 9版 的一 些 B UG。增 强 和新 增 功 能 主要 包 括 : 新 的 对 N I XL B项 目的 支 持 , 置 触 摸 屏 校 准 与 一 些 新 的 基 于 AR 内 M 平 台 的硬 件 支 持 ; 善 x 1 屏 幕 驱动 与绘 图 速 度 : 体 的增 改 l的 字
对 Mio no c wid ws的 中 文 化 进 行 了 研 究 和 分 析 , 对 几 种 方 r 并 法 进 行 了 比较 。 于 本项 目对 多 国 语 言 的需 求 , 际 采 用 了基 基 实 于F e tp 2的 T u tp rey e r ey e中 文 字 库 , 国 际 化 与 本 地 化 嵌 入 图 将
应 用 程 序 接 口 ( Ps A I)
基于ARM-LPC2210芯片的uClinux移植及应用
Hale Waihona Puke 器上 , 不仅可 以合理 地对软 硬件 资 源进 行 调 度 , 而且 为用户 提供 方便 的应 用 接 1… .Ciu 针 对工 业 = u l x是 I n 控 制领域 , Lnx24内核 派生 出来 的嵌 入式 操 作 从 i . u
高 端 新 兴 领 域 中 网络 、 信 、 通 多媒 体 技 术 的 发 展, 以及 控制领 域应 用对数 据处 理 能力 的提 升要 求 ,
促进了 3 2位 A M7 D 系列 L C 2 0嵌入 式处 理 R T MI P 21 器 的广 泛应 用. 果将 操 作 系统 移 植 到嵌 入 式 处 理 如
As t e o e ain s se whc s d r e r m i u u ln x i u e n mirp o e s rwi o tme r n g me tu i h p r t y tm ih i e v d f o i o l x, C i u s sd o c o r c s o t u mo y ma a e n nt n h .
UClnu r d ll c me h an e b d e p r to y tm . whih i i e a te fed o n sra o to . Ho t i x ga ua y be o s te m i m e d d o e a in s se c S am d t h il f idu tl c nr 1 l w o
嵌入式Web server在uClinux上的移植
学 术 论 坛
嵌入式 Web ser ver 在 uC南许昌
461000 )
摘 要: 本文介绍了嵌人式 Web server 在u Clinux 上的移植技术。 关键词: 嵌人式 移植 文章编号: 1672一 3791(2007)12(b)一 0203一 02 文献标识码 : A 中图分类号 : T P 3 1 库和操作系统提供的 AP (应用程序接口)库。 I 如果是在各种嵌入式 linux(除了uClinux 以 外, 还有好几种)平台上开发, 那么针对该平台 以及l nux平台上的源代码都可以使用, l 但是要 层次结构及内核完全开放、网络功能强大、 完 牢记他们之间的差异。 整开发工具、 广泛的硬件支持、 遵循通用国际 移植应用程序的前提是有源代码, 移植的 标准、便干程序的移植等优点, 被嵌人式系统 关键工具是编译器, 源代码中和硬件平台相关 广泛应用。嵌入式 Web 服务器(Embedded 的东西越少越好(这里主 要指使用了 汇编, 或做 Web se ve , r r EWS)在现场测试和控制设备中 了针对自己平台的事) , 另一方面, 如果该程序 应用非常广泛。在通信领域的远程控制中的 是基于某个操作系统(利用了 操作系统提供的 应用, 正是由 于有了 标准的接口 形式和通信协 特殊服务, I ), 即AP 要看自己的操作系统是否 议, 内嵌于设备的We 服务器可以向任何接入 b 提供 了相关服 务。 它所在网 络的合法用户 提供统一的基于浏览器 移植时需要考虑的问题 : 方式的操作和控制界面, 浏览器成了设备的前 (1 自 ) 己的操作系统的特点以及在当前版 3 嵌入式we明反 务器 端控制板。 本下支持的特性 。 嵌人式Web 服务器(Er b edd ed w eb n 例如: u Clinux 不支持MMU, 同样就无 1 嵌入式系统 Server , EWs )是指将Web 服务器引 人到现 在相应的硬件平台和软 法支持相应的特性。 .嵌入式系统是以应用为中心、以计算机 场测试和控制设备中, (2 硬件资源。 ) 件系统的支持下, 使传统的测试和控制设备转 技术为基础、软件硬件可裁剪、适应应用系 因为嵌人式系统资源比较紧张, 硬件资源 l Web 统对功能、可靠性、成本、体积、功耗严 变为具备了以TCP/ P 为底层通信协议, 络测试和控制设 考虑必须要周全 : 格要求的专用计算机系统。嵌入式系统的核 技术为核心的基干互联网的网 a 软件存储空间的大小 心是嵌入式微处理器。嵌入式操作系统是嵌 备。 嵌人式设备只要实现We 服务器功能, b 再 这一般要等用目 标编译器重新编译完以后 人式系统的灵魂。嵌入式 L nux 正处于一个 i I t r e 所以只能大概估算, 但千万不要 方兴未艾的发展时期, 手机、 DA 、智能终 加上T CP/ P 网络协议就可以上In e n t 网。 可能才会知道, P 就认为程序 端等设备的制造商, 都把眼光瞄向了开放源码 在MCU 执行数据采集和控制功能的同时把数 看这个程序在hnux 下只有几十k , 很小, 这是因为hnux 下程序多时使用动态库, 发送到 I te net 上。在应用层, n r 嵌人 的L nu , i x 可以预见, 未来几年嵌入式L nu 的 据打包, i x 很有可能是把用到的库都 TP 发展将会迎来一个热潮。L n ux 作为一个开 式WEB服务器模块实现 H下 作为单片机系 而在嵌入式系统中, i 所以程序的尺寸会大大增加。 放源码性能优异而且代码精炼的操作系统, 在 统与In e n t 远程管理终端之间的通讯协议。 链接在一起, t r e 可将数据包发到以太网 b 程序运行空间 嵌入式系统中具有得天独厚的优越性。虽然 外加以太网控制芯片, c 硬件以及相应的驱动是否字备 通过以太网接人In e n t 。在客户端We t r e b 近年嵌入式系统的硬件条件正在不断地得到改 上, 善, 但无论如何嵌入式系统因其对于资源、 浏览器可打开嵌入式Web 服务器上网页。并 功耗以及成本等方面的敏感性 , 总会要求嵌入 通过 HTT P 的POST 方法, 把控制数据传给 5 嵌入式系统发展趋势 以信息家电为代表的互联网时代嵌入式产 式系 统能够更大程度上提高它的 性能同 时降低 We b 服务器。 对于资源的要求。 品, 不仅为 嵌人式市场展现了美好前景, 注入了 4 嵌入式Web server系统开发 新的生命;同时也对嵌人式系统技术, 特别是软 对干一个项目 的开发, 如何选择开发平台 件技术提出新的挑战。这主要包括: 支持日 2 嵌入式操作系统 随着微处理器的产生, 价格低廉、结构 (主要是指CPU 和操作系统以及开发环境和工 趋增长的功能密度、灵活的网络联接、轻便 有时这不光影响进度, 产 的移动应用和多媒体的信息处理, 小巧的CPU 和外设连接提供了稳定可靠的硬 具)应该说至关重要, 此外, 当然还 品质量, 可维护性等一般问题, 甚至涉及到方案 需对付更加激烈的市场竞争。 件架构, 那么限制嵌入式系统发展的瓶颈就突 1 、嵌入式应用软件的开发需要强大的 出表现在了 软件方面。Li nux 对厂商不偏不 的可实现性 。 1、从系统功能实现考虑: 是否有片上外 开发工具和操作系统的支持 倚而且成本极低, 能够很快成为用于各种设备 设 、价 格 、功 耗 、处理 速度 ; 随着因特网技术的成熟、带宽的提高, 的操作系统。如今, 业界已经达成共识, 即嵌 2、够的技术支持包括dem。 版及原理图, I CP 和 AS P 在网上提供的信息内容日 入式l u 是大势所趋, 大的市场潜力与酝 n l x 其巨 趋丰 像电话手机、电话 酿的无限商机必然会吸引 众多的厂商进入这一 d mo程序, e 操作系 统和BSP, 测试开发工 具等。 富、应用项目多种多样, 领域。 开发时, 宿主机完全使用的是l nux ,nux l l 座机及电冰箱、微波炉等嵌入式电子设备的 而且开发程序可以先 功能不再单一 , 电气结构也更为复杂。为了 Li ux 为嵌人操作系统提供了一个极有吸 的使用没有想象的复杂, n 然后用交叉编译工具为目 标 引力的选择, 它是个和 Un x 相似、以核心为 在宿主机上调试, i 满足应用功能的升级, 设计师们一方面采用更 可以这样做是因为宿主机 强大的嵌人式处理器如3 位、 位RI C 芯 2 4 6 S 基础的、完全内存保护、多任务多进程的操 系统重新编译一遍, 作系统。支持广泛的计算机硬件, 包括X86 , 是hnux , 标系统跑uC i ux , 目 l n 两个操作系统 片或信号处理器DSP 增强处理能力;同时还采 几乎是一样的, 所以程序 用实时多任务编程技术和交叉开发工具技术来 AIPll a ,5娜r ,MIPS ,PP C ,ARM ,NEC , 提供的应用程序接口 c 控制功能复杂性, 简化应用程序设计、保障 MOTOROLA 等现有的大部分蕊片。程式源 几乎不用修改。 程序的移植最终只针对CPU , 其实和操作 软件质量和缩短开发周期。 码全部公开, 任何人可以修改并在GNU 通用 统没什么关系, 一 面, 为代码中可能 但另 因 公共许可证( NU Ge er 1 Pu li L c s )下 系 G n a b c i e e n 2 、联网成为必然趋势 会使用一些库函 , 这些库会包括 C 语言标准 为适应应嵌入式分布处理结构和应用上网 发行, 这样, 开发人员可以对操作系统进行定
nios2移植uClinux软件架构
软件架构能用到的linux基本的操作有:VirtualBox 共享设置一、VirtualBox在winxp下虚拟ubuntu在winxp下虚拟ubuntu,在ubuntu下访问win的共享文件夹时出现如下错误:/sbin/mount.vboxsf: mounting failed with the error: No such device1,若要使用共享文件夹功能,必须安装linux guest additions,安装增强功能,这一步得注意不然没戏2,lsmod | grep vboxvfs,确保加载了vboxvfs模块,若没有,使用sudo modprobe vboxvfs 加载3,新建一个文件夹,sudo mkdir /home/js/dxn4,sudo mount -t vboxsf xuni /home/js/dxn 即:sudo mount -t vboxsf “共享文件夹名” “虚拟机共享文件夹目录”5,cd /home/js/dxn中途可能出现错误yacc -d grammar.ymake: yacc:命令未找到make: *** [grammar.c] 错误 127需要安装yaccinux下是用flex和bison来分别代替lex和yacc的,安装直接使用命令:sudo apt-get install bisonLinux切换root用户问题命令模式下直接用su,然后输入密码就可以了,像ubuntu如果还没有为root设置密码的话,可以用第一个用户(它默认有权使用sudo命令)来设置密码,sudo passwd root。
添加路径: export PATH=$PATH:路径名检查路径: echo $PATH桌面有光驱图标,这是加载linux系统增强工具的软件,打开:里面有个autorun.sh然后打开,在终端中运行在终端中运行,输入密码,稍等片刻。
之后出现以下界面,回车退出,工具安装完成。
uclinux内核配置傻瓜教程
Uclinux内核编译傻瓜教程插曲:SDT下程序调适经验在SDT工程下面的.alf文件都是库文件,有了这些库文件后与之相对应的.c 原文件就不需要加载进入工程,否则会导致工程调试时出现程序跑飞的情况。
比方说如果已经加入了44blib.alf文件,则不需要再加入44blib.c文件,如果加入程序通过jtag调试必然跑飞,去掉则没有问题!当然在ADS中是没有.alf库文件的,那么就需要加入相应的.c文件!!内核的编译过程我想大家都知道了,就是make menuconfig进入内核配置菜单进行删改,结束保存后进行make depmake cleanmake lib_onlymake user_onlymake romfsmake imagemake基本上按照立宇泰给的uclinux内核文件和交叉编译器就能够完成整个编译内核的工作,只不过也许由于内核版本不同会产生一些不同的结果,主要还是功能方面的!此次编译内核需要完成的功能包括文件系统ext2的挂载,网络驱动,基本的cash命令,lcd frambuffer功能,串口功能。
当然你也可以实现更多的文件系统的挂载识别和更多驱动功能,但是内核及文件系统必然增大,这里只是实现基本的一些驱动功能,希望借此给各位一些帮助!1.编译armsys-c的uclinux内核及文件系统。
原先armsys-c的uclinux内核文件说明如下:没有经过压缩的内核文件大小为1.8M;经过压缩的内核为0.9M,其经过解压后进入SDRAM区后应该还是具有1.8M大小;文件系统大小为0.8M左右。
这里要注意的是必须按照手册上说的地址下载,否则uclinux无法启动,原因应该是其编译生成的内核文件及文件系统文件在编译过程中已经加入了ro-base及rm-base,所以程序启动的时候会相应寻找其地址,如果不对则无法启动。
不过我会通过重新编译内核时更改其值,验证设想!以下是下载imageram.bin的过程,内核下载后再下载romfsimag.bin即完成整个下载过程,并让程序Pc指向内核起始地址启动uclinux!启动好了的内核及文件系统:对内核进行删改,并于原内核进行比对,发现一些问题。
nios2移植uClinux硬件架构
niosII 硬件架构在开始之前,我总是想多说点,因为看了很多的教程,中间也很辛酸,要达到无师自通的境界,在这种领域有些困难,每每遇到问题,总是喜欢百度一下,当找不到符合自己的情况的时候才是最头疼的时候,我们有点懒,有点想走捷径~~~做做笔记,同时也做做教程,在摩尔定律走不下去的时候,我们就会想起FPGA,我们乐此不疲,因为前途无量,当我们轻车熟路,请不要忘了给我们经验的前辈,同时有好的经验的时候,写写教程,小则帮助一二像我们一样的人,大则为中国的科技兴国做做贡献,无所求,只为心里踏实。
这个教程分两部分,一个是硬件架构,另一个是软件架构,不免会有错误,希望指正,所需硬件要求:cpu包含硬件乘法器,timer,串口,至少8M SDRAMusb blaster , pc一台所需软件要求:此番硬件架构大体分为以下内容:1.建立quartusII 工程。
2.利用sopc 工具搭建niosII软核处理器。
3.建立锁相环。
4.编译工程,分配引脚,重新编译。
5.提取所需的ptf文件。
1.建立工程:选择File -> New Project Wizard...会点英文的,或者是用过别的软件的都会知道,wizard是向导的意思,我们就喜欢向导,因为它会给我们剩下很多工作。
这个不用管它,点next,向下。
这个对话框就有用啦,看第一行,翻译过来就是你要把工程放到哪个文件夹下,然后点"..."选吧,选择你要放的位置,但是我要提醒一点就是,因为这是个外国人用的软件,它的路径里不能有中文,否则当你用niosII IDE软件的时候会有莫名奇妙的错误,这个就是我的经验,免费告诉大家啦。
我设置的路径是D:\quartus_pro\uclinux_nios2,然后点击:打开。
看第二个框。
工程名字,这次的有点特殊了,我们要同时看看第三个框了,第三个是顶层实体的名字,如果知道硬件描述语言,那么肯定会明白我说的意思,这里的工程名字必须和顶层实体的名字相同,我在工程名字填上uclinux_nios2。
uclinux移植教程
学习开发套件V3.0中嵌入Uclinux的步骤和方法在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram.开发环境:SOPC学习开发套件V3.0,型号EP1C6。
QII5.1+SP2,NiosII IDE5.1+SP1。
一 .安装nios2linux开发包nios2linux-1.4二 .建立硬件系统1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。
如下图:注意为防止不必要的麻烦,这里尽量使用默认名字。
如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。
我们的工程中是两个口都接了,使用串口或者USB口都行。
三.建立软件环境打开NIOSII IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。
关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M。
基于ARM的uClinuX的移植研究
域 而设计 的 Ln x操作 系统, 承 了 Ln x的众 多优 点, 泛应 用 于嵌入 式 系统 中。 对 不 同的嵌 入 式处理 器移 iu 继 iu 广 针 植 u iu Cl x已成 为嵌 入 式 系统 研 究的 一 个 重 点 。本 文 结 合 Ma i RM 2 0 一 n gc A 2 0 S教 学 实验 开发 平 台. 细 介 绍 详
B oL a e o tod r就是 在 操 作 系 统 内核 运行 之前 运 行 的 一 段小 程 序 。通 过 这 段小 程 序 , 们 可 以初始 化 硬件 设 备 、 我
EP O 等 ) 2R M ,具 有 以太 网 接 口 、 AN接 口 、 D M 接 C MO E 口、D I E硬 盘接 口、 F卡接 口、D卡 接 口、 印机 接 口 。 C S 打 彩
后 , 置 、 译 、 接 u l u 。 载 编 译得 到 的 映 像 文 件 配 编 连 Ci x 下 n
第1 7卷 第 5期
20 0 8年 9月
重庆职业技术 学院学报
o m a fCh g i g Vo ai n l& Te h ia n tt t u lo on qI c to a 1 c n c lI siu e
V 1 7 No5 o. . 1
Se D 2008
.
u lu C i x移 植 到 L C 2 0的 方 法 和 过 程 n P 21 关 键 字 : 入 式 系统 ;C iu : P 2 0 嵌 u l x L C2 1 n
中图分 类 号 :P 1 . T 3 62
1 引 言
文献 标识 码 : A
文 章编 号 :6 2 0 6 (0 8 0 — 13 0 1 7 — 0 7 2 0 )5 0 1 — 2
描述Linux内核的移植过程
描述Linux内核的移植过程
Linux内核的移植过程可以分为以下几个步骤:
1. 确定目标平台:首先需要确定要将Linux内核移植到哪个目标平台上,这个平台可以是嵌入式设备、服务器、桌面电脑等。
2. 获取源代码:从Linux官网或其他开源代码库获取Linux内核的源代码。
3. 配置内核:根据目标平台的硬件特性和需求,对内核进行配置。
可以使用make menuconfig、make xconfig或make config等命令进行配置。
4. 编译内核:使用交叉编译工具链对内核进行编译。
交叉编译工具链是一组针对特定平台的编译器、链接器、调试器等工具,可以在开发主机上编译生成目标平台上的可执行文件。
5. 生成镜像文件:将编译生成的内核、设备树、启动程序等文件打包成一个镜像文件。
镜像文件的格式可以是uImage、zImage、vmlinux等。
6. 烧录镜像文件:将生成的镜像文件烧录到目标平台的存储设备上,例如闪存、SD卡、硬盘等。
可以使用dd、fastboot、flash等命令进行烧录。
7. 启动内核:将目标平台连接到开发主机,通过串口或网络连接进行调试和启动。
可以使用bootloader或者直接从存储设备启动内核。
8. 调试内核:在目标平台上运行内核时,可能会遇到各种问题,例如驱动不兼容、内存泄漏、死锁等。
需要使用调试工具对内核进行调试,例如gdb、kgdb、strace等。
以上就是Linux内核的移植过程,需要根据具体的目标平台和需求进行调整和优化。
Minigui在uClinux 上的移植心得
Minigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子把源码文件复制到/home/liu/minigui目录下,解开源码[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建首先你需要一个Linux 环境,我安装的是RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。
这里搭建的环境是让MiniGUI 在你的PC 上可以跑起来,这样以后你开发程序就可以只在PC 上开发,调试好,最后交叉编译一下放到板子上就行了。
把 1.3.3 解开[user]# tar zxf[user]# tar zxf编译libminigui ,这个是minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure . yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是yes ,不然后面你的程序肯定会有问题,如果这里不是yes 的话,肯定是你的Redhat 9 安装不对,告诉过你安装时选everything ,你选了吗其中ttf 库是对TrueType 字体的支持,png 库是对png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
软件总体架构图
1软件总体架构图软件结构如图1.1所示:大容量数据采集与处理程序工业以太网网关路由程序CGIBOATCP/IP操作系统界面ucLinux 内核MicroBlaze Ip 设计图1.1 FPGA 数据采集软件架构图以上是系统的软件结构框图,我们下面将就具体每一个步骤的设计进行一个简要的描述:2 MicroBlaze IP 核设计IP 字面意思是知识产权,在微电子领域,具有知识产权的功能模块成为IP Core 或IP 核。
IP 可以用来生成ASIC 和PLD 逻辑功能块,又称为虚拟器件VC 。
IP 核可以有很多种,比如UART 、CPU 、以太网控制器、PCI 接口等。
根据IP 核描述的所在集成电路的设计层次,IP 可以分为硬IP 、软IP 、固IP 。
硬IP 的芯片中物理掩膜布局已经得到证明,所有的验证和仿真工作都已经完成,用它可以直接生产硅片,系统设计者不能再对它进行修改。
而软IP 是以行为级和RTL 级的Verilog 或VHDL 代码的形式存在,它要经过逻辑综合和版图综合才能最终实现在硅片上。
固IP 则介于两者之间。
Xilinx 公司的MicroBlaze32位软处理器核是支持CoreConnect 总线的标准外设集合。
MicroBlaze 处理器运行在150MHz 时钟下,可提供125 D-MIPS 的性能,非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。
1.MicroBlaze 的体系结构MicroBlaze 是基于Xilinx 公司FPGA 的微处理器IP 核,和其它外设IP 核一起,可以完成可编程系统芯片(SOPC)的设计。
MicroBlaze 处理器采用RISC 架构和哈佛结构的32位指令和数据总线, 可以全速执行存储在片上存储器和外部存储器中的程序, 并访问其中的数据, 如图4.1所示指令端总线接口程序指针(PC )运算器通用寄存器组32x32Bit指 令 缓冲指 令 译码数 据 端 总 线 接口DLMBDOP B图2.1 MicroBlaze 内核结构框图(1)内部结构MicroBlaze内部有32个32位通用寄存器和2个32位特殊寄存器—— PC 指针和MSR 状态标志寄存器。
ucos与linux
两种开源嵌入式操作系统介绍uc/os和uclinux操作系统,是当前得到广泛应用的两种免费且公开源码的嵌入式操作系统。
uc/os适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2k。
uclinux则是继承标准linux 的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准linux先验知识等优势。
其编译后目标文件可控制在几百k量级。
uc/os是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。
其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。
uclinux是一种优秀的嵌入式linux版本。
uclinux是micro-conrol-linux的缩写。
同标准linux相比,它集成了标准linux操作系统的稳定性、强大网络功能和出色的文件系统等主要优点。
但是由于没有mmu(内存管理单元),其多任务的实现需要一定技巧。
两种嵌入式操作系统主要性能比较嵌入式操作系统是嵌入式系统软硬件资源的控制中心,它以尽量合理的有效方法组织多个用户共享嵌入式系统的各种资源。
其中用户指的是系统程序之上的所有软件。
所谓合理有效的方法,指的就是操作系统如何协调并充分利用硬件资源来实现多任务。
复杂的操作系统都支持文件系统,方便组织文件并易于对其规范化操作。
嵌入式操作系统还有一个特点就是针对不同的平台,系统不是直接可用的,一般需要经过针对专门平台的移植操作系统才能正常工作。
进程调度、文件系统支持和系统移植是在嵌入式操作系统实际应用中最常见的问题,下文就从这几个角度入手对uc/os和uclinux进行分析比较。
进程调度任务调度主要是协调任务对计算机系统内资源(如内存、i/o设备、cpu)的争夺使用。
进程调度又称为cpu调度,其根本任务是按照某种原则为处于就绪状态的进程分配cpu。
由于嵌入式系统中内存和i/o设备一般都和cpu同时归属于某进程,所以任务调度和进程调度概念相近,很多场合不加区分,下文中提到的任务其实就是进程的概念。
uClinux移植教程
Linux/uClinux移植教程移植环境:PC主机一台:windows XP+SP3,虚拟机平台Vmware6.5,Linux平台:CentOS5.3操作系统,并且linux虚拟机可以访问互联网。
对于其它Linux操作系统,可能需要安装其它一些库文件,移植方法也大致相同。
步骤如下:1).安装EPEL开发包使用管理员帐号登陆CentOS5.3,下载安装EPEL开发包[root@localhost ~]#-Uvh /pub/epel/5/i386/epel-release-5-3.noarch.rpm[root@localhost ~]#yum install git-all git-gui make gcc ncurses-devel bison byacc flex \gawk gettext ccache zlib-devel gtk2-devel lzo-devel pax-utilslibglade2-devel完成后,会在linux机上装上gcc编译器(4.1版本),以及git server等其它工具。
2).检测cc编译器是否链接到gcc上[root@localhost ~]# which gcc[root@localhost ~]# gcc –v以及[root@localhost ~]# which cc[root@localhost ~]# cc -v如果两者内容相同,则已链接好。
如果不是:[root@localhost ~]# cd /usr/bin[root@localhost bin]# ln -s gcc cc3). 安装nios2-linux-20090730.tar开发包下载地址: /pub/uclinux/nios2-linux-20090730.tar可以在windows下下载,下载完后复制到linux的root根目录下。
校验压缩包是否完整:[root@localhost ~]# sha1sum nios2-linux-20090730.tar校验结果1d99a54d36759cc6ce5f054ff0460b1bd370b0b6 nios2-linux-20090730.tar解压到当前目录下,即root目录下:[root@localhost ~]# tar xf nios2-linux-20090730.tar进入nios2-linux目录:[root@localhost ~]# cd nios2-linuxCheckout源代码:[root@localhost nios2-linux]# ./checkout等checkout完成后,nios2-linux-20090730.tar安装完成4).生成nios的交叉编译工具toolschain如果您对linux比较熟悉,可以自己生成toolschain,这是一个漫长的过程,首先需要安装gcc4.3.3,安装完gcc后,[root@localhost nios2-linux]# cd toolchain-build # CD 到toolchain-build 目录[root@localhost toolchain-build]# gcc --version #查看gcc 版本[root@localhost toolchain-build]# git clean -f -x -d #清除编译缓存[root@localhost toolchain-build]# make gcc elf2flt gdb-host幸运地话,会在1到2个小时后完成,不过,这步出错率极高。
06-uCOS-II-uCLinux
1.3、µC/OS-II的内核:任务间通信与同步
µC/OS-II提供的信号量管理的基本函数如下: OSSemCreate() 用于建立信号量,并对信号 量赋0到65535之间的一个数为其初值。 OSSemDel() 用于删除一个信号量。 OSSemPend() 用于等待即申请一个信号量, 对信号量进行减1操作。 OSSemPost() 用于释放一个信号量,对信 号量进行加1操作。若加1后的信号量小于或等于0, 则说明有任务在等待该信号量,故OSSemPost()还 需要唤醒一个处于等待该信号的其它任务。
1.3、µC/OS-II的内核:内存管理
• 用户需要动态分配内存时,可选择一个适当的分 区,按块来进行内存分配。释放内存时将该块放 回它以前所属的分区,这样就能有效解决内存碎 片问题。
• 同时,每次调用malloc()和free()分配和释放的都是 整数倍的固定大小内存块,这样执行时间就可以 确定了。 • µC/OS-II 对内存的管理是通过内存控制块MCB (memory control blocks)数据结构来进行的,每 个内存分区都有属于自己的内存控制块。
1.3、µC/OS-II的内核:任务管理
推荐的任务函数形式:
void task ( void* pdata ) { INT8U err; InitTimer(); For( ;; ) { … OSTimeDly(1); } }
// 可选
//应用程序代码 // 可选
1.3、µC/OS-II的内核:任务管理
• 这里的信号(signal)被看成是事件(event),如 信号量、邮箱、消息队列等。 • µC/OS-II系统中提供了数据结构――事件控制块 (ECB)来实现信号量、邮箱、消息队列的管理。
linux移植的一般过程
linux移植的一般过程
1.硬件平台的分析:对要移植的硬件平台进行分析,了解其处理器架构、内存结构、设备接口等硬件特性。
2. 内核选择和配置:根据硬件平台的特性选择相应的Linux内核版本,并进行配置,包括启用或禁用某些功能、添加驱动程序等。
3. 引导程序开发:根据硬件平台的启动方式,开发或适配引导程序(bootloader),负责加载内核和设备驱动程序。
4. 设备驱动程序的开发或适配:根据硬件平台的设备特性,开发或适配相应的设备驱动程序,使其能够被内核识别和使用。
5. 文件系统的制作:根据硬件平台的存储设备特性,制作相应的文件系统,包括文件系统类型、文件系统结构、文件系统大小等。
6. 应用程序的移植:根据硬件平台的特性,移植相应的应用程序,确保其能够正常运行。
7. 调试和优化:进行测试和调试,解决可能出现的问题,并优化系统性能。
8. 发布和维护:完成移植后,进行发布和维护工作,包括文档编写、系统更新等。
- 1 -。
软件总体架构图[整理]
1软件总体架构图软件结构如图1.1所示:大容量数据采集与处理程序工业以太网网关路由程序CGIBOATCP/IP操作系统界面ucLinux 内核MicroBlaze Ip 设计图1.1 FPGA 数据采集软件架构图以上是系统的软件结构框图,我们下面将就具体每一个步骤的设计进行一个简要的描述:2 MicroBlaze IP 核设计IP 字面意思是知识产权,在微电子领域,具有知识产权的功能模块成为IP Core 或IP 核。
IP 可以用来生成ASIC 和PLD 逻辑功能块,又称为虚拟器件VC 。
IP 核可以有很多种,比如UART 、CPU 、以太网控制器、PCI 接口等。
根据IP 核描述的所在集成电路的设计层次,IP 可以分为硬IP 、软IP 、固IP 。
硬IP 的芯片中物理掩膜布局已经得到证明,所有的验证和仿真工作都已经完成,用它可以直接生产硅片,系统设计者不能再对它进行修改。
而软IP 是以行为级和RTL 级的V erilog 或VHDL 代码的形式存在,它要经过逻辑综合和版图综合才能最终实现在硅片上。
固IP 则介于两者之间。
Xilinx 公司的MicroBlaze32位软处理器核是支持CoreConnect 总线的标准外设集合。
MicroBlaze 处理器运行在150MHz 时钟下,可提供125 D-MIPS 的性能,非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。
1.MicroBlaze 的体系结构MicroBlaze 是基于Xilinx 公司FPGA 的微处理器IP 核,和其它外设IP 核一起,可以完成可编程系统芯片(SOPC)的设计。
MicroBlaze 处理器采用RISC 架构和哈佛结构的32位指令和数据总线, 可以全速执行存储在片上存储器和外部存储器中的程序, 并访问其中的数据, 如图4.1所示指令端总线接口程序指针(PC )运算器通用寄存器组32x32Bit指 令 缓冲指 令 译码数 据 端 总 线 接口DLMBDOP B图2.1 MicroBlaze 内核结构框图(1)内部结构MicroBlaze 内部有32个32位通用寄存器和2个32位特殊寄存器—— PC 指针和MSR 状态标志寄存器。
嵌入式linux内核移植步骤
嵌入式linux内核移植步骤嵌入式Linux内核移植步骤嵌入式Linux内核移植是将Linux内核移植到特定的硬件平台上的过程。
在进行嵌入式Linux内核移植之前,需要先了解目标硬件平台的相关信息,包括处理器架构、硬件接口、设备驱动等。
本文将介绍嵌入式Linux内核移植的主要步骤,以帮助读者了解移植的过程。
1. 获取源代码需要从官方或其他可靠的渠道获取Linux内核的源代码。
可以选择下载最新版本的稳定内核,也可以根据需要选择特定版本的内核。
获取源代码后,解压到本地目录。
2. 配置内核在进行内核配置之前,需要根据目标硬件平台选择适当的配置文件。
内核配置文件包含了编译内核所需的各种选项和参数。
可以使用make menuconfig或make defconfig命令进行内核配置。
在配置过程中,需要根据目标硬件平台的特点进行相应的配置,如选择正确的处理器类型、设备驱动等。
3. 编译内核配置完成后,可以使用make命令编译内核。
编译过程可能会比较耗时,需要根据计算机性能进行相应的等待。
编译完成后,会生成vmlinuz和相关的模块文件。
4. 编译设备树设备树是描述硬件平台的一种数据结构,用于在内核启动时传递硬件信息给内核。
如果目标硬件平台需要使用设备树,需要将设备树源文件编译为二进制文件。
可以使用device tree compiler(dtc)工具来编译设备树。
5. 烧录内核内核编译完成后,需要将生成的vmlinuz文件烧录到目标硬件平台上。
根据硬件平台的不同,可以使用不同的烧录工具,如dd命令、fastboot等。
烧录完成后,可以通过串口或其他方式查看内核启动信息。
6. 配置文件系统内核烧录完成后,需要为目标硬件平台配置文件系统。
可以选择使用已有的文件系统,如busybox、buildroot等,也可以根据需求自行定制文件系统。
配置文件系统包括选择合适的文件系统类型、添加必要的应用程序和驱动、配置网络等。
基于STM32F103的uCLinux移植汇总
基于STM32F103的uCLinux移植汇总转载:STM32F103的uCLinux移植汇总STM32F103 ucLinux开发之四(内核启动后的调试)wangyw 2015-01-10 17:41 阅读:424 评论:0STM32F103 ucLinux开发之三(内核启动后不正常)(完结)wangyw 2014-03-23 00:09 阅读:563 评论:0STM32F103 ucLinux开发之⼆(内核启动汇编代码分析)wangyw 2014-03-22 21:07 阅读:649 评论:0STM32F103 ucLinux开发之⼀(BOOT分析及源码)wangyw 2014-03-22 20:55 阅读:1530 评论:0STM32F103⽚外运⾏代码分析wangyw 2014-03-22 17:41 阅读:350 评论:0STM32F10X固件库函数——串⼝清状态位函数分析wangyw 2014-03-20 18:28 阅读:395 评论:0STM32和STR71X移植uCos-II操作系统⽐较分析wangyw 2014-03-20 17:39 阅读:239 评论:0基于uIP和uC/OS-II嵌⼊式⽹络开发wangyw 2014-03-20 17:09 阅读:540 评论:0STM32平台SD卡的FatFS⽂件系统开发wangyw 2014-03-20 16:10 阅读:270 评论:0STM32 Cortex-M3 NMI异常wangyw 2014-03-20 15:54 阅读:563 评论:0应对STM32 Cortex-M3 Hard Fault异常wangyw 2014-03-20 15:42 阅读:2186 评论:0STM32的备份寄存器和控制状态寄存器wangyw 2014-02-09 21:06 阅读:432 评论:0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习开发套件V3.0中嵌入Uclinux的步骤和方法在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram.开发环境:SOPC学习开发套件V3.0,型号EP1C6。
QII5.1+SP2,NiosII IDE5.1+SP1。
一 .安装nios2linux开发包nios2linux-1.4二 .建立硬件系统1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。
如下图:注意为防止不必要的麻烦,这里尽量使用默认名字。
如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。
我们的工程中是两个口都接了,使用串口或者USB口都行。
三.建立软件环境打开NIOSII IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。
关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:注意:如果右键菜单中没有Configure Kernel项,请在IDE菜单Windows->show view-> navigator, 在navigator窗口下使用右键便可。
后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M(对于8M的Flash大小不能超过2M)。
因此在这里要去掉没用到的选项:按空格键 取消或者选择General setup:processor type and features:这里选择的是Microtronix Cyclone board support,不是Altera在Device drivers除以下默认及保留串口外,其它都去掉Generic Driver Options --->Memory Technology Devices (MTD) --->Block devices --->串口位置及设置如下:Device drivers--ÆCharacter devices --->Serial drivers --->:注:如果Flash是intel公司生产的需要在Device Drivers>Memory Technology Device<MTD> RAM/ROM/Flash chip drivers 在这里选上support for intel/sharp flash chips。
默认情况是不支持intel公司的Flash。
AMD公司Flash:AM29系列。
Intel公司Flash:JS28F、E28F等。
设置完这里后其它便可使用默认,然后esc退出保存。
4.2 修改两个脚本文件D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nios2lin ux.kernel_1.4.0\linux-2.6.x\arch\nios2nommu\kernel\ vmlinux.lds.inc文件以及同目录下的vmlinux.lds.S文件 改成如下以符合我们的2Mflash: (注:如果是8M Flash不必修改,使用默认即可)在D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nios2lin ux.kernel_1.4.0\linux-2.6.x\drivers\mtd\maps\ 中找到microtronix.c文件,修改以下画线部分以及把BUSWIDTH 由2改为1(2表示16位总线,1表示8位总线,请根据开发板具体情况修改,V3.0实验板上的flash使用8位总线所以这里要改为1。
注表:开发板版本V2:16位,V3:8位,V4:16位,V5:8位。
以下的两个文件是内核文件和文件系统文件在Flash中的映射,如果是8M的flash 使用默认即可,如果不是8M可以根据具体情况设置),如下图:五..完成后编译内核:经过相当长时间的等待便可看到编译生成的内核vmlinux.bin二进制文件:六.用flash programer下载此内核到flash中的从0地址开始:七.建立文件系统:7.1 在IDE中 File->new->projectNext 输入名字:继续Next:NEXT:点击Install Minimal:Finish后有警告,不管,确定后完成。
7.2 编译此文件系统后生成romfs.bin文件,同上面烧写内核的方法,把此文件烧写到flash 中去,注意offset地址为:0x100000(注:对于8M的flash这里的偏移量为0x200000,偏移地址为多少是根据上面那两个根本文件中对flash的设置而定。
客户也可以根据自己的实际需要做修改)此图中我把romfs.bin文件拷到了C盘,所以file中是:c:\romfs.bin八.ok下载成功后,接上USB (或者串口),打开串口调试工具,按一下板子上的reset 键后可看到串口工具接收窗中显示如下信息:linux系统便启动成功了。
输入命令:ls bin九.建一个LED闪动程序。
9.1 在IDE中File->New->project:一路next到finish.9.2. 建一个C文件:在弹出的对话窗输入文件名:hello.c注意要加.c后缀:9.3 把…altera/kits/nios2/examples/software/linux/apps 目录下samples/hello 文件夹里的makefile复制到my_app工程下。
注意:makefile文件的选择是有讲究的。
具体请参阅:在目录..altera\kits\nios2_51\documents\linux\ 下的Linux Reference Guide.pdf 文档第19页。
在hello.c中输入以下程序:#include <stdio.h>main(){int i;char led=0x1;while(1){for(i=0;i<100000;i++);* (int*) 0x80202040=led; //0x80202040是led灯的地址led=~led;}}说明:其它外面地址在内核工程nios2_system.h中定义,如下图9.4 右键my_app工程:选择如下图:在弹出以下对话窗:点Ceate完成。
9.5.右键my_app工程:选择如下图:开始编译程序。
9.6 编译完成后没问题的话就可生成hello.exe运行文件:9.7.把生成的hello.exe文件复制到文件系统目录下的BIN文件夹,如下图:9.8.编译此文件系统:9.10.最后把生成的文件系统romfs.bin用flashprogramor下载到flash中。
方法和上面烧写文件系统到flash相同。
十.于是我们便完成了整个linux的移植和简单开发过程。
运行结果:插好USB线,打开串口调试工具,按一下reset:输入ls bin 回车。
输入hello 回车此时便可看到核心板上两个LED交替闪动。
linux系统移植uclinux到EP1C6的过程如下:(仅供参考)nios2linux-1.4开发包仅支持到QuartusII6.0版本,且一直没有更新,在使用QII更高版本时以上移植就行不通了,以下是传输的移植方法,适合与任何QII版本,但仅供参考,不保证肯定其正确性。
一、 首先我们用SOPC builder建立一个nios2的系统,在QuartusII里面分配好引脚和编译生成我们CPU核的工程。
其中的nios_c.ptf就是我们等会儿用来在linux下面生成我们这个cpu系统相关信息的文件。
二、 在linux系统下面,我用的是Feodra4+vmware5.0,其他的发行版本也可以的。
下面是操作的具体步骤:三、 以一般用户的身份进入linux,在系统目录下面用mkdir download命令建立一个叫做download的目录,去niosforum那里下载nios2linux-1.4.zip文件和build0411.zip文件(由Hippo提供),把这两个文件放在linux的~/download,用命令unzip build0411.zip 解压缩build0411.zip文件,里面有一些补丁和脚本文件,然后输入./build运行build这个脚本,如果你的网络不行的话可以自己修改这个脚本,把wget那些命令屏蔽掉,然后自己下载到download目录下面。
四、 运行完这个脚本之后在~/目录下有这些文件:在建立buildroot的时候有一些软件下载不了的可以自己先下载,然后放在~/download目录下面。
五、cd 到linux-2.6.x目录,把我们的编译工具的目录加到系统的命令路径里去,输入命令PATH=$PATH:~/buildroot/build_nios2/staging_dir/bin,或者在~/.bash_profile那里添加也可以的,设置完了可以用命令nios2-linux-uclibc-gcc –v来测试是否成功。
六、把我们第一步生成的project.ptf (project是你的nios2系统工程的名字)拷贝到~/linux-2.6.x,用命令: make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- hwselect SYSPTF=project.ptf生成与系统相关的头文件七、输入命令make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- menuconfig配置系统的内核:Device Drivers ---> Character devices ---> Serial drivers --->选择你的串口,我这里用的是jtag uart,如果你用的是一般的串口,你要选择Nios serial support,同时关闭下面的那个jtag uart。