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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7202717.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。

注意事项

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

S3C6410移植linux教程.docx

1、Linux3.6.7在OK6410平台的移植(一)前言 · 对于我这个新手而言,第一次学习linux,面对庞大的代码,复杂的程序结构和自身对linux知识的严重缺乏,一下子还真不知道该做什么。想想开发板厂家提供的演示程序,其过程是这样:先运行bootloader,bootloade引导linux内核启动,启动后再运行UI程序。对应的程序也有三个分别为u-boot.bin zImage 和rootfs.yaffs2.最初的想法是linux内核启动就是这个zImage,但这个rootfs.yaffs到底是何方妖怪?来这里做甚?初步认为是一个UI(用户界面),后面随着移植的深入,才明白这是一个

2、根文件系统,当然里面包含了UI的应用程序。好吧,一直在linux门外徘徊也不是办法,不管怎样,硬着头皮进去看看再说。于是我决定先编译一个能够启动的linux内核,这个内核对于开发板上一些外部设备的驱动先不去管它,主要达到的目的是能够启动。我当时对“启动”的理解就是能够运行到有一个shell界面。后面对文件系统,根文件系统等等概念稍微理解后才明白“启动”和shell界面还是两个部分。启动包括linux必要的一些初始化,系统的或外部设备的。初始化完成后linux还要通过读取某些文件才能够运行shell程序。而这些文件就包含在这个rootfs.yaffs2中(其实shell程序也包含在这个文件中)。

3、这就涉及到几个概念,文件系统,根文件系统,yaffs2文件系统,yaffs2根文件系统。。。。。在网上稍微了解后,对这几个概念有了初步的理解:linux内核启动后需要读取的这些文件需要放在某个地方(SDRAM或者NANDflash或者是宿主机的硬盘上)中。放在SDRAM中的比如有个ramdisk,它是一个设备,相当于在SDRAM中建立了一个“硬盘”,里面就放好了这些运行文件(初步印象,未进一步了解);放在NAND flash的有cramfs或者yaffs等等,而cramfs比较适合用于Nor flash上,yaffs适合Nand flash上;放在宿主机上的有NFS根文件系统。那么,yaffs

4、2文件系统和yaff2根文件系统不是一回事吗?想想以前用过STM32做一些实验时有个FATFS,好像也是文件系统,当时用这个系统从SD卡中读取图片、文档,而SD卡首先必须格式化为FAT32(FAT)类型。yaffs2文件系统就有点像这个fatfs,我们把它包含在linux程序中意味着linux能够采用这种格式去读取一些文件。yaff2根文件系统就是把包含有linux启动必须的脚本和目录的这些文件采用yaffs2这种格式打包,然后放在Nand flash中。简单理解就相当于先把NAND的某个区域“格式化”为yaffs2格式,再把这些文件放在NAND上面。 最初的理解就是这样了,那么,接下来我们

5、要做的事就是先“启动”,再运行“shell”。 Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.7 1.修改主目录下Makefile: ARCH ?= $(SUBARCH) CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)改为: ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/4.5.1/bin/arm-linux- 2.arch/arm/mach-s3c64xx目录下     2.1 拷贝个mach-mini6410.c重命名为mach-ok6410.c

6、并修改其内容:           2.1.1 把所有mini6410字样都替换为ok6410,注意是小写           2.1.2 把所有MINI6410字样都替换为OK6410,注意是大写           2.1.3 修改static struct mtd_partition ok6410_nand_part                  /*            [0] = {  .name = "uboot", .size = SZ_1M, .offset = 0, }, [1] = { .name = "kernel", .size = SZ_

7、2M, .offset = SZ_1M, }, [2] = { .name = "rootfs", .size = MTDPART_SIZ_FULL, .offset = SZ_1M + SZ_2M, },*/ 改为 { .name = "Bootloader", .offset = 0, .size = (2 * SZ_1M), .mask_flags = MTD_CAP_NANDFLASH, }, { .name = "Kernel", .offset = (2 * SZ_1M), .size = (5*SZ_1M) , .mask_flags = M

8、TD_CAP_NANDFLASH, }, { .name = "File System", .offset = (7 * SZ_1M), .size = (200*SZ_1M) , }, { .name = "User", .offset = MTDPART_OFS_APPEND, .size = MTDPART_SIZ_FULL, }          2.2修改Kconfig文件,参照Mini6410的配置,加入OK6410如下: config MACH_OK6410 bool "OK6410" select CPU_S3C6410 select S3C_D

