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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7236930.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(tiny6410内核移植.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

tiny6410内核移植.doc

1、 Tiny6410 的内核移植(拿来主义) 开发环境 宿主机: vista+VMware+ fedoral13(win7下虚拟机) 编译器: 友善自带arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 开发板: tiny6410,核心板号1106 NAND 2G RAM 256M 注意:移植内核时,确保引导文件为u-boot类型,否则到后面下载到开发板使会出现乱码以及不必要的错误 移植nand_flash 1 下载linux-2.6.38的源码 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/li

2、nux-2.6.38.tar.bz2 2 解压 #tar xvfj /mnt/ubuntu/linux-2.6.38.tar.bz2 -C . 3 修改根下的Makefile #vi Makefile    191行改为    ARCH ?= arm CROSS_COMPILE ?= arm-linux- (找到其交叉编译环境) 4 生成默认配置文件 #cp arch/arm/configs/s3c6400_defconfig .config (如果省略的话,后面会找不到System Type) 5 修改配置项(基本配置) #make

3、menuconfig General setup->(/usr/4.5.1/bin/arm-linux-) Cross-compiler tool prefix    我将编译器解压到了/opt/Friendly/ toolschain/4.5.1/bin目录(如果第三步中以修改“CROSS.complier ? = arm-linux- ”此项,这步可以不作)      System Type->[*] MINI6410   选上,其他的可以去掉,不确定的可以参考友善之臂的(这样编译出来的内核是可以被uboot引导的,然后是增加nand flash支持) vi arch/arm/m

4、ach-s3c64xx/mach-mini6410.c 第117行 struct mtd_partition mini6410_nand_part[] = {                 {         .name        = "Bootloader",         .offset        = 0,         .size        = (4 * 128 *SZ_1K),         .mask_flags    = MTD_CAP_NANDFLASH,     },     {         .name        = "Kern

5、el",         .offset        = (4 * 128 *SZ_1K),         .size         = (5*SZ_1M) ,         .mask_flags     = MTD_CAP_NANDFLASH,     },     {         .name        = "File System",         .offset        = MTDPART_OFS_APPEND,         .size        = MTDPART_SIZ_FULL,     } };       //upd

6、ate at 2011-8-26 经过测试发现,这里改完后根本不起作用,甚至将整个注释也无妨,估计分区已经固死在后面的s3c_nand_mlc.fo中 6 拷贝NAND FLASH驱动 (将6410内核中的如下文件拷到相应的目录下) 需拷贝文件:    drivers/mtd/nand/s3c_nand.c       arch/arm/plat-samsung/include/plat/regs-nand.h 覆盖掉 drivers/mtd/nand/s3c_nand_mlc.fo 《s3c_nand_mlc.fo友善没有开源的一个驱动之一,所以不用研究了,拷

7、过来就是了。》 drivers/mtd/nand/nand_base.c  覆盖掉 当然如果想手动修改的话见附件1 drivers/mtd/nand/Kconfig 覆盖掉 详细请见附件2 7 drivers/mtd/nand/Makefile中20行增加 obj-$(CONFIG_MTD_NAND_S3C)            += s3c_nand.o 末尾再增加 S3C_NAND_MLC_SRC = $(shell ls drivers/mtd/nand/s3c_nand_mlc.c 2>/dev/null) ifeq ($(S3C

8、NAND_MLC_SRC),) obj-$(CONFIG_MTD_NAND_S3C)            += s3c_nand_mlc.fo else obj-$(CONFIG_MTD_NAND_S3C)            += s3c_nand_mlc.o endif 这步要是不愿意改的话,直接拷贝覆盖即可覆盖掉 8 然后再make menuconfig   Device Drivers--->     <*> Memory Technology Device (MTD) support  --->      [*]   MTD partitioni

9、ng support       [*]   Command line partition table parsing        <*>   Direct char device access to MTD devices        <*>   Caching block device access to MTD devices       <*>   NAND Device Support  --->        < >   NAND Flash support for Samsung S3C SoCs  去掉不要选         <*>   NAND Fla

10、sh support for S3C SoC           [*]     S3C NAND Hardware ECC 9 编译 Make 如果顺利通过则出现如下信息: OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready AS arch/arm/boot/compressed/head.o GZIP arch/arm/boot/compressed/piggy.gzip AS arch/arm/boot/compressed/piggy.gzi

11、p.o CC arch/arm/boot/compressed/misc.o CC arch/arm/boot/compressed/decompress.o SHIPPED arch/arm/boot/compressed/lib1funcs.S AS arch/arm/boot/compressed/lib1funcs.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage

12、is ready Building modules, stage 2. MODPOST 16 modules 10 下载到开发板 Make后生成的内核文件(zimage)在/arch/arm/boot/ 下。将其共享或者通过其他方式放到window下并将开发板与pc连接利用dns工具下载至开发板,按b重起开发板,测试内核是否正确编译、移植。 此时可能出现如下问题: usbcore: registered new interface driver usbhid usbhid: USB HID core driver VFP support v0.3: impleme

13、ntor 41 architecture 1 part 20 variant b rev 5 drivers/rtc/hctosys.c: unable to open rtc device (rtc0) VFS: Cannot open root device "ubi0:FriendlyARM-root" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions: 1f00 4096 mtdblock0 (drive

14、r?) 1f01 8192 mtdblock1 (driver?) 1f02 2084864 mtdblock2 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [] (unwind_backtrace+0x0/0xe4) from [] (panic+0x50/0x16c) [] (panic+0x50/0x16c) from []

15、mount_block_root+0x238/0x288) [] (mount_block_root+0x238/0x288) from [] (prepare_namespace+0x88/0x1b4) [] (prepare_namespace+0x88/0x1b4) from [] (kernel_init+0x108/0x148) [] (kernel_init+0x108/0x148) from [] (kernel_thread_exit+0x0/0x8)

16、 OK //在此卡住不动了 其中红色部分表示找不着系统文件,因为tiny6410 的系统文件为ubifs格式,所以下面我们要将ubifs系统文件驱动移植到内核中 移植UBIFS驱动 配置内核支持UBIFS Device Drivers ---> Memory Technology Device (MTD) support ---> UBI - Unsorted block images ---> Enable UBI 配置mtd支持UBI接口 File systems ---> Miscellaneous filesystems ---> UBIFS fi

17、le system support 再次Make #make 下载到开发板 如果成功,如下图: usbcore: registered new interface driver usbhid usbhid: USB HID core driver VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5 drivers/rtc/hctosys.c: unable to open rtc device (rtc0) mmc0: mmc_rescan_try_freq: trying to i

18、nit card at 300000 Hz mmc0: mmc_rescan_try_freq: trying to init card at 200000 Hz UBIFS: recovery needed usb 1-1: new full speed USB device using s3c2410-ohci and address 2 mmc0: mmc_rescan_try_freq: trying to init card at 100000 Hz UBIFS: recovery completed UBIFS: mounted UBI device 0, volume

19、 0, name "FriendlyARM-root" UBIFS: file system size: 2061287424 bytes (2012976 KiB, 1965 MiB, 1997 LEBs) UBIFS: journal size: 12517376 bytes (12224 KiB, 11 MiB, 13 LEBs) UBIFS: media format: w4/r0 (latest is w4/r0) UBIFS: default compressor: lzo UBIFS: reserved for root: 0 bytes

20、0 KiB) VFS: Mounted root (ubifs filesystem) on device 0:10. hwclock: can't open '/dev/misc/rtc': No such file or directory [01/Jan/1970:00:00:18 +0000] boa.c:173 - unable to create socket: Function not implemented open device leds: No such file or directory /usr/sbin/

21、alsactl: load_state:1610: No soundcards found... ifconfig: socket: Function not implemented Try to bring eth0 interface up......cat: can't open '/sys/class/net/eth0/address': No such file or directory ifconfig: socket: Function not implemented route: socket: Function no

22、t implemented Done (此时ifconfig等命令不能用,以及lcd) 移植网卡驱动 修改的dm9000网卡头文件 #vi include/linux/dm9000.h 28行增加 unsigned char param_addr[6]; 修改dm9000的驱动文件 #vi drivers/net/dm9000.c 大概1586行 将mac_src = "platform data"; memcpy(ndev->dev_addr, pdata->dev_addr, 6); 改成 mac_src = "param da

23、ta"; memcpy(ndev->dev_addr, pdata->param_addr, 6); 大概1598行 增加 if (!is_valid_ether_addr(ndev->dev_addr) && pdata != NULL) { mac_src = "platform data"; memcpy(ndev->dev_addr, pdata->dev_addr, 6); } 修改后如下图: if (!is_valid_ether_addr(ndev->dev_addr)

24、 && pdata != NULL) { //=======================hai-modified====================== #if 0 mac_src = "platform data"; memcpy(ndev->dev_addr, pdata->dev_addr, 6); #endif mac_src = "param data"; memcpy(ndev->dev_addr, pdata->param_addr, 6); //===========================================

25、 } //================================hai-added============== if (!is_valid_ether_addr(ndev->dev_addr) && pdata != NULL) { mac_src = "platform data"; memcpy(ndev->dev_addr, pdata->dev_addr, 6); } //=====================================

