`

【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上进行的;

分享到:
评论

相关推荐

    基于ARM9的嵌入式Linux网络视频监控系统的研究与实现.caj

    以S3C2440为开发平台,设计并实现一个基于嵌入式Linux系统的,...并介绍了u-boot以及烧写内核镜像和根文件系统的知识、烧写Linux系统到开发板的方法。设计了基于该嵌入式Linux系统的CMOS摄像头驱动程序,将该驱动程序加载

    Nios II葵花宝典-Nios II嵌入式系统设计教程

    简单介绍了U-Boot的历史、代码的结构分析、在XuX开发板使用U-Boot的常用命令、U-Boot的启动过程分析以及如何编译U-Boot。同时为了增加大家对U-Boot理解,编写了一个实例:使用U-Boot从SD卡上引导uclinux。 第四章...

    U-boot.bin mini2440开发板可用 只支持NOR Flash启动

    这是自己编译的U_boot二进制文件,可以在mini2440开发板上使用,只支持从NOR Flash启动,支持网络功能,可以使用tftp服务器从电脑上下载内核镜像到内存运行。如果要查看编译的整个过程,可以参考我的博客...

    Linux实验十二 预作实验 配置编译开发板Linux文件系统

    1.1实验目的 掌握Linux内核的编译配置方法,熟悉Linux操作系统的移植过程 ...5.将之前编译好的u-boot.bin,kernel.img,system.img复制到SD卡的sdfuse目录下。 最终如图 再添加字体fontall.FON和logo.bmp(800*48

    mini2440国嵌视频教程+课件+工具+软件+镜像+教程源码下载地址

    -国嵌内核驱动进阶班-3-4(嵌入式文件系统).avi -国嵌内核驱动进阶班-3-5(必修实验).avi -第4天(内存管理子系统) -国嵌内核驱动进阶班-4-1(Linux内存管理).avi -国嵌内核驱动进阶班-4-2(进程地址空间).avi ...

    Linux实验十三 Uboot和Linux内核配置与编译实验

    掌握U-Boot和Linux的编译配置方法 2.实验内容 配置与编译U-Boot源码 配置与编译Linux内核 3.实验步骤(参考Tiny6410+linux开发.pdf文档的) 3.1 配置编译Uboot 说明:根据开发板不同的内存(DDR RAM)容量,可能...

    嵌入式Linux视频教程全套2011新版-国嵌嵌入式培训下载地址

    -国嵌内核驱动进阶班-3-2(根文件系统制作).avi -国嵌内核驱动进阶班-3-3(内核启动流程).avi -国嵌内核驱动进阶班-3-4(嵌入式文件系统).avi -国嵌内核驱动进阶班-3-5(必修实验).avi -第4天(内存管理子系统...

    ELDK使用与开发手册

    [请注意到尽管U-Boot提供了很多配置选项,并不是所有选项都支持各种处理器和开发板,有些选项可能在你的配置中并没有被选上。] =&gt; help ? – alias for ‘help’ askenv – get environment variables from stdin ...

    uboott移植实验手册及技术文档

    本步骤将编译 u-boot.bin文件,但此时还无法运行在FS2410开发板上。 二、修改 cpu/arm920t/start.S文件,完成 U-Boot的重定向 (1)修改中断禁止部分 # if defined(CONFIG_S3C2410) ldr r1, =0x7ff /*根据 2410...

    Sate4412开发板用户手册(linux android 编译开发环境搭建)V1.4.1.pdf

    系统引导程序 U-boot 2010.12 串口调试工具 DNW/ SecureCRT 交叉编译工具 Arm-2009q3(gcc 4.4.1) 文件系统格式 RAMDISK, Ext4 GUI Google Android 4.0.4 ICS 软件功能支持 支持3D图形显像(Mali-400 MP) 支持1080P...

    【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.3.pdf

    1、修改文档中的部分错误 ...版的 u-boot.imx,并加以说明。 5、修改第五章 ,添加对于 I.MX6U-Mini 开发 板的支持,调整了第五章的章节顺序。 6、修改 64.6 小节,修改编译内核自带 FT5X06 驱动的配置路径

    嵌入式设计及linux驱动开发指南——基于ARM9处理器.pdf

    5.3.2 编译U-Boot代码 5.3.3 U-Boot代码导读 5.3.4 U-Boot命令 5.4 FS2410的Bootloader 第6章 Linux系统在ARM平台的移植 6.1 移植的概念 6.2 Linux内核结构 6.3 Linux-2.4内核向ARM平台的移植 6.3.1 根目录 ...

    mini2440之U-boot移植详细手册-20100419

    4.1 烧写U‐BOOT到MINI2440开发板 ....................................................................................................................... 13  4.2 常用U‐BOOT命令详解.....................

    CQ8401开发板软件开发指南.doc

    本文介绍了在MingddieCQ8401(以下简称CQ8401)开发板上开发和运行Linux的过程,包括建立交叉编译环境、编译U-Boot、编译Linux内核、引导和调试目标板。

    ARM9嵌入式Linux开发 ppt——周卫老师

    分析U-Boot的代码结构,并介绍如何移植到开发板上。  分析Linux内核的代码结构以及启动过程,并介绍如何移植到开发板上。  介绍嵌入式Linux文件系统的目录结构,然后构造嵌入式Linux文件系统。  嵌入式Linux...

    firefly-3399开发板入门笔记.zip

    总共8篇笔记,包括u-boot制作、开发环境搭建及内核编译、HelloWorld程序编写及编入内核驱动等。有助于快速入手linux开发。

    PW2440嵌入式主板使用手册V1.2

    9.8 u-boot.bin 启动文件的烧写方法 9.9内核用 UBOOT 方式自动烧写方法 9.10 Linux2.6.18.2 的部分应用例程 十 PW2440主板Linux2.6.18.2系统代码学习教程 10.1 u-boot的学习与编译,UBOOT1.3版本 10.1.1 uboot目录...

    嵌入式Linux应用开发完全手册 清晰版PDF 有书签

    LCD 等),U-Boot、Linux 内核的分析、配置和移植,根文件系统的构造(包括移植 busybox、glibc、制作 映象文件等),内核调试技术(比如添加 kgdb 补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展 串口、...

Global site tag (gtag.js) - Google Analytics