9、EV_HSMMC select S3C_DEV_HSMMC1 select S3C64XX_SETUP_SDHCI select S3C_DEV_USB_HOST select S3C_DEV_NAND select S3C_DEV_FB select S3C64XX_SETUP_FB_24BPP select SAMSUNG_DEV_ADC select SAMSUNG_DEV_TS help Machine support for the FORLINX OK6410        2.3 修改Makefile文件,参照MINI6410,加入OK6410如下: ob

10、j-$(CONFIG_MACH_OK6410)        += mach-ok6410.o 3. 修改arch/arm/tools/mach-types文件,加入OK6410的mach-type,这个必须和U-BOOT中的MACH-TYPE一致,这里选用smdk6410的mach-type:1626。如下: ok6410 MACH_OK6410 OK6410 1626 4.回到主目录下执行Make menuconfig   root@ubuntu:/home/my# cd linux-3.6.7/   root@ubuntu:/home/my/linux-3.6.7# make

11、menuconfig    配置如下:       4.1 先选择Load an Alternate Configuration File,输入arch/arm/configs/s3c6400_defconfig       4.2 选择General Setup,打开Cross_compiler tool perfix,输入              /usr/local/arm/4.5.1/bin/arm-linux-       4.3选择System Type,取消SMDK6400 ,A&W6410,SMDK6410等平台,只选择OK6410       4.4 选择Sav

12、e an Alternate Configuration File,保存为.config然后退出。 5.回到主目录下执行make zImage生成zImage文件 6.回到主目录下执行make uImage生成uImage文件    uImage文件是u boot 所支持的文件格式。        6.1 拷贝u-boot-2012.10/tools/目录下的mkimage文件到主机/usr/bin目录下        6.2 修改Entry_Point问题,参考另一篇文章:  Linux3.6.7中Make uImage的load address 和 Entry Point相同的

13、问题        6.3 回到主目录下执行make uImage生成uImage文件  7. 把uImage烧写到NAND中运行,NAND flash放置程序的结构如下:     0000 0000 ---0020 0000 大小2M 放置uboot     0020 0000 ---0070 0000 大小5M 放置uImage     0070 0000 ---0CF0 0000 大小200M 放置 rootfs     结果如下:    NAND read: device 0 offset 0x200000, size 0x500000 5242880 bytes re

14、ad: OK ## Booting kernel from Legacy Image at 50008000 ... Image Name: Linux-3.6.7 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1476616 Bytes = 1.4 MiB Load Address: 50008000 Entry Point: 50008040 Verifying Checksum ... OK XIP Kernel Image ... OK OK Starting kernel ...

15、 Uncompressing Linux... done, booting the kernel. Booting Linux on physical CPU 0 Linux version 3.6.7 (root@ubuntu) (gcc version 4.5.1 (ctng-1.8.1-FA) ) #1 Mon Dec 3 15:54:25 CST 2012 CPU: ARMv6-compatible processor [410fb766] revision 6 (ARMv7), cr=00c5387d CPU: PIPT / VIPT nonaliasing data cac

16、he, VIPT nonaliasing instruction cache Machine: OK6410 Memory policy: ECC disabled, Data cache writeback CPU S3C6410 (id 0x36410101) S3C24XX Clocks, Copyright 2004 Simtec Electronics camera: no parent clock specified S3C64XX: PLL settings, A=533000000, M=533000000, E=24000000 S3C64XX: HCLK2=2

17、66500000, HCLK=133250000, PCLK=66625000   mout_apll: source is fout_apll (1), rate is 533000000 mout_epll: source is epll (1), rate is 24000000 mout_mpll: source is mpll (1), rate is 533000000 usb-bus-host: source is clk_48m (0), rate is 48000000 audio-bus: source is mout_epll (0), rate is 240

