当前位置:首页 » 操作系统 » linux系统移植

linux系统移植

发布时间: 2022-05-25 14:12:57

① 现在很多嵌入式linux系统移植并不是真正的Linux系统移植,是吗

大部分的思路都是如上,大部分的编译器就是特定的芯片厂商提供好的交叉编译器,但也需要gcc编译器来作为承载,就是说:需要移植的编译器是在gcc的基础上做相应添加库,添加规则等而成,现在大部分linux发行版的kernel中90%以上代码都是相似的,自己添加自己特有驱动等等就可以了,没人会修改其他的代码,也没能力去修改。

② 如何将linux系统移植到虚拟机上

Mac版的没用过,不过你也可以看看有没有“文件夹共享”这个选项

1、选中该虚拟机关机-->右键-->设置
2、会出来两个选项的 a、硬件 b、选项
3、点选项 --> 共享文件夹

这是windows版本的VM,你可以试试看看。

③ 什么叫linux系统移植

一般来讲Linux系统移植是把Linux从一个已经支持的硬件架构上移植到一个还未支持的硬件架构上。由于Linux最初是Linus Trovalds为x86架构写的,因此一般Linux系统移植是把x86版本移植到别的架构上,例如arm、mips、powerPC、SPARC(近几年主流Linux发行版都倾向于只支持x86、amd64和arm版,对其他平台的支持越来越少了)。

④ 移植linux kernel,应该怎么做

1、获得内核源码:从Linux内核的官网可获得相应的内核源码,这里以2.6.31.1为例。

2、解压源码,进入目录:
#tar xjvf linux- 2.6.31.1.tar.bz2
#cd linux-2.6.31.1

3、修改Makefile的183 行:
ARCH ?= arm <—指定系统硬件架构
CROSS_COMPILE ?= arm-linux- <—指定交叉编译器

4、修改时钟:
修改arch/arm/mach-s3c2440/mach-smdk2440.c 的163行
static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000); <—输入时钟为12MHz
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

}
这个一定要设置对,否则会打印出乱码。

5、修改机器码(根据实际情况,这个要和bootloader的匹配):
修改:arch/arm/tools/mach-types的379 行:
s3c2440 ……………………… XXX <—后面那个数就是机器码 (我用的天嵌开发板的机器码是168)

6、配置:
#make menuconfig <—进入图形化配置界面
在配置菜单中选择这一项:"Load an Alternate Configuration File" ,输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig ,这个文件就是 S3C24XX 系列开发板板级支持包(BSP)然后选择 OK,按回车。
进入"System Type"选项单,里面的选项保持默认在"S3C24XX Machine"选项中只配置这几项(其他的选项取消):
S3C2410 Machine --->
[*] SMDK2410/A9M2410
S3C2440 Machine --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 cpu moudle

配置完后,回到主菜单,选择这一项"Save an Alternate Configuration File" ,输入要保存的
配置文件名称:.config (默认)或自己取名:TQ2440_config,退出,编译内核: #make zImage
说明:以后移植过程中的配置、编译,都是按这个步骤进行,但是只需要保存一次配置文件,以后就不需要再保存配置文件了,配置完后可以直接退出。
编译完后,会在arch/arm/boot下生成zImage内核镜像文件,可以修改该目录下的Makefile, 在第57行下面添加:
@cp -f arch/arm/boot/zImage zImage
@echo ' Kernel: $@ is ready '

这样执行make zImage后,就把生成的zImage拷到内核根目录下。
如果希望在在执行make distclean时,也同时把zImage删除,可以修改内核根目录下Makefile 的第1247行,在后面加上:
-type f -print | xargs rm -f rm zImage
把 zImage 镜像烧进 NandFlash 跑一下,看是否正常打印出信息,如果第一步能正常引导内核,那就开始进行。然后添加驱动。

注意,系统启动最后可能会出现这个错误:
Kernel panic - not syncing: Attempted to kill init!
然后出打印出一些很乱的东西。因为用4.x.x版本的交叉编译器使用EABI,但内核默认是不支持EABI编译的,所以编译出的系统会报错,但用3. x.x版本的编译器就不会出现这个问题。解决办法是,配置内核支持EABI编译:
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA) 6

⑤ linux 移植 到底是什么东东 有什么作用学习linux的时候为什么一定要学习linux移植

linux移植简单说来就是把linux安装到不同的平台上,比如X86架构的PC机,ARM、mips等嵌入式平台,在手机或掌上电脑上安装linux就叫移植。移植linux作用就是在平台上安装操作系统,有了linux系统会提供很多服务(比如网络、驱动、多任务……)。linux的特色就是可裁剪、可移植、可适用于不同的平台和应用(比如手机、POS机、自动售货机、广告机、自动提款机),像XP、vista就不行。linux如果不学移植就好像丢掉了linux的特色。

