欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
mini2440 linux移植 nandflash驅動(dòng)的移植
根據《Mini2440_Linux移植開(kāi)發(fā)實(shí)戰指南》一文進(jìn)行nandflash驅動(dòng)的移植出現了不少問(wèn)題   
make zImage出錯: 
   arch/arm/mach-s3c2440/mach-mini2440.c:189: error: array type has incomplete element type
arch/arm/mach-s3c2440/mach-mini2440.c:190: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:190: error: (near initialization for 'smdk_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:191: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:191: error: (near initialization for 'smdk_default_nand_part')

arch/arm/mach-s3c2440/mach-mini2440.c:193: error: unknown field 'tacls' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:193: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:193: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:194: error: unknown field 'twrph0' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:194: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:194: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:195: error: unknown field 'twrph1' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:195: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:195: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:196: error: unknown field 'nr_sets' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:196: warning: type defaults to 'int' in declaration of 'type name'
arch/arm/mach-s3c2440/mach-mini2440.c:196: warning: type defaults to 'int' in declaration of 'type name'
arch/arm/mach-s3c2440/mach-mini2440.c:196: error: negative width in bit-field '<anonymous>'
arch/arm/mach-s3c2440/mach-mini2440.c:196: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:196: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:197: error: unknown field 'sets' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:197: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:197: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:198: error: unknown field 'ingnore_unset_ecc' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:198: warning: excess elements in struct initializer

于是在自己的mach-mini2440.c中加入
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h>
#include <plat/nand.h>
 
 
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=4, 39ns Twrph0=8 79ns, Twrph1=8 79ns
Unable to handle kernel NULL pointer dereference at virtual address 00000018
pgd = c0004000
[00000018] *pgd=00000000
Internal error: Oops: 5 [#1]
last sysfs file:
Modules linked in:
因為 mini2440的 flash的參數應該是:
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
從以上差別可以看出我們 按照友善提供的Linux移植開(kāi)發(fā)實(shí)戰所修改的下面一個(gè)結構體里設置的參數并沒(méi)有生效:
static struct s3c2410_platform_nand mini2440_nand_info = {
        .tacls          = 20,
        .twrph0         = 60,
        .twrph1         = 20,
        .nr_sets        = ARRAY_SIZE(mini2440_nand_sets),
        .sets           = mini2440_nand_sets,
};
以上的結構體是mini2440開(kāi)發(fā)板上使用的nand flash的一些配置信息,其中包括芯片操作時(shí)序信息。
查看nand flash相應的datasheet里面對nand flash控制器的NFCONF寄存器有如下描述
CLE/ALE是高電平使能 而TACLS是CLE/ALE使能的持續時(shí)間,也就是CLE/ALE信號線(xiàn)高電平持續的時(shí)間;
nWE是低電平使能 TWRPH0對應于nWE的使能持續時(shí)間,也就是nWE信號線(xiàn)低電平的持續時(shí)間;
而TWRPH1對應于nWE信號線(xiàn)高電平的持續時(shí)間。
具體如下圖:

而 通過(guò)內核打印信息+Source Insight查找到輸出
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=4, 39ns Twrph0=8 79ns, Twrph1=8 79ns
語(yǔ)句信息的函數在內核源碼中nand flash驅動(dòng)程序里的drivers/mtd/nand/s3c2410.c文件中。
分析Linux內核中的nand flash驅動(dòng)drivers/mtd/nand/s3c2410.c文件中的相應函數,
其中的static int s3c2410_nand_setrate(struct s3c2410_nand_info *info)函數發(fā)現:
    struct s3c2410_platform_nand *plat = info->platform;
        int tacls_max = (info->cpu_type == TYPE_S3C2412) ? 8 : 4;
         …………
    info->clk_rate = clkrate;
        clkrate /= 1000;        /* turn clock into kHz for ease of use */
if (plat != NULL) {
                tacls = s3c_nand_calc_rate(plat->tacls, clkrate, tacls_max);
                twrph0 = s3c_nand_calc_rate(plat->twrph0, clkrate, 8);
                twrph1 = s3c_nand_calc_rate(plat->twrph1, clkrate, 8);
} else {
          /* default timings */
   tacls = tacls_max;
                twrph0 = 8;
                twrph1 = 8;

            }
        if (tacls < 0 || twrph0 < 0 || twrph1 < 0) {
                dev_err(info->device, "cannot get suitable timings\n");
                return -EINVAL;
        }
        dev_info(info->device, "Tacls=%d, %dns Twrph0=%d %dns, Twrph1=%d %dns\n",
               tacls, to_ns(tacls, clkrate), twrph0, to_ns(twrph0, clkrate), twrph1, to_ns(twrph1, clkrate));
由以上內容可以看出,內核并沒(méi)有使用我們的mini2440_nand_info結 構體中的配置,而是使用了它的默認配給,即
} else {
          /* default timings */
   tacls = tacls_max;
                twrph0 = 8;
                twrph1 = 8;

            }
中的配置信 息。這點(diǎn)和我們改的內核輸出s3c24xx-nand s3c2440-nand: Tacls=4, 39ns Twrph0=8 79ns, Twrph1=8 79ns完全符合。
因此可以判斷我們需要在mach-mini2440.c的mini2440_machine_init()函數中增加s3c_device_nand.dev.platform_data = &mini240_nand_info;

   http://xliuning.spaces.live.com/blog/cns!C9DB9E35C9DE3752!329.entry
 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Tiny210(S5PV210) U
移植3.4.2內核 到tiny6410
OK6410移植linux3.3.1
移植Android 到mini2440
linux2.6移植+根文件系統實(shí)驗手冊
4. Linux2.6.14內核編譯、移植 (含LCD移植)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久