移植linux-2.6.29+busybox最小系统到单板OK6410

本文档详细记录了在Ubuntu 10.04.4环境下,将Linux-2.6.29内核和 BusyBox 移植到OK6410单板计算机的过程。首先,通过下载交叉编译链和内核源码,并切换到特定版本。然后,配置内核、编译uImage,并解决启动时的错误。最终,成功通过串口和网络启动,并实现了与主机的网络通信。
摘要由CSDN通过智能技术生成

系统:ubuntu 10.04.4
单板:ok6410
编译器:arm-none-linux-gnueabi-

搭建开发环境详见ubuntu 10.04.4开发环境配置。
目标:
一.配置 编译android-2.6.29,放到OK6410上,板子串口正常输出
二.移植DM9000网卡驱动,配置内核,支持nfs挂载网络文件系统

一.配置 编译android-2.6.29,放到OK6410上,板子串口正常输出

1.获取交叉编译链 http://code.google.com/p/smp-on-qemu/downloads/list 选择arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2并下载。然后在ubuntu下直接解压即可
2.git下载内核源码android-2.6.29

change@change:~$ mkdir android

change@change:~/android$ git clonehttps://android.googlesource.com/kernel/goldfish.git
Initialized empty Git repository in /home/change/android/goldfish/.git/
remote: Counting objects: 41021, done
remote: Finding sources: 100% (114/114)
remote: Getting sizes: 100% (70/70)
remote: Compressing objects: 100% (311571/311571)
Receiving objects: 100% (2442756/2442756), 499.75 MiB | 901 KiB/s, done.
remote: Total 2442756 (delta 2048893), reused 2442724 (delta 2048890)
Resolving deltas: 100% (2049059/2049059), done.

显示100%之后则表示同步完成。此时goldfish下的所有内核版本的源码都已同步完成
设定默认使用版本
进入到goldfish目录下,使用如下命令查看所有可用版本名称。
change@change:~/android$ cd goldfish/
change@change:~/android/goldfish$ git branch -a

我的系统显示如下:
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/android-goldfish-2.6.29
  remotes/origin/android-goldfish-3.4
  remotes/origin/linux-goldfish-3.0-wip
  remotes/origin/master
“*”指代的当前目录下默认的版本。设定“android-goldfish-2.6.29”为默认,则可以在终端中输入如下命令:
git checkout -b android-2.6.29 origin/android-goldfish-2.6.29
-b后面的android-2.6.29只是给后面的内核源码版本起了个自己定义的名字,方便自己查看而已,也可以不定义,不定义就会使用默认名称。此时,查看goldfish下的目录即为“android-goldfinsh-2.6.29”版本的模拟器内核源码。在goldfish目录下使用如下命令进行查看当前内核版本的名称。
change@change:~/android/goldfish$ git checkout -b android-2.6.29 origin/android-goldfish-2.6.29
Checking out files: 100% (26821/26821), done.
Branch android-2.6.29 set up to track remote branch android-goldfish-2.6.29 from origin.
Switched to a new branch 'android-2.6.29'
change@change:~/android/goldfish$ git branch
* android-2.6.29
  master

下载的android-2.6.29代码如下:
change@change:~/android/goldfish$ ls
arch     CREDITS        drivers   include  Kbuild  MAINTAINERS  net             samples   sound
block    crypto         firmware  init     kernel  Makefile     README          scripts   usr
COPYING  Documentation  fs        ipc      lib     mm           REPORTING-BUGS  security  virt
change@change:~/android/goldfish$

3.修改顶部Makefile:193
ARCH            ?= arm
CROSS_COMPILE   ?= /home/change/tools/arm-2009q3//bin/arm-none-linux-gnueabi-
4.配置
make s3c6400_defconfig
5.编译make uImage

make uImage
Image Name:   Linux-2.6.29-gcb06bef-dirty
Created:      Fri Jan 18 14:24:35 2013
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    938176 Bytes = 916.19 kB = 0.89 MB
Load Address: 50008000
Entry Point:  50008000
  Image arch/arm/boot/uImage is ready
