`

【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

 
阅读更多


博客地址 :http://blog.csdn.net/shulianghan/article/details/40299813


本篇文章中用到的工具源码下载 :

-- ok-6410A 附带的 Android 光盘 下载地址 :http://pan.baidu.com/share/link?shareid=3662728609&uk=2754759285 ;

-- 光盘所含内容 : Android 引导 u-boot 源码, Android 内核 源码, Android 系统源码, 交叉编译工具链;


各项操作说明 :

-- 编译环境 : 编译源码 (u-boot, 内核, Android 系统) 是在 Ubuntu 12.04.4 LTS 操作系统上进行的;

-- 烧写环境 : 将编译的镜像烧写到 ok-6410A 开发板的操作实在 windows xp 上进行的;





一. 环境准备


root 用户登陆 : 由于进行嵌入式开发, root 权限在任何时候都需要使用, Ubuntu 系统直接使用 root 用户登陆界面;


软件版本 :

-- 虚拟机 : VMware10, 注意一定要用 10版本的, VM8版本的 vmware-tools 安装不上;

-- 操作系统 : Ubuntu 12.04.4 LTS 32位, 这里使用 32 位操作系统编译 Android 的 2.3.4 源码;

-- 嵌入式开发板 :arm11 S3C6410 飞凌ok-6410A 256M 内存 1G NandFlash ;



1. Ubuntu 12.04.4 安装 vmware-tools



(1) 添加国内源


源内容 :

#台湾源
deb http://tw.archive.ubuntu.com/ubuntu/ precise main universe restricted multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu/ precise main universe restricted multiverse
deb http://tw.archive.ubuntu.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ precise-security universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ precise-updates universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ precise-updates universe main multiverse restricted

#网易源(速度很快)
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted

#电子科技大学
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse

#北京理工大学
deb http://mirror.bjtu.edu.cn/ubuntu/ precise main multiverse restricted universe
deb http://mirror.bjtu.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
deb http://mirror.bjtu.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
deb http://mirror.bjtu.edu.cn/ubuntu/ precise-security main multiverse restricted universe
deb http://mirror.bjtu.edu.cn/ubuntu/ precise-updates main multiverse restricted universe
deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise main multiverse restricted universe
deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-security main multiverse restricted universe
deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-updates main multiverse restricted universe

添加源操作 :

-- 源位置 :/etc/apt/sources.list;

-- 添加源 : 使用 gedit/etc/apt/sources.list 命令, 将上面的源添加进入;

-- 更新源 : 使用apt-get update 命令更新源信息;



(2) 安装build-essential


安装 build-essential 包命令:apt-get install build-essential;

-- 注意 : 一定要添加上面的源之后才能安装, 否则会报错;



(3) 安装 linux-header 包


安装流程 :

-- 查看 Ubuntu 版本 : uname -a 命令;

root@ubuntu:~# uname -a
Linux ubuntu 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:42:40 UTC 2014 i686 i686 i386 GNU/Linux
-- 安装 linux-headers : 安装命令apt-get install linux-headers-3.11.0-15-generic , 这里 Ubuntu 默认已经安装好了;

root@ubuntu:~# apt-get install linux-headers-3.11.0-15-generic
Reading package lists... Done
Building dependency tree       
Reading state information... Done
linux-headers-3.11.0-15-generic is already the newest version.
linux-headers-3.11.0-15-generic set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 241 not upgraded.


(4) 安装 vmware-tools


加载 vmware-tools 镜像 :

-- 选择菜单 : 菜单 --> 虚拟机 --> 安装 VMware-tools 选项, 之后 vmware-tools 的光盘镜像会挂在到 Ubuntu 虚拟机系统上;


-- 打开光盘 : 查看光盘中的内容, 注意 一定要使用 VMwareTools 9.6.2 的版本, 之前的 8 版本的工具安装很麻烦;


-- 安装 vmware-tools: 将光盘中的VMwareTools-9.6.2-1688356.tar.gz 文件解压, 解压后的目录vmware-tools-distrib, 进入该目录执行该目录下的vmware-install.pl 文件, 使用 ./vmware-install.pl 命令, 一路回车, 即可完成安装;



(5) 设置共享目录


选择 设置 选项, 设置共享目录 : 注意, 该操作一定要在关闭 操作系统后执行;



开启虚拟机中的操作系统 : 共享目录就会出现在 Ubuntu 系统的/mnt/hgfs/ 目录下;



拷贝源码和编译器到 Ubuntu 上 :将 Android 内核 框架 u-boot 源码, 编译器, 交叉编译器 拷贝到共享文件中, 此时我们就可以在 Ubuntu 中看到这些文件了;


-- Android 源码 :android2.3.4_32bit-2012-10-11.tar.gz, 这是 Android 2.3.4 的源码;

-- Bootloader 源码 :uboot1.1.6-2012-10-11.tar.gz, u-boot 源码, 用于引导 Android 操作系统;

-- Android 内核源码 :android2.3_kernel_v3.00-2014-06-12.tar.gz, Android 2.3.4 对应的内核源码;

-- x86 平台编译器 :arm-linux-gcc-4.3.2.tgz, 用于编译在 x86 平台执行的程序或库文件;

-- 交叉编译工具链 :arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2, 用于在 Linux x86 平台编译 arm 平台执行的文件或库;



2. 安装交叉编译器


(1) 查看编译器的目录结构


先在本地解压编译器查看其目录结构 :

--arm-linux-gcc-4.3.2.tgz 编译器 : 位置/usr/local/arm/4.3.2/ 目录下;

root@ubuntu:~/develop/ok6410/usr/local/arm/4.3.2/bin# ls
arm-linux-addr2line  arm-linux-gprof                   arm-none-linux-gnueabi-ar         arm-none-linux-gnueabi-ld
arm-linux-ar         arm-linux-ld                      arm-none-linux-gnueabi-as         arm-none-linux-gnueabi-nm
arm-linux-as         arm-linux-nm                      arm-none-linux-gnueabi-c++        arm-none-linux-gnueabi-objcopy
arm-linux-c++        arm-linux-objcopy                 arm-none-linux-gnueabi-c++filt    arm-none-linux-gnueabi-objdump
arm-linux-c++filt    arm-linux-objdump                 arm-none-linux-gnueabi-cpp        arm-none-linux-gnueabi-ranlib
arm-linux-cpp        arm-linux-ranlib                  arm-none-linux-gnueabi-g++        arm-none-linux-gnueabi-readelf
arm-linux-g++        arm-linux-readelf                 arm-none-linux-gnueabi-gcc        arm-none-linux-gnueabi-size
arm-linux-gcc        arm-linux-size                    arm-none-linux-gnueabi-gcc-4.3.2  arm-none-linux-gnueabi-sprite
arm-linux-gcc-4.3.2  arm-linux-sprite                  arm-none-linux-gnueabi-gcov       arm-none-linux-gnueabi-strings
arm-linux-gcov       arm-linux-strings                 arm-none-linux-gnueabi-gdb        arm-none-linux-gnueabi-strip
arm-linux-gdb        arm-linux-strip                   arm-none-linux-gnueabi-gdbtui
arm-linux-gdbtui     arm-none-linux-gnueabi-addr2line  arm-none-linux-gnueabi-gprof

--arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 编译器 : 位置/usr/local/arm/arm-none-linux-gnueabi/ 目录下;

root@ubuntu:~/develop/ok6410/usr/local/arm/arm-none-linux-gnueabi/bin# ls
arm-none-linux-gnueabi            arm-none-linux-gnueabi-cpp        arm-none-linux-gnueabi-gdbtui   arm-none-linux-gnueabi-ranlib
arm-none-linux-gnueabi-addr2line  arm-none-linux-gnueabi-g++        arm-none-linux-gnueabi-gprof    arm-none-linux-gnueabi-readelf
arm-none-linux-gnueabi-ar         arm-none-linux-gnueabi-gcc        arm-none-linux-gnueabi-ld       arm-none-linux-gnueabi-size
arm-none-linux-gnueabi-as         arm-none-linux-gnueabi-gcc-4.3.2  arm-none-linux-gnueabi-nm       arm-none-linux-gnueabi-sprite
arm-none-linux-gnueabi-c++        arm-none-linux-gnueabi-gcov       arm-none-linux-gnueabi-objcopy  arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-c++filt    arm-none-linux-gnueabi-gdb        arm-none-linux-gnueabi-objdump  arm-none-linux-gnueabi-strip



(2) 安装编译器


安装编译器命令 : 注意 使用 tar 命令, 解压到指定路径, 需要加上 -C 参数;

-- 安装arm-linux-gcc-4.3.2.tgz 编译器 :tar -xvzf arm-linux-gcc-4.3.2.tgz -C / ;

-- 安装arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 编译器 :tar -xvjf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C / ;

-- 验证是否安装成功 :

root@ubuntu:~/develop/ok6410# ls /usr/local/arm/ -l
total 8
drwxr-xr-x 7 root    root    4096 Mar 25  2009 4.3.2
drwxr-xr-x 8 octopus octopus 4096 Feb 25  2009 arm-none-linux-gnueabi


编译器软链接 : 注意, 这里飞凌给的编译器的 arm-linux-gcc 是一个空白的链接, 这里需要建立一个软链接;

-- 查看交叉编译器的执行文件 :

-rwxr-xr-x 1 root root      62  3月 25  2009 arm-linux-gcc*

-- 创建软链接 :ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc ;

lrwxrwxrwx 1 root root      26 10月 27 10:54 arm-linux-gcc -> arm-none-linux-gnueabi-gcc*



3. 安装libncurses5-dev 库


安装libncurses5-dev 库 : 使用apt-get install libncurses5-dev 命令安装;

-- 作用 : 该库的作用是 在配置 内核 时使用 make menuconfig 命令使用;



4. 安装 并配置 minicom


安装 minicom : 使用 sudo apt-get install minicom 命令, 安装 minicom 终端程序, 该程序运行的时候需要 root 权限;


配置 minicom :




二. 编译 Android 系统



1. 编译 u-boot


开发板介绍 : 本人使用的开发板是 arm11 S3C6410 飞凌ok-6410A 256M 内存 1G NandFlash 嵌入式开发板;


(1) 解压文件到指定目录


解压文件 : 飞凌官方已经配置好了 u-boot 的编译环境, 并在其中指定了 交叉编译器的位置, 这里我们不修改内容;

-- 解压文件到指定目录 : 在 根目录 / 下创建 forlinx 目录, 将u-boot 源码解压到该目录中;

-- 创建目录 :mkdir forlinx 命令;

-- 拷贝文件 :cp uboot1.1.6-2012-10-11.tar.gz /forlinx/ 命令;

-- 解压文件 :tar -xvzf uboot1.1.6-2012-10-11.tar.gz 命令;

-- 解压后的目录 :

root@ubuntu:/forlinx# ls
uboot1.1.6  uboot1.1.6-2012-10-11.tar.gz


(2) 配置编译 u-boot


配置 u-boot :

-- 进入 u-boot 源码目录 :cd uboot1.1.6;

-- 配置 u-boot :make forlinx_nand_ram256_config 命令;

root@ubuntu:/forlinx/uboot1.1.6# make forlinx_nand_ram256_config
Configuring for smdk6410 board which boot from NAND ram256 ...

编译 u-boot :

-- 清理之前的编译文件 : make clean 命令;

-- 开始编译 : make 命令;

-- 编译文件 : 编译完成之后, 在 源码根目录产生了 u-boot.bin 文件;

root@ubuntu:/forlinx/uboot1.1.6# make

... ...

/usr/local/arm/4.3.2/bin/arm-linux-objcopy --gap-fill=0xff -O srec u-boot u-boot.srec
/usr/local/arm/4.3.2/bin/arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
/usr/local/arm/4.3.2/bin/arm-linux-objdump -d u-boot > u-boot.dis
root@ubuntu:/forlinx/uboot1.1.6# ls
arm_config.mk                  config.mk  examples        lib_i386        MAINTAINERS           net              System.map
avr32_config.mk                COPYING    fs              lib_m68k        MAKEALL               nios2_config.mk  temp
blackfin_config.mk             cpu        i386_config.mk  lib_microblaze  Makefile              nios_config.mk   tools
board                          CREDITS    include         lib_mips        microblaze_config.mk  post             u-boot
CHANGELOG                      disk       lib_arm         lib_nios        mips_config.mk        ppc_config.mk    u-boot.bin
CHANGELOG-before-U-Boot-1.1.5  doc        lib_avr32       lib_nios2       mkconfig              README           u-boot.dis
Changelog_Samsung              drivers    lib_blackfin    lib_ppc         mmc.bin               rtc              u-boot.map
common                         dtt        lib_generic     m68k_config.mk  nand_spl              rules.mk         u-boot.srec


2. 编译内核


Android 内核编译 :

-- 拷贝内核 : 将内核拷贝到 /forlinx 目录下, 使用cp android2.3_kernel_v3.00-2014-06-12.tar.gz /forlinx/ 命令;

-- 进入该目录 :cd /forlinx/ 命令;

-- 解压内核 : 使用tar -xvzf android2.3_kernel_v3.00-2014-06-12.tar.gz 命令解压内核;

-- 配置环境变量 :export PATH=/usr/local/arm/arm-none-linux-gnueabi/bin:$PATH 命令, 也可以将该命令配置到配置文件中去;

-- 清理垃圾 : make clean ;

-- 编译 : make ;

-- 内核文件 :android2.3_kernel/arch/arm/boot/zImage 文件;



3. 编译 Android 源码



(1) 安装编译用的库

安装必要的库 : 使用

sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 \
g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown \
libxml2-utils xsltproc zlib1g-dev:i386
命令;

root@ubuntu:/mnt/hgfs/shrewdFilesWithUbuntu# cd
root@ubuntu:~# sudo apt-get install git-core gnupg flex bison gperf build-essential \
> zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
> libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 \
> g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown \
> libxml2-utils xsltproc zlib1g-dev:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libncurses5-dev is already the newest version.
zip is already the newest version.
zip set to manually installed.

... ...

Setting up openjdk-6-jre-lib (6b33-1.13.5-1ubuntu0.12.04) ...
Setting up libatk-wrapper-java-jni (0.30.4-0ubuntu2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
root@ubuntu:~# 


(2) 修改一些配置


修改代码配置 : 如果使用 Ubuntu 12.04 操作系统编译源码, 需要修改下面两个配置;

--build/core/combo/HOST_linux-x86.mk : 将HOST_GLOBAL_CFLAGS+=-D_FORTIFY_SOURCE=0 修改为HOST_GLOBAL_CFLAGS+=-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 ;

--frameworks/base/libs/utils/Android.mk : 将LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) 修改为LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive ;



(3) 编译源码


编译源码 :

-- 清除编译信息 :make clean ;

root@octopus:/forlinx/android2.3.4_32bit# make clean
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRJ06D
============================================
Checking build tools versions...
Entire build directory removed.
-- 编译源码 :./build-android ;

root@octopus:/forlinx/android2.3.4_32bit# ./build-android 
including device/htc/passion/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=OK6410
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRJ06D
============================================
Checking build tools versions...

... ...

Generated: (out/target/product/OK6410/android-info.txt)
Target system fs image: out/target/product/OK6410/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/OK6410/system.img
Target ram disk: out/target/product/OK6410/ramdisk.img
Target userdata fs image: out/target/product/OK6410/userdata.img
Installed file list: out/target/product/OK6410/installed-files.txt


(4) 制作文件系统


制作文件系统 : 根目录下提供了制作文件系统的脚本,make-rootfs-nand2g, 执行这个脚本即可制作根文件系统;

-- 命令 : 进入 Android 源码根目录, 执行./make-rootfs-nand2g命令, 之后在根目录生成rootfs.yaffs2 就是制作的根文件系统;

-- 注意 : 一定要区分这两个脚本,make-rootfs-nand256m 用于制作 128M 内存 256 M NandFlash 的开发板的文件系统, make-rootfs-nand2g 用于制作 256M 内存 2G NandFlash 开发板的文件系统;

root@octopus:/forlinx/android2.3.4_32bit# ls
bionic         cts          external     libcore                make-rootfs-nand2g      ndk       Readme  vendor
bootable       dalvik       frameworks   Makefile               make-rootfs-nand2g~     out       sdk
build          development  hardware     make-rootfs-nand256m   mkyaffs2image-nand256m  packages  setenv
build-android  device       jdk1.6.0_23  make-rootfs-nand256m~  mkyaffs2image-nand2g    prebuilt  system
root@octopus:/forlinx/android2.3.4_32bit# ./make-rootfs-nand256m
Generating rootfs for Android......done
Create device file......done
Install prebuilt packages......done
Install firmware for 3G ......done
Install ppp for 3G...done
Install usb_modeswitch.d for 3G...done
Install Dialup for 3G...done
Install ForlinxLED permissions fileInstall Apps  filemkyaffs2image: image building tool for YAFFS2 built Nov 24 2011
Processing directory rootfs_dir into image file rootfs.yaffs2

... ...

bject 1457, rootfs_dir/system/bin/sdcard is a file, 5 data chunks written
Object 1458, rootfs_dir/system/bin/dumpstate is a file, 17 data chunks written
Object 1459, rootfs_dir/system/bin/bootanimation is a file, 12 data chunks written
Object 1460, rootfs_dir/system/bin/Looper_test is a file, 35 data chunks written
Object 1461, rootfs_dir/system/bin/ioctl is a symlink to "toolbox"
Object 1462, rootfs_dir/system/bin/dvz is a file, 3 data chunks written
Object 1463, rootfs_dir/forlinx.rc is a file, 1 data chunks written
Operation complete.
2414 objects in 63 directories
35361 NAND pages
...done
...done
root@octopus:/forlinx/android2.3.4_32bit# ls
bionic         cts          external     libcore                make-rootfs-nand2g      ndk       Readme         setenv
bootable       dalvik       frameworks   Makefile               make-rootfs-nand2g~     out       rootfs_dir     system
build          development  hardware     make-rootfs-nand256m   mkyaffs2image-nand256m  packages  rootfs.yaffs2  vendor
build-android  device       jdk1.6.0_23  make-rootfs-nand256m~  mkyaffs2image-nand2g    prebuilt  sdk



三. 烧写 Android 系统到 ok-6410 开发板上



1. 制作一键烧写 SD 卡


(1)格式化 U 盘




(2) 将 mmc.bin 烧写到 sd 卡中


烧写 sd 卡 : 打开 飞凌 官方提供的 SD 卡烧写工具SD_Writer.exe ;

-- 设置开发板类型 : 这里使用的是 ok-6410 开发板, 在 Board Model 选择 6410;

-- 选择盘符 : 点击 右上角 Scan 按钮, 就会自动将 SD 卡扫描出来;

-- SD Type : 选择 Auto 类型;

-- 设置操作系统类型 : OS Type 设置为 Linux||Android ;

-- 点击 program : 会弹出 对话框, 点击确认即可;


-- 拷贝引导 内核 文件系统到 sd 卡中 : 将 上面编译的 u-boot.bin (bootloader) , zImage (Android 内核镜像) ,rootfs.yaffs2 (Android 文件系统) 拷贝到 SD 卡中;




2. 擦除 Eboot (该步骤之后回归 Ubuntu 系统操作)



(1) 擦除原因


擦除 NandFlash 必要性 :

-- 预装 WinCE 系统 : 开发板出厂默认烧写的是 WinCE 系统;

-- WinCE 约定 : WinCE 在烧写时将 NandFlash 前 4 个块都标记为坏块, 在烧写 Android 或者 Linux 系统的时候需要将 这 4 个坏块恢复过来;



(2) 擦除过程


Eboot 擦除 NandFlash 过程 :

-- 连接开发板 :使用 USB 转串口线连接开发板 与 电脑;

-- 运行 minicom 程序 : 使用 sudo minicom 运行 终端程序;

-- 进入 Eboot 状态 : 在开机后, 不停的按 空格键, 要在 1 秒之内按下, 否则就会错过机会, 文档上坑爹居然写 5 秒;

Initiating image launch in 2 seconds. 

Ethernet Boot Loader Configuration:

0) IP address: 0.0.0.0
1) Subnet mask: 255.255.255.0
2) DHCP: Disabled
3) Boot delay: 2 seconds
4) Reset to factory default configuration
5) Startup image: LAUNCH EXISTING
6) Program disk image into SmartMedia card: Enabled
7) Program DM9000A MAC address (00:00:00:00:00:00)
8) KITL Configuration: DISABLED
9) Format Boot Media for BinFS

A) Erase All Blocks
B) Mark Bad Block at Reserved Block 
C) Clean Boot Option: FALSE
D) Download image now
E) Erase Reserved Block 
F) Low-level format the Smart Media card
L) LAUNCH existing Boot Media image
R) Read Configuration 
S) Lcd Resolution select(480x272)
U) DOWNLOAD image now(USB)
W) Write Configuration Right Now

Enter your selection:
-- 选择 A : 在键盘中输入 "A" , 即可完成 擦除 NandFlash 工作;


Uboot 擦除 NandFlash 过程 :

-- 进入 Uboot 状态 : 选择 SD 卡启动, 使用上面烧写好的 SD 卡启动, 启动后 立即按 空格键, 即可进入 Uboot 状态;

U-Boot 1.1.6 (Oct  9 2012 - 13:20:58) for SMDK6410

****************************************
**    u-boot 1.1.6                    **
**    Updated for OK6410  TE6410 Board  **
**    Version (2012-09-23)          **
**    OEM: Forlinx Embedded           **
**    Web: http://www.witech.com.cn   **
****************************************

CPU:     S3C6410 @532MHz
         Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode) 
Board:   SMDK6410
DRAM:    256 MB
Flash:   0 kB
NandFlash Information:
Nandflash:ChipType= SLC  ChipName=MT29F16G08ABACAWP
No  No Calc pagesize, blocksize, erasesize,  use ids table .............
NandFlash:name=NAND 2GiB 1,8V 8-bit,id=38, pagesize=4096 ,chipsize=1024 MB,erasesize=524288 oobsize=128
NandFlash Size is 1024 MB 
SD/MMC:  SD 2.0 / Manufacturer: 0x1B,OEM: "SM/00000",REV: 1.0,S/N: -1320320343,DATE: 2008/3
         MMC/SD size: 971 MiB
         Freq = 25MHz
In:      serial
Out:     lcd
Err:     lcd
Hit any key to stop autoboot:  0 

###################### User Menu for OK6410#####################
[1] Format the nand flash
[2] Burn image from SD card
[3] Burn image from USB
[4] Reboot the u-boot
[5] Exit to command line
-----------------------------Select---------------------------------
Enter your Selection:
-- 输入 1 : 然后会提示一次 输入 y 回车即可;

Enter your Selection:1

NAND scrub: device 0 whole chip
Warning: scrub option will erase all factory set bad blocks!
         There is no reliable way to recover them.
         Use this command only for testing purposes if you
         are sure of what you are doing!

Really scrub this NAND flash? <y/N>
Erasing at 0x3ff80000 -- 100% complete.
Scanning device for bad blocks
OK


3. 向 NandFlash 中烧写 Android 系统


SD 卡启动后会自动向 NandFlash 中烧写系统 : 下面是 烧写的过程 ;

U-Boot 1.1.6 (Oct  9 2012 - 13:20:58) for SMDK6410

****************************************
**    u-boot 1.1.6                    **
**    Updated for OK6410  TE6410 Board  **
**    Version (2012-09-23)          **
**    OEM: Forlinx Embedded           **
**    Web: http://www.witech.com.cn   **
****************************************

CPU:     S3C6410 @532MHz
         Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode) 
Board:   SMDK6410
DRAM:    256 MB
Flash:   0 kB
NandFlash Information:
Nandflash:ChipType= SLC  ChipName=MT29F16G08ABACAWP
No  No Calc pagesize, blocksize, erasesize,  use ids table .............
NandFlash:name=NAND 2GiB 1,8V 8-bit,id=38, pagesize=4096 ,chipsize=1024 MB,erasesize=524288 oobsize=128
NandFlash Size is 1024 MB 
SD/MMC:  SD 2.0 / Manufacturer: 0x1B,OEM: "SM/00000",REV: 1.0,S/N: -1320320343,DATE: 2008/3
         MMC/SD size: 971 MiB
         Freq = 25MHz
In:      serial
Out:     lcd
Err:     lcd
Hit any key to stop autoboot:  0 

NAND erase: device 0 whole chip
Erasing at 0x3ff80000 -- 100% complete.
OK
reading u-boot.bin

212992 bytes read

NAND write: device 0 offset 0x0, size 0x200000
 1032192 bytes written: OK
reading zImage

4204072 bytes read

NAND write: device 0 offset 0x200000, size 0x500000

Writing data at 0x6ff000 -- 100% complete.
 5242880 bytes written: OK
reading rootfs.yaffs2

78397440 bytes read

NAND write: device 0 offset 0x700000, size 0x4ac4000

Writing data at 0x4f7f000 -- 100% complete.
 78397440 bytes written: OK


4. 启动 Android 系统


启动系统 : 关闭开发板电源, 这时可以将 SD 卡拔掉, 切换成 NandFlash 启动, 接通电源;

-- 注意 : Android 系统启动比较慢, 大概 5 ~ 10分钟, 要有耐心;

-- 启动过程 : 中间会有一次校准 屏幕的过程;

U-Boot 1.1.6 (Oct  9 2012 - 13:22:32) for SMDK6410                           

****************************************
**    u-boot 1.1.6                    **
**    Updated for OK6410  TE6410 Board  **
**    Version (2012-09-23)          **
**    OEM: Forlinx Embedded           **
**    Web: http://www.witech.com.cn   **
****************************************

CPU:     S3C6410 @532MHz
         Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode) 
Board:   SMDK6410
DRAM:    256 MB
Flash:   0 kB
NAND:    1024 MB 
In:      serial
Out:     serial
Err:     serial
Hit any key to stop autoboot:  0 

NAND read: device 0 offset 0x200000, size 0x500000
 5242880 bytes read: OK
Boot with zImage

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.36 (root@ubuntu) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #624 PREEMPT Tue Jun 3 11:45:02 CST 2014
CPU: ARMv6-compatible processor [410fb766] revision 6 (ARMv7), cr=00c5387f
CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: SMDK6410
Memory policy: ECC disabled, Data cache writeback
CPU S3C6410 (id 0x36410101)
S3C24XX Clocks, Copyright 2004 Simtec Electronics
camera: no parent clock specified
S3C64XX: PLL settings, A=532000000, M=532000000, E=24000000
S3C64XX: HCLK2=266000000, HCLK=133000000, PCLK=66500000
mout_apll: source is fout_apll (1), rate is 532000000
mout_epll: source is epll (1), rate is 24000000
mout_mpll: source is mpll (1), rate is 532000000
mmc_bus: source is mout_epll (0), rate is 24000000
mmc_bus: source is mout_epll (0), rate is 24000000
mmc_bus: source is mout_epll (0), rate is 24000000
usb-bus-host: source is clk_48m (0), rate is 48000000
uclk1: source is dout_mpll (1), rate is 66500000
spi-bus: source is mout_epll (0), rate is 24000000
spi-bus: source is mout_epll (0), rate is 24000000
audio-bus: source is mout_epll (0), rate is 24000000
audio-bus: source is mout_epll (0), rate is 24000000
audio-bus: source is mout_epll (0), rate is 24000000
irda-bus: source is mout_epll (0), rate is 24000000
camera: no parent clock specified
s3c64xx: 10485760 bytes SDRAM reserved for fimc at 0x5f5f9000
s3c64xx: 8388608 bytes SDRAM reserved for pp at 0x5edf9000
s3c64xx: 8388608 bytes SDRAM reserved for tv at 0x5e5f9000
s3c64xx: 6291456 bytes SDRAM reserved for mfc at 0x5dff9000
s3c64xx: 4194304 bytes SDRAM reserved for jpeg at 0x5dbf9000
s3c64xx: 8388608 bytes SDRAM reserved for cmm at 0x5d3f9000
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
Kernel command line: root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 256MB = 256MB total
Memory: 205464k/205464k available, 56680k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xff600000 - 0xffe00000   (   8 MB)
    vmalloc : 0xd0800000 - 0xe0000000   ( 248 MB)
    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .init : 0xc0008000 - 0xc0033000   ( 172 kB)
      .text : 0xc0033000 - 0xc07a2000   (7612 kB)
      .data : 0xc07ce000 - 0xc0834560   ( 410 kB)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.
        RCU-based detection of stalled CPUs is disabled.
        Verbose stalled-CPUs detection is disabled.
NR_IRQS:246
VIC @f4000000: id 0x00041192, vendor 0x41
VIC @f4010000: id 0x00041192, vendor 0x41
High resolution timer: rate = 66500000, HZ = 100
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 530.84 BogoMIPS (lpj=2654208)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
devtmpfs: initialized
NET: Registered protocol family 16
hw perfevents: enabled with v6 PMU driver, 3 counters available
s3c64xx_dma_init: Registering DMA channels
s3c64xx_dma_init1: registering DMA 0 (d0808100)
s3c64xx_dma_init1: registering DMA 1 (d0808120)
s3c64xx_dma_init1: registering DMA 2 (d0808140)
s3c64xx_dma_init1: registering DMA 3 (d0808160)
s3c64xx_dma_init1: registering DMA 4 (d0808180)
s3c64xx_dma_init1: registering DMA 5 (d08081a0)
s3c64xx_dma_init1: registering DMA 6 (d08081c0)
s3c64xx_dma_init1: registering DMA 7 (d08081e0)
PL080: IRQ 73, at d0808000
s3c64xx_dma_init1: registering DMA 8 (d080c100)
s3c64xx_dma_init1: registering DMA 9 (d080c120)
s3c64xx_dma_init1: registering DMA 10 (d080c140)
s3c64xx_dma_init1: registering DMA 11 (d080c160)
s3c64xx_dma_init1: registering DMA 12 (d080c180)
s3c64xx_dma_init1: registering DMA 13 (d080c1a0)
s3c64xx_dma_init1: registering DMA 14 (d080c1c0)
s3c64xx_dma_init1: registering DMA 15 (d080c1e0)
PL080: IRQ 74, at d080c000
S3C6410: Initialising architecture
bio: create slab <bio-0> at 0
SCSI subsystem initialized
------------[ cut here ]------------
WARNING: at drivers/gpio/gpiolib.c:99 gpio_ensure_requested+0x50/0x19c()
autorequest GPIO-24
Modules linked in:
[<c0039d38>] (unwind_backtrace+0x0/0xf8) from [<c0053c88>] (warn_slowpath_common+0x4c/0x64)
[<c0053c88>] (warn_slowpath_common+0x4c/0x64) from [<c0053d34>] (warn_slowpath_fmt+0x30/0x40)
[<c0053d34>] (warn_slowpath_fmt+0x30/0x40) from [<c0223570>] (gpio_ensure_requested+0x50/0x19c)
[<c0223570>] (gpio_ensure_requested+0x50/0x19c) from [<c0223864>] (gpio_direction_output+0xac/0x13c)
[<c0223864>] (gpio_direction_output+0xac/0x13c) from [<c0289dec>] (s3c64xx_spi_setup+0x144/0x268)
[<c0289dec>] (s3c64xx_spi_setup+0x144/0x268) from [<c0288088>] (spi_setup+0x40/0xf0)
[<c0288088>] (spi_setup+0x40/0xf0) from [<c0288910>] (spi_add_device+0x98/0x15c)
[<c0288910>] (spi_add_device+0x98/0x15c) from [<c0288a48>] (spi_new_device+0x74/0xac)
[<c0288a48>] (spi_new_device+0x74/0xac) from [<c0288b90>] (spi_register_master+0x110/0x190)
[<c0288b90>] (spi_register_master+0x110/0x190) from [<c001fd84>] (s3c64xx_spi_probe+0x378/0x488)
[<c001fd84>] (s3c64xx_spi_probe+0x378/0x488) from [<c025924c>] (platform_drv_probe+0x18/0x1c)
[<c025924c>] (platform_drv_probe+0x18/0x1c) from [<c025806c>] (driver_probe_device+0x78/0x198)
[<c025806c>] (driver_probe_device+0x78/0x198) from [<c0258218>] (__driver_attach+0x8c/0x90)
[<c0258218>] (__driver_attach+0x8c/0x90) from [<c025782c>] (bus_for_each_dev+0x60/0x8c)
[<c025782c>] (bus_for_each_dev+0x60/0x8c) from [<c025714c>] (bus_add_driver+0x208/0x2e4)
[<c025714c>] (bus_add_driver+0x208/0x2e4) from [<c0258494>] (driver_register+0x6c/0x154)
[<c0258494>] (driver_register+0x6c/0x154) from [<c025966c>] (platform_driver_probe+0x18/0x9c)
[<c025966c>] (platform_driver_probe+0x18/0x9c) from [<c0033380>] (do_one_initcall+0x30/0x1a0)
[<c0033380>] (do_one_initcall+0x30/0x1a0) from [<c0008418>] (kernel_init+0xa8/0x160)
[<c0008418>] (kernel_init+0xa8/0x160) from [<c0034aa8>] (kernel_thread_exit+0x0/0x8)
---[ end trace da227214a82491b7 ]---
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c-i2c s3c2440-i2c.0: slave address 0x10
s3c-i2c s3c2440-i2c.0: bus frequency set to 64 KHz
s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter
Advanced Linux Sound Architecture Driver Version 1.0.23.
Bluetooth: Core ver 2.15
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource clock_source_timer2
Switched to NOHz mode on CPU #0
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
ashmem: initialized
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
msgmni has been set to 401
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
S3C_LCD clock got enabled :: 133.000 Mhz
LCD TYPE :: LTE480WV will be initialized
Window[0] - FB1: map_video_memory: clear ff600000:0007f800
            FB1: map_video_memory: dma=5cd80000 cpu=ff600000 size=0007f800
Window[0] - FB2: map_video_memory: clear ff63fc00:0003fc00
            FB2: map_video_memory: dma=5cdbfc00 cpu=ff63fc00 size=0003fc00
Console: switching to colour frame buffer device 60x34
fb0: s3cfb frame buffer device
Window[1] - FB1: map_video_memory: clear ff700000:0007f800
            FB1: map_video_memory: dma=5ce00000 cpu=ff700000 size=0007f800
Window[1] - FB2: map_video_memory: clear ff73fc00:0003fc00
            FB2: map_video_memory: dma=5ce3fc00 cpu=ff73fc00 size=0003fc00
fb1: s3cfb frame buffer device
Window[2] - FB1: map_video_memory: clear ff680000:0003fc00
            FB1: map_video_memory: dma=5ce80000 cpu=ff680000 size=0003fc00
fb2: s3cfb frame buffer device
jkq debug VIDCON0 is 353

@@@@@@@@@@@@@@@@@@@@@@@@@@
leds    initialized

@@@@@@@@@@@@@@@@@@@@@@@@@@
pwm     initialized
adc     herr
adc     initialized
seg     initialized
s3c6400-uart.0: s3c2410_serial0 at MMIO 0x7f005000 (irq = 16) is a S3C6400/10
s3c6400-uart.1: s3c2410_serial1 at MMIO 0x7f005400 (irq = 20) is a S3C6400/10
s3c6400-uart.2: s3c2410_serial2 at MMIO 0x7f005800 (irq = 24) is a S3C6400/10
s3c6400-uart.3: s3c2410_serial3 at MMIO 0x7f005c00 (irq = 28) is a S3C6400/10
pmem: 1 init
S3C NAND Driver, (c) 2008 Samsung Electronics
forlinx************Nandflash:ChipType= SLC  ChipName=MT29F8G08ABABAWP
S3C NAND Driver is using hardware ECC.
NAND device: Manufacturer ID: 0x2c, Chip ID: 0x38 (Micron NAND 2GiB 1,8V 8-bit)
Creating 4 MTD partitions on "NAND 2GiB 1,8V 8-bit":
0x000000000000-0x000000200000 : "Bootloader"
0x000000200000-0x000000700000 : "Kernel"
0x000000700000-0x00000cf00000 : "User"
0x00000cf00000-0x000040000000 : "File System"
CAN device driver interface
mcp251x spi1.0: MCP251x didn't enter in conf mode after reset
mcp251x spi1.0: Probe failed
mcp251x spi1.0: probe failed
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
dm9000 Ethernet Driver, V2.6.31
[dm9] dm9000_probe ndev->irq=6c 
[dm9].1 read id 0x01010101
dm9000 dm9000.0: read wrong id 0x01010101
[dm9].2 read id 0x90000a46
[dm9000 Ethernet Driver, V2.6.31]: KV= 2.6.36 !!
[dm9000 Ethernet Driver, V2.6.31]: ChipID= 0x90000a46 !!
[DM9000]dm9000 revision 0x19
eth0: dm9000a at d0832000,d0c00004 IRQ 108 MAC: 08:90:00:a0:90:90 (platform data)
rtw driver version=v3.4.4_4749.20121105 
Build at: Jun  3 2014 09:04:49
##########rtw_suspend_lock_init ###########
usbcore: registered new interface driver rtl8192cu
libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
usbcore: registered new interface driver rt73usb
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 79, io mem 0x74300000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: S3C24XX OHCI
usb usb1: Manufacturer: Linux 2.6.36 ohci_hcd
usb usb1: SerialNumber: s3c24xx
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
s3c-hsotg s3c-hsotg: regs d0840000, irq 90
s3c-hsotg s3c-hsotg: s3c_hsotg_corereset: reset failed, GRSTCTL=80000001
s3c-hsotg s3c-hsotg: GRXFSIZ=0x00001800, GNPTXFSIZ=0x18001800
s3c-hsotg s3c-hsotg: shared fifos
s3c-hsotg s3c-hsotg: DCFG=0x00200000, DCTL=0x00000002, DIEPMSK=0000000f
s3c-hsotg s3c-hsotg: GAHBCFG=0x00000000, 0x44=0x00000000
s3c-hsotg s3c-hsotg: GRXFSIZ=0x00000800, GNPTXFSIZ=0x04000800
s3c-hsotg s3c-hsotg: DPTx[1] FSize=768, StAddr=0x00000f00
s3c-hsotg s3c-hsotg: DPTx[2] FSize=768, StAddr=0x00001200
s3c-hsotg s3c-hsotg: DPTx[3] FSize=768, StAddr=0x00001500
s3c-hsotg s3c-hsotg: DPTx[4] FSize=768, StAddr=0x00001800
s3c-hsotg s3c-hsotg: DPTx[5] FSize=768, StAddr=0x00001b00
s3c-hsotg s3c-hsotg: DPTx[6] FSize=768, StAddr=0x00001e00
s3c-hsotg s3c-hsotg: DPTx[7] FSize=768, StAddr=0x00002100
s3c-hsotg s3c-hsotg: DPTx[8] FSize=768, StAddr=0x00002400
s3c-hsotg s3c-hsotg: DPTx[9] FSize=768, StAddr=0x00002700
s3c-hsotg s3c-hsotg: DPTx[10] FSize=768, StAddr=0x00002a00
s3c-hsotg s3c-hsotg: DPTx[11] FSize=768, StAddr=0x00002d00
s3c-hsotg s3c-hsotg: DPTx[12] FSize=768, StAddr=0x00003000
s3c-hsotg s3c-hsotg: DPTx[13] FSize=768, StAddr=0x00003300
s3c-hsotg s3c-hsotg: DPTx[14] FSize=768, StAddr=0x00003600
s3c-hsotg s3c-hsotg: DPTx[15] FSize=768, StAddr=0x00003900
s3c-hsotg s3c-hsotg: ep0-in: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep0-out: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep1-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep1-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep2-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep2-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep3-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep3-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep4-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep4-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep5-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep5-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep6-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep6-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep7-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep7-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep8-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep8-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep9-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep9-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep10-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep10-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep11-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep11-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep12-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep12-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep13-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep13-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep14-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: ep14-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x00000000
s3c-hsotg s3c-hsotg: DVBUSDIS=0x000017d7, DVBUSPULSE=000005b8
android init
android_probe pdata: c07d52a8
android_bind
android_usb gadget: android_usb ready
s3c-hsotg s3c-hsotg: EP0: DIEPCTL0=0x00008000, DOEPCTL0=0x00008000
s3c-hsotg s3c-hsotg: DCTL=0x00000002
s3c-hsotg s3c-hsotg: EP0: DIEPCTL0=0x00008000, DOEPCTL0=0x80008000
s3c-hsotg s3c-hsotg: S3C_GINTSTS_USBSusp
s3c-hsotg s3c-hsotg: s3c_hsotg_irq: USBRst
s3c-hsotg s3c-hsotg: bound driver android_usb
f_adb init
android_register_function adb
f_mass_storage init
android_register_function usb_mass_storage
android_usb gadget: invalid number of LUNs: 0
adb_bind_config
mice: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
S3C Touchscreen driver, (c) 2008 Samsung Electronics
s3c-ts.c SCREEN_X=480 SCREEN_Y=272
Unexpected
S3C TouchScreen got loaded successfully : 12 bits
input: S3C TouchScreen as /devices/virtual/input/input1
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
using rtc device, s3c, for alarms
s3c-rtc s3c64xx-rtc: rtc core: registered s3c as rtc0
i2c /dev entries driver
lirc_dev: IR Remote Control driver registered, major 253 
IR NEC protocol handler initialized
IR RC5(x) protocol handler initialized
IR RC6 protocol handler initialized
IR JVC protocol handler initialized
IR Sony protocol handler initialized
IR LIRC bridge handler initialized
Linux video capture interface: v2.00
usbcore: registered new interface driver em28xx
em28xx driver loaded
Em28xx: Initialized (Em28xx Audio Extension) extension
cx231xx v4l2 driver loaded.
usbcore: registered new interface driver cx231xx
cx231xx: Cx231xx Audio Extension initialized
usbcore: registered new interface driver usbvision
USBVision USB Video Device Driver for Linux : 0.9.10
usbcore: registered new interface driver pvrusb2
pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
pvrusb2: Debug mask is 31 (0x1f)
SE401 usb camera driver version 0.24 registering
usbcore: registered new interface driver se401
usbcore: registered new interface driver zr364xx
zr364xx: Zoran 364xx
usbcore: registered new interface driver stkwebcam
sn9c102: V4L2 driver for SN9C1xx PC Camera Controllers v1:1.47pre49
usbcore: registered new interface driver sn9c102
pwc: Philips webcam module version 10.0.13 loaded.
pwc: Supports Philips PCA645/646, PCVC675/680/690, PCVC720[40]/730/740/750 & PCVC830/840.
pwc: Also supports the Askey VC010, various Logitech Quickcams, Samsung MPC-C10 and MPC-C30,
pwc: the Creative WebCam 5 & Pro Ex, SOTEC Afina Eye and Visionite VCS-UC300 and VCS-UM100.
usbcore: registered new interface driver Philips webcam
gspca: main v2.10.0 registered
usbcore: registered new interface driver hdpvr
usbcore: registered new interface driver ibmcam
usbcore: registered new interface driver ultracam
konicawc: v1.4:Konica Webcam driver
usbcore: registered new interface driver konicawc
usbcore: registered new interface driver vicam
usbcore: registered new interface driver s2255
[CAM]s3c_fimc_register_controller.id=0
s3c_fimc_init_global s3c_fimc.cam_clock=-1065535004
s3c-fimc: controller 0 registered successfully
[CAM]s3c_fimc_register_controller.id=1
s3c-fimc: controller 1 registered successfully
s3c-fimc: info ov965x_init
[CAM]s3c_fimc_register_camera,cam->id=0
s3c_fimc.cam_clock = c07d39e4
parent clock for camera: 266.000 MHz, divisor: 11
[CAM]RESET CAM.[CAM]Reset and init reg!1cam->client=ccc52b00
[CAM]Reset and init reg!1
[CAM]Reset and init reg!2
[CAM]s3c_fimc_init_camera[CAM]I2C_CAM_INIT.
[CAM]s3c_fimc_init_camera[CAM]s3c_fimc_init_camera[CAM]Reset and init reg!3
S3C6400 MFC Driver, (c) 2007 Samsung Electronics
->################### s3cmfc:s3c_mfc_sfr_base_virt_addr:d0856000
cym s3c_mfc_mememap: addr:5dff9000 size:1138688 
S3C6400 MFC Driver, (c) 2007 Samsung Electronics
S3C PostProcessor Driver v3.12, (c) 2009 Samsung Electronics
S3C6410 TV encoder Driver, (c) 2008 Samsung Electronics
 S3C6410 TV encoder Driver init OK. 
S3C6410 TV scaler Driver, (c) 2008 Samsung Electronics
 S3C6410 TV scaler Driver init OK. 
S3C Rotator Driver, (c) 2008 Samsung Electronics
s3c_rotator_probe called
s3c_rotator_probe success
S3C JPEG Driver, (c) 2007 Samsung Electronics
phy_addr = 78800000..mem_size = 1034
phy_addr = 5dbf9000..mem_size = 79e000
s3c-g2d: Driver loaded succesfully
s3c-g2d: Module initialized.
s3c-g3d: detected FIMG-3DSE version 1.5.0
s3c-g3d: Driver loaded succesfully
s3c-g3d: Module initialized.
S3C CMM Driver, (c) 2008 Samsung Electronics
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v0.1.0)
Bluetooth: Virtual HCI driver ver 1.3
Bluetooth: Broadcom Blutonium firmware driver ver 1.2
usbcore: registered new interface driver bcm203x
Bluetooth: Digianswer Bluetooth USB driver ver 0.10
usbcore: registered new interface driver bpa10x
Bluetooth: BlueFRITZ! USB driver ver 1.2
usbcore: registered new interface driver bfusb
Bluetooth: Generic Bluetooth USB driver ver 0.6
usbcore: registered new interface driver btusb
Bluetooth: Atheros AR30xx firmware driver ver 1.0
usbcore: registered new interface driver ath3k
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
s3c-sdhci s3c-sdhci.0: clock source 0: hsmmc (133000000 Hz)
s3c-sdhci s3c-sdhci.0: clock source 1: hsmmc (133000000 Hz)
s3c-sdhci s3c-sdhci.0: clock source 2: mmc_bus (24000000 Hz)
mmc0: SDHCI controller on samsung-hsmmc [s3c-sdhci.0] using ADMA
s3c-sdhci s3c-sdhci.1: clock source 0: hsmmc (133000000 Hz)
s3c-sdhci s3c-sdhci.1: clock source 1: hsmmc (133000000 Hz)
s3c-sdhci s3c-sdhci.1: clock source 2: mmc_bus (24000000 Hz)
s3c6400_setup_sdhci_cfg_card: CTRL 2=c0004120, 3=80808080
enter s3c64xx_setup_sdhci1_cfg_gpio
mmc1: SDHCI controller on samsung-hsmmc [s3c-sdhci.1] using ADMA
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
logger: created 64K log 'log_main'
logger: created 256K log 'log_events'
logger: created 64K log 'log_radio'
logger: created 64K log 'log_system'
asoc: AC97 HiFi <-> s3c-ac97 mapping ok
s3c6400_setup_sdhci_cfg_card: CTRL 2=c0004120, 3=80808080
ALSA device list:
  #0: SMDK (WM9713)
TCP cubic registered
NET: Registered protocol family 17
can: controller area network core (rev 20090105 abi 8)
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)
Bluetooth: L2CAP ver 2.15
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO (Voice Link) ver 0.6
Bluetooth: SCO socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
lib80211: common routines for IEEE802.11 drivers
Registering the dns_resolver key type
VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
s3c-rtc s3c64xx-rtc: hctosys: invalid date/time
yaffs: dev is 32505858 name is "mtdblock2" rw
yaffs: passed flags ""
VFS: Mounted root (yaffs2 filesystem) on device 31:2.
devtmpfs: mounted
Freeing init memory: 172K
[dm9000 Ethernet Driver, V2.6.31]: Link-Down!!
dm9000 dm9000.0: eth0: link down
eth0: link down
*****************start calibrate*****************
 open tslib config file success, start read.... 
xres = 480, yres = 272
Took 1 samples...
Top left : X = 1648 Y =  959
Took 5 samples...
Top right : X = 1638 Y = 3095
Took 4 samples...
Bot right : X = 2497 Y = 3087
Took 4 samples...
Bot left : X = 2432 Y = 1022
Took 4 samples...
Center : X = 2078 Y = 2068
-118.192871 -0.005818 0.180906
-288.479492 0.208874 -0.002692
Calibration constants: -7745888 -381 11855 -18905792 13688 -176 65536 
 *****************end calibrate*******************
*****************start init *****************
yaffs: dev is 32505859 name is "mtdblock3" rw
yaffs: passed flags ""
init (53): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.
enabling adb
adb_open
warning: `rild' uses 32-bit capabilities (legacy support in use)
/system/bin/sh: can't access tty; job control turned off
/ # s3c-rtc s3c64xx-rtc: rtc only supports 100 years
alarm_set_rtc: Failed to set RTC, time will be lost on reboot
binder: release proc 96, transaction 475, not freed
alarm_release: clear alarm, pending 0
request_suspend_state: wakeup (3->0) at 140825288211 (1970-01-02 00:00:30.600321338 UTC)
init: untracked pid 63 exited
init: untracked pid 67 exited
request_suspend_state: wakeup (0->0) at 162926044091 (1970-01-02 00:00:52.701077112 UTC)
binder: 206: binder_alloc_buf, no vma
binder: 147:153 transaction failed 29201, size 4-0
binder: send failed reply for transaction 1178 to 206:206
binder: release 250:250 transaction 1572 out, still active
binder: 147:275 transaction failed 29189, size 14024-0
binder: send failed reply for transaction 1572, target dead

