ImageVerifierCode 换一换
格式:DOC , 页数:63 ,大小:4.17MB ,
资源ID:7231977      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7231977.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(uboot内核移植和裁剪详细步骤.doc)为本站会员(scg750829)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

uboot内核移植和裁剪详细步骤.doc

1、-U-boot 内核移植步骤:Linux 3.3.5 系统移植1. 将 arch/arm/mach-s3c6410/下的,mach-smdk6410.c cp 为 mach-my6410.c;2. 打开 arch/arm/mach-s3c6410/下的 Kconfig,仿照 MACH_SMDK6410 做一个菜单项:config MACH_MY6410bool “MY6410“select CPU_S3C6410select SAMSUNG_DEV_ADCselect S3C_DEV_HSMMCselect S3C_DEV_HSMMC1select S3C_DEV_I2C1select SAM

2、SUNG_DEV_IDEselect S3C_DEV_FBselect S3C_DEV_RTCselect SAMSUNG_DEV_TSselect S3C_DEV_USB_HOSTselect S3C_DEV_USB_HSOTGselect S3C_DEV_WDTselect SAMSUNG_DEV_BACKLIGHTselect SAMSUNG_DEV_KEYPADselect SAMSUNG_DEV_PWMselect HAVE_S3C2410_WATCHDOG if WATCHDOGselect S3C64XX_SETUP_SDHCIselect S3C64XX_SETUP_I2C1s

3、elect S3C64XX_SETUP_IDEselect S3C64XX_SETUP_FB_24BPPselect S3C64XX_SETUP_KEYPADhelpMachine support for the Pillar MY64103. 打开 arch/arm/tools/mach-types 文件,这里面存的是机器 ID 必须要和 uboot 里面的 ID 保持一致,将其 283 行复制添加在后面并修改为:smdk6410 MACH_SMDK6410 SMDK6410 1626xx6410 MACH_XX6410 XX6410 1626 这个机器 ID 和 UBOOT 里的机器 ID

4、 相同时才能启动内核;1. 修改 BSP 文件 mach-my6410.c,内容如下:将 mach-mach-my6410.c 文件中的所有 smdk6410 改成 my6410(不要改大写SMDK6410 的 )MACHINE_START(MY6410, “MY6410“)/这个要和 Kconfig 里的 MACH-MY6410 匹配 2. 在当前目录的 Makefile 最后一行加上 obj-$(CONFIG_MACH_MY6410) += mach-my6410.o3. 修改顶层的 Makefile:ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/4

5、.2.2-eabi/usr/bin/arm-linux-4. 复制 arch/arm/configs/下的 s3c6400-defconfig 文件,然后将其保存为.config,配置内核支持 EABI,再选中 XX6410 board 这一项,保存退出;5. 执行 make menuconfig 对内核进行配置:执行 make 编译执行 make zImage 生成 zImage将 uboot 根目录下的 mkimage 拷贝到/user/bin 目录下执行 make uImage 生成 uImage通过以上几步 linux 内核移植完了,剩下就移植驱动了。这里需要注意,每一次修改 Kcon

6、fig 文件都需要 make menuconfig 对内核进行配置。LED 驱动移植1. Linu 内核下 drivers/leds/ledsgpio.c 实现了一个体系结构无关的 GPIO LED 驱动,使用此 LED 驱动,开发者不需要修改一行代码,只需要在 BSP 的板文件(对于 OK6410 为 arch/arm/machs3c6410/machmy6410.c)中定义相关的 platform 设备和数据。在 MY6410 开发板上 ,GPM0GPM3 实现了四个 LED,因此其对应的 platform 信息如下:arch/arm/machs3c6410/machmy6410.c:st

7、atic struct gpio_led my6410_leds =0= .name = “LED1“,.gpio = S3C64XX_GPM(0),1= .name = “LED2“,.gpio = S3C64XX_GPM(1),2= .name = “LED3“,.gpio = S3C64XX_GPM(2),3= .name = “LED4“,.gpio = S3C64XX_GPM(3), ;static struct gpio_led_platform_data my6410_gpio_led_pdata =.num_leds = ARRAY_SIZE(my6410_leds),.led

8、s =my6410_leds,;static struct platform_device my6410_device_led =.name = “leds-gpio“,.id = -1,.dev =.platform_data = 2. 将static struct gpio_keys_platform_data my6410_button_data =.buttons =my6410_buttons,.nbuttons =ARRAY_SIZE(my6410_buttons),;static struct platform_device my6410_device_button = .nam