26、 再次配置内核 #make menuconfig [*] Networking support ---> Networking options ---> <*> Packet socket <*> Unix domain sockets [*] TCP/IP networking [*] IP: kernel level autocon

27、figuration [*] IP: DHCP support [*] IP: BOOTP support [*] IP: RARP support Device Drivers ---> [*] Network device support ---> [

28、] Ethernet (10 or 100Mbit) ---> <*> DM9000 support [ ] Ethernet (1000 Mbit) ---> 去掉 执行make编译 #make 如果顺利便利,结果会有如下信息: OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready GZIP arch/arm/boot/compressed/piggy.gzip AS arch/arm/b

29、oot/compressed/piggy.gzip.o SHIPPED arch/arm/boot/compressed/lib1funcs.S AS arch/arm/boot/compressed/lib1funcs.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready Building modules, stage 2. MODPOST 26 modules 下载到开

30、发板 如果成功,如下图: hwclock: can't open '/dev/misc/rtc': No such file or directory [01/Jan/1970:00:00:18 +0000] boa: server version Boa/0.94.13 [01/Jan/1970:00:00:18 +0000] boa: server built Dec 30 2010 at 11:18:35. [01/Jan/1970:00:00:18 +0000] boa: starting server pid=965, port 80

31、 open device leds: No such file or directory /usr/sbin/alsactl: load_state:1610: No soundcards found... Try to bring eth0 interface up......eth0: link down Done(此时网卡驱动已移植成功) 移植lcd屏驱动 增加行(如果用vi/gedit命令打不开或出现乱码则可能是解压文件错误,请重新减压) vi arch/arm/plat-samsung/include/

