Linux 2 6 26 在S3C2440上的移植

2021-04-20 09:20:28 字數 4327 閱讀 8843

我使用的板子與s3c2440的公板差不多,linux2.6.26對smdk的板支援得比較好,改動不多,這裡只對過程做乙個簡單的記錄。

開發環境:

vmware + ubuntu 8.10,虛擬機器配置了兩個網絡卡,乙個是bridge連線,用來在虛擬機器中訪問網際網路;乙個是nat連線用來搭samba伺服器與windows共享檔案。

交叉編譯環境:

從網上下乙個回來,也可以crosstools做乙個出來。

解壓tar xvjf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -c /usr/local/arm

新增到環境變數

vim ~/.bashrc

export path=$path:/usr/local/arm/arm-2008q1/bin

log out後,新環境變數生效。

arm-none-linux-gnueabi-gcc -v可看到gcc的版本是4.2.3

s3c2440是armv4t的核心,所以在編譯是加上-march=armv4t,詳細可以參考codesourcery上的getting start文件。

核心linux2.6.26

修改時鐘頻率(/arch/arm/mach-s3c2440/mach-smdk2440.c)

static

void __init smdk2440_map_io(void)

修改flash分割槽(arch/arm/plat-s3c24xx/common-smdk.c)

static

struct mtd_partition smdk_default_nand_part = ,

[1] = ,

[2] = 

};修改ecc mode(drivers/mtd/nand/s3c2410.c)

} else 

make s3c2410_defconfig

make menuconfig進入選單進行配置,這裡由於使用了codesourcery的工具鏈,此工具鏈支援eabi,所以選擇

kernel features ->

[*]use the arm eabi to compile the kernel

[*]  allow old abi binaries to run with this kernel

make arch=arm cross_compile=arm-none-linux-gnueabi- zimage

根檔案系統

這裡使用了busybox 1.11.2

make menuconfig進行配置,詳細過程請google

make cross_compile=arm-none-linux-gnueabi- cflags:=-march=armv4t install

可以通過prefix修改安裝的路徑,也可以在menuconfig中修改

mkdir rootfs

在資料夾rootfs下建立如下的檔案結構

.|-- bin

|-- dev

|   |-- console

|   |-- mem

|   |-- null

|   |-- pts

|   |-- random

|   |-- shm

|   `-- zero

|-- etc

|   |-- fstab

|   |-- group

|   |-- hosts

|   |-- init.d

|   |   `-- rcs

|   |-- inittab

|   |-- mdev.conf

|   |-- passwd

|   |-- profile

|   `-- shadow

|-- lib

|   `-- modules

|-- linuxrc -> bin/busybox

|-- mnt

|   |-- cramfs

|   |-- jffs2

|   |-- nfs

|   |-- usb

|   `-- yaffs

|-- proc

|-- sbin

|-- sys

|-- tmp

|-- usr

|   |-- bin

|   |-- lib

|   `-- sbin

`-- var

|-- lib

|-- lock

|-- log

|-- run

`-- tmp

28 directories, 118 files

更改tmp資料夾許可權chmod 1777 tmp

複製busybox生成的/bin /sbin linuxrc到 rootfs下

複製/usr/local/arm/arm-

2008q1

/arm-none-linux-gnueabi/libc/armv4t/lib的檔案到rootfs/lib

複製/usr/local/arm/arm-

2008q1

/arm-none-linux-gnueabi/libc/armv4t/usr/bin/gdbserver 到 rootfs/bin

可以在linux commond line中指定 init=/linuxrc,實際是指向了busybox,linuxrc會讀取etc資料夾下的幾個檔案從而去配置機器。

etc/fstab:

proc    /proc        proc    default      0           0

sysfs    /sys        sysfs    default     0           0

tmpfs    /dev/shm    tmpfs    default     0           0

devpts    /dev/pts    devpts    default   0           0

裝置    mount point  型別      掛載選項    dump選項 fsck選項

etc/hosts

#do not remove the following line, or various programs

#that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

etc/inittab

::sysinit:/etc/init.d/rcs

s3c2410_serial0::respawn:/bin/sh

etc/passwd

root::0:0:root:/root:/bin/sh

etc/profile

#set library path

export ld_library_path=/lib:/usr/lib

#set user path

path=/bin:/sbin:/usr/bin:/usr/sbin

export path'

user="root"

logname=$user

hostname=`/bin/hostname`

#hostname="eric"

mdev.conf內容為空,以後再新增內容

group內容可以從pc中複製乙份

etc/init.d/rcs

#!/bin/sh

#/bin/mount -t sysfs sysfs /sys

#/bin/mount -t proc proc /proc

#/bin/mount -t tmpfs tmpfs /dev/shm

#/bin/mount -t devpts devpts /dev/pts

echo "######starting mdev#########"

/bin/mount -t tmpfs mdev /dev

/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

ifconfig eth0 192.168.1.3

生成cramfs,mkfs.cramfs rootfs cramfs.bin

燒寫到板上,開機ok。

nfs,這個網上google一下就一堆了

gdb,在根檔案系統中已經安裝了gdbserver,這個也比較簡單,不說了

使用JLink燒寫bin檔案到S3c2440

我自己有乙個mini2440的板子,我學習了bootloader這一節,想做一下實驗。網上有不少的文章講如何使用jlink燒程式到mini2440,我總結了一下,主要的步聚如下 3 使用u boot命令將自身寫到nandflash或norflah。首先要安裝jlink驅動,然後就是正確的連線,最後是...

S3fs在EC2 Linux例項上掛載S3

在aws為使用者建立訪問金鑰並記錄金鑰id和私密 安裝s3fs 安裝必要的依賴包 yum install automake fuse fuse devel gcc c git libcurl devel libxml2 devel make openssl devel git clone cd s3...

skyeye模擬s3c2410 linux下程式

在前面的基礎上,下面開始利用skyeye自帶的testsuites中的資源來執行自己的程式的方法 2.使用skyeye模擬板子s3c2410執行某個linux 首先進入解壓完的目錄,然後 cd linux s3c2410 s3c2410x 2.6.14 skyeye c skyeye.conf e ...