S3C6410 移植Android 内核移植经验

合集下载

Tiny6410_Uboot移植步骤详解

Tiny6410_Uboot移植步骤详解

#include <config.h> #include <asm/arch/s3c6400.h>
.globl mem_ctrl_asm_init mem_ctrl_asm_init:
/* DMC1 base address 0x7e001000 */ ldr r0, =ELFIN_DMC1_BASE
#tar xzvf u-boot-gxb.tar.gz
二:在顶层的目录下找到 Makefile 文件,并用 gedit
打开
在 Makefile 中找到下面代码进行修改
########################################################################
else
\
echo
"RAM_TEXT
=
0xc7e00000"
$(obj)board/samsung/tiny6410/config.tmp;\
fi
@$(MKCONFIG) tiny6410 arm arm1176 tiny6410 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
ldr r1, =DMC_DDR_t_RFC ldr r2, =DMC_DDR_schedule_RFC orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RFC]
ldr r1, =DMC_DDR_t_RP ldr r2, =DMC_DDR_schedule_RP orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RP]

S3C6410的u-boot移植

S3C6410的u-boot移植
在132行添加如下,目的是找到命令段
132 .global uboot_cmd_start
133 uboot_cmd_start:
134 .word __u_boot_cmd_start - _start
135 .global uboot_cmd_end
145 "ldr %0, [r0]\n"
146 "ldr r0, =uboot_cmd_end\n"
147 "ldr %1, [r0]\n"
148 "ldr %2, =_start\n"
88 #define DM9000_IO CONFIG_DM9000_BASE
89 #define DM9000_DATA (CONFIG_DM9000_BASE + 4)
90 #define CONFIG_DM9000_BUS16
在114行到117行添加如下,目的在于打开网络支持和ping命令
58 bic r1, r1, r2
59 orr Байду номын сангаас r1, r1, #0x11
60 orr r1, r1, #0x1100
61 str r1, [r0]
62 /* LED ALL ON */
sizeof(cmd_tbl_t));
154 // return find_cmd_tbl(cmd, &__u_boot_cmd_start, len);
155 }
八、修改u-boot-2012.04/include/configs/smdk6400.h
把81到83行注释掉,目的是取消CS8900网卡

s3c6410移植android4.0

s3c6410移植android4.0

S3c6410移植android 4.01,搭建androod4.0编译环境按照官网上的步骤:这里要值得注意一点,推荐大家用ubuntu 10.04和10.10 64位的系统,因为这个版本的系统的Python 和gcc的版本和官网上要求都是一致的。

Ubuntu10.10下载sun-java5-jdk的时候可能会出现以下问题::E: 软件包sun-java6-jdk 没有可供安装的候选者解决方法:$ sudo add-apt-repository "deb /ubuntu/ hardy multiverse"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk下载android4.0编译所依赖的包:这个我官网上配置USB我不知道是为什么,但是我还是按照他说的配置了:这样在/etc/udev/rules.d/51-android.rule应该有个文件。

2,下载源码按照官网上的步骤下载可能会出现几个错误:1>,命令的时候:repo init -u git:///platform/manifest.git终端提示以下错误:Traceback (most recent call last):File "/home/helei/bin/repo", line 603, in <module>main(sys.argv[1:])File "/home/helei/bin/repo", line 570, in main_Init(args)File "/home/helei/bin/repo", line 184, in _Init_CheckGitVersion()File "/home/helei/bin/repo", line 213, in _CheckGitVersionproc = subprocess.Popen(cmd, stdout=subprocess.PIPE)File "/usr/lib/python2.6/subprocess.py", line 623, in __init__errread, errwrite)File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_childraise child_exceptionOSError: [Errno 2] No such file or directory原因是没有安装git,执行以下命令:sudo apt-get install gitsudo apt-get install git-core2>,但是当使用命令repo syns的时候总是失败DownloadError: : <urlopenerror [Errno 110] Connection timed out>其实官网(/source/downloading.html)有段说明,如果认真执行就可解决。

基于S3C6410的u-boot SD卡启动方式的分析与移植

基于S3C6410的u-boot SD卡启动方式的分析与移植

U-Boot SD卡启动方式的分析与移植——基于S3C6410平台摘要:BootLoader在嵌入式系统的开发及产品升级过程中有重要作用。