⑥ 如何把linux下的软件移植到ubuntu系统下

虽然说
Linux
系统的最大优点就是兼容性好,但是有时候不同版本的
Linux
还是会有一些差别的。如果说你想把别的Linux系统版本下的软件移植到
Ubuntu
系统下面的话,那么最好还是对源程序做一些可扩展代码的改进(例如:如果是使用
C
语言开发的软件,你就可以在
C
语言源程序中增加一些条件编译选项,具体的条件编译选项有很多,你需要仔细斟酌),这样你把
C
语言源程序复制到
Ubuntu
系统下面,然后可以使用不同的选项对
C
语言源程序进行编译,这样编译出来的可执行程序,就可以在
Ubuntu
系统下执行了。

⑦ 如何手动移植linux系统到迅为4412

方法/步骤

1
首先连接好 iTOP-4412 开发板的调试串口到 pc 上,在 pc 的 windows 系统下打开串口
调试工具。开发板上电,在串口调试工具里按任意 pc 键盘的任意按键使开发板进入 uboot 命令行模式,如下图所示:

2
然后在 uboot 输入分区命令:“fdisk -c 0 1024 300 300”,如下图所示:

3
上面图片里的命令是把 emmc分区,其中的 1024 是 linux 的存储空间,单位是 MB,也
就是 1G。如果想分配更大的空间修改这个值即可。
执行完上面的命令,如下图所示:

END
方法/步骤2

1
然后在 uboot 命令行分别输入下面的命令,格式化分区:
fatformat mmc 0:1
ext3format mmc 0:2
ext3format mmc 0:3
ext3format mmc 0:4
至此 EMMC的分区已经只做好了,下面我们开始制作 linux 文件系统,拷贝光盘
“linux/root_xxxxxxxx.tar.gz”(xxxxxxxx 是版本日期,)到 Ubuntu 虚拟机上,例如我这
里拷贝到了“/home/topeet/linux”目录,如下图所示:

2
然后使用“tar -xvf root_20140912.tar.gz”命令解压 linux 文件系统,如下图所示:

3
解压完成后,输入“ls”命令,可以看到生成了”root“文件夹

⑧ 学习linux系统的移植,要学习哪方面的知识呢

1、Linux 基础
安装Linux操作系统
Linux文件系统
Linux常用命令
Linux启动过程详解
熟悉Linux服务能够独立安装Linux操作系统
能够熟练使用Linux系统的基本命令
认识Linux系统的常用服务安装Linux操作系统
Linux基本命令实践
设置Linux环境变量
定制Linux的服务 Shell 编程基础使用vi编辑文件
使用Emacs编辑文件
使用其他编辑器

2、Shell 编程基础
Shell简介
认识后台程序
Bash编程熟悉Linux系统下的编辑环境
熟悉Linux下的各种Shell
熟练进行shell编程熟悉vi基本操作
熟悉Emacs的基本操作
比较不同shell的区别
编写一个测试服务器是否连通的shell脚本程序
编写一个查看进程是否存在的shell脚本程序
编写一个带有循环语句的shell脚本程序

3、Linux 下的 C 编程基础
linux C语言环境概述
Gcc使用方法
Gdb调试技术
Autoconf
Automake
Makefile
代码优化 熟悉Linux系统下的开发环境
熟悉Gcc编译器
熟悉Makefile规则编写Hello,World程序
使用 make命令编译程序
编写带有一个循环的程序
调试一个有问题的程序

4、嵌入式系统开发基础
嵌入式系统概述
交叉编译
配置TFTP服务
配置NFS服务
下载Bootloader和内核
嵌入式Linux应用软件开发流程
熟悉嵌入式系统概念以及开发流程
建立嵌入式系统开发环境制作cross_gcc工具链
编译并下载U-boot
编译并下载Linux内核
编译并下载Linux应用程序
嵌入式系统移植
Linux内核代码
平台相关代码分析
ARM平台介绍
平台移植的关键技术
移植Linux内核到 ARM平台 了解移植的概念
能够移植Linux内核移植Linux2.6内核到 ARM9开发板

5、嵌入式 Linux 下串口通信
串行I/O的基本概念
嵌入式Linux应用软件开发流程
Linux系统的文件和设备
与文件相关的系统调用
配置超级终端和MiniCOM 能够熟悉进行串口通信
熟悉文件I/O 编写串口通信程序
编写多串口通信程序

