我使用的板子與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 ...