U-Boot以其结构清晰、功能强大、跨平台支持等优势而应用广泛,同时结合SD卡设备方便携带、操作简单的特点,本文分析了U-Boot SD卡启动原理并进行了实际移植工作,在U-Boot中增加了SD卡启动的支持。

实验结果表明使用本文的方法可正确实现U-Boot的SD卡启动,并可进行操作系统内核的加载。

关键词:U-Boot SD卡启动1 前言近年来,伴随着信息技术与电子技术的高速发展,嵌入式技术已经被广泛地应用于人们日常的生产生活中,以嵌入式处理器为核心的各种智能终端不断出现,这些智能终端大都安装有嵌入式操作系统以支持更多功能丰富的应用程序。

随着科技的不断进步以及终端设备功能的不断加强,智能终端已经可以被视为一台微型的计算机系统。

类似于通用的PC机操作系统,嵌入式操作系统也需要在硬件设备初始化后由引导加载程序将系统内核加载至内存中运行。

通用Bootloader(universal boot loader,U-Boot)是遵循GPL条款的开放源代码项目,它不仅可以引导多种操作系统,同时还支持多种体系架构的CPU。

U-Boot代码结构清晰,功能丰富,具有良好的网络技术支持,同时移植方便,这些特点使得U-Boot在嵌入式系统中获得了广泛的应用。

S3C6410是三星公司推出的一款基于ARM11架构的通用嵌入式处理器,该款处理器性能卓越,接口丰富,能够满足大多数嵌入式设备的需求。

因此,本文首先介绍了U-Boot的工作原理,然后基于S3C6410处理器进行了U-Boot硬件相关部分的分析与移植,并且添加了U-Boot目前尚未支持的SD卡启动模式的代码。

2 U-Boot工作原理2.1 U-Boot代码结构简介U-Boot的源码目录结构比较简单,大部分目录通过其名字就可获知该目录下源码功能的信息。

嵌入式设计报告--基于ARM6410的Qtopia 4.4.3的移植

嵌入式设计报告--基于ARM6410的Qtopia 4.4.3的移植

嵌入式技术基础基于ARM6410的Qtopia 4.4.3的移植(嵌入式设计报告)院( 系 ) 信息工程学院专业名称班级学号学生姓名指导教师二O一一年六月摘要图形用户界面的广泛应用是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用。

在嵌入式系统中,GUI(图形用户界面)是嵌入式实时操作系统的重要组成部分,作为人机互交技术的重要内容,以其丰富的图形图像信息和直观的表达方式与用户互交,被越来越多的嵌入式系统所采用,现在已经成为当今嵌入式领域的发展焦点。

虽然市场上现在已经有了众多的优秀的GUI应用软件,但随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部分应用软件在新环境下无法正常运行。

如果舍弃原有软件而重新开发,将会耗费大量的人力和资金,而且浪费了许多成熟的软件成果。

而Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。

Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。

这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。

因此,基于Qt的嵌入式应用程序开发是一个非常有意义的课题,完成了嵌入式图形用户界面开发良好的人机交互界面是嵌入式系统设计的一个关键技术,具有一定的实用意义和价值。

关键词:嵌入式QT 图形用户界面人机交互目录摘要 (II)1.绪论 (1)1.1 课题研究背景和意义 (1)1.2 嵌入式技术发展现状 (2)1.3 嵌入式的发展趋势 (2)2.Qt开发工具简介 (4)2.1 Linux的简介 (4)2.2 QT 的简介 (5)2.3Q t编程机制简介 (5)2.4 常用的两种用户图形界面的简介 (8)3.处理器的概述 (9)4.Qtopia 4.4.3的移植设计 (10)4.1Tslib 1.4的编译 (10)4.2Qtopia4.4.3的编译 (12)4.3Qtopia4.4.3的使用 (13)4.4运行Qtopia4.4.3 (14)4.5Qtopia4.4.3的演示效果 (15)5总结 (16)6参考文献 (17)附录一网络文件系统的挂载 (19)1.绪论1.1 课题研究背景和意义随着嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。

tiny6410内核移植

tiny6410内核移植

