-
2021-05-10 18:04:16
嵌入式linux内核移植步骤,五份文档之一
手把手教你移植linux内核---------OK6410(四)
OK6410--DM9000网卡驱动移植:
在linux的内核中已经带有了DM9000的网卡驱动,所以网卡驱动我们不需要再去写或者移植了,只需要添加一个平台信息就可以。
首先在linux-3.3.5/arch/arm/mach-s3c64xx/mach-ok6410.c里面添加都文件#include
在linux-3.3.5/arch/arm/mach-s3c64xx/mach-ok6410.c里面添加dm9000的平台信息:
[cpp]
1. #define S3C64XX_PA_DM9000 (0x18000000)
2. #define S3C64XX_SZ_DM9000 SZ_1M
3. static struct resource ok6410_dm9000_resources[] = {
4. [0] = {
5. .start= S3C64XX_PA_DM9000,
6. .end= S3C64XX_PA_DM9000 + 3,
7. .flags= IORESOURCE_MEM,
8. },
9. [1] = {
10. .start= S3C64XX_PA_DM9000 + 4,
11. .end= S3C64XX_PA_DM9000 + S3C64XX_SZ_DM9000 - 1,
12. .flags= IORESOURCE_MEM,
13. },
14. [2] = {
15. .start= IRQ_EINT(7),
16. .end= IRQ_EINT(7),
17. .flags= IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
18. },
19. };
20.
21. static struct dm9000_plat_data ok6410_dm9000_platdata = {
22. .flags= DM9000_PLATF_16BITONLY,
23. .dev_addr= { 0x08, 0x90, 0x00, 0xa0, 0x90, 0x90 },
24. };
25.
26. static struct platform_device ok6410_device_dm9000 = {
27. .name= "dm9000",
28. .id= 0,
29. .num_resources= ARRAY_SIZE(ok6410_dm9000_resources),
30. .resource= ok6410_dm9000_resources,
31. .dev= {
32. .platform_data = &ok6410_dm9000_platdata,
33. }
34. };
更多相关内容 -
linux内核移植步骤
2021-01-06 05:10:491.解压内核源码 tar -jxvf linux-xxx.tar.bz2 或者 tar -zxvf linux-xxxx.tar.gz 2.清除之前的配置 clean – 清大部分生成的文件, 但是保留配置文件, 以及可以保证足够编译模块的信息。 mrproper – 清所有... -
内核移植步骤
2021-04-23 11:02:42内核移植步骤 相比于uboot移植,内核只关心内存条的情况,所以移植相对uboot简单 **第一步:**网上下载相关的内核文件http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/ **第二步:**配置内核移植的必要环境 ...内核移植步骤
相比于uboot移植,内核只关心内存条的情况,所以移植相对uboot简单
**第一步:**网上下载相关的内核文件http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/
**第二步:**配置内核移植的必要环境
(1)需要支持menuconfig(有了这个方便我们后面选择配置)
只需要dpkg -i 压缩包就可以
(2)需要支持mkimage(编译image文件时需要)
将mkimage工具拷贝到/usr/bin**第三步:**选择默认配置
(1)进入解压后的文件夹找到Makefile文件,修改配置ARCH ?= $(SUBARCH) 将这条配置命令修改为 ARCH ?= arm
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%) 将这条配置命令修改为 CROSS_COMPILE ?= arm-linux-
修改原因:第一条是指定(cpu架构),第二天是指定交叉编译器,如果不修改那么我们在执行命令的时候需要输入完整的指令:
powershell make ARCH=arm CROSS_COMPILE=arm-linux- uImage
**第四步:**添加新配置
(1)执行默认配置make exynos_defconfig
(2)执行make menuconfig
出现的界面就是我们需要选配的界面,例:
如果我们需要配置网卡驱动,实现NFS服务,我们需要勾选一下选项:[*] Networking support ---> Networking options ---> <*> Packet socket <*>Unix domain sockets [*] TCP/IP networking [*] IP: kernel level autoconfiguration Device Drivers ---> [*] Network device support ---> [*] Ethernet driver support (NEW) ---> <*> DM9000 support File systems ---> [*] Network File Systems (NEW) ---> <*> NFS client support [*] NFS client support for NFS version 3 [*] NFS client support for the NFSv3 ACL protocol extension [*] Root file system on NFS
选择按键为shift+s
按照上面的配置修改完毕,NFS显示还是无法正常运行,原因在于我们只是设置了网卡和NFS服务器的配置,并没有告诉板子应该如何加载网卡,所以我们还需要完成修改设备树的操作:
$ vim arch/arm/boot/dts/exynos4412-fs4412.dts 添加如下内容:(难点)
选择在该文件中添加的原因是在dts文件夹中有很多的.dts文件都可以生成设备树,需要找到相对应的型号。srom-cs1@5000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; reg = <0x5000000 0x1000000>; ranges; ethernet@5000000 { compatible = "davicom,dm9000"; reg = <0x5000000 0x2 0x5000004 0x2>; interrupt-parent = <&gpx0>; interrupts = <6 4>; davicom,no-eeprom; mac-address = [00 0a 2d a6 55 a2]; }; };
这段配置需要我们自行通过看设计图来完成,部分参数说明:
reg:为网卡的起始地址
interrupt-parent:设置为中断管脚
interrupts:参数为gpx0_6,下降沿触发
mac-address:为网卡的物理地址到这来为止内核移植算是基本完成,最后再进行编译即可:
make uImage
最后编译设备树:make dtbs
,再找到和自己板子相关的设备树文件即可以上的操作系统可以实现网络功能,那么如果我们需要安装其他的驱动,需要安装步骤,先通过make menuconfig选择配置然后再在设备树文件上面加上相应地代码即可。
问题追加:
编译最后出现该问题:
解决方法:
未指定加载地址,所以需要使用以下语句执行:LOADADDR=0x40008000 make uImage (LOADDR地址必须未未使用的地址)
-
TQ2440内核移植步骤详解
2012-05-07 18:31:23这个pdf中有烧写开发版的详细步骤,包括window 和linux 操作系统 -
嵌入式linux内核裁剪与移植步骤教程
2020-07-20 01:43:39本文以将linux移植到ARM920T内核的s3c2410处理器芯片为例,介绍了嵌入式linux内核裁剪以及移植的过程,并对移植中的关键技术和重要步骤给出了详细的说明。 -
Linux内核移植操作步骤
2022-03-09 10:05:23linux内核版本 3.14 资料包: 1、将linux-3.14.tar.xz拷贝到ubuntu中下解压并进入Linux-3.14 tar xvf linux-3.14.tar.xz cd linux-3.14 接着修改内核顶层目录下的Makefile vim Makefile 导入默认配置 ...环境:ubuntu20.04
开发板:fs4412
linux内核版本 3.14
资料包:
1、将linux-3.14.tar.xz拷贝到ubuntu中下解压并进入Linux-3.14
tar xvf linux-3.14.tar.xz cd linux-3.14
接着修改内核顶层目录下的Makefile
vim Makefile
导入默认配置
make exynos_defconfig
配置内核
make menuconfig
注:如果出现问题,先执行安装命令,另外终端窗口也要调大点,不然显示不出也会报错
sudo apt-get install libncurses5-dev
然后看到
退出,接着编译内核,可能会出现如果编译过程中提示缺少mkimage工具,需将前天编译的uboot源码中的tools/mkimage拷贝到ubuntu的/usr/bin目录下
cp u-boot-2013.01/tools/mkimage /usr/bin make uImage
修改设备树文件生成设备树文件,以参考板origen的设备数文件为参考
cp arch/arm/boot/dts/exynos4412-origen.dts arch/arm/boot/dts/exynos4412-fs4412.dts
添加新文件需修改Makefile才能编译
vim arch/arm/boot/dts/Makefile
然后编译树文件
make dtbs
拷贝内核和设备树文件到/tftpboot目录下
cp arm/arm/boot/uImage ~/tftpboot cp arch/arm/boot/dts/exynos4412-fs4412.dtb ~/tftpboot/
修改uboot启动参数(参考tftp那篇文章)
sudo /etc/init.d/network-manager stop //暂时关闭网络,保留ip tftp 41000000 uImage tftp 42000000 exynos4412-fs4412.dtb pri //先查看botargs是否已经配置好(ip) bootm 41000000 - 42000000
重启板子查看实验现象
报错原因:fs4412使用的设备树和origen的不同,网卡设备不同
-
linux内核移植步骤添加dm9000网卡驱动(设备树).docx
2021-05-10 22:17:58linux内核移植步骤添加dm9000网卡驱动(设备树).docx LINUX内核移植步骤2015年05月13日星期三上午1105往设备树中添加网卡驱动1、选平台,指定交叉编译工具链1、在MAKEFILE中指定源码顶层目录下...COMPILECONFIG_CROSS_...linux内核移植步骤添加dm9000网卡驱动(设备树).docx
LINUX内核移植步骤2015年05月13日星期三上午1105往设备树中添加网卡驱动1、选平台,指定交叉编译工具链1、在MAKEFILE中指定源码顶层目录下MAKEFILEARCHSUBARCHCROSS_COMPILECONFIG_CROSS_COMPILE““改为ARCHARMCROSS_COMPILEARMLINUX2、编译时指定MAKEARCHARMCROSS_COMPILE/OPT/ARMLINUXGCC464/BIN/ARMLINUX2、导出缺省配置(1)、直接把缺省配置文件改成”CONFIG“把“源码/ARCH/ARM/CONFIGS”目录下的“XXXX_DEFCONFIG“(例如”EXYNOS_DEFCONFIG“)配置文件拷贝到源码顶层目录下,并改名为”CONFIG“。(2)、使用MAKE生成缺省配置MAKEEXYNOS_DEFCONFIG执行该命令后系统会在源码顶层目录下自动生成”CONFIG“文件CONFIGURATIONWRITTENTOCONFIG3、往设备树文件中添加DM9000网卡驱动(1)、参考与自己板子最接近的DEMO板的设备树文件生成自己的设备树文件(直接拷贝修改)。设备树文件在”源码目录/ARCH/ARM/BOOT/DTS/EXYNOS4412FS4412DTS“(2)、在设备树文件中添加网卡设备驱动信息(参考网卡厂商提供的范例代码)示例代码在”DOCUMENTATION/DEVICETREE/BINDINGS/NET/DAVICOMDM9000TXT“,如下DAVICOMDM9000FASTETHERNETCONTROLLERREQUIREDPROPERTIESCOMPATIBLE“DAVICOM,DM9000“REGPHYSICALADDRESSESANDSIZESOFREGISTERS,MUSTCONTAIN2ENTRIESFIRSTENTRYADDRESSREGISTER,SECONDENTRYDATAREGISTERINTERRUPTPARENTINTERRUPTCONTROLLERTOWHICHTHEDEVICEISCONNECTEDINTERRUPTSINTERRUPTSPECIFIERSPECIFICTOINTERRUPTCONTROLLEROPTIONALPROPERTIESDAVICOM,NOEEPROMCONFIGURATIONEEPROMISNOTAVAILABLEDAVICOM,EXTPHYUSEEXTERNALPHYEXAMPLEETHERNET18000000{COMPATIBLE“DAVICOM,DM9000“REGINTERRUPTPARENTINTERRUPTSLOCALMACADDRESS0000DEADBEEFDAVICOM,NOEEPROM}修改并添加ETHERNET05000000{COMPATIBLE“DAVICOM,DM9000“REG/0X05000000为4412处理器的SROM片选地址,详见手册/INTERRUPTPARENT/继承父节点/INTERRUPTS/GPX0节点中断中的第6个,4是标志/LOCALMACADDRESS0000DEADBEEF/网卡地址/DAVICOM,NOEEPROMPINCTRL11000000{GPX0GPX0{GPIOCONTROLLERGPIOCELLSINTERRUPTCONTROLLERINTERRUPTPARENTINTERRUPTS,,,,/中断/,,,INTERRUPTCELLS}}4、修改设备树的MAKEFILE文件设备树的MAKEFILE文件在”XXX/LINUX3191/ARCH/ARM/BOOT/DTS“目录下。(1)、直接添加(2)、为了加快编译速度,删除其他多余的设备树文件,仅保留自己的设备树文件5、内核选配(1)、执行MAKEMENUCONFIG命令通过图形界面方式选配(在源码顶层目录下执行)(2)、添加网络协议支持(3)、添加DM9000网卡设备驱动(4)、添加NFS文件系统支持6、保存配置,编译内核在源码顶层目录下执行”MAKE“命令编译内核7,制作内核镜像GCC编译内核VMLINUXELF头去ELF头IMAGE压缩ZIMAGE加UBOOT特定格式头UIMAGEUBOOT源码的TOOLS会编译出一个X86下运行的应用程序”MKIMAGE“打包UIMAGE把ARCH/ARM/BOOT/ZIMAGE文件拷贝到源码根目录下,然后执行如下命令(事先把UBOOT制作好的MKIMAGE工具拷贝到源码根目录下)/MKIMAGEAARMOLINUXTKERNELCNONEA0X41000000E0X41000040N LINUX3191WNAVY DZIMAGEUIMAGE8、TFTP下载内核镜像并通过NFS挂载根文件系统把编译好的内核景象UIMAGE和设备树EXNOS4412FS4412DTB拷贝到TFTP目录下,打开开发版电源启动内核并挂载文件系统。
-
IMX6ULL驱动开发前奏二:Linux内核移植步骤明细
2022-05-03 20:22:34Linux内核移植 获取源码和修改Makefile 先从NXP获取官方源码,添加到自定义的目录下,然后解压 tar -vxjf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 修改顶层Makefile,也就是内核根目录下的Makefile。给ARCH和... -
linux内核启动流程分析及移植步骤
2012-03-06 20:48:54linux内核启动流程分析及移植步骤(需要Mindjet MindManager软件打开) -
s3c2440A linux内核移植步骤
2009-09-15 06:44:42s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 -
Linux系统移植|内核移植
2021-10-26 16:44:56内核移植 -
嵌入式linux 内核移植篇
2021-07-13 10:17:44本章,我也是通过修改第三方半导体厂商开发板提供的 Linux BSP 包移植到我们自己的平台上。我选择的是nxp厂商官方的evk开发板,使用他们官方的内核修改为自己板卡的内核。 添加开发板默认配置文件 在编译linux内核... -
Linux 内核移植步骤
2018-08-03 15:20:42Vi Makefile 修改arch, ... 移植linux内核, 首先需要一个基本的配置(哪些模块有, 哪些功能有) 怎么得到基本配置 : arch/arm/configs 目录下有很多arm 处理器的默认配置 Make exynos_defconfig 等同于 ... -
linux kernel 移植步骤
2021-05-17 15:48:52linux kernel 移植步骤linux kernel 移植步骤1.准备准备:linux-2.6.32 kernel(linux-2.6.32.tar.bz2)2.目录结构认清kernel的目录结构,了解目录的作用。2.1 根目录目录文件解压并查看:$ tar -xvf linux-2.6.32....