18、00000 audio-bus: source is mout_epll (0), rate is 24000000 audio-bus: source is mout_epll (0), rate is 24000000 irda-bus: source is mout_epll (0), rate is 24000000 camera: no parent clock specified CPU: found DTCM0 8k @ 00000000, not enabled CPU: moved DTCM0 8k to fffe8000, enabled CPU: found

19、 DTCM1 8k @ 00000000, not enabled CPU: moved DTCM1 8k to fffea000, enabled CPU: found ITCM0 8k @ 00000000, not enabled CPU: moved ITCM0 8k to fffe0000, enabled CPU: found ITCM1 8k @ 00000000, not enabled CPU: moved ITCM1 8k to fffe2000, enabled Built 1 zonelists in Zone order, mobility groupin

20、g on. Total pages: 65024 Kernel command line: noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200 PID hash table entries: 1024 (order: 0, 4096 bytes) Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 6

21、5536 bytes) Memory: 256MB = 256MB total Memory: 256784k/256784k available, 5360k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) DTCM : 0xfffe8000 - 0xfffec000 ( 16 kB) ITCM : 0xfffe0000 - 0xfffe4000 ( 16 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 k

22、B) vmalloc : 0xd0800000 - 0xff000000 ( 744 MB) lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .text : 0xc0008000 - 0xc02818ac (2535 kB) .init : 0xc0282000 - 0xc029cb54 ( 107 kB) .data : 0xc029e000 - 0xc02c7f20 ( 168 kB) .bss : 0xc02c8024 - 0xc02f9064 ( 1

23、97 kB) SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 NR_IRQS:246 VIC @f6000000: id 0x00041192, vendor 0x41 VIC @f6010000: id 0x00041192, vendor 0x41 sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms Console: colour dummy device 80x30 Cal

24、ibrating delay loop... 353.89 BogoMIPS (lpj=1769472) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok Setting up static identity map for 0x501dd240 - 0x501dd29c DMA: preallocated 256 KiB pool for atomic coherent allocations OK6410

25、 Option string ok6410=0 OK6410: selected LCD display is 480x272 s3c64xx_dma_init: Registering DMA channels PL080: IRQ 73, at d0846000, channels 0..8 PL080: IRQ 74, at d0848000, channels 8..16 S3C6410: Initialising architecture bio: create slab at 0 usbcore: registered new interface d

26、river usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb ROMFS MTD (C) 2007 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) start plist test end plist test s3c-fb s3c-fb: window 0: fb

27、 Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled s3c6400-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 69) is a S3C6400/10 console [ttySAC0] enabled s3c6400-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 70) is a S3C6400/10 s3c6400-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 71) is a S3C6400/10

28、s3c6400-uart.3: ttySAC3 at MMIO 0x7f005c00 (irq = 72) is a S3C6400/10 brd: module loaded loop: module loaded S3C24XX NAND Driver, (c) 2004 Simtec Electronics s3c24xx-nand s3c6400-nand: Tacls=4, 30ns Twrph0=8 60ns, Twrph1=6 45ns s3c24xx-nand s3c6400-nand: System booted from NAND s3c24xx-nand s3

