uclinux编译和移植(完整版)
3.uClinux移植过程PPT课件
-
3
交叉编译器安装: 下载: arm-elf-tools-20030314.sh 在超级用户环境下运行: sh arm-elf-tools-20030314.sh
-
4
1.1.2 为安装windows的宿主机建立交叉编译器
1. Cygwin软件介绍
为了在Windows下开发嵌入式操作系统应 用程序,可以在Windows环境下装上Cygwin软 件。Cygwin是一个在Windows平台上运行的 Unix模拟环境,是Cygnus Solutions公司开发的 自由软件。它对于学习掌握Unix/Linux操作环 境,或者进行某些特殊的开发工作,尤其是使 用GNU工具集在Windows上进行嵌入式系统开 发,非常有用。
1.建立uClinux开发环境
1.1 建立交叉编译器 通常的嵌入式系统的开发都是以装有Linux的 PC机作为宿主机来编译内核和用户应用程序的, 但是对于很多长期工作在Windows操作系统下 的用户来说,突然切换到Linux环境下去开发 程序会感到诸多不便,因此对于不同的开发者 提供了在宿主机装有不同操作系统时,相应的 交叉编译环境建立的方法。
-
7
图1
-
8
安 装 的 时 候 建 议 最 好 不 要 安 装 到 C:\ 目录下,比如安装在D:\下。
在安装的过程中,会让用户选择安装 哪些包,这些包主要是确定开发环境, 编译工具等,如果不能确定具体需要哪 些包的话,而硬盘空间足够的情况下, 就选择全部安装。在出现的对话框的 ‘’All‘’的右边点击‘’Default‘’,直到 变成‘’Install‘’,如下图2所示
-
1
1.1.1.为安装Linux的宿主机建立交叉编译器
首先,要在宿主机上安装标准Linux操作系 统,如RedHat Linux(本书使用的是Redhat 7.2), 一定要确保计算机的网卡驱动、网络通讯配置 正常,有关如何在PC机上安装Linux操作系统 的问题,请参考有关资料和手册。
uClinux 的编译和运行
uClinux 的编译和运行说明:这个编译过程是基于uClinux-dist-51EDA.tar.bz2这个文件可以在51EDA论坛的客服中心找到。
1.创建开发环境首先需要编译的环境。
我们最好使用Linux作为开发平台,因为Linux以及uClinux的开发者们基本都是在Linux下完成的开发。
为了能够编译uClinux,我们需要下载uClinux的编译器。
这个文件可以在uClinux的官方网站得到,也可以在论坛的客服中心下载。
官方的下载地址是:/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh但是这个网站的速度比较慢,因此您也可以在论坛的客服中心下载。
是一样的文件。
在这里需要注意的是,虽然同为gcc和binutils工具,但是必须使用uClinux发布的版本,因为这个gcc和binutils都是为了能够编译FLAT格式的文件而订制的,另外也加入了ARM对PIC(Position Independent Code,位置无关代码)的支持。
PIC的支持是用来编译动态库或者XIP模式的可执行文件。
关于XIP的介绍有一篇文章:/article.pl?sid=02/08/28/0434210大家可以了解一下XIP。
但是由于XIP并不是很稳定,所以在我们发布的uClinux版本中并没有使用这个技术。
然后,将下载得到的文件,是一个sh文件。
这是一个自解压的文件(就好比Windows 下面的自解压zip或者rar一样)。
为了能够运行,我们需要:./arm-elf-tools-20030314.sh这样如果不能运行的话,那应该使用下面的命令:chmod 755 arm-elf-tools-20030314.sh得到了编译环境,就可以编译源代码了。
当然,首先要把代码解压缩到你的目录下面:tar xjvf uClinux-dist-51EDA.tar.bz2它会把全部的文件解压缩到uClinux-dist的目录下。
S3c44B0在uClinux的移植步骤
S3c44B0在uClinux中需要修改的文件一.内核基本文件的修改 1.uClinux-Samsung\vendors\Samsung\S3C44B0“config.linux-2.4.x”这个是linux内核编译配置选项文件。
# System Type## CONFIG_ARCH_DSC21 is not set# CONFIG_ARCH_CNXT is not set# CONFIG_ARCH_SWARM is not set#CONFIG_ARCH_SAMSUNG=yCONFIG_ARCH_MBA44B0=y# CONFIG_ARCH_ATMEL is not setCONFIG_NO_PGT_CACHE=yCONFIG_CPU_32=y# CONFIG_CPU_26 is not setCONFIG_CPU_ARM710=yCONFIG_CPU_WITH_CACHE=y# CONFIG_CPU_WITH_MCR_INSTRUCTION is not setCONFIG_SERIAL_44B0=y#CONFIG_SET_MEM_SAMSUNG=yDRAM_BASE=0x0c000000 #SDRAM起始是地址DRAM_SIZE=0x01000000 #SDRAM大小16MFLASH_MEM_BASE=0x00000000 #FLASH起始地址FLASH_SIZE=0x00200000 #FLASH大小2M## General setup以后的make都以CONFIG_ARCH_S3C44B0=y这选项来解决是编译和S3C44B0相关的其他选项。
2.arch/armnommu/Makefie:ifeq ($(CONFIG_ARCH_S3C44B0),y)TEXTADDR = 0x0c008000MACHINE = s3c44b0endifTEXTADDR = 0x0c008000表明未压缩的内核的位置3.arch/armnommu/boot/Makefie:ifeq ($(CONFIG_ARCH_S3C44B0),y)ZRELADDR = 0x0c008000ZTEXTADDR = 0x0c300000endifZRELADDR = 0x0c008000表明未压缩的内核的位置ZTEXTADDR = 0x0c300000表明压缩内核的位置4.include/asm-armnommu//proc-armv/system.h#ifdef CONFIG_ARCH_S3C44B0#undef vectors_base()#define vectors_base() (0x0c000008)#endif5.arch/armnommu/mach-s3c44b0/arch.cMACHINE_START(MBA44B0, "S3C44B0")MAINTAINER("Mac Wang")BOOT_MEM(0x0c000000, 0x01c00000, 0x01c00000)BOOT_PARAMS(0x0c000100)INITIRQ(genarch_init_irq)MACHINE_END其中MACHINE_START(MBA44B0, "S3C44B0")的“MBA44B0”是在asm/mach-types.h 里定义的平台类型BOOT_MEM(0x0c000000, 0x01c00000, 0x01c00000)指定了启动的RAM 地址0x0c000000,特殊功能寄存器地址0x01c00000,BOOT_PARAMS(0x0c000100) 表示内核参数的传递地址。
嵌入式μCLinux系统移植(全文)
嵌入式μCLinux系统移植XX:1007-9416(20XX)04-0086-01嵌入式Linux系统在开发过程中需要对Linux内核进行重新定制,所以熟悉内核配置、编译和移植是非常重要的。
掌握一定的Linux内核的内容,是对Linux进行手动内核移植前必须要做的。
1 Linux内核移植Linux内核移植,通俗讲马上内核由一种硬件平台移植到另一种硬件平台上运行的方式。
虽然大部分的处理器和硬件平台,嵌入式Linux系统都可以支持,但最好还是以自己定制的硬件板为主,移植工作也可通过硬件平台的变化进行调整。
本文以Linux2.6.32.4版本内核为例,过程是如何将其移植到RM内核S3C2440处理器上,该处理器是Smsung公司出产的。
1.1 内核修改(1)解压内核源码。
加压命令:tr jxvf linux-2.6.32.4.tr.bz2。
(2)修改Mkefile。
Mkefile是贯穿整Linux内核的生命线,并以此完成编译和链接。
具体过程为:内核源码目录――进入一级目录(通过编译工具)――找到Mkefile文件――修改相关变量。
(3)修改目标板输入时钟。
内核源目录――找到文件rch/rm/mch-s3c2440/mch-smdk2440.c并打开(通过编译工具)――找到函数mini2440_mp_io(void)的实现代码:s3c24xx_init_clocks(12000000)。
此代码单位是Hz,是目标板中处理器晶振的频率的意思。
依照目标板实际晶振震荡器的大小进行修改,本文以12MHz晶振为例。
(4)修改MTD分区。
MTD驱动程序在Linux下,其接口分为用户模块和硬件模块两种。
将MTD子系统编译到内核中,是为了访问特定的闪存设备,并在它上面放置文件系统,这包括选择适当的MTD硬件和用户模块。
MTD子系统就目前而言,支持绝大多数的闪存设备,且不断的有更多的驱动程序添加进来,以用于不同的闪存芯片。
第12uCLinux在的移植
? 内核及根文件系统的烧写
配置 minicom 烧写内核 烧写根文件系统
第十二章目录
? UP-NETARM3000 嵌入式教学开发平台介绍 ? uClinux在UPNETARM300 上的移植
Linux移植准备 关于交叉编译环境 修改uCLinux内核源码 Linux内核裁剪 内核的编译
? 进入Binutils目录:
./configure --target=arm-linux--prefix=/toolchain/bu make LANGUAGES =”C” make install
第12章 uCLinux在 UP-NETRARM3000平台
上的移植
本章主要内容
? uClinux源码下载方法和交叉编译工具的下载、
生成方法。
? 内核源码的修改、剪裁和编译过程。 ? 内核裁剪时的菜单选项的配置方法。 ? 内核及根文件系统的烧写过程。
第十二章目录
? UP-NETARM3000 嵌入式教学开发平台介绍 ? uClinux在UPNETARM300 上的移植
式教学开发平台介绍
?UP-NETARM3000 平台是博创兴业科技有限公司,
依托北京航空航天大学开发的。适用于嵌入式教 学和开发。
?目前已应用于清华大学、北京航空航天大学等多
所高校。
?该平台是基于 S3C44B0X 处理器,可以运行
uC/OS-II 和uClinux 的系统。它由核心模块和扩展 模块组成 。
12.2.1 Linux移植准备
① 注释掉ARCH:=$(shell uname –m | sed –e s/i.86/i386/-e s/sun4u/sparc64/ -e s/arm. */arm/ - e s/sa110/arm/)这一行;
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。
如何编译UClinux内核
第 1 为 字 符 界 面 , 第 2种 是 在 字 符 界 面 下 实 现 的 种 菜 单 界 面 , 第 3种 为 图 形 界 面 。3种 配 置 方 法 是 一 致 的 。 如 果 L n x上 安 装 了 XW id ws 统 , 建 议 iu no 系 使 用 图 形 界 面 。这 里 以 图 形 界 面 为 例 。 在 L n x中断 输 入 ma ex o f iu k c ni ,系 统弹 出一 g后 个 对 话 框 。在 对 话 框 中 单 击 Ta g t P t O m r l f e a r
要 说 明 的是 , 文 章 中的配 置 是 选 择通 常 的配 置 。 和 编 译 普 通 的 L n x 内核 一 样 , 在 编 译 前 要 进 iu 行 内 核 的 配 置 。 可 以 有 3种 方 法 来 对 内 核 进 行 配
置 :ma ec n i k o fg、ma eme u o fg、ma ex o fg。 k n cn i k c ni
后 将 进 入 Ke n lCo fg r to r e n i u ai n。否 则 跳 过 该 配置 。
◇ 【 r e n iu ain Ke n l Co fg r to 】 【c d t rt v l pin 】o e mau i l e o t s ye o
下 面的步骤 就是编译 自己的 u i U Cln x内核 。这 里需
根据 笔者经验 ,l u 一 .. i x 20x相对比较稳定 。 n
L b e so icV rin:库 函 数 的版 本 有 2 库 函数 : C l c C ic 种 u — b 、u l 。一 般默 认 选 择 i b
前者 。
【 Dea l al et g ] fut l st n s i
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个小时后完成,不过,这步出错率极高。
StepByStep教程_ucLinux在SOPC上的移植
清华大学‐友晶科技 EDA/SOPC 培训中心 StepByStep 教程 uclinux 在 SOPC 上的移植一、 前言 通过简单的例子说明 uclinux 在 SOPC 上移植的过程,仅为抛砖引玉,有了这个基础, 以后就能开发更复杂的程序。
网上这方面的例子及文档也很多, 但大多数是在 RedHat9.0 上完成的交叉编译及 uclinux 的内核编译,但 RedHat9.0 已经是很老的 linux 发行版,RedHat 公司在 04 年就停止了 对它 的发行及支持。
如今使用最广的 linux 发行版是 ubuntu(中文发音“乌班图”,其最新的稳 ) 定版本是 9.04(9.04 的意思是 09 年 4 月份发行,ubuntu 每隔 6 个月发行一个新版本,所以 下一个版本是 9.10,目前已出测试版) 。
我们的移植就选定在 ubuntu9.04 上完成,其移植过 程肯定不如在 RedHat9.0 上顺利,中途会遇到很多困难,现在把遇到的问题及排除方法也写 在下面,以方便大家回去自己研究之用。
二、 实验环境 1, 硬件设备:PC 机 +DE2 开发板; 2, 软件环境:WinXP+QuartusII9.0+NiosIIEDS9.0+ 虚拟机 VMware6.0+ubuntu9.04; 三、 需要准备的文件 1, 能跑 uclinux 的 SOPC 工程及其配置文件; 2, 交叉编译工具:nios2gcc.tar.bz2 3, uclinux 源代码: uClinux‐dist‐20070130.tar.gz (发行版本) uClinux‐dist‐20070130‐nios2‐02.diff.gz (内核补丁) 这此文件都已经放在 D:\Share\ucLinux 文件夹中,如图 1 所示。
(图 1) 其中, DE2_NET 是 QuartusII 工程文件夹, DE2_NET.sof 是编译后的下载文件, system_0.ptf 是 SOPC 的配置文件。
UCinux 的移植包在ARMSYS 上的 使用说明
uClinux的移植包在ARMSYS上的使用说明(vol.20050101)目录1.下载与运行U C LINUX (2)1.1烧录Bootloader (2)1.1.1 fluted烧录工具的使用 (2)1.1.2 flashprgm工具的使用 (2)1.1.3 uClinux专用bootloader的功能项 (3)1.2下载image.ram,image.rom,romfs.img到开发平台 (4)1.2.1从SDRAM启动运行uClinux (4)1.2.2烧录到flashROM中运行 (6)2.配置与编译U C LINUX (7)2.1解压uClinux移植包 (7)2.2安装编译环境 (7)2.3配置和裁减uClinux (8)2.4编译uClinux (8)3.U C LINUX的应用开发 (8)3.1开发模式 (9)3.2调试方法 (9)本文将按步骤详细说明如何在ARMSYS开发平台上下载、烧录、运行uClinux的移植版;如何剪裁和配置uClinux内核和用户选项,如何编译uClinux源代码包,如何进行uClinux 应用开发等内容。
欢迎光临网站,查看uClinux移植与应用相关的最新技术文档。
1.下载与运行uClinux1.1烧录Bootloader【Bootloader概念】简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
在ARMSYS提供的配套光盘中,uClinux/Bootloader目录中包含一个Bootloader的二进制文件(bootloader.bin)和Bootloader工程源码。
要在ARMSYS上运行uClinux,首先要将Bootloader的二进制文件烧录到flash中,取代BIOS,令它在上电后即被运行。
MiniguiV1.3.3在uClinux中的移植经验总结[转]
MiniguiV1.3.3在uClinux中的移植经验总结[转]Minigui V1.3.3在uClinux中的移植经验总结 [转]经过一个星期的努力,终于将Minigui移植到我的ARM7开发板上了,在这个过程中我遇到了很多困难和问题,但是通过网络,通过以前很多前辈在网络上分享的经验,终于取得成功,也让我更加体会到只有大家都互相帮助,互相分享经验才能使大家都受益。
所以基于这一点,我将我的移植过程分享给大家,并且写得尽量详细点,希望给大家一些帮助,使后来者少走一些弯路。
有不对的地方,欢迎大家板砖!首先说明一下我的开发平台,我用的是Samsung S3C44B0X芯片的开发板,已经移植好的uClinux操作系统和FrameBuffer驱动。
我的uClinux安装在"/s3c44b0fu/uClinux-dist"目录下,交叉编译工具安装在"/usr/local/arm-elf"目录下。
具体步骤:一. 从网站下载libminigui-1.3.3.tar.gz, mde-1.3.0.tar.gz, mg-samples-1.3.0.tar.gz和minigui-res-1.3.3.tar.gz四个压缩文件,并将这四个文件保存到交叉编译环境的目录下,因为我的arm-elf-gcc交叉编译工具安装在"/usr/local/arm-elf"目录下,所以将minigui的四个压缩包同样拷贝到"/usr/local/arm-elf"目录下.二. 在终端中输入"cd /usr/local/arm-elf",进入minigui的四个压缩文件所在目录,然后分别执行"tar zxvf xxxxx.tar.gz"将这四个压缩包解压缩.解压后生成libminigui-1.3.3, mde-1.3.0, mg-samples-1.3.0和minigui-res-1.3.3四个文件夹.三. 1) 进入minigui-res-1.3.3文件夹内,修改config.linux,在prefix = $(TOPDIR)/usr/local/后添加我们的交叉编译安装目录arm-elf,即prefix = $(TOPDIR)/usr/local/arm-elf.2) cd minigui-res-1.3.33) make install四. cd mde-1.3.0./configuremakecd mg-samples-1.3.0./configuremake五. 1) 编写交叉编译minigui函数库的配置脚本domain.sh.domain.sh的具体内容为:#!/bin/shrm config.cache config.status -fCC=arm-elf-gcc \CFLAGS="-I/s3c44b0fu/uClinux-dist/uClibc/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \LDFLAGS="-Wl,-elf2flt -static -Wl,-move-rodata -Wl,-L/s3c44b0fu/uClinux-dist/lib/uClibc/lib -Wl,-L/s3c44b0fu/uClinux-dist/linux-2.4.x/lib -Wl,-lc -Wl,-lm" \ ./configure --prefix=/usr/local/arm-elf \--build=i686-pc-linux-gnu \--host=arm-elf-linux \--target=arm-elf-linux \--disable-shared \--disable-lite \--disable-standalone \--enable-incoreres \--disable-flatstyle \--enable-newgal \--disable-nativegal \--disable-galcommlcd \--enable-galfbcon \--enable-adsial \--disable-micemoveable \ --disable-cursor \--disable-fblin1r \--enable-fblin8 \--disable-fblin16 \--disable-fblin32 \--disable-textmode \--enable-dummyial \--disable-mc68x328ial \--disable-nativeial \--disable-qvfbial \--disable-qpfsupport \--disable-ttfsupport \--disable-type1support \ --disable-latin9support \ --disable-gbksupport \--disable-big5support \--disable-unicodesupport \ --disable-savebitmap \--disable-imegb2312 \--disable-imegb2312py \ --disable-aboutdlg \--disable-savescreen \--disable-grayscreen \--enable-tinyscreen \--enable-video-fbcon \--disable-video-qvfb \--disable-nativegalqvfb \ --with-osname=uclinux编写好后拷贝到libminigui-1.3.3下.2) cd libminigui-1.3.33) sh domain.sh4) make5) make install6) ldconfig上面六步即完成了用arm-elf-gcc对minigui的函数库的交叉编译.可以进入/usr/local/arm-elf目录中,你会看到新增加了etc和lib两个文件夹,这两个文件夹就是我们刚才用arm-elf-gcc交叉编译minigui 的函数库所产生的结果,以后编译在目标板中运行的应用程序时,就会对这两个文件夹里的内容进行编译,从而产生适合于在arm开发板中运行的应用程序.六. 编写测试minigui的应用程序1) 测试程序miniguidemo.c其实就是从mg-samples-1.3.0中拷贝过来的helloworld.c程序,不过要根据具体的LCD做一点修改,如我的LCD是640x480的256色STN彩色屏,所以要将#ifdef _LITE_VERSIONSetDesktopRect(0, 0, 1024, 768);#endif修改为:#ifdef _LITE_VERSIONSetDesktopRect(0, 0, 640, 480);#endif根据你的不同的LCD修改这个参数,还可以修改这个窗体显示的位置,根据你的喜好修改即可.最后将编写好的miniguidemo.c保存到/s3c44b0fu/uClinux-dist/user/guidemo中(注:guidemo是我在user目录中新建的文件夹)2) 在/s3c44b0fu/uClinux-dist/user/guidemo中编写Makefile 文件,具体内容为:EXEC = miniguidemoOBJS = miniguidemo.oLDFLAGS=-L/s3c44b0fu/uClinux-dist/uClibc/liball: $(EXEC)$(EXEC): $(OBJS)$(CC) $(LDFLAGS) -o $@ $(OBJS) -lminigui -lmgext $(LIBPTHREAD) $(LIBM) $(LDLIBS) -elf2fltromfs:$(ROMFSINST) /bin/$(EXEC)clean:-rm -f $(EXEC) *.elf *.gdb *.o3) 修改user/Makefile为了让编译器编译上述添加的内容,在user/Makefile中添加一句(一般按照字母排列):dir _$(CONFIG_USER_GUIDEMO_MINIGUIDEMO) +=guidemo4) 修改config/config.inconfig/config.in文件中添加的内容会在对用户选项进行配置时反映出来。
uclinux编译
uclinux编译今天终于开始了传说中的uclinux移植了。
搞了一上午,才编译出个默认配置的image.bin,哎,太受打击了~~在网上找的一些内核配置资料一点用也没有,只会增加麻烦。
编译的时候,不是这里出错,就是那里没发现的,哎,~~ 最后还是在官网上找到一条路:除了配置符合厂商的板子外,其他全用默认的配置~~结果编译的时候还是出了两个错误。
在用了3万2千1百9十9招google之后,终于解决了,如下:错误1:/usr/local/bin/arm-elf-ld.real: cannot open romfs.o: No such file or directorymake[1]: *** [linux] Error 1解决办法cp ./linux-2.4.x/fs/romfs/romfs.o ./linux-2.4.x/ 错误2:s/fs.o(.data+0x15f0): In function `sys_open':/curret1/uClinux-dist/linux-2.4.x/fs/open.c:805: multiple definition of `romfs_file_operations'romfs.o(.data+0x80):/curret1/uClinux-dist/linux-2 .4.x/fs/romfs/inode.c:107:第一次在此定义make[1]: *** [linux] 错误 1make[1]: Leaving directory`/curret1/uClinux-dist/linux-2.4.x'make: *** [linux] 错误 1解决办法在 ~/uClinux-dist/linux-2.4.x/fs/romfs/inode.c的static(这地方没有加上) struct file_operations romfs_file_operations = {read: generic_file_read,mmap: generic_file_mmap,#ifdef MAGIC_ROM_PTR开头加上static 问题就解决真是搞不懂,怎么会出这样的错误,而且自己还发现居然有一个文件里的函数少半边括号的错误也不知道是怎么搞的,哎~~~总之吧,这个肯定是要花不少时候的貌似生成的这个image.bin还运行不了,再看看吧,要吃饭去了。
3.uClinux移植过程PPT课件
-
7
图1
-
8
安 装 的 时 候 建 议 最 好 不 要 安 装 到 C:\ 目录下,比如安装在D:\下。
在安装的过程中,会让用户选择安装 哪些包,这些包主要是确定开发环境, 编译工具等,如果不能确定具体需要哪 些包的话,而硬盘空间足够的情况下, 就选择全部安装。在出现的对话框的 ‘’All‘’的右边点击‘’Default‘’,直到 变成‘’Install‘’,如下图2所示
-
1
1.1.1.为安装Linux的宿主机建立交叉编译器
首先,要在宿主机上安装标准Linux操作系 统,如RedHat Linux(本书使用的是Redhat 7.2), 一定要确保计算机的网卡驱动、网络通讯配置 正常,有关如何在PC机上安装Linux操作系统 的问题,请参考有关资料和手册。
由于uClinux及它的相关开发工具集大多都 是来自自由软件组织的开放源代码,所以在软 件开发环境建立的时候,大多数软件都可以从 网络上直接下载获得,接下来就可以建立交叉 开发环境。
-
9
图2
-
10
Cygwin的安装过程时间比较长,请读 者耐心等待。当出现创建图标的画面点 击“完成”按钮之后,屏幕会有几秒钟 的闪动,出现类似下面的画面如图7.4所 示,这是在执行Cygwin安装后的脚本配 置 ,自动配置结束后,出现Cygwin成功 安装结束的提示框。桌面上会出现 Cygwin的图标。
建立建立uclinuxuclinux开収环境开収环境11建立交叉编译器通常的嵌入式系统的开収都是以装有linux的pc机作为宿主机来编译内核和用户应用程序的但是对于很多长期工作在windows操作系统下的用户来说突然切换到linux环境下去开収程序会感到诸多丌便因此对于丌同的开収者提供了在宿主机装有丌同操作系统时相应的交叉编译环境建立的方法
uCLinux在NiosII平台上的移植
uCLinux在NiosII平台上的移植一、编译环境搭建VMware上安装Ubuntu9.04*1配置一些比较快的源默认情况下,Ubuntu中的vi编辑器并不好用,左右键不正常,需先安装vim-full,但ubuntu-9.04-desktop-i386.iso中的默认的源无法访问了。
sudo apt-get install 命令全都是“failed to fetch”的错误。
需要修改/etc/apt/sources.list源文件。
可用gedit命令。
输入用户密码。
但若把源地址一项一项添加很费事,易出错,从windows环境下又无法向VMware 中粘贴。
sshd,vsftpd没有安装,share-folder在Ubuntu环境下无法使用。
现在,还有一种方法,可在VMware环境下,从外部的ftp服务器上把事先已传上去的sources.list文件下载下来。
先配置网络sudo vi /etc/network/interfaces配置域名服务器sudo vi /etc/resolv.confsudo /etc/init.d/networking restart从ftp上下载source.list文件,然后执行sudo mv sources.list /etc/apt 命令之后,sudo apt-get update //升级安装的软件包。
sudo apt-get install vim-full //安装vim-full,便于以后的编辑sudo apt-get install openssh-server //安装sshd,便于远程登录sudo apt-get install vsftpd //安装vsftpd,便于以后与物理机间传送文件sudo apt-get install chkconfig //安装chkconfig,便于服务器的管理接下来就参照上所讲继续安装了。
二、TryOutLinux在进行移植工作之前,可以先下载现成的配置文件和内核映像文件,下载到板子上看看效果。
基于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。
嵌入式操作系统移植(在Microblaze处理器上进行uclinux移植)
第五章嵌入式操作系统5.1 嵌入式操作系统简介5.1.1产生与发展嵌入式系统是计算机系统的一种,因而嵌入式系统也可以分为软硬件两部分,和桌面计算机系统一样,嵌入式操作系统(Embedded Operating System,EOS)是嵌入式软件系统的核心部分。
在一个完整的嵌入式系统中,嵌入式操作系统介于底层硬件和上层应用程序之间,它是整个系统中不可缺少的重要组成部分。
嵌入式操作系统与传统操作系统的基本功能是一致的,即:首先嵌入式操作系统必须能正确、高效地访问和管理底层的各种硬件资源,很好地处理资源管理中的冲突;其次嵌入式操作系统要能为应用程序提供功能完备、使用方便、与底层硬件细节无关的系统调用接口。
嵌入式操作系统伴随着嵌入式系统的发展经历了几个比较明显的的阶段:第一阶段:无操作系统,以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。
应用于一些专业性极强的工业控制系统中,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。
系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。
第二阶段:以嵌入式CPU为基础、简单操作系统为核心的嵌入式系统。
其种类繁多,通用性比较差;系统开销小,效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序运行。
第三阶段:通用的嵌入式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统。
能运行于各种类型的微处理器上,兼容性好;内核精小、效率高,具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(API);嵌入式应用软件丰富。
第四阶段:以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。
目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及互联网络技术与信息家电、工业控制技术等结合日益密切,基于Internet的嵌入式操作系统必将成为主要发展趋势。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
原文地址/liang890319/article/details/6844760不定期更新欢迎嵌入式爱好者一起交流
内核裁剪步骤比较繁琐需要的可以博客留言
本节主要包括(ubuntu10.04)
一,linux下的常用压缩解压缩命令
二,环境建立
三,内核编译
四,移植
一,linux下的常用压缩解压缩命令
在linux下常见的压缩文件格式有tar gzip zip bzip2 compress等首先对于tar格式的,压缩和解压缩方式如下
.tar 解压 #tar -xvf file1.tar 压缩 #tar -cvf file1.tar
.tar.gz 解压 #tar -zxvf file1.tar 压缩 #tar -zcvf file1.tar
.tar.bz 解压 #tar -jxvf file1.tar 压缩 #tar -jcvf file1.tar
对于gzip格式的,压缩和解压缩方式如下
.gz后缀的解压 #gzip -d file1.gz 压缩 #gzip file1
对于zip格式的,压缩和解压缩方式如下
.zip后缀的解压 #uzip file1.zip 压缩 #zip file.zip file1 file2 file3 对于bzip2格式的,压缩和解压缩方式如下
.bz2 解压 #bunzip2 file.bz2 压缩 #bzip2 *
二,环境建立
首先要把交叉工具设置好(详细见上一篇文章,嵌入式开发环境建立)
别人提供的(
uClinux,下载地址:/pub/uClinux/dist/uClinux-dist-20051110.tar.gz 交叉编译环境:
/pub/uClinux/uclinux-elf-tools/arm-elf-tools-20030314.sh
)
我用的是天祥提供的arm-elf-tools
把光盘代码中的软件arm-elf-tools-20040427.sh 拷贝到
linux 的根目录下执行./ arm-elf-tools-20040427.sh 结果出现+43错误
(有人说#chmod 777 arm-elf-tools-20040427.sh后再执行就不出错不知道没试过)
解决办法:
#tail -n+43 arm-elf-tools-20040427.sh >> 1.tar.gz
#tar -zxvf 1.tar.gz
执行之后,在控制台中输入arm-elf-gcc –v
如果安装成功了就会出现版本号例如2.95.3
查看安装在了那里
#which arm-elf-gcc
检查是否将路径加入PATH的方法:
echo $PATH
应该能看到我们的编译工具所在的路径
然后准备好uclinux内核,我这里用的是2.4
我是直接放到了home/wenzer/share文件夹下这个文件夹是和windows共享的所以比较方便
解压
#tar xvzf uClinux2.4.tar.gz
然后等待编译
三,内核编译
进到我们刚解压的文件夹下,需要修改个文件
#cd uClinux-dist
#make mrproper
等待》。
(我的出现了一个错误被忽略了说缺少relase我忽略了这个提示)
修改文件1
#vi linux2.4.x/arch/armnommu/vmlinux-armv.lds.in
在__sto__kallsyms = ,;
*(.got)后面加上:
romfs_data = .;
romfa.o
romfs_data.end = .;
然后wq退出
这一步如果不做,编译的时候会出错(等号两边都必须有空格)。
(4510需要修改makefile
#vi vendors/Samsung/4510B/Makefile
在genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR)的下一行加入arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG) 然后wq保存退出
)
#make menuconfig
出错了
>> Unable to find the Ncurses libraries.
>>
>> You must have Ncurses installed in order
>> to use 'make menuconfig'
解决方法:
执行命令:sudo apt-get install ncurses-dev 即可!(ncurses 用于make menuconfig界面显示
继续重新make试试ok了进入了配置界面
四,移植
我把移植分成了四段,前三段配置最后一段生成镜像文件第一段:
选择公司和产品
退出保存
中间会问你要不要IIC啊之类的一路回车不管等待...
第二段:
配置界面出现
配置系统
保存退出
第三段
配置界面三出现
应用程序和busybox
第四段
生成镜像
#make dep
#make lib_only
#vi config/.config
然后将"CONFIG_USER_OLD_PASSWORDS=y"注释掉"#CONFIG_USER_OLD_PASSWORDS=y"
#make user_only
#make romfs
#make image
如果这一步提示错误,不管他继续执行下一步
#make
这样就会在image下生成我们想要的文件。
ram结尾的可以直接在ram中运行
image.rom是可以自解压的正是我们需要的烧写到flash中。