S3C6410 移植Android 内核移植经验
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移植
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移植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卡启动方式的分析与移植
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的移植(嵌入式设计报告)院( 系 ) 信息工程学院专业名称班级学号学生姓名指导教师二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 的内核移植(拿来主义)一、开发环境宿主机: 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模拟器的安装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移植的成功率要高很多。
基于S3C6410的U-boot分析与移植
7期 第2 O卷 第 1
V0 .0 1 2
No 1 .7
Байду номын сангаас
电子设计 工程
El cr n c De in En i e rn e to i sg g n e i g
21 0 2年 9月
S p.2 2 e 01
基于 ¥ C 4 0的 Ub o 3 61 .o t分析 与移植
C U 速 度 和 时钟 频 率 、 A 初 始 化 、 E 初 始 化 、 关 闭 C U P R M LD P
由 于 B o odr 设 计 依 赖 于 C U 的 体 系 结 构 和 具 体 ot ae 的 l P
U. o ta ay i a d ta s ln a in b s d o 3 4 O b o n lss n r n p a t t a e n S C6 1 o
Z HOU in c a g IZ e —ig Ja —h n ,L h n xn
(/a nvri co lfI om t nad Tcnqe, unh u5 0 3 ,C ia J nU i s ySh o o n r ai n eh iu G azo 1 62 hn ) n e t f o
Ke o d: R ; 3 6 1 ; Q 40 ubo;r sl t yw rs A M1 ¥ C 4 0 T 6 1 ; —ot t pa 1 n a n
03- Tiny6410刷机指南-20110810
Tiny6410 刷机指南版本:2011-08-09(本手册正在不断更新中,建议您到网站下载最新版本)copyright@2010版权声明本手册版权归属广州友善之臂计算机科技有限公司(以下简称“友善之臂”)所有, 并保留一切权力。
非经友善之臂同意(书面形式),任何单位及个人不得擅自摘录本手册部分或全部,违者我们将追究其法律责任。
敬告:在售开发板的手册会经常更新,请在网站查看最近更新,并下载最新手册,不再另行通知。
更新说明:日期说明2011-08-09 增加了低级格式NAND Flash的说明(1.3.3)2011-07-21 提供全新的Superboot,支持进度显示,无需PC实现多系统烧写。
2011-05-19 SD-Flasher工具增加了Re-format功能,可以把Re-layout重新分区过的SD卡恢复成普通卡。
2011-04-08 1.Superboot增加了对三星2代MLC Nand Flash(以下简称MLC2)的支持a)通过SD卡脱机快速烧写Linux/WinCE/Android/Ubuntu系统b)通过USB下载烧写Linux/WinCE/Android/Ubuntu系统c)自动识别SLC/MLC2 Nand Flash2.U-boot升级:增加了读取MLC2的支持(型号:K9GAG08U0E)2011-1-4 Superboot增加了“Download & Run”功能,也就是把裸机程序下载到内存中运行,示例见“2.4”章节2010-11-26 本手册第一次发布,任何问题请反馈至capbily@目录Tiny6410 刷机指南.........................................................................................................................................- 1 - 第一章 制作SD卡启动盘....................................................................................................................................- 5 -1.1 烧写BIOS到SD卡.................................................................................................................................- 6 -1.1.1 BIOS简介.....................................................................................................................................- 6 -1.1.1 基于WindowsXP烧写BIOS........................................................................................................- 7 -1.1.2 基于Windows7烧写BIOS........................................................................................................- 10 -1.1.2恢复SD卡到原始状态...............................................................................................................- 14 -1.2 体验快速安装、更新、恢复和运行系统...........................................................................................- 15 -1.2.1 通过交互式图形界面安装系统...............................................................................................- 16 -1.2.2 快速安装WindowsCE系统.......................................................................................................- 19 -1.2.3 快速更新为Android系统..........................................................................................................- 20 -1.2.4 快速恢复为Linux系统..............................................................................................................- 21 -1.2.5 在SD卡中直接运行Ubuntu系统(500M)..................................................................................- 21 -1.2.6 关于配置文件FriendlyARM.ini................................................................................................- 22 -1.3 Superboot菜单功能介绍.......................................................................................................................- 26 -1.3.1 安装USB下载驱动....................................................................................................................- 27 -1.3.2 功能主菜单说明.......................................................................................................................- 33 -1.3.3低级格式化NAND Flash...........................................................................................................- 34 - 第二章 安装和更新或运行系统.......................................................................................................................- 36 -2.1 使用USB一键安装系统.......................................................................................................................- 36 -2.1.1一键安装Linux系统(yaffs2或UBIFS格式).............................................................................- 37 -2.1.2 一键安装WinCE系统................................................................................................................- 43 -2.1.3 一键安装Android(yaffs2或UBIFS格式).................................................................................- 48 -2.2 使用SD卡脱机快速安装系统.............................................................................................................- 54 -2.2.1快速安装Linux(UBIFS格式).....................................................................................................- 54 -2.2.2 快速安装WindowsCE6.............................................................................................................- 55 -2.2.3 快速安装Android(UBIFS格式)...............................................................................................- 56 -2.2.4 快速安装Ubuntu(UBIFS格式).................................................................................................- 56 -2.3 从SD卡直接运行各个系统.................................................................................................................- 57 -2.3.1 直接运行SD卡中的Linux.........................................................................................................- 57 -2.3.2 直接运行SD卡中的WindowsCE..............................................................................................- 57 -2.3.3 直接运行SD卡中的Android.....................................................................................................- 58 -2.3.4 直接运行SD卡中的Ubuntu......................................................................................................- 58 -2.4 使用USB下载并运行裸机程序...........................................................................................................- 59 -第一章 制作SD卡启动盘完全空白的SD卡是不能直接启动6410开发板的,必须先在PC上使用特殊的烧写软件把BIOS(也可以称为bootloader)写入SD卡才可以,并且写入的这个BIOS是无法在电脑上直接看到的。
移植操作系统报告
嵌入式系统及应用基于s3c6410的嵌入式Linux系统移植1.嵌入式系统介绍嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可配置,对功能、可靠性、成本、体积、功耗有严格约束的专用系统。
嵌入式Linux是在标准Linux 的基础上针对嵌入式系统进行内核裁减和优化后形成的一种小型操作系统,一般只有几百KB左右,即使加上其它必要的模块和应用程序,所需的存储空间也很小,非常适合于移植到嵌入式系统中去。
一个完整的嵌入式系统的构建过程大体可以分为四个步骤:交叉编译环境的搭建、Boot Loader移植、Linux内核的配置编译及移植、根文件系统的制作及移植。
本文将以SUMSANG公司的s3c6410处理器为目标平台,介绍嵌入式Linux系统的构建过程。
1.1.嵌入式系统的组成一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。
执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY 智能机器狗,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。
硬件层:硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。
在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。
其中操作系统和应用程序都可以固化在ROM中。
中间层:硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。
基于S3C6410处理器U-boot SD卡启动方式的研究与实现
基于S3C6410处理器U-boot SD卡启动方式的研究与实现董琳【摘要】针对传统方法烧写U-boot,引导和安装嵌入式系统操作繁琐的问题,本文基于S3C6410处理器分析了SD卡启动系统的原理,修改了U-boot源码,使其支持该启动方式,并进行了实验验证.结果表明该方法具有可行性,便于嵌入式系统的安装工作,对其他平台上U-boot SD卡启动方式的研究具有一定的参考价值.【期刊名称】《电子制作》【年(卷),期】2015(000)019【总页数】3页(P96-97,89)【关键词】U-boot;SD卡启动方式;S3C6410;嵌入式系统【作者】董琳【作者单位】武警工程大学信息工程系【正文语种】中文传统的ARM嵌入式系统大多采用Nor Flash或Nand Flash这2种非易失闪存来存储程序和数据,并且引导和启动系统的,而本文采用的是已经普遍应用于数字产品的SD卡。
SD卡较传统的Flash具有明显的优势:首先价格便宜。
随着SD卡技术的发展和SD卡生产厂商的不断增加,SD卡的价格不断下降,已经和Flash 的价格相差无几。
其次存储容量大。
尤其是SDHC卡的出现,目前已经能够达到32 GB,并且增大趋势日益明显。
再次读写方便。
可以通过读卡器读写SD卡,比起仿真价格便宜,而且读写速度快,易插拔、更换和携带方便。
如上所述可知,SD卡在今后ARM嵌入式的应用会逐渐增加,且很多厂家的芯片已经外扩了SD卡接口。
1 S3C6410处理器SD卡启动原理1.1 选择实验平台ARM-Linux嵌入式系统包括硬件平台和软件平台两大部分。
笔者在学习和研究ARM-Linux嵌入式系统时使用的平台如下:硬件平台采用Samsung公司的S3C6410处理器 128 MB SDRAM、 2GB的SD卡及其他外部接口设备软件平台系统包括引导程序、嵌入式操作系统内核、文件系统。
由于Linux的开源和使用的广泛性,实验中笔者选择了U-boot引导程序和 Linux内核。
嵌入式系统6410平台开发工具介绍与操作实习
• 使用saveenv命令儲存
Android-2.1下WIFI的使用
• 選擇Settings->Wireless & network-> • Wi-Fi打勾 • Wi-Fi Setting
燒寫cramfs
• 真正用到的檔案系統都是使用ubifs格式的根檔案系統, cramfs檔案系統只是為了燒寫而製作的輔助檔案系統
• 第一步 使用USB將cramfs下載到板子記憶體中: • dnw
• 第二步 刪除nand中的cramfs分區: • nand erase 400000 400000
• Android-2.1系統的燒寫 • Android 模組使用 • Linux核心配置編譯 • Android開發環境建立 • Android的編譯
Android-2.1系統的燒寫
• 一個完整的Android系統至少由三部分組成, 分別是bootloader、kernel、rootfs,這與典 型的linux系統的結構是一致的
Android-2.1下Camera的使用
• 點擊Camera,記住~~鏡頭朝LCD方向 • 如果没有意外Camera 應該已經可以預覽 了,點擊
Camera 界面的圓點按鈕便能拍下 • 照片,不過照片是保存在SD 中的,所以必須在拍照之前
將SD 插到板子中
Android-2.1下GPS模組的使用
選擇光碟中android\2.1\android-image\u-boot.bin 注意,這個才是nand啟動的uboot,不要選擇SD啟動的u-boot_mmc.bin
S3C6410 移植Android 内核
主要过程:. 安装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 这三项打勾,回到命令输入终端。
移植内核必备知识
移植内核必备知识-6410的寄存器物理虚拟-地址映射方法嵌入式开发联盟Osbo y站长原创QQ:82475491@(一)6410设备的物理地址与虚拟地址的映射MACHINE_START(MCUOS6410, "MCUOS6410")/* Maintainer: Ben Dooks <ben-linux@> */ .boot_params = S3C64XX_PA_SDRAM + 0x100,.init_irq = s3c6410_init_irq,.map_io = mcuos6410_map_io,.init_machine = mcuos6410_machine_init,.timer = &s3c24xx_timer,MACHINE_END这里面的mao_io主要工作之一就是做6410的寄存器的物理地址与虚拟地址映射的工作。
mao_io的代码为:static void __init mcuos6410_map_io(void){s3c64xx_init_io(mcuos6410_iodesc, ARRAY_SIZE(mcuos6410_iodesc));s3c24xx_init_clocks(12000000);s3c24xx_init_uarts(mcuos6410_uartcfgs, ARRAY_SIZE(mcuos6410_uartcfgs));}s3c64xx_init_io最终会调用下面这个函数:iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));s3c_iodesc结构体定义在:static struct map_desc s3c_iodesc[] __initdata = {{.virtual = (unsigned long)S3C_VA_SYS,.pfn = __phys_to_pfn(S3C64XX_PA_SYSCON),.length = SZ_4K,.type = MT_DEVICE,}, {.virtual = (unsigned long)S3C_VA_MEM,.pfn = __phys_to_pfn(S3C64XX_PA_SROM),.length = SZ_4K,.type = MT_DEVICE,}, {.virtual = (unsigned long)(S3C_VA_UART + UART_OFFS),.pfn = __phys_to_pfn(S3C_PA_UART), .length = SZ_4K,.type = MT_DEVICE,}, {.virtual = (unsigned long)VA_VIC0,.pfn = __phys_to_pfn(S3C64XX_PA_VIC0),.length = SZ_16K,.type = MT_DEVICE,}, {.virtual = (unsigned long)VA_VIC1,.pfn = __phys_to_pfn(S3C64XX_PA_VIC1),.length = SZ_16K,.type = MT_DEVICE,}, {.virtual = (unsigned long)S3C_VA_TIMER, .pfn = __phys_to_pfn(S3C_PA_TIMER), .length = SZ_16K,.type = MT_DEVICE,}, {.virtual = (unsigned long)S3C64XX_VA_GPIO,.pfn = __phys_to_pfn(S3C64XX_PA_GPIO),.length = SZ_4K,.type = MT_DEVICE,}, {.virtual = (unsigned long)S3C64XX_VA_MODEM,.pfn = __phys_to_pfn(S3C64XX_PA_MODEM),.length = SZ_4K,.type = MT_DEVICE,}, {.virtual = (unsigned long)S3C_VA_WATCHDOG,.pfn = __phys_to_pfn(S3C64XX_PA_WATCHDOG),.length = SZ_4K,.type = MT_DEVICE,}, {.virtual = (unsigned long)S3C_VA_USB_HSPHY,.pfn = __phys_to_pfn(S3C64XX_PA_USB_HSPHY),.length = SZ_1K,.type = MT_DEVICE,},};linux/include/asm-arm/plat-s3c/map.h中有如下定义,我们在这边手动的定义了寄存器的虚拟地址空间:#define S3C_ADDR_BASE 0xF6000000#ifndef __ASSEMBLY__#define S3C_ADDR(x) ((void __iomem __force *)S3C_ADDR_BASE + (x))#else#define S3C_ADDR(x) (S3C_ADDR_BASE + (x))#endif#define S3C_VA_IRQ S3C_ADDR(0x00000000) /* irq controller(s) */#define S3C_VA_SYS S3C_ADDR(0x00100000) /* system control */#define S3C_VA_MEM S3C_ADDR(0x00200000) /* memory control */#define S3C_VA_TIMER S3C_ADDR(0x00300000) /* timer block */#define S3C_VA_WATCHDOG S3C_ADDR(0x00400000) /* watchdog */#define S3C_VA_UART S3C_ADDR(0x01000000) /* UART */ /* This is used for the CPU specific mappings that may be needed, so that* they do not need to directly used S3C_ADDR() and thus make it easier to* modify the space for mapping.*/#define S3C_ADDR_CPU(x) S3C_ADDR(0x00500000 + (x))iotable_init函数原型为:void __init iotable_init(struct map_desc *io_desc, int nr) {int i;for (i = 0; i < nr; i++)create_mapping(io_desc + i);}由此我们引出了最重要的映射函数:由前面的s3c_iodesc结构可以知道,6410的寄存器的映射结构体中.type = MT_DEVICE。
在Tiny6410上安装Android系统的详细说明文档
在Tiny6410上安装Android系统的详细说明文档2011年8月1日一.SD卡Bootloader的制造1.Bootloader的简介在这就不多说了这个是开源的的,在移植启动引导程序时,我们会用到,现在只要了解即可。
想了解详情的可以进入下面的网站:/view/1223454.htm1.1 U-boot三星公司为6410 系统提供了带有 USB下载功能的U-boot,有善之臂公司在此基础上增强和改进了它的功能,并把它完全开源出来,以供广大嵌入式爱好者学习研究使用,主要特性如下:1. 增加了下载菜单,类似 Superboot 的 USB下载菜单2. 增加了 SD卡启动配置3. 支持直接下载烧写 yaffs2 文件系统映像4. 支持烧写WindowsCE BootLoader之 Nboot5. 支持烧写WindowsCE映像的功能6. 支持烧写单文件映像文件,就是通常所说的裸机程序7. 支持返回原始shell说明:大部分声称完全开源 Bootloader 的 6410 开发板,也都是从三星提供的 U-boot稍作改动而来的,所有开源的 U-boot 目前均无法烧写到 SDHC 卡(超过 2G 的大容量 SD 卡)中使用。
1.2 Superboot除了完全开源的 U-boot,友善之臂还为企业用户设计了功能超强的Superboot,它需要被烧写入 SD 卡中使用,关于它的 USB 下载功能,如果你使用过 mini2440,那么在 mini6410开发板上,你也会得心应手,因为它们的功能菜单和命令都几乎是完全相同的,你甚至不用重新安装 USB下载驱动和 dnw下载软件。
2. SD卡Bootloader的制造Step1: 打开光盘\tools\中的 SD-Flasher.exe 烧写软件,如图请注意,此时软件中的eLayout”和“ReFormat”按钮是失效的,因为我们特意在 WindowsXP 系统中关闭了此功能。
Android系统移植和驱动开发
第1章 Android系统的编译和移植实例本章主要介绍Android系统的编译和移植技术,作为建立在Linux内核基础上的Android操作系统,其编译和移植无论是过程还是技术都和嵌入式Linux非常相似。
本章着重介绍一个典型的Android系统编译和移植的实例,该实例类似于编程学习中著名的HelloWorld,虽然简单,但是涵盖了特定平台下Android系统编译和移植的整个流程。
如果暂时看不懂也没有关系,随着后面章节的继续深入,就会有豁然开朗的感觉。
1.1 移植背景与目标现有的环境是一套能够正常运行Linux 2.6.21的EZ6410(基于S3C6410)硬件系统。
移植目标是在EZ6410系统上运行Android 2.3系统。
1.2 移植涉及的主要过程❑下载Android Linux 内核。
❑安装交叉工具链。
❑移植Android Linux 内核支持EZ6410平台。
❑安装Android SDK。
❑获得 Android 根文件系统。
❑设置系统环境,完成Android正常启动。
1.3 下载Android Linux 内核目前,支持S3C6410硬件的Android系统可以在网上找到,网址为/hosting/,如图1.1所示,可以看到有很多支持S3C6410的Android项目。
Android系统移植和驱动开发图1.1 支持S3C6410的Android项目单击“ldd6410”链接,打开相应网页。
LDD6410的硬件结构如图1.2所示,我们需要针对其与EZ6410硬件结构的差异进行移植。
EZ6410的具体硬件配置请参考开发板手册。
图1.2 LDD6410开发板结构图LDD6410 整合了完整的 Android 驱动(位于 drivers/android下的 binder、lowmemory killer 等)、内核电源管理(位于 kernel/power 下的 wakelock、userwakelock 等)、ashmem 补丁(mm/ashmem.c)和虚拟电池(drivers/power/fake_battery.c)等。
基于S3C6410的嵌入式Linux文件系统移植
基于S3C6410的嵌入式Linux文件系统移植
郑明忠;樊水康
【期刊名称】《火力与指挥控制》
【年(卷),期】2012()S1
【摘要】Linux文件系统是Linux操作系统的核心模块,内核在启动期间进行的最后操作之一就是挂载根文件系统,简单介绍了Linux文件系统的目录结构,以及常见的Gramfs、YAFFS2、JFFS2文件系统。
重点介绍了根文件系统YAFFS2的创建方法;文件系统的常用制作工具BusyBox的配置和编译方法;并且利用BusyBox成功地实现了YAFFS2根文件系统的移植。
【总页数】4页(P73-76)
【关键词】文件系统;BusyBox;YAFFS2
【作者】郑明忠;樊水康
【作者单位】北方自动控制技术研究所
【正文语种】中文
【中图分类】E92;E072
【相关文献】
1.基于S3C6410处理器的嵌入式Linux系统移植 [J], 郝秉华
2.基于S3C6410平台的嵌入式Linux系统LCD驱动模块 [J], 黄相平;余水宝;夏灿
3.基于设备树平台下Exynos4412嵌入式Linux系统移植 [J], 赵娜靖;佟志勇;李超然;李勇;杨自恒
4.基于设备树平台下Exynos4412嵌入式Linux系统移植 [J], 赵娜靖;佟志勇;李超然;李勇;杨自恒
5.基于S3C6410的Android系统移植 [J], 耿富平;谈恩民
因版权原因,仅展示原文概要,查看原文内容请购买。
基于linux3.0.1和S3C6410的智能家居控制系统的嵌入式web服务器的移植和应用
基于linux3.0.1和S3C6410的智能家居控制系统的嵌入式
web服务器的移植和应用
王建敏;魏海波
【期刊名称】《江西科技师范大学学报》
【年(卷),期】2013(000)006
【摘要】Web是一种基于超文本的信息查询和信息发布工具,用户可以在不需要安装其他专用软件的情况下,使用一台通用PC机通过访问浏览器就可以访问嵌入式设备.本文研究了嵌入式Web服务器Boa基于最新的ARM 11体系架构的
S3C6410处理器和高版本的Linux3.0.1操作系统上的移植,并且以此为基础给出了一个如何通过访问浏览器来控制开发板上的LED灯的实例.
【总页数】5页(P95-99)
【作者】王建敏;魏海波
【作者单位】江西科技师范大学软件动漫学院,江西南昌330000;江西科技师范大学通信与电子学院,江西南昌330013
【正文语种】中文
【中图分类】TH311
【相关文献】
1.基于S3C6410的Wi-Fi驱动移植实现 [J], 张楠
2.基于linux
3.0.1和S3C6410的智能家居控制系统的嵌入式web服务器的移植和应用 [J], 王建敏;魏海波;
3.基于 S3C6410的智能家居控制系统的设计 [J], 梁永恩;万世明
4.基于ARM9的嵌入式Web服务器的移植和应用 [J], 时斌;王奔;朱晓舒
5.基于S3C6410的Android系统移植 [J], 耿富平;谈恩民
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 移植成功。