6、嵌入式系统中多进程程序设计
Linux系统进程概述
嵌入式系统的进程特点
进程操作
守护进程
相关的系统调用了解Linux系统中进程的概念
能够编写多进程程序编写多进程程序
编写一个守护进程程序
sleep系统调用任务管理、同步与通信 Linux任务概述
任务调度
管道
信号
共享内存
任务管理 API 了解Linux系统任务管理机制
熟悉进程间通信的几种方式
熟悉嵌入式Linux中的任务间同步与通信
编写一个简单的管道程序实现文件传输
编写一个使用共享内存的程序

7、嵌入式系统中多线程程序设计
线程的基础知识
多线程编程方法
线程应用中的同步问题了解线程的概念
能够编写简单的多线程程序编写一个多线程程序

8、嵌入式 Linux 网络编程
网络基础知识
嵌入式Linux中TCP/IP网络结构
socket 编程
常用 API函数
分析Ping命令的实现
基本UDP套接口编程
许可证管理
PPP协议
GPRS 了解嵌入式Linux网络体系结构
能够进行嵌入式Linux环境下的socket 编程
熟悉UDP协议、PPP协议
熟悉GPRS 使用socket 编写代理服务器
使用socket 编写路由器
编写许可证服务器
指出TCP和UDP的优缺点
编写一个web服务器
编写一个运行在 ARM平台的网络播放器

9、GUI 程序开发
GUI基础
嵌入式系统GUI类型
编译QT
进行QT开发熟悉嵌入式系统常用的GUI
能够进行QT编程使用QT编写“Hello,World”程序
调试一个加入信号/槽的实例
通过重载QWidget 类方法处理事件

10、Linux 字符设备驱动程序
设备驱动程序基础知识
Linux系统的模块
字符设备驱动分析
fs_operation结构
加载驱动程序了解设备驱动程序的概念
了解Linux字符设备驱动程序结构
能够编写字符设备驱动程序编写Skull驱动
编写键盘驱动
编写I/O驱动
分析一个看门狗驱动程序
对比Linux2.6内核与2.4内核中字符设备驱动的不同
Linux 块设备驱动程序块设备驱动程序工作原理
典型的块设备驱动程序分析
块设备的读写请求队列了解Linux块设备驱动程序结构
能够编写简单的块设备驱动程序比较字符设备与块设备的异同
编写MMC卡驱动程序
分析一个文件系统
对比Linux2.6内核与2.4内核中块设备驱动的不同

11、文件系统
虚拟文件系统
文件系统的建立
ramfs内存文件系统
proc文件系统
devfs 文件系统
MTD技术简介
MTD块设备初始化
MTD块设备的读写操作了解Linux系统的文件系统
了解嵌入式Linux的文件系统
了解MTD技术
能够编写简单的文件系统为 ARM9开发板添加 MTD支持
移植JFFS2文件系统
通过proc文件系统修改操作系统参数
分析romfs 文件系统源代码
创建一个cramfs 文件系统

⑨ 如何以低成本将Linux 内核移植到嵌入式处