Tiny6410 的内核移植(拿来主义)一、开发环境宿主机: vista+VMware+ fedoral13(win7下虚拟机)编译器: 友善自带arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz开发板: tiny6410,核心板号1106 NAND 2G RAM 256M注意:移植内核时,确保引导文件为u-boot类型,否则到后面下载到开发板使会出现乱码以及不必要的错误二、移植nand_flash1 下载linux-2.6.38的源码ftp:///pub/linux/kernel/v2.6/linux-2.6.38.tar.bz22 解压#tar xvfj /mnt/ubuntu/linux-2.6.38.tar.bz2 -C .3 修改根下的Makefile#vi Makefile191行改为ARCH ?= armCROSS_COMPILE ?= arm-linux- (找到其交叉编译环境)4 生成默认配置文件#cp arch/arm/configs/s3c6400_defconfig .config(如果省略的话,后面会找不到System Type)5 修改配置项(基本配置)#make menuconfigGeneral setup->(/usr/4.5.1/bin/arm-linux-) Cross-compiler tool prefix 我将编译器解压到了/opt/Friendly/toolschain/4.5.1/bin目录(如果第三步中以修改“plier ? = arm-linux- ”此项,这步可以不作)System Type->[*] MINI6410 选上,其他的可以去掉,不确定的可以参考友善之臂的(这样编译出来的内核是可以被uboot引导的,然后是增加nand flash支持)vi arch/arm/mach-s3c64xx/mach-mini6410.c第117行struct mtd_partition mini6410_nand_part[] = {{.name = "Bootloader",.offset = 0,.size = (4 * 128 *SZ_1K),.mask_flags = MTD_CAP_NANDFLASH,},{.name = "Kernel",.offset = (4 * 128 *SZ_1K),.size = (5*SZ_1M) ,.mask_flags = MTD_CAP_NANDFLASH,},{.name = "File System",.offset = MTDPART_OFS_APPEND,.size = MTDPART_SIZ_FULL,}}; //update at 2011-8-26 经过测试发现,这里改完后根本不起作用,甚至将整个注释也无妨,估计分区已经固死在后面的s3c_nand_mlc.fo 中6 拷贝NAND FLASH驱动(将6410内核中的如下文件拷到相应的目录下)需拷贝文件:drivers/mtd/nand/s3c_nand.carch/arm/plat-samsung/include/plat/regs-nand.h 覆盖掉drivers/mtd/nand/s3c_nand_mlc.fo《s3c_nand_mlc.fo友善没有开源的一个驱动之一,所以不用研究了,拷过来就是了。

Android内核移植过程

Android内核移植过程

Android内核移植步骤一、Android模拟器的安装1、下载Linux下的Java安装包并安装。

2、下载Android SDK并保存到相应路径。

3、启动Android SDK中得android模拟器,下载相应平台及工具,之后创建A VD(Android Vitruel Device)。

二、Android内核编译1、安装交叉编译器:arm-linux-gcc(解压即可)。

2、启动安装好的Android模拟器,通过adb得到模拟器中提供的内核配置文件,命令如下:$ emulator –avd [AVD名称]$ adb pull /proc/config.gz3、通过上一步,adb工具会连接模拟器,并从它里面下载一个叫做config.gz 的文件到你的当前目录下。

将其移动至kernel(Android内核)目录,解压该文件得到config,将其重命名为.config,这样就可以跳过make config而直接得到Makefile所需要的内核配置文件。

具体命令如下:$ gunzip config.gz$ mv config .config4、修改Makefile:1)修改第180行左右,将ARCH的值改为arm,这是修改交叉编译工具的编译架构;将CROSS_COMPILE值改为arm-linux-,这是我们安装的交叉编译工具链的前缀,修改此处意在告诉make在编译的时候要使用该工具链。

2)修改第560行左右,将build id 值注释掉,因为目前版本的android内核不支持该选项。

保险起见,加一行代码:LDFLAGS_BUILD_ID=.(=后什么都没有,好像此处不进行修改亦可,看版本)5.在kernel目录下执行make:$ make除个别警告外编译过程一切顺利,最终在/kernel/arch/arm/boot目录下面生成一个zImage,即为编译好的内核镜像了。

6.运行该镜像:$emulator -kernel ~/android/kernel/arch/arm/boot/zImage –avd [AVD 名称]通过以上步骤,即可完成内核移植。

安卓系统移植经验之谈,教你三分钟移植

安卓系统移植经验之谈,教你三分钟移植

每当我闲下来时不发Rom时,就会整理一下思路,发发教程啥的,我觉得能带动机油们自己打造、改造Rom,共同提升,才是Romer的追求。

