`

S3C6410 移植Android 内核

阅读更多

主要过程:
. 安装lunux 环境
. 安装编译工具
. 下载Linux kernel
. 安装Android SDK
. 获得root file system
. 修改Linux kernel 源码
. 配置Linux kernel
. 修改root file system
. 编译Linux kernel
. 下载kernel Image

1.安装linux 环境
安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,地址:
http://mirror.lupaworld.com/ubuntu/releases/8.04/
下载ubuntu-8.04.2-desktop-i386.iso,刻录成光盘安装,安装可以在windows 系统下进行,
选取有15G 空间的硬盘安装,输入用户密码开始安装

这一步结束退出光盘重启进入Ubuntu 系统,完成余下系统安装。
Linux 安装完成,进入Ubuntu 系统,确保电脑连接Internet,安装一些必要软件。
打开终端输入命令框,进行下面的操作:
$ sudo apt-get install ssh
$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
$ sudo apt-get install valgrind
$ sudo apt-get install sun-java6-jdk
$ sudo apt-get install libncurses5-dev
所有软件系统会自动从网络下载安装,完成后可以开始Android 的移植。

2.安装编译工具
下载:
$ wget
http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
安装:
$ tar -xjvf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

3.下载Linux kernel
从下面地址获得:
http://code.google.com/p/android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount
Kernel : linux-2.6.23-android-m5-rc14.tar.gz
解压文件
$ tar -xf linux-2.6.23-android-m5-rc14.tar.gz

4.安装Android SDK
从网上下载linux 版本的Android SDK,如下
http://dl.google.com/android/android-sdk_m5-rc15_linux-x86.zip
下载后解压,获得android-sdk_m5-rc15_linux-x86 文件

5.获得root file system
⑴下载busybox 工具从下面地址
http://benno.id.au/blog/2007/11/14/android-busybox (linux 环境中下载)
⑵运行emulator 获取root file system
$ cd <目录>/ android-sdk_m5-rc15_linux-x86/tools
$ ./emulator&
等 待emulator 启动,看到出现Android 系统画面,进入菜单ALL/Dev Tools/Development Settings 下,将Wait for debugger,Show running processes,Show screen updates 这三项打勾,回到命令输入终端。
$ ./adb push <local-path>/busybox /data
$ ./adb shell
# /data/busybox tar -czf system.tar.gz /system
# /data/busybox tar -czf data.tar.gz /data
# /data/busybox tar -czf etc.tar.gz /etc
# /data/busybox tar -czf sbin.tar.gz /sbin
# exit
$ ./adb pull /system.tar.gz ./
$ ./adb pull /data.tar.gz ./
$ ./adb pull /etc.tar.gz ./
$ ./adb pull /sbin.tar.gz ./
$ ./adb pull /init ./
通过busybox 工具获得了emulator 的文件并打包,下面建立root 文件目录
$ mkdir initial_ram_disk
$ cd initial_ram_disk
$ mkdir cache
$ mkdir d
$ mkdir dev
$ mkdir proc
$ mkdir root
$ mkdir sdcard
$ mkdir sys
$ mkdir tmp
$ mkdir var
$ tar -xf <local-path>/system.tar.gz ./
$ tar -xf <local-path>/data.tar.gz ./
$ tar -xf <local-path>/etc.tar.gz ./
$ tar -xf <local-path>/sbin.tar.gz ./
$ cp <local-path>/init ./
包含Android root 文件系统的initial_ram_disk 做好。

6.修改Linux kernel 源码
下载的kernel 文件是不支持smdk6400 开发板的,必须加入smdk6400 的配置文件到kernel 中,同时修改Kconfig 和Makefile 文件。
修改如下:
1> 选择 /arch/arm/mach-s3c2410/Makefile.boot 改为下面内容,
zreladdr-$(CONFIG_PLAT_S3C24XX) := 0x30008000
params_phys-$(CONFIG_PLAT_S3C24XX) := 0x30000100
zreladdr-$(CONFIG_PLAT_S3C64XX) := 0x50008000
params_phys-$(CONFIG_PLAT_S3C64XX) := 0x50000100

2> 从成熟的smdk6400 平台文件中拷贝下面文件到kernel 目录
/arch/arm/mach-s3c6400
/drivers/serial/s3c6400.c
/drivers/input/touchscreen/s3c-ts.c
/drivers/usb/gadget

3> 拷贝/drivers/android/ashmem.c 文件到相应目录下从另外的android kernel (The Android source code for 2.6.23 不包含此文件)

4> 修改相应的Kconfig 和Makefile 文件,使最终能编译到加载的smdk6400 文件。

7.配置Linux kernel
修改kernel 后进行配置,用到第2 步的编译工具
$ cd <kernel-src>
$ make CROSS_COMPILE=<path-to-compiler>/bin/arm-none-linux-gnueabi- ARCH=arm
menuconfig
这时进入kernel 配置画面,注意配置Initramfs source file 选项指定到initial_ram_disk 文件。

8.修改root file system
配置Touchscreen 使之能正常工作, initial_ram_disk 文件下修改/etc/init.rc,加入下面内容
TSLIB_CONSOLEDEVICE none
TSLIB_FBDEVICE /dev/graphics/fb0
TSLIB_TSDEVICE /dev/input/ts0
TSLIB_CALIBFILE /etc/pointercal
TSLIB_CONFFILE /etc/ts.conf
TSLIB_PLUGINDIR /lib/ts

9. 编译Linux kernel
$ make CROSS_COMPILE=<path-to-compiler>/bin/arm-none-linux-gnueabi- ARCH=arm
zImage
编译成功,在arch/arm/boot 下面是生成的zImage 文件。

10.下载kernel image
进入Windows 系统,下载过程在Windows 系统中完成。
① 打开:程序附件通讯超级终端,配置COM 口,115200,8N1

② 连接smdk6400 开发板和电脑通过串口线,打开开发板电源,可以在超级终端中看到输出信息,bootloader 启动,按空格键进入命令输入状态

③ 板子上连接USB 线到电脑,安装USB 驱动程序
④ 运行dnw.exe 程序,配置Configuration/Options,地址0x57e00000,确定

⑤ 在超级终端中输入相应命令,开始下载
$ run bootup (下载bootloader)
$ run kernelup (下载kernel Image)
$ run rootup (下载root file system)
⑥ 这里我们输入
$ run kernelup
等待dnw 发送文件,dnw 显示[COM1,115200bps][USB:OK][ADDR:0x57e00000]说明连接成功,选择USB Port->Transmit,选取编译成功的zImage 文件,开始下载。
下载完成,重启开发板,等待,LCD 上出现一些Android 字符,一段时间白屏,出现一个左右滚动的红色滚动条,进入主界面,Android 移植成功。

分享到:
评论

相关推荐

    S3C6410 移植Android 内核.doc

    总的来说,移植Android内核到S3C6410的过程涉及到多个环节,包括环境准备、工具安装、源码获取和修改、编译以及文件系统的定制。这个过程需要深入理解Linux内核、Android系统架构以及嵌入式设备的工作原理。通过这个...

    S3c6410移植android过程

    ### S3C6410 移植 Android 过程详解 #### 一、概述 在本篇文章中,我们将深入探讨如何将 Android 操作系统移植到 S3C6410 平台上。S3C6410 是一款由三星半导体生产的高性能应用处理器,广泛应用于移动设备和嵌入式...

    三星s3c6410 android移植文档

    总的来说,移植Android到S3C6410是一项涉及广泛技术领域的任务,需要深厚的Linux内核知识、驱动开发经验以及对Android系统架构的深入理解。通过以上步骤,开发者能够将Android系统成功地运行在S3C6410平台上,从而...

    S3c6410_android.rar_Android开发板_S3c6410_android_android S3c6410_s

    1. **内核配置与编译**:移植Android首先需要对Linux内核进行配置,以支持S3C6410的外设。这包括选择合适的CPU选项、内存管理单元(MMU)设置、中断控制器配置等。然后,编译内核生成适合S3C6410的镜像文件。 2. **...

    s3c6410移植过程.rar

    《S3C6410移植Android葵花宝典》 在嵌入式系统领域,移植操作系统是一项技术性极强的工作。本资料主要讲述了在基于Samsung公司的S3C6410处理器上移植Android系统的过程,这对于理解Android系统架构、熟悉硬件平台与...

    s3c6410 android 移植Step by step

    ### s3c6410 Android 移植Step by step #### 一、概述 本文档旨在指导开发者如何在s3c6410平台上进行Android系统的移植工作。s3c6410是一款高性能的处理器,适用于多种嵌入式应用。通过本教程的学习,您将了解整个...

    s3c6400-6410移植android+内核参照.pdf

    在嵌入式领域,移植 Android 系统到特定硬件平台是一项关键任务,对于S3C6400和S3C6410处理器来说也不例外。这两个基于ARM构架的处理器广泛应用于各种嵌入式设备,如智能手机、平板电脑等。以下是移植 Android 系统...

    android在s3c6410上的移植.doc

    将Android系统移植到S3C6410平台上是一项复杂而具有挑战性的任务,涉及到硬件驱动、内核定制等多个方面。通过上述步骤,可以逐步解决移植过程中的各种问题,最终实现Android系统在S3C6410上的稳定运行。未来还可以在...

    移植Android到S3C6410

    ### 移植Android到S3C6410的关键步骤详解 #### 一、概述 在将Android系统移植到特定硬件平台(如S3C6410)的过程中,涉及到了一系列复杂的步骤和技术要点。本篇文章旨在通过分析给定文件中的关键信息,详细解释这一...

    S3C6410核心板

    - **操作系统移植**:常见的操作系统如Linux、Android等可以在S3C6410上运行,移植工作包括内核裁剪、驱动适配、文件系统构建等。 - **功耗管理**:嵌入式系统通常对功耗有严格要求,因此需要优化电源管理策略,延长...

    s3c6410和ok6410用户全手册

    S3C6410处理器是Samsung公司推出的一款32位RISC微处理器,采用ARM1176JZ-S内核,主频可达到667MHz。它拥有丰富的外设接口,如USB Host/Device、Ethernet、SD/MMC、UART、I2C、SPI等,支持多种操作系统,如Linux、...

    飞凌ARM11, s3c6410 开发板说明书,电路图

    S3C6410是三星推出的一款高性能、低功耗的32位RISC微处理器,基于ARMCortex-A8内核,支持多种操作系统,如Linux、Android等。 S3C6410处理器具有以下关键特性: 1. **ARMCortex-A8核心**:采用64位冯·诺依曼架构,...

    s3c6410 底板图

    s3c6410采用ARM Cortex-A8内核,主频可达600MHz或800MHz,具有强大的处理能力和多媒体功能。它集成了多种外围设备接口,如USB、SDIO、LCD控制器、摄像头接口、音频编解码器等,为开发人员提供了丰富的资源,可以满足...

    S3C6410 source

    - **RTOS或Linux内核移植**:针对S3C6410优化的实时操作系统或Linux内核源码。 - **用户空间库**:针对特定硬件的库函数,如HAL(硬件抽象层)。 - **工具链**:用于编译和调试的交叉编译器和其他工具。 4. **...

    s3c6410 MFC for wince

    S3C6410处理器集成了多核架构,包括ARM Cortex-A8内核,支持NEON媒体处理单元,具备高性能的多媒体处理能力。此外,它还包含了丰富的外设接口,如USB、Ethernet、LCD控制器等,为多媒体应用提供了良好的硬件基础。 ...

    S3C6410中文手册.rar

    9. **软件支持**:S3C6410通常与Linux、Android等开源操作系统兼容,手册将指导开发者如何进行驱动程序开发和系统移植。 10. **应用实例**:手册可能包含实际应用案例,展示S3C6410在智能手机、平板电脑、数字标牌...

Global site tag (gtag.js) - Google Analytics