编译过程比较顺利,没有报错

SMDK6410 # set bootcmd 'nand read 0x50000000 0x100000 0x300000;bootm 0x50000000'
SMDK6410 # boot
Unknown command 'nand' - try 'help'
## Booting kernel from Legacy Image at 50000000 ...
   Image Name:   Linux-2.6.29-ge3d684d-dirty
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    943040 Bytes = 920.9 KiB
   Load Address: 50008000
   Entry Point:  50008000
   Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
SMDK6410 #tftp 0x50000000 uImage                                               
dm9000 i/o: 0x18000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:0c:29:4d:e4:f4
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 172.16.1.132; our IP address is 172.16.1.111
Filename 'uImage'.
Load address: 0x50000000
Loading: #################################################################
done
Bytes transferred = 943104 (e6400 hex)
SMDK6410 # md 0x50000000
50000000: 56190527 3d367e35 d0678651 c0630e00    '..V5~6=Q.g...c.
50000010: 00800050 00800050 15e75322 00020205    P...P..."S......
50000020: 756e694c 2e322d78 39322e36 3365672d    Linux-2.6.29-ge3
50000030: 34383664 69642d64 00797472 00000000    d684d-dirty.....
50000040: e1a00000 e1a00000 e1a00000 e1a00000    ................
50000050: e1a00000 e1a00000 e1a00000 e1a00000    ................
50000060: ea000002 016f2818 00000000 000e63c0    .....(o......c..
50000070: e1a07001 e1a08002 e10f2000 e3120003    .p....... ......
50000080: 1a000001 e3a00017 ef123456 e10f2000    ........V4... ..
50000090: e38220c0 e121f002 00000000 00000000    . ....!.........
500000a0: e28f00d0 e890307e e0500001 0a00000a    ....~0....P.....
500000b0: e0855000 e0866000 e08cc000 e0822000    .P...`....... ..
500000c0: e0833000 e08dd000 e5961000 e0811000    .0..............
500000d0: e4861004 e156000c 3afffffa e3a00000    ......V....:....
500000e0: e4820004 e4820004 e4820004 e4820004    ................
500000f0: e1520003 3afffff9 eb000028 e1a0100d    ..R....:(.......
SMDK6410 # nand read 0x50000000 0x100000 0x300000

NAND read: device 0 offset 0x100000, size 0x300000
realpage value:1023
page value:1023
ret value:0
 3145728 bytes read: OK
SMDK6410 # md 0x50000000
50000000: 56190527 3d367e35 d0678651 c0630e00    '..V5~6=Q.g...c.
50000010: 00800050 00800050 15e75322 00020205    P...P..."S......
50000020: 756e694c 2e322d78 39322e36 3365672d    Linux-2.6.29-ge3
50000030: 34383664 69642d64 00797472 00000000    d684d-dirty.....
50000040: e1a00000 e1a00000 e1a00000 e1a00000    ................
50000050: e1a00000 e1a00000 e1a00000 e1a00000    ................
50000060: ea000002 016f2818 00000000 000e63c0    .....(o......c..
50000070: e1a07001 e1a08002 e10f2000 e3120003    .p....... ......
50000080: 1a000001 e3a00017 ef123456 e10f2000    ........V4... ..
50000090: e38220c0 e121f002 00000000 00000000    . ....!.........
500000a0: e28f00d0 e890307e e0500001 0a00000a    ....~0....P.....
500000b0: e0855000 e0866000 e08cc000 e0822000    .P...`....... ..
500000c0: e0833000 e08dd000 e5961000 e0811000    .0..............
500000d0: e4861004 e156000c 3afffffa e3a00000    ......V....:....
500000e0: e4820004 e4820004 e4820004 e4820004    ................
500000f0: e1520003 3afffff9 eb000028 e1a0100d    ..R....:(.......
SMDK6410 #

放到内存读出的数据也一样,这个问题感觉怪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值