发Rom也好,教程也好,我的宗旨是不设回复可见,如果你觉得好,回复或者评分鼓励一下,我就很开心了。

不过这样做的一个遗憾就是,我的帖子通常回复率不够高,沉得快。

好了,闲话少说,上教程。

注:可能你会觉得文字教程比较干枯,不够形象生动,但是请精心看,我会尽量讲得具体、清晰。

首先,我并不算是移植高手,这个教程只是我在自己移植过程中的的一些收获体会,一些经验之谈。

如果你觉得有什么不对或值得改进的地方,欢迎和我交流,我们一起来完善这个教程。

因为移植所涉及的机型、配置相当多变和复杂,所以我无法讲具体细节,只能讲大致的原则。

可以结合我移植U8800+的JoyOS到U8860的例子作为参考进行理解。

我把这些原则抽象出来,命名为Rom移植5步法,具有一定的通用性。

Rom移植的方向有正向和逆向之分:正向的做法通常就是,找个目标机型的底包,然后把要移植的包的app和framework提取出来替换进去。

这样的优点是改动无需太大,非常快捷;缺点是经常因为一些bin下的程序或者库文件的差异而导致成功率不够高。

逆向的做法是,拿要移植的包作为底包,把目标机型的内核、wifi驱动、传感器库文件、配置文件等替换进去。

这样做要复杂一些,需要准确两个包的差异,知道应该改哪里;优点自然是不成则已,一旦移植成功能最大限度地发挥Rom性能,因为框架、程序与底层的契合度要比正向法好。

我这个教程以逆向法为例。

另外,Rom移植有风险,刷机测试需谨慎,如有本人操作不当导致出现任何问题,本人概不负责。

Rom移植5步法:1.Rom移植涉及的东西比较偏底层,所以在移植之前必须清楚目标机型的硬件配置,分区结构。

这里的配置不是说主频多少、内存多少,这两个参数基本上不会影响移植的进行。

对于移植,最关键的因素是主板平台,通常采用同一系列的cpu的不同机型的Rom移植的成功率要高很多。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主要过程:. 安装lunux 环境. 安装编译工具. 下载Linux kernel. 安装Android SDK. 获得root file system. 修改Linux kernel 源码. 配置Linux kernel. 修改root file system. 编译Linux kernel. 下载kernel Image1.安装linux 环境安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,地址:/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/public/gnu_toolchain/arm-none-linux-gnuea bi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2安装:$ tar -xjvfarm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz23.下载Linux kernel从下面地址获得:/p/android/downloads/list?can=1&q=&colspec=File name Summary Uploaded Size DownloadCountKernel : linux-2.6.23-android-m5-rc14.tar.gz解压文件$ tar -xf linux-2.6.23-android-m5-rc14.tar.gz4.安装Android SDK从网上下载linux 版本的Android SDK,如下/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/DevTools/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) := 0x30008000params_phys-$(CONFIG_PLAT_S3C24XX) := 0x30000100zreladdr-$(CONFIG_PLAT_S3C64XX) := 0x50008000params_phys-$(CONFIG_PLAT_S3C64XX) := 0x500001002> 从成熟的smdk6400 平台文件中拷贝下面文件到kernel 目录/arch/arm/mach-s3c6400/drivers/serial/s3c6400.c/drivers/input/touchscreen/s3c-ts.c/drivers/usb/gadget3> 拷贝/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=armmenuconfig这时进入kernel 配置画面,注意配置Initramfs source file 选项指定到initial_ram_disk 文件。

8.修改root file system配置Touchscreen 使之能正常工作, initial_ram_disk 文件下修改/etc/init.rc,加入下面内容TSLIB_CONSOLEDEVICE noneTSLIB_FBDEVICE /dev/graphics/fb0TSLIB_TSDEVICE /dev/input/ts0TSLIB_CALIBFILE /etc/pointercalTSLIB_CONFFILE /etc/ts.confTSLIB_PLUGINDIR /lib/ts9. 编译Linux kernel$ make CROSS_COMPILE=<path-to-compiler>/bin/arm-none-linux-gnueabi- ARCH=armzImage编译成功,在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]说明连接成功,选择USBPort->Transmit,选取编译成功的zImage 文件,开始下载。

下载完成,重启开发板,等待,LCD 上出现一些Android 字符,一段时间白屏,出现一个左右滚动的红色滚动条,进入主界面,Android 移植成功。

相关文档
最新文档