29、c6400-nand: NAND soft ECC NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit), page size: 4096, OOB size: 218 No oob scheme defined for oobsize 218 ------------[ cut here ]------------ kernel BUG at drivers/mtd/nand/nand_base.c:3278! Internal error: Oops - BUG: 0 [#

30、1] ARM Modules linked in: CPU: 0 Not tainted (3.6.7 #1) PC is at nand_scan_tail+0x580/0x67c LR is at nand_scan_tail+0x580/0x67c pc : [] lr : [] psr: 60000013 sp : cf82fe98 ip : 00000001 fp : cf80a210 r10: c0181530 r9 : c0181524 r8 : 00000001 r7 : 00000000 r6 : cfa2fa80 r5

31、 : cf80a000 r4 : cf80a210 r3 : c02ae464 r2 : c02ae464 r1 : 20000093 r0 : 00000025 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 00c5387d Table: 50004008 DAC: 00000017 Process swapper (pid: 1, stack limit = 0xcf82e268) Stack: (0xcf82fe98 to 0xcf830000) fe80: cf80a000 c

32、f854300 fea0: cfa2fa80 c01816fc 00000000 cfa2f9c0 cf827fc0 00000000 c02f8900 c02f88f8 fec0: c02f8900 c02ad1ac c02ad178 c02c48e8 c029c8b8 c0295ce0 00000000 c01658a0 fee0: c0165888 c0164634 00000000 c02ad178 c02c48e8 c02ad1ac 00000000 00000049 ff00: c0295ce0 c0164844 c02c48e8 cf82ff18 c01647b8 c01

33、62f3c cf803878 cf8238e0 ff20: c02c48e8 c02c48e8 c02c1288 cfa2f9c0 00000000 c0163e60 c0250c40 c02c48e8 ff40: c02c48e8 c02c8040 cf82e000 00000000 00000049 c0164d68 00000000 c0298b6c ff60: c02c8040 cf82e000 00000000 00000049 c0295ce0 c0008704 c02af678 00000000 ff80: c026fb28 c0295ce0 00000049 c0035

34、fac c0253f3c c026f698 00000006 00000006 ffa0: c02af678 c0298b6c 00000006 c0298b4c c02c8040 00000049 c029c8b8 c0282168 ffc0: 00000000 c0282840 00000006 00000006 c0282168 00000000 00000000 c0282758 ffe0: c000f10c 00000013 00000000 00000000 00000000 c000f10c ffffffff ffffffff [] (nand_sca

35、n_tail+0x580/0x67c) from [] (s3c24xx_nand_probe+0x1c0/0x480) [] (s3c24xx_nand_probe+0x1c0/0x480) from [] (platform_drv_probe+0x18/0x1c) [] (platform_drv_probe+0x18/0x1c) from [] (driver_probe_device+0x7c/0x200) [] (driver_probe_device+0x

36、7c/0x200) from [] (__driver_attach+0x8c/0x90) [] (__driver_attach+0x8c/0x90) from [] (bus_for_each_dev+0x54/0x80) [] (bus_for_each_dev+0x54/0x80) from [] (bus_add_driver+0x170/0x240) [] (bus_add_driver+0x170/0x240) from [] (dri

37、ver_register+0x78/0x144) [] (driver_register+0x78/0x144) from [] (do_one_initcall+0x34/0x180) [] (do_one_initcall+0x34/0x180) from [] (kernel_init+0xe8/0x1b0) [] (kernel_init+0xe8/0x1b0) from [] (kernel_thread_exit+0x0/0x8) Code: 0a0000

38、03 e1a01003 e59f00e4 eb017dbe (e7f001f2) ---[ end trace 707c2cde67d9c275 ]--- Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b 内核启动了,但由于NAND驱动的问题使得内核初始化没有完成。接下来就是要改NAND驱动了。 Linux3.6.7在OK6410平台的移植(三)NAND HWECC 8BIT驱动 1.从开发板厂家提供的源码中找到s3c_nand.c,放到drivers/mtd/nand目录下,修改其Ma

39、kefile,加入: obj-$(CONFIG_MTD_NAND_S3C)        += s3c_nand.o 修改Kconfig,为了和原来的NAND驱动区分开来,我把新加的驱动叫S3C64xx S5P64xx,原来的叫做S3C24xx S3C64xx.修改的地方如下:     并加入: config MTD_NAND_S3C tristate "NAND support for Samsung S3C64xx S5P64xx" depends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) && MTD_NAND

40、 help This enables the NAND flash controller on the S3C No board specific support is done by this driver, each board must advertise a platform_device for the driver to attach. config MTD_NAND_S3C_DEBUG bool "Samsung S3C64xx S5P64xx NAND driver debug" depends on MTD_NAND_S3C help Enable debug

41、ging of the S3C NAND driver config MTD_NAND_S3C_HWECC bool "Samsung S3C64xx S5P64xx NAND Hardware ECC 8BITS" depends on MTD_NAND_S3C help Enable the use of the S3C's internal ECC generator when using NAND. Early versions of the chip have had problems with incorrect ECC generation, and if usin

42、g these, the default of software ECC is preferable. If you lay down a device with the hardware ECC, then you will currently not be able to switch to software, as there is no implementation for ECC method used by the S3C 2.arch/arm/plat-samsung/include/plat/regs_nand.h加入寄存器定义: #define S3C_NFC

