標籤:exynos 4412 環境搭建 arm linux 嵌入式
轉載請註明出處:http://blog.csdn.net/ruoyunliufeng/article/details/44995039
開發板軟體環境:uboot(用官方給的,後續我會考慮分析移植)
核心(本來想用官方的降低難度,但給的不支援nfs,簡單更改下吧,後續考慮移植精簡新核心)
檔案系統(移植最小檔案系統)
1.修改開發板官方核心支援nfs
a.用ftp工具從主機拷貝核心到虛擬機器,然後解壓
b.copy 官方設定檔 .config(不同開發板設定檔不同,我的操作是cp config_for_linux .config)
c.make menuconfig
出錯:我碰見過兩種,第一種錯誤是終端太小,裝不形配置。
第二種是缺少ncurses庫,解決辦法$sudo apt-get install libncurses5-dev
d. 修改配置選項
選中 IP: kernel level autoconfiguration
更改後儲存,然後make
e.將產生的核心燒進開發板
f.測試nfs功能
mount -t nfs -o nolock 192.168.6.2:/work /mnt
如果開發板檔案系統的/mnt 掛在到了虛擬機器的/work上則證明成功
2.製作最小網路檔案系統
a.下載BusyBox(直接百度,然後進入官網,我下載是最新的穩定版本1.23.2)然後解壓
b.make menuconfig
1.修改系統安在哪,叫什麼名,,這個是我的配置:
2.用什麼編譯器
c.make 然後 make install之後你的系統應該已經產生了。
d.把交叉編譯器裡面的庫檔案,拷貝到我們的最小網路檔案系統中(注意-d選項)
cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* /work/nfs_sys/mini_sys
e.接下來需要建立幾個檔案,如果懶得建立的話,我後續把我的檔案系統傳上來,大家copy下也可以
在/etc下建立三個檔案 etc/initab etc/init.d/rcS etc/fstab三個檔案內容如下:
etc/fstab
::sysinit:/etc/init.d/rcSttySAC2::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r
etc/init.d/rcS
#!/bin/shifconfig eth0 192.168.6.4mount -amkdir /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplug<p>echo 0 > /proc/sys/kernel/hung_task_timeout_secs</p> mdev -s
etc/initab
# dev mount type options dump fsck orderproc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0sysfs /sys sysfs defaults 0 0tmpfs /dev tmpfs defaults 0 0
除此之外還需要建立/dev檔案夾。然後在下面建立這兩個裝置檔案
mknod consol c 5 1
mknod null c 1 3
f.啟動開發板uboot修改啟動參數,如下:
set bootargs console=ttySAC2,115200 init=/linuxrc rootfstype=ext4 root=/dev/nfs rw nfsroot=192.168.6.2:/work/nfs_sys/mini_sys ip=192.168.6.4:192.168.6.2:192.168.6.1:255.255.255.0:ruoyun:eth0:off
如果OK的話,可以儲存環境變數,每次開機就可以直接掛在檔案系統了。
g.建立其餘目錄
mkdir proc mnt tmp sys root
h.如果能順利進入系統,看到這句話Please press Enter to activate this console.那麼恭喜你成功了。測試下建立檔案,看虛擬機器和開發板是否同步(注意不要在tmp檔案夾下建立,我發現在此檔案夾下,資料不能同步,不知道什麼原因)
3.編寫第一個驅動
a.編寫驅動檔案
#include<linux/init.h>#include<linux/module.h>#include<linux/kernel.h>static int hello_init(void){printk(KERN_ALERT "hello world.\n");return 0;}static void hello_exit(void){printk(KERN_ALERT "exit hello world.\n");}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("GPL");
b.編寫Makefile
KERN_DIR = /work/kernel/itop/iTop4412_Kernel_3.0all:make -C $(KERN_DIR) M=`pwd` modules clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m+= hello_drv.o
c.測試
在虛擬機器上先make ,產生.ko檔案。然後將.ko檔案放在開發板啟動的網路檔案系統中,然後insmod
如果出現hello world。那麼證明你成功了。
然後rmmod,我在做的時候出現了一個錯誤。如下:
rmmod: can‘t change directory to ‘/lib/modules‘: No such file or directory
解決辦法就是mkdir /lib/modules/3.0.15 (最後面的是你的核心版本號碼)
如果rmmod出現了exit hello world. 那麼恭喜你成功了。
到這裡環境已經搭建好了,大家可以繼續接下來的驅動去學習了,後續我會繼續寫一些驅動相關的文章的。
嵌入式環境搭建之開發板軟體環境