/ # 



5. 常见错误


中间出了点小状况, 报出下面错误 :

Registering the dns_resolver key type
VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
s3c-rtc s3c64xx-rtc: hctosys: invalid date/time
yaffs: dev is 32505858 name is "mtdblock2" rw
yaffs: passed flags ""
VFS: Mounted root (yaffs2 filesystem) on device 31:2.
devtmpfs: error mounting -2
Freeing init memory: 172K
Failed to execute /linuxrc.  Attempting defaults...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
[<c0039d38>] (unwind_backtrace+0x0/0xf8) from [<c058a5ec>] (panic+0x60/0x1a8)
[<c058a5ec>] (panic+0x60/0x1a8) from [<c00335ac>] (init_post+0xbc/0x130)
[<c00335ac>] (init_post+0xbc/0x130) from [<c0008488>] (kernel_init+0x118/0x160)
[<c0008488>] (kernel_init+0x118/0x160) from [<c0034aa8>] (kernel_thread_exit+0x0/0x8)
-- 错误原因 : 编译 Android 源码后制作文件系统 使用的 make-rootfs-nand256m 脚本制作成 128 M 内存 的文件系统了, 我的板子是 256 M 的, 应该使用make-rootfs-nand2g 脚本制作文件系统;




WinCE :



Android :