9、e =“gpio-keys“,.id = -1,.dev = .platform_data =2. 将pixclock = 1000000 / DCLK = 1000000 / 9 = 111111left_margin = Thb = 2right_margin = Thf = 2hsync_len = Thp = 41upper_margin = Tvb = 2lower_margin = Tvf = 2vsync_len = Tvp = 10xres = Thd = 480Yres = Tvd = 272static struct map_desc my6410_iodesc = /*

10、LCD support */.virtual = (unsigned long)S3C_VA_LCD,.pfn = _phys_to_pfn(S3C_PA_FB),.length = SZ_16K,.type = MT_DEVICE,;1. 然后将 28 内核中的 drviers/video/samsung 拷贝到 drviers/video/目录下2. 修改 drviers/video/的 Kconfig 文件,在文件中加入source “drivers/video/samsung/Kconfig“3. 修改修改 drviers/video/的 Makefie 文件,再最后一行添加:obj-

11、$(CONFIG_FB_S3C_EXT) += samsung/4. 在 arch/arm/plat-samsung/include/plat/map-base.h 里面添加#define S3C_VA_LCD S3C_ADDR(0x01100000) /* LCD */1. 在 include/generated/atuoconfig.h 里面添加#define CONFIG_FB_S3C_EXT_NUM 42. 把 drivers/video/samsung/s3cfb_fimd4x.c 里面的第 1417 行:s3c6410_pm_do_save(s3c_lcd_save, ARRAY_