32、plat/map-base.h 第39行增加 #define S3C_VA_LCD     S3C_ADDR(0x01100000)    /* LCD */ 复制 从友善的源码中将arch/arm/mach-s3c64xx/include/mach/regs-lcd.h拷贝过来 从友善的源码中将drivers/video/samsung整个文件夹拷贝过来 复制文件方法:#cp -arf 友善samsung路径 目的samsung路径 增加行 vi drivers/video/Kconfig 第2368行增加 source "drivers/video/sams

33、ung/Kconfig" vi drivers/video/Makefile 120行增加 obj-$(CONFIG_FB_S3C_EXT)      += samsung/ vi arch/arm/mach-s3c64xx/mach-mini6410.c 48行增加 #include 191行mini6410_lcd_power_set函数里的内容改成         if (power) {                 gpio_direction_output(S3C64XX_GPF(13), 1);          //G

34、PF13是USBpower用的,与lcd无关                 gpio_direction_output(S3C64XX_GPF(15), 1);          //GPF15是是真正的一线控制线连PWM1                 /* fire nRESET on power up */                 gpio_direction_output(S3C64XX_GPN(5), 0);          //GPN5好像与lcd也无关,先copy吧                 msleep(10);                

35、 gpio_direction_output(S3C64XX_GPN(5), 1);                 msleep(1);         } else {                 gpio_direction_output(S3C64XX_GPF(15), 0);                 gpio_direction_output(S3C64XX_GPF(13), 0);         } 190行增加函数-------------default_bpp = 16,}, 的后面增加结构体: static struct map_de

36、sc mini6410_lcd_iodesc[] = { { /* LCD support */ .virtual = (unsigned long)S3C_VA_LCD, .pfn = __phys_to_pfn(S3C_PA_FB), .length = SZ_16K, .type = MT_DEVICE, }, }; 将mini6410_map_io()这

37、个函数中的一个函数引用改成如下。 s3c64xx_init_io(mini6410_lcd_iodesc, ARRAY_SIZE(mini6410_lcd_iodesc)); 378行增加     gpio_request(S3C64XX_GPN(5), "LCD power");     gpio_request(S3C64XX_GPF(13), "LCD power"); 去掉gpio_request(S3C64XX_GPE(0), "LCD power"); #make menuconfig   Power management options  --->     

38、 [ ] Power Management support   一定要去掉,不然会有drivers/video/samsung/s3cfb_fimd4x.c:1440:2: error: implicit declaration of function 's3c6410_pm_do_save'的错误。 Device Drivers ---> Graphics support ---> <*> Support for frame buffer devices  --->   < > Samsung S3C framebuffer support               

