`
xusaomaiss
  • 浏览: 615462 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

s3c2410/2440(armv4t) 移植android

阅读更多

http://blog.csdn.net/java211/archive/2009/02/02/3857586.aspx

 

【本教程版权以及image属于Androidin 转载和使用请注明出处并附带链接】
Androidin首发
Androidin Dev.Team 熊猫哥哥

ARMv4移植简单教程:

    相信国内很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架构。在之前,因为android的一些底层代码含有armv5t的指令, 所以以前无法移植到这样的平台。 在这里也放出移植教程和已经编译好的image。 让更多的朋友可以在自己的开发板上亲身体验android。教程基于勤研qt2410以及扬创utu2440完成。
    注意,移植是到armv4而不是armv4t,  原因应该是不开thumb支持会比较好移植一些(改动未涉及的库依然会用thumb代码,所以kernel依然要开thumb支持)。
    kernel移植及nfs配置的详细部分等请自行查阅相关文档,本文只做提点,另外需要些git的操作。
    目前的image只是临时方案。主要是基于openmoko的benno一些尚未正式发布的patch,整体来说已经比较完善和clean,我仅做了点小修改就能使用,由于部分库用c实现替换掉了arm实现,同时一些critical的armv5指令被armv4的替换,速度可能有点慢,尤其是2410上速度很慢。。对于严苛的android开发组来说,这些patch部分尚未提交,部分在reviewing,还需要一些周期才会被接受进官方git。等这些patch被官方接受后,我会整理另一套正式一些的版本,同时可能会提供些优化方案。

A.  kernel的移植
    1. 移植,两个方案可以选。
        1). 将android的官方kernel的补丁打到自己的kernel上,这个方法对于kernel版本比较新的朋友比较合适,也很简单。比如2.6.24或以上。
            a. 下载android kernel,执行 git diff v2.6.25 HEAD > android.patch
            b. 进入你自己的kernl,执行 git apply android.patch
            c. 一般都会出error,手动合并所有带error的文件,如果你是2.6.25的话很简单,2.6.24会费点周折,因为kobject/kset的一些改动造成android power/ipv4等驱动不太好合。。
        2). 将自己kernel上的bsp移植到android官方kernel。适用于kernel比较旧的朋友。
            因为2410/2440是linux原生支持,所以基本上只需要移植lcd/touchpanel/网卡等等的驱动,并打开2410/2440支持选项即可。这个目前网上已经有大量的资料详细阐明, 在此不再累述,但是出问题比较多的地方就在这里了。
    2. 这些步骤完成后,检查如下选项是否都已经打开(make menuconfig):
        CONFIG_AEABI=y   
        CONFIG_SHMEM=y   
        CONFIG_ASHMEM=y
        CONFIG_ARM_THUMB=y
        CONFIG_ANDROID_BINDER_IPC=y
        CONFIG_ANDROID_LOGGER=y
        以下不一定重要, 但能开就开,除非移植有问题,比如power驱动:
        CONFIG_ANDROID_POWER=y
        CONFIG_ANDROID_POWER_STAT=y
        CONFIG_ANDROID_POWER_ALARM=y
        CONFIG_ANDROID_RAM_CONSOLE=y
        CONFIG_ANDROID_TIMED_GPIO=y
        CONFIG_ANDROID_PARANOID_NETWORK=y
    3. 按需要make zImage,再生成uImage,烧写到nand。

B. 制作android nfs root
    1. 下载我做好的android_armv4 image包,在这里(android_armv4_image 上传中..稍等..)
    2. 准备好能启动的nfs root,设置好访问权限(重要!),资料请网上查阅,不再累述
    3. 拷贝包中的system目录到nfs_root/system, data目录到nfs_root/data, root目录到nfs_root/ (其他.img文件可以模拟器使用,同时也可以做真实文件系统,后话了)
    4. 设置nfs启动参数中的init=/init,既指向nfs_root下的init
    5. 删除nfs_root/init.rc,去掉除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外所有的mount命令

C. 运行!
    跑跑看吧, 进入android console之后可以运行logcat查看log。第一次启动会创建很多的数据,会比较慢,2410几乎是折磨了。。平常的启动速度2440大概在1分多钟,2410要5分钟了。看到漂亮的大手表,你就搞定了!!

常见问题:
1. lcd不显示, 检查framebuffer..如果正常,查看nfs权限。
2. 非法指令,检查thumb,eabi选项。
3. servicemanager异常退出,检查binder & ashmem选项。
其他的看kernel log和logcat自己分析吧~ 呵呵~

简单流程就是如此,中间可能会遇到很多困难的!wish u luck!


20081208修改:
最新进展, s3c2440上也已经跑起来了,能进idle, 触摸有kernel消息但是android还没认.
使用的是utu2440f平台, 扬创的..2410太慢啦..上2440咯!
前段时间太忙没来得及更新和放patch..
今天晚上直接放支持2410/2440的android image..

下载我做好的android_armv4 image包,在这里

http://www.androidin.com/bbs/viewthread.php?tid=2741&page=1&extra=page%3D1

原来的帖子(s3c2410):
目前已经能进入idle..但屏幕颜色显示还有问题..触摸驱动也还没有搞..
硬件配置为s3c2410 200mhz, 64m ram, 64m nand..
我的板子kernel比较老~直接用官方android kernel做的..于是所有驱动都得自己移植进来..后面估计有得搞了..
试了几个方案..感谢openmoko两位牛人..Sean的patch没有跑起来..最终还是用的Benno的patch..另外有些小修改..
启动速度一般, 感觉还行!
要看图的话明天上图..不会发图阿..呵呵..
patch我会整理一下, 后面发布出来~



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/java211/archive/2009/02/02/3857586.aspx

分享到:
评论

相关推荐

    S3C2410的 Linux2.6.33内核移植以及搭建交叉编译

    ### S3C2410的 Linux2.6.33 内核移植与搭建交叉编译环境 #### 概述 本篇文章旨在详细介绍如何针对S3C2410平台进行Linux2.6.33内核移植,并在此基础上构建交叉编译环境的过程。整个流程分为几个关键步骤,包括环境...

    最新linux2.6.33内核移植到s3c2410平台详细步骤

    ### Linux 2.6.33 内核移植到 S3C2410 平台详解 #### 一、前言 随着嵌入式系统的不断发展,Linux内核的移植成为了一个重要的研究方向。本文主要介绍了如何将最新的Linux 2.6.33内核移植到S3C2410平台上,包括搭建...

    嵌入式Linux系统在S3C2410上的移植实现.pdf

    【嵌入式Linux系统在S3C2410上的移植实现】 嵌入式Linux系统是一种专门为特定硬件平台设计的轻量级操作系统,通常用于控制和管理嵌入式设备的各种功能。S3C2410是Samsung公司推出的一款基于ARM920T内核的微处理器,...

    mplayer在S3C2410上的移植

    ### mplayer在S3C2410上的移植详解 #### 一、引言 随着嵌入式技术的发展,多媒体应用越来越广泛地被应用于各种便携式设备中。MPlayer作为一款开源的多媒体播放器,因其强大的功能和广泛的格式支持而受到开发者的...

    最新版本mplayer移植S3C2410成功

    在本文中,我们将深入探讨如何将最新版本的Mplayer成功移植到S3C2410处理器上。S3C2410是一款基于ARM920T内核的微处理器,广泛应用于嵌入式系统,如开发板和便携式设备。移植Mplayer这一多媒体播放器对于在这样的...

    S3C2410X S3C2410XS3C2410X

    ### S3C2410X 32-Bit RISC Microprocessor 用户手册概览 #### 一、产品概述 S3C2410X是一款由三星电子开发的32位精简指令集(RISC)微处理器,主要用于嵌入式系统中。这款处理器在设计上特别注重低功耗和高性能,...

    Arm_s3c2410中文文档

    S3C2410采用ARM920T核心,它是一款高性能、低功耗的RISC(精简指令集计算)处理器,支持ARMv4T指令集,包括Thumb指令集,能够有效提高代码密度,降低存储需求。ARM920T内核运行频率可达266MHz,提供强大的处理能力。...

    S3C2410在商务话机中的应用设计

    1.处理器核心:S3C2410的核心是基于ARMv4T指令集的ARM920T内核。ARM920T内核包含独立的16KB指令和数据缓存以及MMU(内存管理单元)。MMU对于在嵌入式设备上实现如Linux等操作系统是至关重要的。它支持ARM指令集和...

    ARMv71上移植的python2.7

    在本案例中,我们关注的是在ARMv7架构的正点原子Linux开发板上移植Python 2.7。这是因为原生预装的Python版本可能不包含所有必要的库,这对于开发和运行特定的应用程序是必不可少的。以下是关于这个主题的详细解释:...

    ffmpeg 2.1.3 for iOS i386/armv7/armv7s

    标题提到的是FFmpeg 2.1.3 版本,针对iOS平台的i386、armv7和armv7s架构编译的静态库。 **FFmpeg 2.1.3 版本详解** FFmpeg 2.1.3 是该项目的一个稳定版本,发布于2014年,包含了对各种音视频编码格式的支持和优化...

    Armv8/Armv9指令集速查手册

    2023年最新,Armv8/Armv9指令集速查手册

    S3C2410X

    ### S3C2410X 32-Bit RISC Microprocessor 用户手册 #### 一、概述 S3C2410X是一款由三星电子设计与制造的32位精简指令集(RISC)微处理器。该处理器特别适用于嵌入式系统领域,因其高性能、低功耗及丰富的外设...

    MiniGUI-1[1].6.10+tslib-1.4移植到s3c2410+linux2.6.33.2.doc

    在本文档中,我们将讨论如何将MiniGUI版本1.6.10和tslib版本1.4移植到运行Linux内核2.6.33.2的S3C2410平台。 首先,我们需要确认操作系统的基本信息,通过`uname -a`命令可以看到,系统是基于armv4tl架构的GNU/...

    Armv8/Armv9架构入门指南(cortex-A系列)

    《Armv8/armv9架构入门指南》是针对Cortex-A系列处理器的最新技术文档,旨在帮助读者理解和掌握Armv8及Armv9架构的基本概念、核心特性以及编程技巧。Armv8和Armv9是ARM公司推出的面向高性能计算、服务器、移动设备等...

    nfs_root_andriod.armv4.tar.gz_ROOT_S3C2440 image_armv4_armv4.tar

    本文件“nfs_root_andriod.armv4.tar.gz_ROOT_S3C2440 image_armv4_armv4.tar”即为针对S3C2440芯片设计的一款Android文件系统,旨在提供一种通过网络文件系统(NFS)启动和操作Android系统的解决方案。 1. **NFS根...

    广州斯道 s3c2410 普及版II技术手册S3C2410普及板II FAQ

    根据提供的广州斯道 s3c2410 普及版II技术手册中的FAQ内容,我们可以总结出一系列关于该开发板的关键知识点和技术指导。以下是对这些知识点的详细阐述: ### 1. 开发板常见故障排查 #### 1.1 网络连接问题 **问题:...

Global site tag (gtag.js) - Google Analytics