43、ONF S3C2410_NFREG(0x00) #define S3C_NFCONT S3C2410_NFREG(0x04) #define S3C_NFCMMD S3C2410_NFREG(0x08) #define S3C_NFADDR S3C2410_NFREG(0x0c) #define S3C_NFDATA8 S3C2410_NFREG(0x10) #define S3C_NFDATA S3C2410_NFREG(0x10) #define S3C_NFMECCDATA0 S3C2410_NFREG(0x14) #define S3C_NFMECCDATA1 S3C24

44、10_NFREG(0x18) #define S3C_NFSECCDATA S3C2410_NFREG(0x1c) #define S3C_NFSBLK S3C2410_NFREG(0x20) #define S3C_NFEBLK S3C2410_NFREG(0x24) #define S3C_NFSTAT S3C2410_NFREG(0x28) #define S3C_NFMECCERR0 S3C2410_NFREG(0x2c) #define S3C_NFMECCERR1 S3C2410_NFREG(0x30) #define S3C_NFMECC0 S3C2410_NFRE

45、G(0x34) #define S3C_NFMECC1 S3C2410_NFREG(0x38) #define S3C_NFSECC S3C2410_NFREG(0x3c) #define S3C_NFMLCBITPT S3C2410_NFREG(0x40) #define S3C_NF8ECCERR0 S3C2410_NFREG(0x44) #define S3C_NF8ECCERR1 S3C2410_NFREG(0x48) #define S3C_NF8ECCERR2 S3C2410_NFREG(0x4c) #define S3C_NFM8ECC0 S3C2410_NFR

46、EG(0x50) #define S3C_NFM8ECC1 S3C2410_NFREG(0x54) #define S3C_NFM8ECC2 S3C2410_NFREG(0x58) #define S3C_NFM8ECC3 S3C2410_NFREG(0x5c) #define S3C_NFMLC8BITPT0 S3C2410_NFREG(0x60) #define S3C_NFMLC8BITPT1 S3C2410_NFREG(0x64) #define S3C_NFCONF_NANDBOOT (1<<31) #define S3C_NFCONF_ECCCLKCON (1<<30

47、) #define S3C_NFCONF_ECC_MLC (1<<24) #define S3C_NFCONF_ECC_1BIT (0<<23) #define S3C_NFCONF_ECC_4BIT (2<<23) #define S3C_NFCONF_ECC_8BIT (1<<23) #define S3C_NFCONF_TACLS(x) ((x)<<12) #define S3C_NFCONF_TWRPH0(x) ((x)<<8) #define S3C_NFCONF_TWRPH1(x) ((x)<<4) #define S3C_NFCONF_ADVFLASH (1<<3

48、) #define S3C_NFCONF_PAGESIZE (1<<2) #define S3C_NFCONF_ADDRCYCLE (1<<1) #define S3C_NFCONF_BUSWIDTH (1<<0) #define S3C_NFCONT_ECC_ENC (1<<18) #define S3C_NFCONT_LOCKTGHT (1<<17) #define S3C_NFCONT_LOCKSOFT (1<<16) #define S3C_NFCONT_MECCLOCK (1<<7) #define S3C_NFCONT_SECCLOCK (1<<6) #defin

49、e S3C_NFCONT_INITMECC (1<<5) #define S3C_NFCONT_INITSECC (1<<4) #define S3C_NFCONT_nFCE1 (1<<2) #define S3C_NFCONT_nFCE0 (1<<1) #define S3C_NFCONT_INITECC (S3C_NFCONT_INITSECC | S3C_NFCONT_INITMECC) #define S3C_NFSTAT_ECCENCDONE (1<<7) #define S3C_NFSTAT_ECCDECDONE (1<<6) #define S3C_NFSTAT_BUSY (1<<0) #define S3C_NFECCERR0_ECCBUSY (1<<31) 3. 修改drivers/mtd/nand/nand_base.c文件,加入 static struct nand_ecclayout nand_oob_218 = { .eccbytes = 104, .eccpos = { 24,25,26,27,28,29,30,31,32,33, 34,35,36,37,38,39,40,41,42,43, 44,45,46,47,48,49,50,51,52,53, 54,55,56,57,58,59,60,6

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服