12、SIZE(s3c_lcd_save);改成s3c_pm_do_save(s3c_lcd_save, ARRAY_SIZE(s3c_lcd_save);第 1438 行s3c6410_pm_do_restore(s3c_lcd_save, ARRAY_SIZE(s3c_lcd_save);改成s3c_pm_do_restore(s3c_lcd_save, ARRAY_SIZE(s3c_lcd_save);1. 配置内核:Device Drivers -Graphics support -Support for frame buffer devices - (里面的都空选)Support for

13、frame buffer devices - Backlight 找到了原因。以后有时间好好对 LCD 驱动做一下分析。DM9000 网卡驱动移植1. Linux 内核里面已经 支持了 dm9000 的网卡驱动,所以驱动程序我们不需要写了,只需要添加 相应的平台信息。在 linux-3.3.5/arch/arm/mach-s3c64xx/mach-my6410.c 里面添加都文件#include 2. 在 linux-3.3.5/arch/arm/mach-s3c64xx/mach-my6410.c 里面添加以下平台信息:#define S3C64XX_PA_DM9000 (0x1800000

14、0)#define S3C64XX_SZ_DM9000 SZ_1Mstatic struct resource my6410_dm9000_resources = 0 = .start= S3C64XX_PA_DM9000,.end= S3C64XX_PA_DM9000 + 3,.flags= IORESOURCE_MEM,1 = .start= S3C64XX_PA_DM9000 + 4,.end= S3C64XX_PA_DM9000 + S3C64XX_SZ_DM9000 - 1,.flags= IORESOURCE_MEM,2 = .start= IRQ_EINT(7),.end= IR

15、Q_EINT(7),.flags= IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,;static struct dm9000_plat_data my6410_dm9000_platdata = .flags= DM9000_PLATF_16BITONLY,.dev_addr= 0x08, 0x90, 0x00, 0xa0, 0x90, 0x90 ,;static struct platform_device my6410_device_dm9000 = .name= “dm9000“,.id= 0,.num_resources= ARRAY_SIZE(my6410_d

16、m9000_resources),.resource= my6410_dm9000_resources,.dev= .platform_data = 然后在 static struct platform_device *my6410_devices _initdata =里面添加1. 启动过程中出现这样的问题:smsc911x: failed to claim resource 0(这个提示原来在这儿我怎么没有发现)- cut here -WARNING: at drivers/base/core.c:194 device_release+0x74/0x80()Device platform-

17、lcd.0 does not have a release() function, it is broken and must be fixed.Modules linked in: (unwind_backtrace+0x0/0xf8) from (warn_slowpath_common+0x4c/0x64) (warn_slowpath_common+0x4c/0x64) from (warn_slowpath_fmt+0x30/0x40) (warn_slowpath_fmt+0x30/0x40) from (device_release+0x74/0x80) (device_rele

18、ase+0x74/0x80) from (kobject_release+0x44/0x78) (kobject_release+0x44/0x78) from (platform_add_devices+0x54/0x68) (platform_add_devices+0x54/0x68) from (customize_machine+0x20/0x30) (customize_machine+0x20/0x30) from (do_one_initcall+0x11c/0x170) (do_one_initcall+0x11c/0x170) from (kernel_init+0x84/

19、0x128) (kernel_init+0x84/0x128) from (kernel_thread_exit+0x0/0x8)- end trace 1b75b31a2719ed1c - cut here -WARNING: at drivers/base/core.c:194 device_release+0x74/0x80()Device samsung-keypad does not have a release() function, it is broken and must be fixed.Modules linked in: (unwind_backtrace+0x0/0x

20、f8) from (warn_slowpath_common+0x4c/0x64) (warn_slowpath_common+0x4c/0x64) from (warn_slowpath_fmt+0x30/0x40) (warn_slowpath_fmt+0x30/0x40) from (device_release+0x74/0x80) (device_release+0x74/0x80) from (kobject_release+0x44/0x78) (kobject_release+0x44/0x78) from (platform_add_devices+0x54/0x68) (p

21、latform_add_devices+0x54/0x68) from (customize_machine+0x20/0x30) (customize_machine+0x20/0x30) from (do_one_initcall+0x11c/0x170) (do_one_initcall+0x11c/0x170) from (kernel_init+0x84/0x128) (kernel_init+0x84/0x128) from (kernel_thread_exit+0x0/0x8)- end trace 1b75b31a2719ed1d - cut here -WARNING: a

22、t drivers/base/core.c:194 device_release+0x74/0x80()Device samsung-i2s.2 does not have a release() function, it is broken and must be fixed.Modules linked in: (unwind_backtrace+0x0/0xf8) from (warn_slowpath_common+0x4c/0x64) (warn_slowpath_common+0x4c/0x64) from (warn_slowpath_fmt+0x30/0x40) (warn_s

23、lowpath_fmt+0x30/0x40) from (device_release+0x74/0x80) (device_release+0x74/0x80) from (kobject_release+0x44/0x78) (kobject_release+0x44/0x78) from (platform_add_devices+0x54/0x68) (platform_add_devices+0x54/0x68) from (customize_machine+0x20/0x30) (customize_machine+0x20/0x30) from (do_one_initcall

24、+0x11c/0x170) (do_one_initcall+0x11c/0x170) from (kernel_init+0x84/0x128) (kernel_init+0x84/0x128) from (kernel_thread_exit+0x0/0x8)- end trace 1b75b31a2719ed1e -出现这个这个错误的原因根据提示可以知道那个玩意儿没有得到资源。原来它在 arch/arm/mach-s3c64xx/include/mach/map.h 被这样定义#define S3C64XX_PA_XM0CSN1 (18000000)这个刚好我我们定义的 DM9000 的

25、物理地址相同所以就冲突了。解决方法很简单,就是把static struct platform_device *my6410_devices _initdata 里面的/ here are the available partitions:Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) (unwind_backtrace+0x0/0xf8) from (panic+0x8c/0x200) (panic+0x8c/0x200) from (mount_block_root+0x10c/0x

26、2b0) (mount_block_root+0x10c/0x2b0) from (prepare_namespace+0x14c/0x1dc) (prepare_namespace+0x14c/0x1dc) from (kernel_init+0xe8/0x128) (kernel_init+0xe8/0x128) from (kernel_thread_exit+0x0/0x8)搭建 NFS 网络文件系统1. 制作文件系统的工具就是传说中的瑞士军刀 busybox 在他的官网http:/ 下载最新的版本为 busybox-1.20.02. 修改 busybox 的 makefile:CRO

27、SS_COMPILE ?= arm-linux-ARCH ?= arm3. Make menuconfig 配置 busyboxBusybox Settings -Build Options -Installation Options (“make install“ behavior) -Busybox Library Tuning -4. 编译 busybox 执行Make install这时候会提示一个错误提示说:miscutils/ubi_tools.c:63:26: error: mtd/ubi-user.h: No such file or directorymiscutils/ub

28、i_tools.c: In function ubi_tools_main:miscutils/ubi_tools.c:133: error: UBI_DEV_NUM_AUTO undeclared (first use in this function)miscutils/ubi_tools.c:133: error: (Each undeclared identifier is reported only oncemiscutils/ubi_tools.c:133: error: for each function it appears in.)miscutils/ubi_tools.c:

29、134: error: UBI_VOL_NUM_AUTO undeclared (first use in this function)miscutils/ubi_tools.c:153: error: storage size of req isnt knownmiscutils/ubi_tools.c:161: error: UBI_IOCATT undeclared (first use in this function)miscutils/ubi_tools.c:153: warning: unused variable reqmake1: * miscutils/ubi_tools.

30、o 错误 1make: * miscutils 错误 2出现这么多的错误,核心问题就是出现在 miscutils/ubi_tools.c:63:26: error: mtd/ubi-user.h: No such file or directory 这个上面,无法找到 mtd/ubi-user.h 头文件,查阅了相关资料后,原来这是一个 Linux 下新支持的 UBI 文件系统,需要手 工加入。从 Linux3.3.5 的 includemtdubi-user.h 拷贝到 busybox 下的 includemtd 下,如果 busybox 下的 include 没有 mtd 文件夹,那就先建立一个 mtd 文件夹,然后复制了。这样做了之后,编译就 OK 了。出现下面的信息就说明编译成 功了。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报