ARM9上的嵌入式Linux系统移植
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2009-01-04
Unix 的特性,这保证了它支持所有标准因特网协议,并且可以 利用 Linux 的网络协议栈,将其开发成为嵌入式的 TCP/IP 网 络协议栈。此外,Linux 还支持 ext2、fat16、fat32、romfs 等 文件系统,为嵌入式系统应用开发打下了很好的基础。(3)Linux 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交 叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。而 且,Linux 也符合 IEEE POSIX.1 标准,使应用程序具有较好 的可移植性[2]。
4 嵌入式 Linux 系统移植
移植主要包括引导加载程序Uboot的移植和Linux2.4.18内
Techniques of Automation & Applications | 43
《自 动 化 技 术 与 应 用 》2 0 0 9 年第 2 8 卷第 6 期
计算机应用
Computer Applications
SBC2410 平台的 Nor Flash。
4.2 Linux 内核移植
针对不同的体系结构,嵌入式 Linux 系统的移植主要分为 以下五步:首先是准备工作,包括获取源代码、建立交叉编译环 境,再是移植Linux引导加载程序(Uboot),然后是配置和编译内 核,针对体系结构对源代码做一定的修改,主要是驱动程序的开 发,包括串口、网络等,之后是移植和加载嵌入式文件系统,如: Ramdisk、Cramfs、JFFS2 等文件系统,最后是应用层程序开 发、调试、下载,并将其加载到相应的文件系统中。在移植过程 中,定时器、中断、MMU 等,和硬件相关的地方,都是要相关平 台的底层代码支持的。下面简要介绍内核源代码的移植和文件 系统的移植。
核的移植,下面分别做介绍。
4.1 Uboot 移植
在嵌入式系统中,引导加载程序(即:Bootloader)是系统加电 后运行的第一段软件代码,它初始化硬件设备、建立内存空间的 映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境。Bootloader 是严重依赖 于硬件而实现的,在嵌入式领域里建立一个通用的Bootloader几 乎是不可能的,因此对于基于ARM9架构的S3C2410也需要建立 适于自己运行的 Bootloader 引导程序。Uboot 是最为常见的 Bootloader,它主要完成了系统环境的初始化,将后期执行代码复 制到 SDRAM 空间,为 Linux 内核的运行准备好条件[3]。在此,选 用的是 Uboot1.1.4 版本来做移植。根据 Uboot 功能实现方式的 不同,其运行可以分为两个阶段:
计算机应用
Computer Applications
《自动化技术与应用》2009 年第 2 8 卷第 6 期
基地址 */ #define CFG_FLASH_BASE PHYS_FLASH_1 /*FLASH
的基地址 */ 4.编译:生成 Uboot.bin 映像文件。 make sbc2410_config make CROSS_COMPILE=arm-linux5.烧写:用软件 SJF2410,通过 JTAG 接口,烧写 Uboot.bin 到
4.2.1 Linux 内核源代码
对 Linux 内核的移植是一个非常繁杂的过程,首先要对 Linux 内核源码结构有深入的了解,在此基础上,添加、修改与体 系结构密切相关的代码。Linux 内核目录结构如下所述:
关键词:ARM9;嵌入式 Linux;Uboot 移植;内核移植 中图分类号:TP311.54 文献标识码:B 文章编号:1003-7241(2009)06-0043-03
Transplant of the Linux System on ARM9
ZOU Ying-ting, LI Shao-rong
计算机应用
Computer Applications
《自动化技术与应用》2009 年第 2 8 卷第 6 期
ARM9 上的嵌入式 Linux 系统移植
邹颖婷, 李绍荣
(电子科技大学光电信息学院,四川 成都 610054)
摘 要:Linux 操作系统在各个嵌入式领域有着越来越广泛的应用。主要研究了在 ARM9 体系结构上,嵌入式 Linux 系统的移植。介 绍了嵌入式 Linux 操作系统、移植目标平台 SBC2410、及 Linux 内核源代码的目录结构。然后详细讲述了在 SBC2410 硬件 平台上实现 Uboot 移植的过程,及概要介绍了 Linux 操作系统内核移植的过程。最后将嵌入式 Linux 系统成功移植上 SBC2410 平台。
4.1.1 Uboot 运行第一阶段
ARM系列处理器在上电或复位时,从物理地址 0x00000000 处开始执行,此处也是第一片 Flash 所使用的存储空间的起始位 置,而 Uboot就存放在 Flash 的最前端。Uboot第一阶段由汇编语 言实现,以达到短小精悍的目的,主要完成系统硬件环境的初始 化,其工作流程如图 1 所示。
thBaidu Nhomakorabea Embedded Linux System on the ARM9. The Embedded Linux OS, the SBC2410 board, and the directory structure of the Linux kernel are introduced. The transplant process of the Uboot and of the Linux kernel are also discussed. Key words: ARM9; embedded Linux; transplantation of Uboot; transplantation of the Linux kernel
2 嵌入式 Linux 操作系统及特点
将 Linux 应用于嵌入式环境,是基于其具有以下特点:(1) Linux 操作系统是层次结构,并且内核源代码完全开放。不同 领域和不同层次的用户可以根据自己应用的需要,对内核进行 修改,能够低成本的开发出满足自己需要的嵌入式系统。(2)其具 有强大的网络支持功能。Linux 诞生于因特网时代,并具有
图 1 Uboot 第一阶段工作流程
4.1.2 Uboot 运行第二阶段
图 2 Uboot 第二阶段工作流程 当所有环境初始化完毕之后,程序执行 Uboot第二阶段。此 部分的代码用C 语言来实现,以便于实现更复杂的功能和取得更 好的代码可读性和可移植性。_start_armboot 函数是第二阶段执 行映像的入口点。第二阶段通常包括以下功能:初始化本阶段要使 用到的硬件设备,如:串口、网口、Flash 等,将 kernel 映像和根文
( School of Opto-Electronic Information, University of Electronic Science and Technology of China, Chengdu 610054 China ) Abstract: Linux OS has been more and more widely applied in many embedded areas. This paper introduces the transplantation of
4.1.3 Uboot 移植
对不同的板极硬件配置,都要进行Uboot的移植工作。移植 Uboot的工作包括添加开发板硬件相关的文件、配置Uboot,然后 编译生成 Uboot.bin 文件,最后进行烧写。具体过程如下:
1.修改 Makefile,添加: sbc2410_config:unconfig @./mkconfig $(@:_config=) arm arm920t sbc2410 NULL s3c24x0 2.创建 sbc2410 目录及文件:mkdir board/sbc2410 3.通过修改文件 sbc2410.h 来修改 Uboot 软硬件配置,包括: CPU 类型、MCU 类型、开发板型号、是否使用 MMU、是否使 用中断、malloc池大小、数据段大小、使用CS8900网卡、CS8900A 基地址、使用串口 1、波特率、网卡物理地址、掩码、开发板 IP、 TFTP 服务器 IP、内存物理地址、内存大小、默认的加载地址、 FLASH 的基地址等等。如下所示: #define CONFIG_ARM920T /* CPU 类型 */ #define CONFIG_S3C2410 /* MCU 类型 */ #define CONFIG_SBC2410 /* 开发板型号 */ #define USE_920T_MMU /* 使用 MMU */ #undef CONFIG_USE_IRQ /* 不使用中断 */ #define CFG_MALLOC_LEN (CFG_ENV_SIZE+ 128*1024)/* malloc 池大小 */ #define CFG_GBL_DATA_SIZE 128 /* 数据段大小 128 字节 */ #define CONFIG_DRIVER_CS8900/* 使用 CS8900 网卡 */ #define CS8900_BASE 0x19000300/*CS8900A 基地址 */ #define CONFIG_SERIAL1/* 使用串口 1 */ #define CONFIG_BAUDRATE 115200 /* 波特率 */ #define CONFIG_ETHADDR 08:00:3e:26:0a:5b/* 网 卡物理地址 */ #define CONFIG_NETMASK 255.255.255.0/* 掩码 */ #define CONFIG_IPADDR 192.168.18.41/* 开发板 IP */ #define CONFIG_SERVERIP 192.168.18.125 /* TFTP 服务器 IP */ #define PHYS_SDRAM_1 0x30000000 /* 内存物理地址 */ #define PHYS_SDRAM_1_SIZE 0x04000000 /* 内存大 小 64MB */ #define CFG_LOAD_ADDR 0x30008000 /* 默认的加 载地址 */ #define PHYS_FLASH_1 0x00000000 /* FLASH 1 的
3 SBC2410 硬件平台介绍
SBC2410是一款基于三星公司ARM9处理器S3C2410A,支 持 ARM-Linux、WindowsCE 等操作系统的嵌入式硬件平台。 平台的主要硬件资源有:一片 64M SDRAM,一片 64M Nand Flash,一片 1M Nor Flash,一个串口 COM0,一个 USB Host A 型接口,一个 USB Slave B 型接口,一个标准 JTAG 接口,等等。 平台支持 Linux2.4.18 内核版本。
44 | Techniques of Automation & Applications
件系统映像从 Flash 上复制到 RAM 空间中,启动 Linux 内核,提 供 kermit 和 TFTP 内核下载工具,支持 Boot Loader 在线更新。
修改后的 Uboot 第二阶段工作流程,如图 2 所示。
1 引言
嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件 可裁减,是对功能、可靠性、成本、功耗有严格要求的专用计算 机系统。它一般由以下几部分组成: 嵌入式微处理器、外围硬件 设备、嵌入式操作系统、及特定的应用程序。
当前,人类进入信息爆炸的时代,各类信息极度丰富,数字信 息技术和网络技术的高速发展,只有借助于各种计算机,才能够对 各类信息进行处理,它们已不再局限于以前的PC,而是由形态各 异、性能千差万别的嵌入式系统来完成。而嵌入式操作系统主要 有:嵌入式 Linux、WindowsCE、Vxworks、uC/OS-II 等[1]。本 文主要研究嵌入式Linux在嵌入式系统中的应用。
Unix 的特性,这保证了它支持所有标准因特网协议,并且可以 利用 Linux 的网络协议栈,将其开发成为嵌入式的 TCP/IP 网 络协议栈。此外,Linux 还支持 ext2、fat16、fat32、romfs 等 文件系统,为嵌入式系统应用开发打下了很好的基础。(3)Linux 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交 叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。而 且,Linux 也符合 IEEE POSIX.1 标准,使应用程序具有较好 的可移植性[2]。
4 嵌入式 Linux 系统移植
移植主要包括引导加载程序Uboot的移植和Linux2.4.18内
Techniques of Automation & Applications | 43
《自 动 化 技 术 与 应 用 》2 0 0 9 年第 2 8 卷第 6 期
计算机应用
Computer Applications
SBC2410 平台的 Nor Flash。
4.2 Linux 内核移植
针对不同的体系结构,嵌入式 Linux 系统的移植主要分为 以下五步:首先是准备工作,包括获取源代码、建立交叉编译环 境,再是移植Linux引导加载程序(Uboot),然后是配置和编译内 核,针对体系结构对源代码做一定的修改,主要是驱动程序的开 发,包括串口、网络等,之后是移植和加载嵌入式文件系统,如: Ramdisk、Cramfs、JFFS2 等文件系统,最后是应用层程序开 发、调试、下载,并将其加载到相应的文件系统中。在移植过程 中,定时器、中断、MMU 等,和硬件相关的地方,都是要相关平 台的底层代码支持的。下面简要介绍内核源代码的移植和文件 系统的移植。
核的移植,下面分别做介绍。
4.1 Uboot 移植
在嵌入式系统中,引导加载程序(即:Bootloader)是系统加电 后运行的第一段软件代码,它初始化硬件设备、建立内存空间的 映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境。Bootloader 是严重依赖 于硬件而实现的,在嵌入式领域里建立一个通用的Bootloader几 乎是不可能的,因此对于基于ARM9架构的S3C2410也需要建立 适于自己运行的 Bootloader 引导程序。Uboot 是最为常见的 Bootloader,它主要完成了系统环境的初始化,将后期执行代码复 制到 SDRAM 空间,为 Linux 内核的运行准备好条件[3]。在此,选 用的是 Uboot1.1.4 版本来做移植。根据 Uboot 功能实现方式的 不同,其运行可以分为两个阶段:
计算机应用
Computer Applications
《自动化技术与应用》2009 年第 2 8 卷第 6 期
基地址 */ #define CFG_FLASH_BASE PHYS_FLASH_1 /*FLASH
的基地址 */ 4.编译:生成 Uboot.bin 映像文件。 make sbc2410_config make CROSS_COMPILE=arm-linux5.烧写:用软件 SJF2410,通过 JTAG 接口,烧写 Uboot.bin 到
4.2.1 Linux 内核源代码
对 Linux 内核的移植是一个非常繁杂的过程,首先要对 Linux 内核源码结构有深入的了解,在此基础上,添加、修改与体 系结构密切相关的代码。Linux 内核目录结构如下所述:
关键词:ARM9;嵌入式 Linux;Uboot 移植;内核移植 中图分类号:TP311.54 文献标识码:B 文章编号:1003-7241(2009)06-0043-03
Transplant of the Linux System on ARM9
ZOU Ying-ting, LI Shao-rong
计算机应用
Computer Applications
《自动化技术与应用》2009 年第 2 8 卷第 6 期
ARM9 上的嵌入式 Linux 系统移植
邹颖婷, 李绍荣
(电子科技大学光电信息学院,四川 成都 610054)
摘 要:Linux 操作系统在各个嵌入式领域有着越来越广泛的应用。主要研究了在 ARM9 体系结构上,嵌入式 Linux 系统的移植。介 绍了嵌入式 Linux 操作系统、移植目标平台 SBC2410、及 Linux 内核源代码的目录结构。然后详细讲述了在 SBC2410 硬件 平台上实现 Uboot 移植的过程,及概要介绍了 Linux 操作系统内核移植的过程。最后将嵌入式 Linux 系统成功移植上 SBC2410 平台。
4.1.1 Uboot 运行第一阶段
ARM系列处理器在上电或复位时,从物理地址 0x00000000 处开始执行,此处也是第一片 Flash 所使用的存储空间的起始位 置,而 Uboot就存放在 Flash 的最前端。Uboot第一阶段由汇编语 言实现,以达到短小精悍的目的,主要完成系统硬件环境的初始 化,其工作流程如图 1 所示。
thBaidu Nhomakorabea Embedded Linux System on the ARM9. The Embedded Linux OS, the SBC2410 board, and the directory structure of the Linux kernel are introduced. The transplant process of the Uboot and of the Linux kernel are also discussed. Key words: ARM9; embedded Linux; transplantation of Uboot; transplantation of the Linux kernel
2 嵌入式 Linux 操作系统及特点
将 Linux 应用于嵌入式环境,是基于其具有以下特点:(1) Linux 操作系统是层次结构,并且内核源代码完全开放。不同 领域和不同层次的用户可以根据自己应用的需要,对内核进行 修改,能够低成本的开发出满足自己需要的嵌入式系统。(2)其具 有强大的网络支持功能。Linux 诞生于因特网时代,并具有
图 1 Uboot 第一阶段工作流程
4.1.2 Uboot 运行第二阶段
图 2 Uboot 第二阶段工作流程 当所有环境初始化完毕之后,程序执行 Uboot第二阶段。此 部分的代码用C 语言来实现,以便于实现更复杂的功能和取得更 好的代码可读性和可移植性。_start_armboot 函数是第二阶段执 行映像的入口点。第二阶段通常包括以下功能:初始化本阶段要使 用到的硬件设备,如:串口、网口、Flash 等,将 kernel 映像和根文
( School of Opto-Electronic Information, University of Electronic Science and Technology of China, Chengdu 610054 China ) Abstract: Linux OS has been more and more widely applied in many embedded areas. This paper introduces the transplantation of
4.1.3 Uboot 移植
对不同的板极硬件配置,都要进行Uboot的移植工作。移植 Uboot的工作包括添加开发板硬件相关的文件、配置Uboot,然后 编译生成 Uboot.bin 文件,最后进行烧写。具体过程如下:
1.修改 Makefile,添加: sbc2410_config:unconfig @./mkconfig $(@:_config=) arm arm920t sbc2410 NULL s3c24x0 2.创建 sbc2410 目录及文件:mkdir board/sbc2410 3.通过修改文件 sbc2410.h 来修改 Uboot 软硬件配置,包括: CPU 类型、MCU 类型、开发板型号、是否使用 MMU、是否使 用中断、malloc池大小、数据段大小、使用CS8900网卡、CS8900A 基地址、使用串口 1、波特率、网卡物理地址、掩码、开发板 IP、 TFTP 服务器 IP、内存物理地址、内存大小、默认的加载地址、 FLASH 的基地址等等。如下所示: #define CONFIG_ARM920T /* CPU 类型 */ #define CONFIG_S3C2410 /* MCU 类型 */ #define CONFIG_SBC2410 /* 开发板型号 */ #define USE_920T_MMU /* 使用 MMU */ #undef CONFIG_USE_IRQ /* 不使用中断 */ #define CFG_MALLOC_LEN (CFG_ENV_SIZE+ 128*1024)/* malloc 池大小 */ #define CFG_GBL_DATA_SIZE 128 /* 数据段大小 128 字节 */ #define CONFIG_DRIVER_CS8900/* 使用 CS8900 网卡 */ #define CS8900_BASE 0x19000300/*CS8900A 基地址 */ #define CONFIG_SERIAL1/* 使用串口 1 */ #define CONFIG_BAUDRATE 115200 /* 波特率 */ #define CONFIG_ETHADDR 08:00:3e:26:0a:5b/* 网 卡物理地址 */ #define CONFIG_NETMASK 255.255.255.0/* 掩码 */ #define CONFIG_IPADDR 192.168.18.41/* 开发板 IP */ #define CONFIG_SERVERIP 192.168.18.125 /* TFTP 服务器 IP */ #define PHYS_SDRAM_1 0x30000000 /* 内存物理地址 */ #define PHYS_SDRAM_1_SIZE 0x04000000 /* 内存大 小 64MB */ #define CFG_LOAD_ADDR 0x30008000 /* 默认的加 载地址 */ #define PHYS_FLASH_1 0x00000000 /* FLASH 1 的
3 SBC2410 硬件平台介绍
SBC2410是一款基于三星公司ARM9处理器S3C2410A,支 持 ARM-Linux、WindowsCE 等操作系统的嵌入式硬件平台。 平台的主要硬件资源有:一片 64M SDRAM,一片 64M Nand Flash,一片 1M Nor Flash,一个串口 COM0,一个 USB Host A 型接口,一个 USB Slave B 型接口,一个标准 JTAG 接口,等等。 平台支持 Linux2.4.18 内核版本。
44 | Techniques of Automation & Applications
件系统映像从 Flash 上复制到 RAM 空间中,启动 Linux 内核,提 供 kermit 和 TFTP 内核下载工具,支持 Boot Loader 在线更新。
修改后的 Uboot 第二阶段工作流程,如图 2 所示。
1 引言
嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件 可裁减,是对功能、可靠性、成本、功耗有严格要求的专用计算 机系统。它一般由以下几部分组成: 嵌入式微处理器、外围硬件 设备、嵌入式操作系统、及特定的应用程序。
当前,人类进入信息爆炸的时代,各类信息极度丰富,数字信 息技术和网络技术的高速发展,只有借助于各种计算机,才能够对 各类信息进行处理,它们已不再局限于以前的PC,而是由形态各 异、性能千差万别的嵌入式系统来完成。而嵌入式操作系统主要 有:嵌入式 Linux、WindowsCE、Vxworks、uC/OS-II 等[1]。本 文主要研究嵌入式Linux在嵌入式系统中的应用。