浅谈分析Arm linux 内核移植及系统初始化的过程一

发布者:LIGANG888最新更新时间:2016-06-15 来源: eefocus关键字:Arm  linux  内核移植  系统初始化 手机看文章 扫描二维码
随时随地手机看文章
学习嵌入式ARM linux ,主要想必三个方向发展:

1 、嵌入式linux 应用软件开发 
2 、linux 内核的剪裁和移植
3 、嵌入式linux 底层驱动的开发
主 要介绍内核移植过程中涉及文件的分布及其用途,以及简单介绍系统的初始化过程。整个arm linux内核的启动可分为三个阶段:第一阶段主要是进行 cpu和体系结构的检查、cpu本身的初始化以及页表的建立等;第二阶段主要是对系统中的一些基础设施进行初始化;最后则是更高层次的初始化,如根设备和 外部设备的初始化。了解系统的初始化过程,有益于更好地移植内核。
1. 内核移植

2. 涉及文件分布介绍
2.1. 内核移植

2.2. 涉及的头文件
/linux-2.6.18.8/include
[root@localhost include]# tree -L 1
.
|-- Kbuild
|-- acpi
|-- asm -> asm-arm
|-- asm-alpha
|-- asm-arm   ------------------------------->(1)
|-- asm-sparc
|-- asm-sparc64
|-- config
|-- keys
|-- linux ------------------------------->(2)
|-- math-emu
|-- media
|-- mtd
|-- net
|-- pcmcia
|-- rdma
|-- rxrpc
|-- scsi
|-- sound
`-- video
内核移植过程中涉及到的头文件包括处理器相关的头文件(1)和处理器无关的头文件(2)。
2.3. 内核移植2.4. 涉及的源文件
/linux-2.6.18.8/arch/arm
[root@localhost arm]# tree -L 1
.
|-- Kconfig
|-- Kconfig-nommu
|-- Kconfig.debug
|-- Makefile
|-- boot  ------------------------------->(2)
|-- common
|-- configs
|-- kernel  ------------------------------->(3)
|-- lib
|-- mach-at91rm9200
……
|-- mach-omap1
|-- mach-omap2
|-- mach-realview
|-- mach-rpc
|-- mach-s3c2410   ------------------------------->(4)
|-- mach-sa1100
|-- mach-versatile
|-- mm    ------------------------------->(5)
|-- nwfpe
|-- oprofile
|-- plat-omap
|-- tools    ------------------------------->(1)
`-- vfp
(1)
/linux-2.6.18.8/arch/arm/tools
[root@localhost tools]# tree -L 1
.
|-- Makefile
|-- gen-mach-types
`-- mach-types
Mach-types 文件定义了不同系统平台的系统平台号。移植linux内核到新的平台上需要对新的平台登记系统平台号。
Mach-types文件格式如下:
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
s3c2410 ARCH_S3C2410 S3C2410          182
smdk2410 ARCH_SMDK2410 SMDK2410            193
之 所以需要这些信息,是因为脚本文件linux/arch/arm/tools/gen-mach-types需要linux/arch/tools /mach-types来产生linux/include/asm-arm/mach-types.h文件,该文件中设置了一些宏定义,需要这些宏定义来 为目标系统选择合适的代码。
(2)
linux-2.6.18.8/arch/arm/boot/compressed
[root@localhost compressed]# tree -L 1
.
|-- Makefile
|-- Makefile.debug
|-- big-endian.S
|-- head-at91rm9200.S

2 浅谈分析Arm linux 内核移植及系统初始化的过程
|-- head.S
|-- ll_char_wr.S
|-- misc.c
|-- ofw-shark.c
|-- piggy.S
`-- vmlinux.lds.in
Head.s 是 内核映像的入口代码,是自引导程序。自引导程序包含一些初始化程序,这些程序都是体系结构相关的。在对系统作完初始化设置工作后,调用misc.c文件中 的decompress_kernel()函数解压缩内核映像到指定的位置,然后跳转到kernel的入口地址。
Vmlinux.lds.in用来生成内核映像的内存配置文件。
(3)
linux-2.6.18.8/arch/arm/kernel
[root@localhost kernel]# tree -L 1
.
|-- Makefile
|-- apm.c
|-- armksyms.c
|-- arthur.c
|-- asm-offsets.c
|-- bios32.c
|-- calls.S
|-- dma.c
|-- ecard.c
|-- entry-armv.S
|-- entry-common.S
|-- entry-header.S
|-- fiq.c
|-- head-common.S
|-- head-nommu.S
|-- head.S
|-- init_task.c
|-- io.c
|-- irq.c
|-- isa.c
|-- module.c
|-- process.c
|-- ptrace.c
|-- ptrace.h
|-- semaphore.c
|-- setup.c
|-- smp.c
|-- sys_arm.c
|-- time.c
|-- traps.c
`-- vmlinux.lds.S
内核入口处也是由一段汇编语言实现的,由head.s和head-common.s两个文件组成。
Head.s 是 内核的入口文件, 在head.s的末尾处 #i nclude "head-common.S"。 经过一系列的初始化后,跳转到linux-2.6.18.8/init/main.c中的 start_kernel()函数中,开始内核的基本初始化过程。
/linux-2.6.18.8/init
[root@localhost init]# tree
.
|-- Kconfig
|-- Makefile
|-- calibrate.c
|-- do_mounts.c
|-- do_mounts.h
|-- do_mounts_initrd.c
|-- do_mounts_md.c
|-- do_mounts_rd.c
|-- initramfs.c
|-- main.c
`-- version.c
(4)
/linux-2.6.18.8/arch/arm/mach-s3c2410
[root@localhost mach-s3c2410]# tree -L 1
.
|-- Kconfig
|-- Makefile
|-- Makefile.boot
|-- bast-irq.c
|-- bast.h
|-- clock.c
|-- clock.h
|-- common-smdk.c
|-- common-smdk.h
|-- cpu.c
|-- cpu.h
|-- devs.c
|-- devs.h
|-- dma.c
|-- gpio.c
|-- irq.c
|-- irq.h
|-- mach-anubis.c
|-- mach-smdk2410.c
|-- pm-simtec.c
|-- pm.c
|-- pm.h
|-- s3c2400-gpio.c
|-- s3c2400.h
|-- s3c2410-clock.c
|-- s3c2410-gpio.c
|-- s3c2410.c
|-- s3c2410.h
|-- sleep.S
|-- time.c
|-- usb-simtec.c
`-- usb-simtec.h
这个目录中的文件都是板级相关的,其中比较重要是如下几个:
linux/arch/arm/mach-s3c2410/cpu.c 
linux/arch/arm/mach-s3c2410/common-smdk.c
linux/arch/arm/mach-s3c2410/devs.c
linux/arch/arm/mach-s3c2410/mach-smdk2410.c
linux/arch/arm/mach-s3c2410/Makefile.boot
linux/arch/arm/mach-s3c2410/s3c2410.c
3. 处理器和设备4. 
这里主要介绍处理器和设备的描述和操作过程。设备描述在linux/arch/arm/mach-s3c2410/devs.c和linux/arch/arm/mach-s3c2410/common-smdk.c中实现。最后以nand flash为例具体介绍。

关键字:Arm  linux  内核移植  系统初始化 引用地址:浅谈分析Arm linux 内核移植及系统初始化的过程一

上一篇:浅谈分析Arm linux 内核移植及系统初始化的过程四
下一篇:S3C2410中的脉宽调制定时器(PWM)

推荐阅读最新更新时间:2024-03-16 14:57

软银拟重新让Arm在美国上市
据英国《每日电讯报》报道,一名市场消息人士透露,软银集团(SoftBank)正在考虑让其微芯片设计公司Arm重新在美国纳斯达克交易所上市。 据悉,Arm在全球智能手机芯片设计市场占据主导地位,目前正进军服务器和笔记本电脑市场,其硅芯片设计因其高能效而受到青睐。软银集团于2016年以240亿英镑的巨额收购ARM并将该公司私有化。此后,一系列在英国上市的科技公司被外国买家抢购一空,其中包括安全软件提供商Sophos和另一家微芯片设计公司Imagination Technologies。 软银曾公开表示,其目标是在2023年将ARM重新上市,但并未指明上市的具体地点。消息人士称,Arm最快将于明年年底上市。 软银的一位股东表
[手机便携]
基于ARM和FPGA的全彩独立视频LED系统
目前,显示屏按数据的传输方式主要有两类:一类是采用与计算机显示同一内容的实时视频屏;另一类为通过USB、以太网等通信手段把显示内容发给显示屏的独立视频源显示屏,若采用无线通信方式,还可以随时更新显示内容,灵活性高。此外,用一套嵌入式系统取代计算机来提供视频源,既可以降低成本,又具有很高的可行性和灵活性,易于工程施工。因此,独立视频源LED显示系统的需求越来越大。 本系统采用ARM+FPGA的架构,充分利用了ARM的超强处理能力和丰富的接口,实现真正的网络远程操作,因此不仅可以作为一般的LED显示屏控制器,更可以将各显示节点组成大型的户外广告传媒网络。而FPGA是一种非常灵活的可编程逻辑器件,可以像软件一样编程来配置,从而可以
[单片机]
基于<font color='red'>ARM</font>和FPGA的全彩独立视频LED<font color='red'>系统</font>
基于B/S模式的嵌入式视频监控系统的设计
视频监控系统将被监控现场的实时图像和数据等信息准确、清晰、快速地传送到监控中心服务器,监控中心将实时、直接地掌握各个被监控现场的当前情况(包括图像、声音及其他敏感数据),从而对敏感事件进行快速反应 。视频监控正朝着数字化、网络化、集成化的嵌入式视频监控方向蓬勃发展。相比传统的视频采集监控系统,嵌入式视频监控系统具有可靠性高、组网方便、可远程监控等优点,因而更适用于工业控制、银行、政府部门的安防系统中 。   本文设计了一种具有用户零维护、价格低廉、性能稳定等特点的嵌入式视频监控系统。该系统以ARM处理器S3C2440和嵌入式Linux操作系统为核心平台,通过USB摄像头采集视频数据,基于TCP/IP协议进行网络传输,用户通
[安防电子]
基于B/S模式的嵌入式视频监控<font color='red'>系统</font>的设计
OK6410A 开发板 (八) 110 linux-5.11 OK6410A 从流程去熟悉文件系统1-挂载
挂载的时机有两种 1. 注册文件系统之后就挂载 2. 在用户空间挂载 2.1 fstab中挂载 2.2 用户手动用mount 命令挂载 挂载流程变迁史 在内核空间的挂载直接用 kern_mount挂载 在用户空间的挂载 用 用户空间的 mount 函数 , mount 往下调用,陷入内核 ,SYSCALL_DEFINE5(mount 这些接口都没变,变的是 内部实现 老的文件系统中 仍然用 mount 成员 去 创建 super_block 成员 当前(5.11)内核中file_system_type 结构体 中的 mount 成员 即将被抛弃 但是目前依靠 新挂载流程 中 的 legacy_init_
[单片机]
那些联网汽车为什么选择Linux开源平台?
    这是汽车行业的黄金时代。开源软件(OSS)、“万物互联”,以及无数用来支持主动安全系统、驾驶员信息显示和车载电子产品等技术的硬件涌现聚集,让即使是最普通的汽车也具备了成为真正超级巨星的潜力。 这不只是关于汽车数字基础架构内部元件的连接,而是关于汽车与外界的连接——比如和其它汽车、互联网以及云的连接。虽然硬件厂商不断做出重大贡献,但重点已经转向了推动互联汽车的软件。事实上,用于嵌入式系统的软件开发,包括原型设计、调试、测试和验证,现在占据了汽车制造的大部分时间。     现在制造的汽车在不久的将来可能会有大约2000万行代码(已经超过一架美国F-35喷气式战斗机),预计豪华高端汽车的代码还有可能超过1亿行。汽车软件的开发
[汽车电子]
ARM7与FPGA在工控和故障检测中的应用
工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。 各部分功能简介   图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控制总线和故障检测总线相连。                  
[测试测量]
<font color='red'>ARM</font>7与FPGA在工控和故障检测中的应用
基于ARM和FPGA架构的三维图形加速系统
引言   随着图形处理的巨额运算量,CPU变得不堪重负。此时,需要使用特定的硬件设备来为嵌入式CPU承担图形处理的任务。   具有三维图形硬件加速能力的ARM+FPGA架构嵌入式图形系统就是其中一种解决方案。其中,ARM处理器负责运行嵌入式操作系统、执行上层图形应用程序,而三维图形处理所需的大量运算则由FPGA实现的GPU(图形处理单元)进行。   图形API简介   在图形系统中预先定义了一组图形API,作为一个抽象层将图形应用程序和图形系统的具体实现隔离开来。具体的图形应用程序都将通过这些图形API来完成所有与绘制图形相关的工作。这样,同样的应用程序就可以在不同的目标图形系统上运行。   目前应用较为广泛的标准图形
[嵌入式]
基于<font color='red'>ARM</font>和FPGA架构的三维图形加速<font color='red'>系统</font>
嵌入式定位系统的实用设计与软件算法实现
  定位系统自问世后便得到了蓬勃发展,其应用已渗入到各行各业。个人消费领域引领移动定位类型科技产品集中涌现,其他领域和行业也有大量技术更新。目前各领域的定位系统主要集中在平台和地图的研发上,平台配合应用要求选用硬件,地图根据显示要求实现软件算法。因而,它们在定位系统的研究工作中各成体系,兼容性不强。   近年来,在定位系统设计中,硬件选择越来越集中在几个品牌的几个型号上。而软件设计方面比较分散。因而在一个兼容性强的平台上实现软件的集中研发,将是未来的研发方向。   这里提出一种系统构造模式,弱化硬件平台的影响而力求最大限度的统一软件设计。    1 系统整体设计方案   这里提出一种实用的设计方案,通过对系统的各方
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved