日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

基于友善的superboot 移植linux内核到tiny210(s5pv210)上

發(fā)布時間:2023/12/10 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于友善的superboot 移植linux内核到tiny210(s5pv210)上 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?友善提供的開發(fā)板光盤里已經(jīng)提供了友善官方移植的內(nèi)核,但是為了自己的開發(fā)方便,并且防止受到友善的干擾,移植一個基于友善的super boot的內(nèi)核。

???super-boot(友善官方提供)

???內(nèi)核(3.4.2)

???根文件系統(tǒng)nfs(韋老師提供,網(wǎng)上很多)

?

1. super-boot 參數(shù)配置

友善的super-boot是不開源的,但是我們可以修改其提供的參數(shù)bootargs來修改啟動命令:

修改命令如下:

################### Linux #################### Linux-BootLoader = Superboot210.bin Linux-Kernel = Linux/zImage #Linux-CommandLine = root=/dev/mtdblock4 rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc skipcali=yes ctp=3 Linux-CommandLine = console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.5:/home/book/Codes/fs_mini_mdev_new ip=192.168.1.230:192.168.1.5:192.168.1.5:255.255.255.0:linux.arm9.net:eth0:off skipcali=yes ctp=3 #Linux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4-mlc2.img


其中# 是注釋符號 ,這里的參數(shù)配置時一定要細心。

?

2.? 移植新版本的內(nèi)核。

從kernel org 中下載下來最新的內(nèi)核:

2.1. 解壓下來后修改根目錄下的Makefile :

ARCH ?= arm CROSS_COMPILE ?= arm-linux-


2.2.修改配置,使用和tiny210最相似的開發(fā)板配置.執(zhí)行如下命令:

make s5pv210_defconfig


2.3. 執(zhí)行make 命令生成zImage

make

這里用于生成對應(yīng)superboot的鏡像,因此必須生成zImage

?

2.4. 修改內(nèi)核串口配置

經(jīng)過上面三步的命令后,就可以燒寫和啟動kernel了,但是此時終端上除了打印loading kernel之外就再無打印信息了,原因是kernel默認的串口是串口1,需要將

其改為串口0,執(zhí)行make menuconfig,修改串口配置:

system type(0) S3C UART to use for low-level messages

編輯此項為0 ,此時重新燒寫zImage ,就能看到終端輸出了。

?

2.5. 修改機器碼

經(jīng)過上面的步驟之后,終端會有輸出,但是輸出的信息會提示你機器碼不正確。

superboot在啟動內(nèi)核時一開始會比較superboot中的機器碼和內(nèi)核提供的機器碼是否匹配。顯然這里內(nèi)核的機器碼和superboot中并不匹配

修改:內(nèi)核支持的機器碼:

由于superboot不開源,所以只能修改內(nèi)核中的機器碼:

打開include/generated/mach-types.h文件: 修改:

//#define MACH_TYPE_SMDKV210 2456 #define MACH_TYPE_SMDKV210 3466

重新編譯燒寫,此時就能kernel就能正常跑下去了。

?

2.6 移植dm9000網(wǎng)卡驅(qū)動程序。

網(wǎng)卡驅(qū)動程序的移植其實很簡單,由于其接口是內(nèi)存型接口,一般只要修改其中斷引腳號和內(nèi)存片地址就行。

參考友善提供的mach-mini210.c修改:

arch\arm\mach-s5pv210\Mach-smdkv210.c

#define S5PV210_PA_DM9000_A (0x88001000) #define S5PV210_PA_DM9000_F (S5PV210_PA_DM9000_A + 0x300C)static struct resource smdkv210_dm9000_resources[] = {[0] = {.start = S5PV210_PA_DM9000_A,// 片選地址.end = S5PV210_PA_DM9000_A + SZ_1K*4 - 1,.flags = IORESOURCE_MEM,},[1] = {.start = S5PV210_PA_DM9000_F,.end = S5PV210_PA_DM9000_F + SZ_1K*4 - 1,.flags = IORESOURCE_MEM,},[2] = {.start = IRQ_EINT(7), // 中斷號.end = IRQ_EINT(7),.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,}, };static struct dm9000_plat_data smdkv210_dm9000_platdata = {.flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,.dev_addr = { 0x08, 0x90, 0x00, 0xa0, 0x02, 0x10 }, }; static struct platform_device smdkv210_dm9000 = {.name = "dm9000",.id = -1,.num_resources = ARRAY_SIZE(smdkv210_dm9000_resources),.resource = smdkv210_dm9000_resources,.dev = {.platform_data = &smdkv210_dm9000_platdata,}, }; static void __init smdkv210_dm9000_init(void) {unsigned int tmp;gpio_request(S5PV210_MP01(1), "nCS1"); // 這里需要修改s3c_gpio_cfgpin(S5PV210_MP01(1), S3C_GPIO_SFN(2)); gpio_free(S5PV210_MP01(1));tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);__raw_writel(tmp, S5P_SROM_BC1);tmp = __raw_readl(S5P_SROM_BW);tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS5__SHIFT);tmp |= (1 << S5P_SROM_BW__NCS1__SHIFT);__raw_writel(tmp, S5P_SROM_BW);}

這里附上原理圖: 作為參照:

移植好網(wǎng)卡驅(qū)動程序,并且創(chuàng)建好你的根文件系統(tǒng)就能正常啟動了。

?

?

3?移植網(wǎng)絡(luò)文件系統(tǒng)

這部分網(wǎng)上資料很多,我直接拿的韋東山老師移植好的文件系統(tǒng)或者您也可以使用友善提供的qt的文件系統(tǒng)都是可以的。

?

?


?

?

?


?

?


?

?

?

?

?????

?

總結(jié)

以上是生活随笔為你收集整理的基于友善的superboot 移植linux内核到tiny210(s5pv210)上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。