39、               <*> S3CFramebufferSupport (eXtended)                   Select LCD Type (4.3 inch 480x272 TFT LCD)  --->                    <*>   Advanced options for S3C Framebuffer                                        Select BPP(Bits Per Pixel) (16 BPP)  --->                        (

40、4)   Number of Framebuffers                (ctrl+<-修改)                          [ ]       Enable Virtual Screen (NEW)                                     [*]       Enable Double Buffering     //这个找不到,但是此为双缓冲, 也可以不选择,编译仍然可以通过。            [ ] Backlight & LCD device support  

41、>   Console display driver support  --->      <*> Framebuffer Console support    这个也一定要选,不然会有drivers/built-in.o:(.data+0x174): undefined reference to `soft_cursor'的错误、     [*] Bootup logo  --->                                                       [ ]   Standard black and white Linux logo  

42、                             [ ]   Standard 16-color Linux logo                                       [*]   Standard 224-color Linux logo 其他的默认就行 这时lcd的驱动其实已经移植好了,引导信息也正常,如 S3C_LCD clock got enabled :: 133.000 Mhz LCD TYPE :: N43 will be initialized Window[0] - FB1: map_video_memory: clear

43、 ff600000:0007f800             FB1: map_video_memory: dma=5d780000 cpu=ff600000 size=0007f800 Window[0] - FB2: map_video_memory: clear ff63fc00:0003fc00             FB2: map_video_memory: dma=5d7bfc00 cpu=ff63fc00 size=0003fc00 Console: switching to colour frame buffer device 60x34 fb0: s3cfb f

44、rame buffer device Window[1] - FB1: map_video_memory: clear ff680000:0007f800             FB1: map_video_memory: dma=5cc00000 cpu=ff680000 size=0007f800 Window[1] - FB2: map_video_memory: clear ff6bfc00:0003fc00             FB2: map_video_memory: dma=5cc3fc00 cpu=ff6bfc00 size=0003fc00 fb1: s3c

45、fb frame buffer device Window[2] - FB1: map_video_memory: clear ff700000:0003fc00             FB1: map_video_memory: dma=5d740000 cpu=ff700000 size=0003fc00 fb2: s3cfb frame buffer device Window[3] - FB1: map_video_memory: clear ff740000:0003fc00             FB1: map_video_memory: dma=5cc80000

46、cpu=ff740000 size=0003fc00 fb3: s3cfb frame buffer device 但lcd屏却没有反应,百思不得其解。后来终于发现了,过程明天在说 一线触摸的驱动移植 1.从友善的配套内核中复制一下文件到新内核的对应文件夹: arch/arm/mach-s3c64xx/dev-ts-mini6410.c arch/arm/mach-s3c64xx/include/mach/ts.h arch/arm/plat-samsung/include/plat/regs-adc.h //覆盖 drivers/input/touchs

47、creen/mini6410_1wire_host.c drivers/input/touchscreen/mini6410-ts.c drivers/input/touchscreen/ts-if.c 到相应目录 2.修改文件arch/arm/mach-s3c64xx/Makefile vi arch/arm/mach-s3c64xx/Makefile 末尾增加 obj-$(CONFIG_TOUCHSCREEN_MINI6410)  += dev-ts-mini6410.o 3. 修改文件drivers/input/touchscreen/Makefile v

48、i drivers/input/touchscreen/Makefile 末尾加入 obj-$(CONFIG_TOUCHSCREEN_MINI6410)    += mini6410-ts.o obj-$(CONFIG_TOUCHSCREEN_1WIRE)        += mini6410_1wire_host.o obj-$(CONFIG_FB_S3C_EXT_TFT800480)    += ts-if.o obj-$(CONFIG_FB_S3C_EXT_TFT480272)    += ts-if.o obj-$(CONFIG_FB_S3C_EXT_X240320)   

49、 += ts-if.o 4. 修改drivers/input/touchscreen/Kconfig vi drivers/input/touchscreen/Kconfig 190行左右加入(在190行左右config TOUCHSCREEN_S3C2410的配置项后面加入如下代码(菜单项): 注意!!!下面有缩进行当最左边的缩进至少需要一个TAB缩进。 错误如:[root@syd168 linux-2.6.38.des]# make menuconfig scripts/kconfig/mconf Kconfig drivers/input/touchscreen/

50、Kconfig:204: unknown option "module" make[1]: *** [menuconfig] Error 1 make: *** [menuconfig] Error 2 [root@syd168 linux-2.6.38.des]# gedit drivers/input/touchscreen/Kconfig #=============hai================ config TOUCHSCREEN_MINI6410 tristate "S3C touchscreen driver for Mini6410" depe

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服