1 高速USB硬件接口设计目前的嵌入式系统设计中,USB接口的外扩主要采用微处理器芯片自带的USB控制器,一般只支持低速和全速协议,无法实现高速数据传输。该设计采用AT91RM9200处理器外扩ISP1761 USB控制器方案,解决了嵌入式系统下USB设备的传输速度问题。
AT91RM9200是Atmel公司一款基于ARM920T内核的微型处理器。它有丰富的系统与应用外设及标准接口,时钟频率可达180 MHz,并且具有低功耗、低成本、高性能,在嵌入式系统中应用广泛。ISP1761是Philips公司开发的一款高速USB On The Go(OTG)控制器,芯片内集成了64 KB的高速缓冲,单次处理数据达32 KB,极大地提升了系统的处理性能,并且功耗很低,其内部集成了Slave主机控制器和外设控制器。此外,ISP761还有可配置的32 b/16 b异步CPU接口,该设计ISP1761外部数据总线设置为16 b模式。
处理器AT91RM9200与外扩USB控制器的连接如图1所示。其中,A[17∶1]为地址线;DATA[15∶0]为数据线;WR_N为读使能;RD_N为写使能;CS_N片选信号采用NCS2;AT9lRM9200的中断源1分配给ISP1761作为其中断信号。处理器和ISP1761之间的数据传输通过中断方式实现,当USB接口有中断产生时,处理器的中断服务程序通过读取ISP1761的中断寄存器判断中断来源,从而执行相应的读/写操作。
2 高速USB软件驱动实现2.1 Linux系统中USB驱动结构USB内核模块是Linux系统中USB子系统的核心模块,它为USB驱动(设备和主控制器)提供了一个统一的接口,以访问和控制USB硬件。
如图2所示,应用程序发出的USB请求块(URB)经过上层的USB设备驱动和USB内核后到达USB主控制器。处于最底层USB主控制器的驱动(HCD)是USB主机直接与硬件交互的软件模块,它将解析URB后,再将数据发送到指定的USB设备上。
图3为ISP1761与操作系统相连接的接口框图。图5中,ISP1761要完成操作系统与USB设备的通信。驱动部分主要分两个层次:ISP1761硬件抽象层(HAL)和主控制器驱动(HCD)层。前者,通过GPIO接口和操作系统平台的相关函数来完成访问ISP1761硬件的功能;后者,主要实现将数据传输给连接的USB设备,并管理根集中器端口的功能。
因此,该设计的软件驱动部分主要由以下两个层次来完成USB主机端的驱动功能。
(1)ISP1761的HAL层。云顶赌场首先初始化设备结构,并添加设备到系统的设备层。其中,初始化部分主要完成ISP1761资源(如内存、中断等)的初始化设置和AT91RM9200处理器的初始化设置,为后期注册驱动程序做准备。如果系统成功添加了设备,在加载和卸载ISP1761主控制器驱动程序到内核时,就会进一步执行平台驱动程序的注册,否则将不能注册驱动程序。一旦注册成功,驱动程序就已经和设备绑定,任何用户态程序要操作此设备都可以通过platform_driver结构所定义的函数进行。下面给出该系统注册的platform_driver结构:
其中,在设备探测和注销等函数中调用了如下一个重要的结构体isp1761_dev。该结构体主要包含了ISP1761设备驱动的基本信息和中断处理例程指针。
(2)ISP1761的HCD层。Philips公司的ISP1761主控制器芯片遵循EHCI标准。该层在加载和卸载ISP1761主控制器驱动到内核时被调用,主要负责与连接的USB设备进行数据传输,并管理根集中器端口。具体包括主控制器例程、内存管理、根集中器和中心集中器的管理、数据传输等。
其中,pehci_hcd_urb_enqueue()函数是该部分所要实现的重点函数,主要用于完成将来自USB core层的urb传输请求转换成EHCI可识别的传输描述结构。然后安排到EHCI的periodic schele list或者asynchronous schele list的合适位置。当HC完成urb对应的传输后,EHCI HCD通过urb→cornplete()通知USB core对应的传输结果,最终完成通信过程。该函数的原型如下:
3 USB驱动的调试使用USB驱动的正常使用必须在内核中正确选择配置,除了默认配置之外,还要添加诸如SCSI设备的支持,VFAT文件格式的支持,新添加ISP1761驱动的支持等。ISP1761的驱动采用模块方式编译,系统启动后,逐层插入驱动模块加载USB主控制器驱动程序到内核。此时,系统插入U盘可成功获得分区,如下所示:
执行挂载命令mount-t vfat/dev/scsi/host0/busO/target0/lun0/partl/mnt/ usb(前提是已经在/mnt目录下建立了USB目录,并且U盘的格式为win-dows下的vfat)便可成功挂载U盘到指定的目录/mnt/usb下。
拷贝U盘上的文件到嵌入式系统,经多次测试,速度可达到约100~125 Mb/s,相比传统的嵌入式Linux系统下对USB的支持,速度得到了很好的提高,基本满足高速读/写的要求。
结语随着USB接口在嵌入式领域越来越广泛的应用和嵌入式Linux内核的不断扩展,嵌入式Linux内核支持的USB设备和USB主控制器越来越丰富,相应的驱动开发工作也将日益突出。该设计给出了嵌入式Linux系统下高速USB主控制器的硬件设计方案和驱动的实现方法,在提高系统性能的同时,降低了成本,有很好的实际应用价值。同时驱动的模块化结构设计保持了其最大可移植性,对于嵌入式下USB主控制器的驱动开发具有很好的借鉴意义。

热点内容
html5显示数据库数据 发布:2024-10-27 07:24:20 浏览:335
传奇电脑服务器多少钱 发布:2024-10-27 07:14:28 浏览:515
巴麻美学姐解压密码 发布:2024-10-27 07:13:01 浏览:106
华为云侧服务器 发布:2024-10-27 07:11:40 浏览:42
鸿洋android 发布:2024-10-27 07:01:26 浏览:321
mac清除ps缓存 发布:2024-10-27 06:50:51 浏览:849
怎么把手机鸿蒙系统退回安卓 发布:2024-10-27 06:42:58 浏览:262
电脑联网服务器超时什么意思 发布:2024-10-27 06:42:20 浏览:583
ua是脚本吗 发布:2024-10-27 06:34:07 浏览:845
传奇变量脚本 发布:2024-10-27 06:33:34 浏览:634