自己建立最簡單的系統(基於ok6410的)

2021-06-18 17:37:34 字數 4002 閱讀 7599

這裡包括兩部分:首先建立最簡單的板檔案+讓板檔案掛在檔案系統+啟動系統。

宣告:本文是之前寫的了,在飛凌論壇發表,現在拿在這裡共享一下。

一、在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,在附件上,方便搜尋...