-- 校准屏幕 :


-- 启动后的系统 :




博客地址:http://blog.csdn.net/shulianghan/article/details/40299813


本篇文章中用到的工具源码下载:

--ok-6410A 附带的 Android 光盘 下载地址:http://pan.baidu.com/share/link?shareid=3662728609&uk=2754759285;

--光盘所含内容: Android 引导 u-boot 源码, Android 内核 源码, Android 系统源码, 交叉编译工具链;


各项操作说明:

--编译环境: 编译源码 (u-boot, 内核, Android 系统) 是在Ubuntu 12.04.4 LTS操作系统上进行的;

--烧写环境: 将编译的镜像烧写到 ok-6410A 开发板的操作实在windows xp上进行的;

分享到:
评论

相关推荐

    mini2440无盘启动(服务器配置-内核编译-文件系统制作-u-boot烧写)

    在本场景中,我们讨论的是基于mini2440开发板的无盘启动流程,该过程涉及到Linux服务器的NFS配置、内核编译、根文件系统制作以及u-boot的烧写。 1. **NFS服务器配置**: - 安装NFS服务:在Ubuntu 12.04上,通过`...

    u-boot移植烧写步骤、u-boot命令和kernel烧写步骤 )

    ### U-Boot 移植与烧写步骤详解 #### U-Boot 概述 U-Boot(Universal Boot Loader)是一个支持多种处理器架构的通用引导...通过遵循这些步骤,可以有效地完成 U-Boot 在特定开发板上的移植,并实现对内核的正确烧写。

    mini2440无盘启动(服务器NFS配置-支持NFS内核编译-根文件构建-u-boot烧写)

    ### Mini2440无盘启动详解:服务器NFS配置、支持NFS内核编译、根文件构建及U-Boot烧写 #### 一、概述 无盘启动技术允许设备通过网络从远程服务器上加载操作系统,从而实现无本地存储介质的启动方式。Mini2440是一款...

    hfrk2410开发板移植(u-boot.bin,uImage,mkimage)

    编译过程通常包括配置(`make menuconfig`)、编译(`make`)和烧录(将生成的`u-boot.bin`文件写入开发板的存储器,如NAND Flash或SD卡)等步骤。 2. **uImage**: `uImage`是Linux内核的一种二进制格式,通常...

    OK6410移植U-Boot2010.03

    通过以上步骤,开发者能够成功地在OK6410开发板上移植并运行U-Boot 2010.03,从而为后续的嵌入式系统开发打下坚实的基础。在整个过程中,理解硬件特性、熟悉U-Boot配置和编译流程、以及解决问题的能力都是非常关键的...

    FS4412开发板SD卡启动u-boot制作文件

    标题 "FS4412开发板SD卡启动u-boot制作文件" 涉及到的是在基于FS4412开发板上通过SD卡来引导加载u-boot的过程。u-boot是一个开源的微处理器启动加载程序,它在系统启动时执行初始化任务,并为操作系统提供加载服务。...

    U-Boot详解 U-Boot详解

    - **android开发板.doc、android开发.PDF**:虽然主要关注Android开发,但Android也基于Linux内核,因此可能涉及U-Boot在Android设备上的应用。 - **U-Boot介绍1.pdf、U—Boot在S3C2410上的移植.pdf**:这两份文档...

    bootloader-内核-文件系统烧写

    3. 烧写内核和文件系统:通过tftp服务将内核映像文件和根文件系统烧写到开发板上。 4. 运行测试程序:确保开发板能够从新烧写的系统和文件系统上启动,并运行测试程序。 ### 知识点七:串口通信及超级终端设置 ...

    u-boot-tiny6410-sd.tar.gz

    1. **U-Boot**:U-Boot是一个开放源码的Bootloader,广泛应用于各种嵌入式系统,它的主要任务是初始化硬件,加载操作系统内核到内存中,并将控制权交给内核。在这个特定的版本中,U-Boot已经针对Tiny6410处理器进行...

    ok6410 u-boot和linux内核移植.pdf

    【OK6410 U-Boot和Linux内核移植】是针对特定开发板OK6410进行系统软件移植的教程,特别适合初学者。U-Boot和Linux内核是嵌入式系统中的核心组件,它们负责启动硬件、初始化设备以及提供操作系统运行的基础环境。 U...

    飞凌ok6410 个人修改后的 u-boot 支持网络,tftp

    飞凌OK6410是一款基于ARM Cortex-A8内核的开发板,广泛应用于嵌入式系统设计和开发。在这款开发板上运行的u-boot是Bootloader的一种,它是操作系统加载前的一小段代码,主要任务是初始化硬件,如内存、串口、网络等...

    海思3510开发板的u-boot

    u-boot,全称Micro Bootloader,是嵌入式系统中的引导加载程序,负责初始化硬件,加载操作系统内核,并将其传递到内存中执行。在海思3510平台上,u-boot的作用尤为重要,因为它是开发者进行系统调试、固件更新以及...

    tiny210 u-boot

    2. **加载内核**:U-Boot能够从多种存储介质(如NAND Flash、SD卡或网络)中读取并加载操作系统内核到RAM中。 3. **设备树支持**:在2.1版本中,U-Boot可能已经支持了设备树(Device Tree),这是一种描述硬件配置的...

    u-boot-2017.07移植到s5pv210教程(含对应源码)

    1. 将`u-boot.bin`和`u-boot-spl.bin`烧录到S5PV210开发板的指定内存区域,这通常通过JTAG或UART接口完成,具体操作需参考开发板手册。 2. 在没有预装引导程序的情况下,可能需要借助外部设备如SD卡或USB设备进行...

    2440的u-boot移植内核和文件系统

    5. 烧写:将vmlinuz内核镜像和根文件系统烧写到NAND Flash或其他存储介质上,通常会有一个boot分区存放内核,另一个分区存放文件系统。 三、文件系统构建 文件系统是操作系统与数据交互的接口,针对2440,常见的...

    u-boot编译文件

    本文将深入探讨U-Boot的编译过程,以及在飞凌FL2440开发板上的应用,同时解析两个编译生成的文件:uboot-nand.bin和u-boot-nor.bin。 一、U-Boot简介 U-Boot是一个开源项目,其源代码主要由C语言编写,遵循GPL许可...

    支持JZ2440的u-boot-2010.03

    编译过程中,u-boot会生成相应的二进制文件,如u-boot.bin,这是最终烧录到开发板上的引导程序。 4. **烧录**:通过JTAG或者串口下载线,将编译好的u-boot.bin烧录到开发板的Flash中。这一步骤可能需要配合特定的...

    u-boot在S3C2410移植

    移植u-boot到S3C2410是进行嵌入式开发的关键步骤之一,它涉及到对硬件平台的深入理解和对u-boot源码的定制。本文将详细介绍如何在S3C2410开发板上进行u-boot的移植工作,特别是针对NAND Flash Boot的流程。 首先,...

    v1.0-u-boot-2013.10 修改的文件

    u-boot是通用Bootloader的一种,它是嵌入式系统启动过程中的关键软件组件,负责初始化硬件、加载操作系统内核到内存以及提供交互式命令行界面等任务。 【描述】提到"u-boot-2013.10 版本u-boot的修改文件,支持...

    编译成功的u-boot

    本篇将深入探讨如何在友善之臂(FriendlyARM)的TINY6410平台上编译并成功运行自编译的u-boot,以及如何利用SD卡和FLASH进行系统烧录。 首先,理解u-boot的编译过程至关重要。u-boot的源代码通常托管在Git仓库中,...

Global site tag (gtag.js) - Google Analytics