這裡包括兩部分:首先建立最簡單的板檔案+讓板檔案掛在檔案系統+啟動系統。
宣告:本文是之前寫的了,在飛凌論壇發表,現在拿在這裡共享一下。
一、在arch/arm/mach-s3c64xx/目錄下建立ok6410.c檔案
1、新增標頭檔案:
把mach_smdk6410裡的標頭檔案複製過來;
2、新增乙個串列埠(飛凌只是用乙個串列埠,其他三個做擴充套件,所以我們定義乙個):
#define ucon s3c2410_ucon_default | s3c2410_ucon_uclk
#define ulcon s3c2410_lcon_cs8 | s3c2410_lcon_pnone | s3c2410_lcon_stopb
#define ufcon s3c2410_ufcon_rxtrig8 | s3c2410_ufcon_fifomode
static struct s3c2410_uartcfg smdk6410_uartcfgs __initdata = ,
};3、新增用來對映lcd暫存器的結構體:
static struct map_desc smdk6410_iodesc = ,};
(如果暫時沒有使用,可以不寫smdk6410_iodesc,這時候,也要把接下來的:
s3c64xx_init_io(smdk6410_iodesc, array_size(smdk6410_iodesc));
改為:s3c64xx_init_io(null,0);//但是這句話不可以省略,由於他不單單對映lcd暫存器
)4、新增平台裝置(暫時為空):
static struct platform_device *smdk6410_devices __initdata = ;
5、實現smdk6410_map_io函式:
static void __init smdk6410_map_io(void)
6、實現:smdk6410_machine_init函式:
static void __init smdk6410_machine_init(void)
7、新增自己的板初始化結構體:
machine_start(smdk6410, "ok6410")
.boot_params = s3c64xx_pa_sdram + 0x100,
.init_irq = s3c6410_init_irq,
.map_io = smdk6410_map_io,
.init_machine = smdk6410_machine_init,
.timer = &s3c24xx_timer,
machine_end
8、如何讓核心去使用這個板檔案?
修改:arch/arm/mach-s3c64xx/makefile:54:
在obj-$(config_mach_smdk6410) += mach-smdk6410.o
改為obj-$(config_mach_smdk6410) += ok6410.o
這樣,最簡單的板檔案就完成了,由於沒有新增nand驅動,所以只能掛在nfs檔案系統(如果先掛在其他檔案系統,只需新增移植nand驅動就好了)。
二、現在掛載網路檔案系統:
1設定,pc機上的linux系統支援nfs服務:
在/etc/export檔案新增:
啟動nfs服務:service nfs restart
2、uboot命令列設定:
setenv bootargs "root=/dev/nfs nfsroot=192.168.0.101:/root/rootfs/rootfs ip=192.168.0.100:192.168.0.101:192.168.0.255:255.255.255.0::eth0
3、核心網絡卡驅動移植:
確認drivers/net/下有dm9000的檔案(一般都有);
修改arch/arm/mach-s3c6410/ok6410.c:
新增標頭檔案#incude
新增dm9000 結構體:
/* ethernet */
#define s3c64xx_pa_dm9000 (0x18000000)
#define s3c64xx_sz_dm9000 sz_1m
#define s3c64xx_va_dm9000 s3c_addr(0x03b00300)
static struct resource dm9000_resources = ,
[1] = ,
[2] = ,
};
static struct dm9000_plat_data dm9000_setup = ,
};
static struct platform_device s3c_device_dm9000 =
};
在smdk6410_devices新增s3c_device_dm9000:
&s3c_device_dm9000, // dm9000 driver add by acanoe
4、配置編譯核心
-> device drivers
-> network device support (netdevices [=y])
-> ethernet (10 or 100mbit) (net_ethernet [=y])
-> dm9000 support (dm9000 [=y])
還要使核心支援網路檔案系統:
如果是全新核心,那麼要先
開啟第一級選單下的networking support -> networking options -> tcp/ip networking -> ip: kernel level autoconfiguration。如果nfs要使用dhcp,還得選上 ip: dhcp support。這樣才有nfs相關選項
file systems --->
network file systems --->
nfs client support
root file system on nfs
secure rpc: kerberos v mechanism
5、確保pc機上共享目錄有根檔案系統
6、把核心燒到開發板;
三、測試:
啟動核心:
starting kernel ...
uncompressing linux... done, booting the kernel.
.......
machine: ok6410
......
s3c nand driver is using hardware ecc.
nand device: manufacturer id: 0xec, chip id: 0xd5 (samsung nand 2gib 3,3v 8-bit)
creating 4 mtd partitions on "nand 2gib 3,3v 8-bit":
0x000000000000-0x000000100000 : "bootloader"
0x000000100000-0x000000600000 : "kernel"
0x000000600000-0x000007e00000 : "user"
0x000007e00000-0x000080000000 : "file system"
......
eth0: link down
eth0: link up, 100mbps, full-duplex, lpa 0x45e1
ip-config: cannot add default route (-101).
vfs:mounted root (nfs filesystem) on device 0:11.
freeing init memory: 116k
etc/init.d/rcs: line 10: alsactl: not found
please press enter to activate this console.
#
Flask 建立最簡單的專案
系統 win10 python python3.7 flask flask1.0.2 命令列操作 windows下的cmd 安裝python 建立專案資料夾 該操作是在win10的cmd下操作,如果是在不同的系統,那麼操作命令可能不同。建立資料夾命令 建立虛擬環境 虛擬環境需要放在專案資料夾裡面,所...
製作最簡單的linux系統
本文件在virtualbox5.1.30,和ubuntu14.04下製作的.目的是了解系統的啟動過程.1.新建乙個虛擬機器 名稱 linux,型別 linux,版本 ubuntu 64bit 除了虛擬硬碟大小設定2g,其它選項預設.2.在乙個已經安裝好ubuntu的虛擬機器新增上述的虛擬硬碟.先在安...
gxt 建立最簡單的tree(一)
先上效果圖 上面的效果圖比較簡單粗糙,但已經具備了tree的基本特徵了,有唯一的根節點 子節點 葉子。接下來還是對其繼續完善,比如給葉子節點新增圖示,更換預設的顯示圖示等,使其看起來比較美觀 廢話少說,還是貼上 若有不對的地方,麻煩各位大俠指點下 ps 本人做了chm格式的api,在附件上,方便搜尋...